diff --git a/apps/remix-ide/src/app/editor/editor.js b/apps/remix-ide/src/app/editor/editor.js index 0f87c29f8c..677d93ef4b 100644 --- a/apps/remix-ide/src/app/editor/editor.js +++ b/apps/remix-ide/src/app/editor/editor.js @@ -12,7 +12,7 @@ const profile = { name: 'editor', description: 'service - editor', version: packageJson.version, - methods: ['highlight', 'discardHighlight', 'clearAnnotations', 'addAnnotation', 'gotoLine', 'revealRange', 'getCursorPosition', 'open', 'addModel'] + methods: ['highlight', 'discardHighlight', 'clearAnnotations', 'addAnnotation', 'gotoLine', 'revealRange', 'getCursorPosition', 'open', 'addModel', 'addErrorMarker'] } class Editor extends Plugin { @@ -494,6 +494,10 @@ class Editor extends Plugin { this.currentDecorations[typeOfDecoration][filePath].push(...currentDecorations) } + async addErrorMarker (error){ + this.api.addErrorMarker(error) + } + /** * Add an annotation to the current session. * An annotation has the following shape: diff --git a/apps/remix-ide/src/assets/js/editor/darkTheme.js b/apps/remix-ide/src/assets/js/editor/darkTheme.js deleted file mode 100644 index f4059f60f7..0000000000 --- a/apps/remix-ide/src/assets/js/editor/darkTheme.js +++ /dev/null @@ -1,181 +0,0 @@ -/* eslint-disable */ -ace.define("ace/theme/remixDark",["require","exports","module","ace/lib/dom"], function(acequire, exports, module) { - - exports.isDark = true; - exports.cssClass = "ace-remixDark"; - exports.cssText = ".ace-remixDark .ace_gutter {\ - background: #2a2c3f;\ - color: #8789a1;\ - border-right: 1px solid #282828;\ - }\ - .ace-remixDark .ace_gutter-cell.ace_warning {\ - background-image: none;\ - background: #FC0;\ - border-left: none;\ - padding-left: 0;\ - color: #000;\ - }\ - .ace-remixDark .ace_gutter-cell.ace_error {\ - background-position: -6px center;\ - background-image: none;\ - background: #F10;\ - border-left: none;\ - padding-left: 0;\ - color: #000;\ - }\ - .ace-remixDark .ace_print-margin {\ - border-left: 1px solid #555;\ - right: 0;\ - background: #1D1D1D;\ - }\ - .ace-remixDark {\ - background-color: #222336;\ - color: #d5d5e9;\ - }\ - .ace-remixDark .ace_cursor {\ - border-left: 2px solid #FFFFFF;\ - }\ - .ace-remixDark .ace_cursor.ace_overwrite {\ - border-left: 0px;\ - border-bottom: 1px solid #FFFFFF;\ - }\ - .ace-remixDark .ace_marker-layer .ace_selection {\ - background: #494836;\ - }\ - .ace-remixDark .ace_marker-layer .ace_step {\ - background: rgb(198, 219, 174);\ - }\ - .ace-remixDark .ace_marker-layer .ace_bracket {\ - margin: -1px 0 0 -1px;\ - border: 1px solid #FCE94F;\ - }\ - .ace-remixDark .ace_marker-layer .ace_active-line {\ - background: #262843;\ - }\ - .ace-remixDark .ace_gutter-active-line {\ - background-color: #363950;\ - }\ - .ace-remixDark .ace_invisible {\ - color: #404040;\ - }\ - .ace-remixDark .ace_rparen {\ - color: #d4d7ed;\ - }\ - .ace-remixDark .ace_lparen {\ - color: #d4d7ed;\ - }\ - .ace-remixDark .ace_keyword {\ - color:#ffa76d;\ - }\ - .ace-remixDark .ace_keyword.ace_operator {\ - color:#eceeff;\ - }\ - .ace-remixDark .ace_constant {\ - color:#1EDAFB;\ - }\ - .ace-remixDark .ace_constant.ace_language {\ - color:#FDC251;\ - }\ - .ace-remixDark .ace_constant.ace_library {\ - color:#8DFF0A;\ - }\ - .ace-remixDark .ace_constant.ace_numeric {\ - color:#eceeff;\ - }\ - .ace-remixDark .ace_invalid {\ - color:#FFFFFF;\ - background-color:#990000;\ - }\ - .ace-remixDark .ace_invalid.ace_deprecated {\ - color:#FFFFFF;\ - background-color:#990000;\ - }\ - .ace-remixDark .ace_support {\ - color: #999;\ - }\ - .ace-remixDark .ace_support.ace_function {\ - color:#3fe2a7;\ - }\ - .ace-remixDark .ace_function {\ - color:#3fe2a7;\ - }\ - .ace-remixDark .ace_string {\ - color:#eceeff;\ - }\ - .ace-remixDark .ace_comment {\ - color:#a7a7a7;\ - font-style:italic;\ - padding-bottom: 0px;\ - }\ - .ace-remixDark .ace_type {\ - color:#75ceef;\ - }\ - .ace-remixDark .ace_visibility {\ - color:#f7d777;\ - }\ - .ace-remixDark .ace_identifier {\ - color:#bec1dd;\ - }\ - .ace-remixDark .ace_modifier {\ - color:#efff2f;\ - }\ - .ace-remixDark .ace-boolean {\ - color:#ff86ac;\ - }\ - .ace-remixDark .ace_statemutability {\ - color:#FFCC00;\ - }\ - .ace-remixDark .ace_variable {\ - color:#e0bb83;\ - }\ - .ace-remixDark .ace_meta.ace_tag {\ - color:#BE53E6;\ - }\ - .ace-remixDark .ace_entity.ace_other.ace_attribute-name {\ - color:#4aa8fd;\ - }\ - .ace-remixDark .ace_markup.ace_underline {\ - text-decoration: underline;\ - }\ - .ace-remixDark .ace_fold-widget {\ - text-align: center;\ - }\ - .ace-remixDark .ace_fold-widget:hover {\ - color: #777;\ - }\ - .ace-remixDark .ace_fold-widget.ace_start,\ - .ace-remixDark .ace_fold-widget.ace_end,\ - .ace-remixDark .ace_fold-widget.ace_closed{\ - background: none;\ - border: none;\ - box-shadow: none;\ - }\ - .ace-remixDark .ace_fold-widget.ace_start:after {\ - content: '▾'\ - }\ - .ace-remixDark .ace_fold-widget.ace_end:after {\ - content: '▴'\ - }\ - .ace-remixDark .ace_fold-widget.ace_closed:after {\ - content: '‣'\ - }\ - .ace-remixDark .ace_indent-guide {\ - border-right:1px dotted #333;\ - margin-right:-1px;\ - }\ - .ace-remixDark .ace_fold { \ - background: #222; \ - border-radius: 3px; \ - color: #7AF; \ - border: none; \ - }\ - .ace-remixDark .ace_fold:hover {\ - background: #CCC; \ - color: #000;\ - }\ - "; - - var dom = acequire("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass); - - }); \ No newline at end of file diff --git a/apps/remix-ide/src/assets/js/parser/index.iife.js b/apps/remix-ide/src/assets/js/parser/index.iife.js index 9a26199118..5335e6cea6 100644 --- a/apps/remix-ide/src/assets/js/parser/index.iife.js +++ b/apps/remix-ide/src/assets/js/parser/index.iife.js @@ -1,13 +1,17 @@ var SolidityParser = (() => { var __create = Object.create; var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); - var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res); - var __commonJS = (cb, mod) => () => (mod || cb((mod = {exports: {}}).exports, mod), mod.exports); + var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res; + }; + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports; + }; var __export = (target, all) => { for (var name in all) __defProp(target, name, {get: all[name], enumerable: true}); @@ -26,28965 +30,22101 @@ var SolidityParser = (() => { // process-shim.js var process, global; - var init_process_shim = __esm(() => { - process = { - cwd: () => "", - env: () => { - } - }; - global = {}; + var init_process_shim = __esm({ + "process-shim.js"() { + process = { + cwd: () => "", + env: () => { + } + }; + global = {}; + } }); // node_modules/antlr4ts/ANTLRErrorListener.js - var require_ANTLRErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); + var require_ANTLRErrorListener = __commonJS({ + "node_modules/antlr4ts/ANTLRErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } }); // node_modules/antlr4ts/ANTLRErrorStrategy.js - var require_ANTLRErrorStrategy = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); + var require_ANTLRErrorStrategy = __commonJS({ + "node_modules/antlr4ts/ANTLRErrorStrategy.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } }); // node_modules/has-symbols/shams.js - var require_shams = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - module.exports = function hasSymbols() { - if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { - return false; - } - if (typeof Symbol.iterator === "symbol") { - return true; - } - var obj = {}; - var sym = Symbol("test"); - var symObj = Object(sym); - if (typeof sym === "string") { - return false; - } - if (Object.prototype.toString.call(sym) !== "[object Symbol]") { - return false; - } - if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { - return false; - } - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { - return false; - } - if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { - return false; - } - if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { - return false; - } - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { - return false; - } - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { - return false; - } - if (typeof Object.getOwnPropertyDescriptor === "function") { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { + var require_shams = __commonJS({ + "node_modules/has-symbols/shams.js"(exports, module) { + init_process_shim(); + "use strict"; + module.exports = function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { return false; } - } - return true; - }; + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (sym in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }; + } + }); + + // node_modules/has-tostringtag/shams.js + var require_shams2 = __commonJS({ + "node_modules/has-tostringtag/shams.js"(exports, module) { + init_process_shim(); + "use strict"; + var hasSymbols = require_shams(); + module.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; + }; + } }); // node_modules/has-symbols/index.js - var require_has_symbols = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var origSymbol = typeof Symbol !== "undefined" && Symbol; - var hasSymbolSham = require_shams(); - module.exports = function hasNativeSymbols() { - if (typeof origSymbol !== "function") { - return false; - } - if (typeof Symbol !== "function") { - return false; - } - if (typeof origSymbol("foo") !== "symbol") { - return false; - } - if (typeof Symbol("bar") !== "symbol") { - return false; - } - return hasSymbolSham(); - }; + var require_has_symbols = __commonJS({ + "node_modules/has-symbols/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }; + } }); // node_modules/function-bind/implementation.js - var require_implementation = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; - var slice = Array.prototype.slice; - var toStr = Object.prototype.toString; - var funcType = "[object Function]"; - module.exports = function bind(that) { - var target = this; - if (typeof target !== "function" || toStr.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slice.call(arguments, 1); - var bound; - var binder = function() { - if (this instanceof bound) { - var result = target.apply(this, args.concat(slice.call(arguments))); - if (Object(result) === result) { - return result; + var require_implementation = __commonJS({ + "node_modules/function-bind/implementation.js"(exports, module) { + init_process_shim(); + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var slice = Array.prototype.slice; + var toStr = Object.prototype.toString; + var funcType = "[object Function]"; + module.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply(this, args.concat(slice.call(arguments))); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply(that, args.concat(slice.call(arguments))); } - return this; - } else { - return target.apply(that, args.concat(slice.call(arguments))); + }; + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push("$" + i); + } + bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; } + return bound; }; - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push("$" + i); - } - bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); - if (target.prototype) { - var Empty = function Empty2() { - }; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; + } }); // node_modules/function-bind/index.js - var require_function_bind = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var implementation = require_implementation(); - module.exports = Function.prototype.bind || implementation; + var require_function_bind = __commonJS({ + "node_modules/function-bind/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var implementation = require_implementation(); + module.exports = Function.prototype.bind || implementation; + } }); // node_modules/has/src/index.js - var require_src = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var bind = require_function_bind(); - module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + var require_src = __commonJS({ + "node_modules/has/src/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var bind = require_function_bind(); + module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + } }); // node_modules/get-intrinsic/index.js - var require_get_intrinsic = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var undefined2; - var $SyntaxError = SyntaxError; - var $Function = Function; - var $TypeError = TypeError; - var getEvalledConstructor = function(expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); - } catch (e) { - } - }; - var $gOPD = Object.getOwnPropertyDescriptor; - if ($gOPD) { - try { - $gOPD({}, ""); - } catch (e) { - $gOPD = null; + var require_get_intrinsic = __commonJS({ + "node_modules/get-intrinsic/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var undefined2; + var $SyntaxError = SyntaxError; + var $Function = Function; + var $TypeError = TypeError; + var getEvalledConstructor = function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }; + var $gOPD = Object.getOwnPropertyDescriptor; + if ($gOPD) { + try { + $gOPD({}, ""); + } catch (e) { + $gOPD = null; + } } - } - var throwTypeError = function() { - throw new $TypeError(); - }; - var ThrowTypeError = $gOPD ? function() { - try { - arguments.callee; - return throwTypeError; - } catch (calleeThrows) { + var throwTypeError = function() { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD ? function() { try { - return $gOPD(arguments, "callee").get; - } catch (gOPDthrows) { + arguments.callee; return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } } - } - }() : throwTypeError; - var hasSymbols = require_has_symbols()(); - var getProto = Object.getPrototypeOf || function(x) { - return x.__proto__; - }; - var needsEval = {}; - var TypedArray = typeof Uint8Array === "undefined" ? undefined2 : getProto(Uint8Array); - var INTRINSICS = { - "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, - "%Array%": Array, - "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, - "%ArrayIteratorPrototype%": hasSymbols ? getProto([][Symbol.iterator]()) : undefined2, - "%AsyncFromSyncIteratorPrototype%": undefined2, - "%AsyncFunction%": needsEval, - "%AsyncGenerator%": needsEval, - "%AsyncGeneratorFunction%": needsEval, - "%AsyncIteratorPrototype%": needsEval, - "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, - "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, - "%Boolean%": Boolean, - "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, - "%Date%": Date, - "%decodeURI%": decodeURI, - "%decodeURIComponent%": decodeURIComponent, - "%encodeURI%": encodeURI, - "%encodeURIComponent%": encodeURIComponent, - "%Error%": Error, - "%eval%": eval, - "%EvalError%": EvalError, - "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, - "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, - "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, - "%Function%": $Function, - "%GeneratorFunction%": needsEval, - "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, - "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, - "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, - "%isFinite%": isFinite, - "%isNaN%": isNaN, - "%IteratorPrototype%": hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined2, - "%JSON%": typeof JSON === "object" ? JSON : undefined2, - "%Map%": typeof Map === "undefined" ? undefined2 : Map, - "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols ? undefined2 : getProto(new Map()[Symbol.iterator]()), - "%Math%": Math, - "%Number%": Number, - "%Object%": Object, - "%parseFloat%": parseFloat, - "%parseInt%": parseInt, - "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, - "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, - "%RangeError%": RangeError, - "%ReferenceError%": ReferenceError, - "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, - "%RegExp%": RegExp, - "%Set%": typeof Set === "undefined" ? undefined2 : Set, - "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols ? undefined2 : getProto(new Set()[Symbol.iterator]()), - "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, - "%String%": String, - "%StringIteratorPrototype%": hasSymbols ? getProto(""[Symbol.iterator]()) : undefined2, - "%Symbol%": hasSymbols ? Symbol : undefined2, - "%SyntaxError%": $SyntaxError, - "%ThrowTypeError%": ThrowTypeError, - "%TypedArray%": TypedArray, - "%TypeError%": $TypeError, - "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, - "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, - "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, - "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, - "%URIError%": URIError, - "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, - "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, - "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet - }; - var doEval = function doEval2(name) { - var value; - if (name === "%AsyncFunction%") { - value = getEvalledConstructor("async function () {}"); - } else if (name === "%GeneratorFunction%") { - value = getEvalledConstructor("function* () {}"); - } else if (name === "%AsyncGeneratorFunction%") { - value = getEvalledConstructor("async function* () {}"); - } else if (name === "%AsyncGenerator%") { - var fn = doEval2("%AsyncGeneratorFunction%"); - if (fn) { - value = fn.prototype; - } - } else if (name === "%AsyncIteratorPrototype%") { - var gen = doEval2("%AsyncGenerator%"); - if (gen) { - value = getProto(gen.prototype); - } - } - INTRINSICS[name] = value; - return value; - }; - var LEGACY_ALIASES = { - "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], - "%ArrayPrototype%": ["Array", "prototype"], - "%ArrayProto_entries%": ["Array", "prototype", "entries"], - "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], - "%ArrayProto_keys%": ["Array", "prototype", "keys"], - "%ArrayProto_values%": ["Array", "prototype", "values"], - "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], - "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], - "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], - "%BooleanPrototype%": ["Boolean", "prototype"], - "%DataViewPrototype%": ["DataView", "prototype"], - "%DatePrototype%": ["Date", "prototype"], - "%ErrorPrototype%": ["Error", "prototype"], - "%EvalErrorPrototype%": ["EvalError", "prototype"], - "%Float32ArrayPrototype%": ["Float32Array", "prototype"], - "%Float64ArrayPrototype%": ["Float64Array", "prototype"], - "%FunctionPrototype%": ["Function", "prototype"], - "%Generator%": ["GeneratorFunction", "prototype"], - "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], - "%Int8ArrayPrototype%": ["Int8Array", "prototype"], - "%Int16ArrayPrototype%": ["Int16Array", "prototype"], - "%Int32ArrayPrototype%": ["Int32Array", "prototype"], - "%JSONParse%": ["JSON", "parse"], - "%JSONStringify%": ["JSON", "stringify"], - "%MapPrototype%": ["Map", "prototype"], - "%NumberPrototype%": ["Number", "prototype"], - "%ObjectPrototype%": ["Object", "prototype"], - "%ObjProto_toString%": ["Object", "prototype", "toString"], - "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], - "%PromisePrototype%": ["Promise", "prototype"], - "%PromiseProto_then%": ["Promise", "prototype", "then"], - "%Promise_all%": ["Promise", "all"], - "%Promise_reject%": ["Promise", "reject"], - "%Promise_resolve%": ["Promise", "resolve"], - "%RangeErrorPrototype%": ["RangeError", "prototype"], - "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], - "%RegExpPrototype%": ["RegExp", "prototype"], - "%SetPrototype%": ["Set", "prototype"], - "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], - "%StringPrototype%": ["String", "prototype"], - "%SymbolPrototype%": ["Symbol", "prototype"], - "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], - "%TypedArrayPrototype%": ["TypedArray", "prototype"], - "%TypeErrorPrototype%": ["TypeError", "prototype"], - "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], - "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], - "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], - "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], - "%URIErrorPrototype%": ["URIError", "prototype"], - "%WeakMapPrototype%": ["WeakMap", "prototype"], - "%WeakSetPrototype%": ["WeakSet", "prototype"] - }; - var bind = require_function_bind(); - var hasOwn = require_src(); - var $concat = bind.call(Function.call, Array.prototype.concat); - var $spliceApply = bind.call(Function.apply, Array.prototype.splice); - var $replace = bind.call(Function.call, String.prototype.replace); - var $strSlice = bind.call(Function.call, String.prototype.slice); - var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; - var reEscapeChar = /\\(\\)?/g; - var stringToPath = function stringToPath2(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === "%" && last !== "%") { - throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); - } else if (last === "%" && first !== "%") { - throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); - } - var result = []; - $replace(string, rePropName, function(match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; - }); - return result; - }; - var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { - var intrinsicName = name; - var alias; - if (hasOwn(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = "%" + alias[0] + "%"; - } - if (hasOwn(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === "undefined" && !allowMissing) { - throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + }() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = Object.getPrototypeOf || function(x) { + return x.__proto__; + }; + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": Error, + "%eval%": eval, + "%EvalError%": EvalError, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols ? undefined2 : getProto(new Map()[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": Object, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": RangeError, + "%ReferenceError%": ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols ? undefined2 : getProto(new Set()[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet + }; + var doEval = function doEval2(name) { + var value; + if (name === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name] = value; + return value; + }; + var LEGACY_ALIASES = { + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_src(); + var $concat = bind.call(Function.call, Array.prototype.concat); + var $spliceApply = bind.call(Function.apply, Array.prototype.splice); + var $replace = bind.call(Function.call, String.prototype.replace); + var $strSlice = bind.call(Function.call, String.prototype.slice); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = function stringToPath2(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === "%" && last !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last === "%" && first !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string, rePropName, function(match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; + }); + return result; + }; + var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; } - return { - alias, - name: intrinsicName, - value - }; - } - throw new $SyntaxError("intrinsic " + name + " does not exist!"); - }; - module.exports = function GetIntrinsic(name, allowMissing) { - if (typeof name !== "string" || name.length === 0) { - throw new $TypeError("intrinsic name must be a non-empty string"); - } - if (arguments.length > 1 && typeof allowMissing !== "boolean") { - throw new $TypeError('"allowMissing" argument must be a boolean'); - } - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; - var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { - throw new $SyntaxError("property names with quotes must have matching quotes"); - } - if (part === "constructor" || !isOwn) { - skipFurtherCaching = true; - } - intrinsicBaseName += "." + part; - intrinsicRealName = "%" + intrinsicBaseName + "%"; - if (hasOwn(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); - } - return void 0; + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); } - if ($gOPD && i + 1 >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - if (isOwn && "get" in desc && !("originalValue" in desc.get)) { - value = desc.get; + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name + " does not exist!"); + }; + module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== "string" || name.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); + } + return void 0; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } } else { + isOwn = hasOwn(value, part); value = value[part]; } - } else { - isOwn = hasOwn(value, part); - value = value[part]; - } - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } } } - } - return value; - }; + return value; + }; + } }); // node_modules/call-bind/index.js - var require_call_bind = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var bind = require_function_bind(); - var GetIntrinsic = require_get_intrinsic(); - var $apply = GetIntrinsic("%Function.prototype.apply%"); - var $call = GetIntrinsic("%Function.prototype.call%"); - var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); - var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); - var $max = GetIntrinsic("%Math.max%"); - if ($defineProperty) { - try { - $defineProperty({}, "a", {value: 1}); - } catch (e) { - $defineProperty = null; + var require_call_bind = __commonJS({ + "node_modules/call-bind/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var bind = require_function_bind(); + var GetIntrinsic = require_get_intrinsic(); + var $apply = GetIntrinsic("%Function.prototype.apply%"); + var $call = GetIntrinsic("%Function.prototype.call%"); + var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var $max = GetIntrinsic("%Math.max%"); + if ($defineProperty) { + try { + $defineProperty({}, "a", {value: 1}); + } catch (e) { + $defineProperty = null; + } } - } - module.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, "length"); - if (desc.configurable) { - $defineProperty(func, "length", {value: 1 + $max(0, originalFunction.length - (arguments.length - 1))}); + module.exports = function callBind(originalFunction) { + var func = $reflectApply(bind, $call, arguments); + if ($gOPD && $defineProperty) { + var desc = $gOPD(func, "length"); + if (desc.configurable) { + $defineProperty(func, "length", {value: 1 + $max(0, originalFunction.length - (arguments.length - 1))}); + } } + return func; + }; + var applyBind = function applyBind2() { + return $reflectApply(bind, $apply, arguments); + }; + if ($defineProperty) { + $defineProperty(module.exports, "apply", {value: applyBind}); + } else { + module.exports.apply = applyBind; } - return func; - }; - var applyBind = function applyBind2() { - return $reflectApply(bind, $apply, arguments); - }; - if ($defineProperty) { - $defineProperty(module.exports, "apply", {value: applyBind}); - } else { - module.exports.apply = applyBind; } }); // node_modules/call-bind/callBound.js - var require_callBound = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var GetIntrinsic = require_get_intrinsic(); - var callBind = require_call_bind(); - var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf")); - module.exports = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = GetIntrinsic(name, !!allowMissing); - if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { - return callBind(intrinsic); - } - return intrinsic; - }; + var require_callBound = __commonJS({ + "node_modules/call-bind/callBound.js"(exports, module) { + init_process_shim(); + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBind = require_call_bind(); + var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf")); + module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { + return callBind(intrinsic); + } + return intrinsic; + }; + } }); // node_modules/is-arguments/index.js - var require_is_arguments = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var hasToStringTag = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol"; - var callBound = require_callBound(); - var $toString = callBound("Object.prototype.toString"); - var isStandardArguments = function isArguments(value) { - if (hasToStringTag && value && typeof value === "object" && Symbol.toStringTag in value) { - return false; - } - return $toString(value) === "[object Arguments]"; - }; - var isLegacyArguments = function isArguments(value) { - if (isStandardArguments(value)) { - return true; - } - return value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && $toString(value) !== "[object Array]" && $toString(value.callee) === "[object Function]"; - }; - var supportsStandardArguments = function() { - return isStandardArguments(arguments); - }(); - isStandardArguments.isLegacyArguments = isLegacyArguments; - module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; - }); - - // node_modules/is-generator-function/index.js - var require_is_generator_function = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var toStr = Object.prototype.toString; - var fnToStr = Function.prototype.toString; - var isFnRegex = /^\s*(?:function)?\*/; - var hasToStringTag = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol"; - var getProto = Object.getPrototypeOf; - var getGeneratorFunc = function() { - if (!hasToStringTag) { - return false; - } - try { - return Function("return function*() {}")(); - } catch (e) { - } - }; - var generatorFunc = getGeneratorFunc(); - var GeneratorFunction = getProto && generatorFunc ? getProto(generatorFunc) : false; - module.exports = function isGeneratorFunction(fn) { - if (typeof fn !== "function") { - return false; - } - if (isFnRegex.test(fnToStr.call(fn))) { - return true; - } - if (!hasToStringTag) { - var str = toStr.call(fn); - return str === "[object GeneratorFunction]"; - } - return getProto && getProto(fn) === GeneratorFunction; - }; - }); - - // node_modules/foreach/index.js - var require_foreach = __commonJS((exports, module) => { - init_process_shim(); - var hasOwn = Object.prototype.hasOwnProperty; - var toString = Object.prototype.toString; - module.exports = function forEach(obj, fn, ctx) { - if (toString.call(fn) !== "[object Function]") { - throw new TypeError("iterator must be a function"); - } - var l = obj.length; - if (l === +l) { - for (var i = 0; i < l; i++) { - fn.call(ctx, obj[i], i, obj); + var require_is_arguments = __commonJS({ + "node_modules/is-arguments/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var hasToStringTag = require_shams2()(); + var callBound = require_callBound(); + var $toString = callBound("Object.prototype.toString"); + var isStandardArguments = function isArguments(value) { + if (hasToStringTag && value && typeof value === "object" && Symbol.toStringTag in value) { + return false; } - } else { - for (var k in obj) { - if (hasOwn.call(obj, k)) { - fn.call(ctx, obj[k], k, obj); - } + return $toString(value) === "[object Arguments]"; + }; + var isLegacyArguments = function isArguments(value) { + if (isStandardArguments(value)) { + return true; } - } - }; - }); - - // node_modules/array-filter/index.js - var require_array_filter = __commonJS((exports, module) => { - init_process_shim(); - module.exports = function(arr, fn, self) { - if (arr.filter) - return arr.filter(fn, self); - if (arr === void 0 || arr === null) - throw new TypeError(); - if (typeof fn != "function") - throw new TypeError(); - var ret = []; - for (var i = 0; i < arr.length; i++) { - if (!hasOwn.call(arr, i)) - continue; - var val = arr[i]; - if (fn.call(self, val, i, arr)) - ret.push(val); - } - return ret; - }; - var hasOwn = Object.prototype.hasOwnProperty; - }); - - // node_modules/available-typed-arrays/index.js - var require_available_typed_arrays = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var filter = require_array_filter(); - module.exports = function availableTypedArrays() { - return filter([ - "BigInt64Array", - "BigUint64Array", - "Float32Array", - "Float64Array", - "Int16Array", - "Int32Array", - "Int8Array", - "Uint16Array", - "Uint32Array", - "Uint8Array", - "Uint8ClampedArray" - ], function(typedArray) { - return typeof global[typedArray] === "function"; - }); - }; - }); - - // node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js - var require_getOwnPropertyDescriptor = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var GetIntrinsic = require_get_intrinsic(); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%"); - if ($gOPD) { - try { - $gOPD([], "length"); - } catch (e) { - $gOPD = null; - } + return value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && $toString(value) !== "[object Array]" && $toString(value.callee) === "[object Function]"; + }; + var supportsStandardArguments = function() { + return isStandardArguments(arguments); + }(); + isStandardArguments.isLegacyArguments = isLegacyArguments; + module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; } - module.exports = $gOPD; }); - // node_modules/is-typed-array/index.js - var require_is_typed_array = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var forEach = require_foreach(); - var availableTypedArrays = require_available_typed_arrays(); - var callBound = require_callBound(); - var $toString = callBound("Object.prototype.toString"); - var hasSymbols = require_has_symbols()(); - var hasToStringTag = hasSymbols && typeof Symbol.toStringTag === "symbol"; - var typedArrays = availableTypedArrays(); - var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { - for (var i = 0; i < array.length; i += 1) { - if (array[i] === value) { - return i; + // node_modules/is-generator-function/index.js + var require_is_generator_function = __commonJS({ + "node_modules/is-generator-function/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var toStr = Object.prototype.toString; + var fnToStr = Function.prototype.toString; + var isFnRegex = /^\s*(?:function)?\*/; + var hasToStringTag = require_shams2()(); + var getProto = Object.getPrototypeOf; + var getGeneratorFunc = function() { + if (!hasToStringTag) { + return false; } - } - return -1; - }; - var $slice = callBound("String.prototype.slice"); - var toStrTags = {}; - var gOPD = require_getOwnPropertyDescriptor(); - var getPrototypeOf = Object.getPrototypeOf; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach(typedArrays, function(typedArray) { - var arr = new global[typedArray](); - if (!(Symbol.toStringTag in arr)) { - throw new EvalError("this engine has support for Symbol.toStringTag, but " + typedArray + " does not have the property! Please report this."); - } - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - toStrTags[typedArray] = descriptor.get; - }); - } - var tryTypedArrays = function tryAllTypedArrays(value) { - var anyTrue = false; - forEach(toStrTags, function(getter, typedArray) { - if (!anyTrue) { - try { - anyTrue = getter.call(value) === typedArray; - } catch (e) { - } + try { + return Function("return function*() {}")(); + } catch (e) { } - }); - return anyTrue; - }; - module.exports = function isTypedArray(value) { - if (!value || typeof value !== "object") { - return false; - } - if (!hasToStringTag) { - var tag = $slice($toString(value), 8, -1); - return $indexOf(typedArrays, tag) > -1; - } - if (!gOPD) { - return false; - } - return tryTypedArrays(value); - }; - }); - - // node_modules/which-typed-array/index.js - var require_which_typed_array = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var forEach = require_foreach(); - var availableTypedArrays = require_available_typed_arrays(); - var callBound = require_callBound(); - var $toString = callBound("Object.prototype.toString"); - var hasSymbols = require_has_symbols()(); - var hasToStringTag = hasSymbols && typeof Symbol.toStringTag === "symbol"; - var typedArrays = availableTypedArrays(); - var $slice = callBound("String.prototype.slice"); - var toStrTags = {}; - var gOPD = require_getOwnPropertyDescriptor(); - var getPrototypeOf = Object.getPrototypeOf; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach(typedArrays, function(typedArray) { - if (typeof global[typedArray] === "function") { - var arr = new global[typedArray](); - if (!(Symbol.toStringTag in arr)) { - throw new EvalError("this engine has support for Symbol.toStringTag, but " + typedArray + " does not have the property! Please report this."); - } - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - toStrTags[typedArray] = descriptor.get; + }; + var GeneratorFunction; + module.exports = function isGeneratorFunction(fn) { + if (typeof fn !== "function") { + return false; } - }); + if (isFnRegex.test(fnToStr.call(fn))) { + return true; + } + if (!hasToStringTag) { + var str = toStr.call(fn); + return str === "[object GeneratorFunction]"; + } + if (!getProto) { + return false; + } + if (typeof GeneratorFunction === "undefined") { + var generatorFunc = getGeneratorFunc(); + GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false; + } + return getProto(fn) === GeneratorFunction; + }; } - var tryTypedArrays = function tryAllTypedArrays(value) { - var foundName = false; - forEach(toStrTags, function(getter, typedArray) { - if (!foundName) { - try { - var name = getter.call(value); - if (name === typedArray) { - foundName = name; + }); + + // node_modules/is-callable/index.js + var require_is_callable = __commonJS({ + "node_modules/is-callable/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var fnToStr = Function.prototype.toString; + var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; + var badArrayLike; + var isCallableMarker; + if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { + try { + badArrayLike = Object.defineProperty({}, "length", { + get: function() { + throw isCallableMarker; } - } catch (e) { + }); + isCallableMarker = {}; + reflectApply(function() { + throw 42; + }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; } } - }); - return foundName; - }; - var isTypedArray = require_is_typed_array(); - module.exports = function whichTypedArray(value) { - if (!isTypedArray(value)) { - return false; - } - if (!hasToStringTag) { - return $slice($toString(value), 8, -1); + } else { + reflectApply = null; } - return tryTypedArrays(value); - }; - }); - - // node_modules/util/support/types.js - var require_types = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var isArgumentsObject = require_is_arguments(); - var isGeneratorFunction = require_is_generator_function(); - var whichTypedArray = require_which_typed_array(); - var isTypedArray = require_is_typed_array(); - function uncurryThis(f) { - return f.call.bind(f); - } - var BigIntSupported = typeof BigInt !== "undefined"; - var SymbolSupported = typeof Symbol !== "undefined"; - var ObjectToString = uncurryThis(Object.prototype.toString); - var numberValue = uncurryThis(Number.prototype.valueOf); - var stringValue = uncurryThis(String.prototype.valueOf); - var booleanValue = uncurryThis(Boolean.prototype.valueOf); - if (BigIntSupported) { - bigIntValue = uncurryThis(BigInt.prototype.valueOf); - } - var bigIntValue; - if (SymbolSupported) { - symbolValue = uncurryThis(Symbol.prototype.valueOf); - } - var symbolValue; - function checkBoxedPrimitive(value, prototypeValueOf) { - if (typeof value !== "object") { - return false; - } - try { - prototypeValueOf(value); - return true; - } catch (e) { - return false; - } - } - exports.isArgumentsObject = isArgumentsObject; - exports.isGeneratorFunction = isGeneratorFunction; - exports.isTypedArray = isTypedArray; - function isPromise(input) { - return typeof Promise !== "undefined" && input instanceof Promise || input !== null && typeof input === "object" && typeof input.then === "function" && typeof input.catch === "function"; - } - exports.isPromise = isPromise; - function isArrayBufferView(value) { - if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { - return ArrayBuffer.isView(value); - } - return isTypedArray(value) || isDataView(value); - } - exports.isArrayBufferView = isArrayBufferView; - function isUint8Array(value) { - return whichTypedArray(value) === "Uint8Array"; - } - exports.isUint8Array = isUint8Array; - function isUint8ClampedArray(value) { - return whichTypedArray(value) === "Uint8ClampedArray"; - } - exports.isUint8ClampedArray = isUint8ClampedArray; - function isUint16Array(value) { - return whichTypedArray(value) === "Uint16Array"; - } - exports.isUint16Array = isUint16Array; - function isUint32Array(value) { - return whichTypedArray(value) === "Uint32Array"; - } - exports.isUint32Array = isUint32Array; - function isInt8Array(value) { - return whichTypedArray(value) === "Int8Array"; - } - exports.isInt8Array = isInt8Array; - function isInt16Array(value) { - return whichTypedArray(value) === "Int16Array"; - } - exports.isInt16Array = isInt16Array; - function isInt32Array(value) { - return whichTypedArray(value) === "Int32Array"; - } - exports.isInt32Array = isInt32Array; - function isFloat32Array(value) { - return whichTypedArray(value) === "Float32Array"; - } - exports.isFloat32Array = isFloat32Array; - function isFloat64Array(value) { - return whichTypedArray(value) === "Float64Array"; - } - exports.isFloat64Array = isFloat64Array; - function isBigInt64Array(value) { - return whichTypedArray(value) === "BigInt64Array"; - } - exports.isBigInt64Array = isBigInt64Array; - function isBigUint64Array(value) { - return whichTypedArray(value) === "BigUint64Array"; - } - exports.isBigUint64Array = isBigUint64Array; - function isMapToString(value) { - return ObjectToString(value) === "[object Map]"; - } - isMapToString.working = typeof Map !== "undefined" && isMapToString(new Map()); - function isMap(value) { - if (typeof Map === "undefined") { - return false; - } - return isMapToString.working ? isMapToString(value) : value instanceof Map; - } - exports.isMap = isMap; - function isSetToString(value) { - return ObjectToString(value) === "[object Set]"; - } - isSetToString.working = typeof Set !== "undefined" && isSetToString(new Set()); - function isSet(value) { - if (typeof Set === "undefined") { - return false; - } - return isSetToString.working ? isSetToString(value) : value instanceof Set; - } - exports.isSet = isSet; - function isWeakMapToString(value) { - return ObjectToString(value) === "[object WeakMap]"; - } - isWeakMapToString.working = typeof WeakMap !== "undefined" && isWeakMapToString(new WeakMap()); - function isWeakMap(value) { - if (typeof WeakMap === "undefined") { - return false; - } - return isWeakMapToString.working ? isWeakMapToString(value) : value instanceof WeakMap; - } - exports.isWeakMap = isWeakMap; - function isWeakSetToString(value) { - return ObjectToString(value) === "[object WeakSet]"; - } - isWeakSetToString.working = typeof WeakSet !== "undefined" && isWeakSetToString(new WeakSet()); - function isWeakSet(value) { - return isWeakSetToString(value); - } - exports.isWeakSet = isWeakSet; - function isArrayBufferToString(value) { - return ObjectToString(value) === "[object ArrayBuffer]"; - } - isArrayBufferToString.working = typeof ArrayBuffer !== "undefined" && isArrayBufferToString(new ArrayBuffer()); - function isArrayBuffer(value) { - if (typeof ArrayBuffer === "undefined") { - return false; - } - return isArrayBufferToString.working ? isArrayBufferToString(value) : value instanceof ArrayBuffer; - } - exports.isArrayBuffer = isArrayBuffer; - function isDataViewToString(value) { - return ObjectToString(value) === "[object DataView]"; - } - isDataViewToString.working = typeof ArrayBuffer !== "undefined" && typeof DataView !== "undefined" && isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1)); - function isDataView(value) { - if (typeof DataView === "undefined") { - return false; - } - return isDataViewToString.working ? isDataViewToString(value) : value instanceof DataView; - } - exports.isDataView = isDataView; - function isSharedArrayBufferToString(value) { - return ObjectToString(value) === "[object SharedArrayBuffer]"; - } - isSharedArrayBufferToString.working = typeof SharedArrayBuffer !== "undefined" && isSharedArrayBufferToString(new SharedArrayBuffer()); - function isSharedArrayBuffer(value) { - if (typeof SharedArrayBuffer === "undefined") { - return false; - } - return isSharedArrayBufferToString.working ? isSharedArrayBufferToString(value) : value instanceof SharedArrayBuffer; - } - exports.isSharedArrayBuffer = isSharedArrayBuffer; - function isAsyncFunction(value) { - return ObjectToString(value) === "[object AsyncFunction]"; - } - exports.isAsyncFunction = isAsyncFunction; - function isMapIterator(value) { - return ObjectToString(value) === "[object Map Iterator]"; - } - exports.isMapIterator = isMapIterator; - function isSetIterator(value) { - return ObjectToString(value) === "[object Set Iterator]"; - } - exports.isSetIterator = isSetIterator; - function isGeneratorObject(value) { - return ObjectToString(value) === "[object Generator]"; - } - exports.isGeneratorObject = isGeneratorObject; - function isWebAssemblyCompiledModule(value) { - return ObjectToString(value) === "[object WebAssembly.Module]"; - } - exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule; - function isNumberObject(value) { - return checkBoxedPrimitive(value, numberValue); - } - exports.isNumberObject = isNumberObject; - function isStringObject(value) { - return checkBoxedPrimitive(value, stringValue); - } - exports.isStringObject = isStringObject; - function isBooleanObject(value) { - return checkBoxedPrimitive(value, booleanValue); - } - exports.isBooleanObject = isBooleanObject; - function isBigIntObject(value) { - return BigIntSupported && checkBoxedPrimitive(value, bigIntValue); - } - exports.isBigIntObject = isBigIntObject; - function isSymbolObject(value) { - return SymbolSupported && checkBoxedPrimitive(value, symbolValue); - } - exports.isSymbolObject = isSymbolObject; - function isBoxedPrimitive(value) { - return isNumberObject(value) || isStringObject(value) || isBooleanObject(value) || isBigIntObject(value) || isSymbolObject(value); + var constructorRegex = /^\s*class\b/; + var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; + } + }; + var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { + return false; + } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var fnClass = "[object Function]"; + var genClass = "[object GeneratorFunction]"; + var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; + var documentDotAll = typeof document === "object" && typeof document.all === "undefined" && document.all !== void 0 ? document.all : {}; + module.exports = reflectApply ? function isCallable(value) { + if (value === documentDotAll) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (typeof value === "function" && !value.prototype) { + return true; + } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { + return false; + } + } + return !isES6ClassFn(value); + } : function isCallable(value) { + if (value === documentDotAll) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (typeof value === "function" && !value.prototype) { + return true; + } + if (hasToStringTag) { + return tryFunctionObject(value); + } + if (isES6ClassFn(value)) { + return false; + } + var strClass = toStr.call(value); + return strClass === fnClass || strClass === genClass; + }; } - exports.isBoxedPrimitive = isBoxedPrimitive; - function isAnyArrayBuffer(value) { - return typeof Uint8Array !== "undefined" && (isArrayBuffer(value) || isSharedArrayBuffer(value)); + }); + + // node_modules/for-each/index.js + var require_for_each = __commonJS({ + "node_modules/for-each/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var isCallable = require_is_callable(); + var toStr = Object.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var forEachArray = function forEachArray2(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } + }; + var forEachString = function forEachString2(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } + }; + var forEachObject = function forEachObject2(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } + }; + var forEach = function forEach2(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError("iterator must be a function"); + } + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + if (toStr.call(list) === "[object Array]") { + forEachArray(list, iterator, receiver); + } else if (typeof list === "string") { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } + }; + module.exports = forEach; } - exports.isAnyArrayBuffer = isAnyArrayBuffer; - ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach(function(method) { - Object.defineProperty(exports, method, { - enumerable: false, - value: function() { - throw new Error(method + " is not supported in userland"); + }); + + // node_modules/available-typed-arrays/index.js + var require_available_typed_arrays = __commonJS({ + "node_modules/available-typed-arrays/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var possibleNames = [ + "BigInt64Array", + "BigUint64Array", + "Float32Array", + "Float64Array", + "Int16Array", + "Int32Array", + "Int8Array", + "Uint16Array", + "Uint32Array", + "Uint8Array", + "Uint8ClampedArray" + ]; + var g = typeof globalThis === "undefined" ? global : globalThis; + module.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === "function") { + out[out.length] = possibleNames[i]; + } } - }); - }); + return out; + }; + } }); - // node_modules/util/support/isBufferBrowser.js - var require_isBufferBrowser = __commonJS((exports, module) => { - init_process_shim(); - module.exports = function isBuffer(arg) { - return arg && typeof arg === "object" && typeof arg.copy === "function" && typeof arg.fill === "function" && typeof arg.readUInt8 === "function"; - }; + // node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js + var require_getOwnPropertyDescriptor = __commonJS({ + "node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js"(exports, module) { + init_process_shim(); + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module.exports = $gOPD; + } }); - // node_modules/inherits/inherits_browser.js - var require_inherits_browser = __commonJS((exports, module) => { - init_process_shim(); - if (typeof Object.create === "function") { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); + // node_modules/is-typed-array/index.js + var require_is_typed_array = __commonJS({ + "node_modules/is-typed-array/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var forEach = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBound = require_callBound(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } } + return -1; }; - } else { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function() { - }; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; + var $slice = callBound("String.prototype.slice"); + var toStrTags = {}; + var gOPD = require_getOwnPropertyDescriptor(); + var getPrototypeOf = Object.getPrototypeOf; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + toStrTags[typedArray] = descriptor.get; + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var anyTrue = false; + forEach(toStrTags, function(getter, typedArray) { + if (!anyTrue) { + try { + anyTrue = getter.call(value) === typedArray; + } catch (e) { + } + } + }); + return anyTrue; + }; + module.exports = function isTypedArray(value) { + if (!value || typeof value !== "object") { + return false; } + if (!hasToStringTag || !(Symbol.toStringTag in value)) { + var tag = $slice($toString(value), 8, -1); + return $indexOf(typedArrays, tag) > -1; + } + if (!gOPD) { + return false; + } + return tryTypedArrays(value); }; } }); - // node_modules/util/util.js - var require_util = __commonJS((exports) => { - init_process_shim(); - var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors2(obj) { - var keys = Object.keys(obj); - var descriptors = {}; - for (var i = 0; i < keys.length; i++) { - descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); - } - return descriptors; - }; - var formatRegExp = /%[sdj%]/g; - exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(" "); - } - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x2) { - if (x2 === "%%") - return "%"; - if (i >= len) - return x2; - switch (x2) { - case "%s": - return String(args[i++]); - case "%d": - return Number(args[i++]); - case "%j": + // node_modules/which-typed-array/index.js + var require_which_typed_array = __commonJS({ + "node_modules/which-typed-array/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var forEach = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBound = require_callBound(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var toStrTags = {}; + var gOPD = require_getOwnPropertyDescriptor(); + var getPrototypeOf = Object.getPrototypeOf; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach(typedArrays, function(typedArray) { + if (typeof g[typedArray] === "function") { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + toStrTags[typedArray] = descriptor.get; + } + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var foundName = false; + forEach(toStrTags, function(getter, typedArray) { + if (!foundName) { try { - return JSON.stringify(args[i++]); - } catch (_) { - return "[Circular]"; + var name = getter.call(value); + if (name === typedArray) { + foundName = name; + } + } catch (e) { } - default: - return x2; + } + }); + return foundName; + }; + var isTypedArray = require_is_typed_array(); + module.exports = function whichTypedArray(value) { + if (!isTypedArray(value)) { + return false; } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += " " + x; - } else { - str += " " + inspect(x); + if (!hasToStringTag || !(Symbol.toStringTag in value)) { + return $slice($toString(value), 8, -1); + } + return tryTypedArrays(value); + }; + } + }); + + // node_modules/util/support/types.js + var require_types = __commonJS({ + "node_modules/util/support/types.js"(exports) { + init_process_shim(); + "use strict"; + var isArgumentsObject = require_is_arguments(); + var isGeneratorFunction = require_is_generator_function(); + var whichTypedArray = require_which_typed_array(); + var isTypedArray = require_is_typed_array(); + function uncurryThis(f) { + return f.call.bind(f); + } + var BigIntSupported = typeof BigInt !== "undefined"; + var SymbolSupported = typeof Symbol !== "undefined"; + var ObjectToString = uncurryThis(Object.prototype.toString); + var numberValue = uncurryThis(Number.prototype.valueOf); + var stringValue = uncurryThis(String.prototype.valueOf); + var booleanValue = uncurryThis(Boolean.prototype.valueOf); + if (BigIntSupported) { + bigIntValue = uncurryThis(BigInt.prototype.valueOf); + } + var bigIntValue; + if (SymbolSupported) { + symbolValue = uncurryThis(Symbol.prototype.valueOf); + } + var symbolValue; + function checkBoxedPrimitive(value, prototypeValueOf) { + if (typeof value !== "object") { + return false; + } + try { + prototypeValueOf(value); + return true; + } catch (e) { + return false; } } - return str; - }; - exports.deprecate = function(fn, msg) { - if (typeof process !== "undefined" && process.noDeprecation === true) { - return fn; - } - if (typeof process === "undefined") { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; + exports.isArgumentsObject = isArgumentsObject; + exports.isGeneratorFunction = isGeneratorFunction; + exports.isTypedArray = isTypedArray; + function isPromise(input) { + return typeof Promise !== "undefined" && input instanceof Promise || input !== null && typeof input === "object" && typeof input.then === "function" && typeof input.catch === "function"; } - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - return deprecated; - }; - var debugs = {}; - var debugEnvRegex = /^$/; - if (process.env.NODE_DEBUG) { - debugEnv = process.env.NODE_DEBUG; - debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^").toUpperCase(); - debugEnvRegex = new RegExp("^" + debugEnv + "$", "i"); - } - var debugEnv; - exports.debuglog = function(set) { - set = set.toUpperCase(); - if (!debugs[set]) { - if (debugEnvRegex.test(set)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error("%s %d: %s", set, pid, msg); - }; - } else { - debugs[set] = function() { - }; + exports.isPromise = isPromise; + function isArrayBufferView(value) { + if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + return ArrayBuffer.isView(value); } + return isTypedArray(value) || isDataView(value); } - return debugs[set]; - }; - function inspect(obj, opts) { - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - if (arguments.length >= 3) - ctx.depth = arguments[2]; - if (arguments.length >= 4) - ctx.colors = arguments[3]; - if (isBoolean(opts)) { - ctx.showHidden = opts; - } else if (opts) { - exports._extend(ctx, opts); - } - if (isUndefined(ctx.showHidden)) - ctx.showHidden = false; - if (isUndefined(ctx.depth)) - ctx.depth = 2; - if (isUndefined(ctx.colors)) - ctx.colors = false; - if (isUndefined(ctx.customInspect)) - ctx.customInspect = true; - if (ctx.colors) - ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); - } - exports.inspect = inspect; - inspect.colors = { - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - white: [37, 39], - grey: [90, 39], - black: [30, 39], - blue: [34, 39], - cyan: [36, 39], - green: [32, 39], - magenta: [35, 39], - red: [31, 39], - yellow: [33, 39] - }; - inspect.styles = { - special: "cyan", - number: "yellow", - boolean: "yellow", - undefined: "grey", - null: "bold", - string: "green", - date: "magenta", - regexp: "red" - }; - function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - if (style) { - return "[" + inspect.colors[style][0] + "m" + str + "[" + inspect.colors[style][1] + "m"; - } else { - return str; + exports.isArrayBufferView = isArrayBufferView; + function isUint8Array(value) { + return whichTypedArray(value) === "Uint8Array"; } - } - function stylizeNoColor(str, styleType) { - return str; - } - function arrayToHash(array) { - var hash = {}; - array.forEach(function(val, idx) { - hash[val] = true; - }); - return hash; - } - function formatValue(ctx, value, recurseTimes) { - if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; + exports.isUint8Array = isUint8Array; + function isUint8ClampedArray(value) { + return whichTypedArray(value) === "Uint8ClampedArray"; } - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; + exports.isUint8ClampedArray = isUint8ClampedArray; + function isUint16Array(value) { + return whichTypedArray(value) === "Uint16Array"; } - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); + exports.isUint16Array = isUint16Array; + function isUint32Array(value) { + return whichTypedArray(value) === "Uint32Array"; } - if (isError(value) && (keys.indexOf("message") >= 0 || keys.indexOf("description") >= 0)) { - return formatError(value); + exports.isUint32Array = isUint32Array; + function isInt8Array(value) { + return whichTypedArray(value) === "Int8Array"; } - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ": " + value.name : ""; - return ctx.stylize("[Function" + name + "]", "special"); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), "date"); - } - if (isError(value)) { - return formatError(value); - } + exports.isInt8Array = isInt8Array; + function isInt16Array(value) { + return whichTypedArray(value) === "Int16Array"; } - var base = "", array = false, braces = ["{", "}"]; - if (isArray(value)) { - array = true; - braces = ["[", "]"]; + exports.isInt16Array = isInt16Array; + function isInt32Array(value) { + return whichTypedArray(value) === "Int32Array"; } - if (isFunction(value)) { - var n = value.name ? ": " + value.name : ""; - base = " [Function" + n + "]"; + exports.isInt32Array = isInt32Array; + function isFloat32Array(value) { + return whichTypedArray(value) === "Float32Array"; } - if (isRegExp(value)) { - base = " " + RegExp.prototype.toString.call(value); + exports.isFloat32Array = isFloat32Array; + function isFloat64Array(value) { + return whichTypedArray(value) === "Float64Array"; } - if (isDate(value)) { - base = " " + Date.prototype.toUTCString.call(value); + exports.isFloat64Array = isFloat64Array; + function isBigInt64Array(value) { + return whichTypedArray(value) === "BigInt64Array"; } - if (isError(value)) { - base = " " + formatError(value); + exports.isBigInt64Array = isBigInt64Array; + function isBigUint64Array(value) { + return whichTypedArray(value) === "BigUint64Array"; } - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; + exports.isBigUint64Array = isBigUint64Array; + function isMapToString(value) { + return ObjectToString(value) === "[object Map]"; } - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); - } else { - return ctx.stylize("[Object]", "special"); + isMapToString.working = typeof Map !== "undefined" && isMapToString(new Map()); + function isMap(value) { + if (typeof Map === "undefined") { + return false; } + return isMapToString.working ? isMapToString(value) : value instanceof Map; } - ctx.seen.push(value); - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); + exports.isMap = isMap; + function isSetToString(value) { + return ObjectToString(value) === "[object Set]"; } - ctx.seen.pop(); - return reduceToSingleString(output, base, braces); - } - function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize("undefined", "undefined"); - if (isString(value)) { - var simple = "'" + JSON.stringify(value).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; - return ctx.stylize(simple, "string"); - } - if (isNumber(value)) - return ctx.stylize("" + value, "number"); - if (isBoolean(value)) - return ctx.stylize("" + value, "boolean"); - if (isNull(value)) - return ctx.stylize("null", "null"); - } - function formatError(value) { - return "[" + Error.prototype.toString.call(value) + "]"; - } - function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); - } else { - output.push(""); + isSetToString.working = typeof Set !== "undefined" && isSetToString(new Set()); + function isSet(value) { + if (typeof Set === "undefined") { + return false; } + return isSetToString.working ? isSetToString(value) : value instanceof Set; } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); - } - }); - return output; - } - function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]}; - if (desc.get) { - if (desc.set) { - str = ctx.stylize("[Getter/Setter]", "special"); - } else { - str = ctx.stylize("[Getter]", "special"); + exports.isSet = isSet; + function isWeakMapToString(value) { + return ObjectToString(value) === "[object WeakMap]"; + } + isWeakMapToString.working = typeof WeakMap !== "undefined" && isWeakMapToString(new WeakMap()); + function isWeakMap(value) { + if (typeof WeakMap === "undefined") { + return false; } - } else { - if (desc.set) { - str = ctx.stylize("[Setter]", "special"); + return isWeakMapToString.working ? isWeakMapToString(value) : value instanceof WeakMap; + } + exports.isWeakMap = isWeakMap; + function isWeakSetToString(value) { + return ObjectToString(value) === "[object WeakSet]"; + } + isWeakSetToString.working = typeof WeakSet !== "undefined" && isWeakSetToString(new WeakSet()); + function isWeakSet(value) { + return isWeakSetToString(value); + } + exports.isWeakSet = isWeakSet; + function isArrayBufferToString(value) { + return ObjectToString(value) === "[object ArrayBuffer]"; + } + isArrayBufferToString.working = typeof ArrayBuffer !== "undefined" && isArrayBufferToString(new ArrayBuffer()); + function isArrayBuffer(value) { + if (typeof ArrayBuffer === "undefined") { + return false; } + return isArrayBufferToString.working ? isArrayBufferToString(value) : value instanceof ArrayBuffer; } - if (!hasOwnProperty(visibleKeys, key)) { - name = "[" + key + "]"; + exports.isArrayBuffer = isArrayBuffer; + function isDataViewToString(value) { + return ObjectToString(value) === "[object DataView]"; } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf("\n") > -1) { - if (array) { - str = str.split("\n").map(function(line) { - return " " + line; - }).join("\n").substr(2); - } else { - str = "\n" + str.split("\n").map(function(line) { - return " " + line; - }).join("\n"); - } - } - } else { - str = ctx.stylize("[Circular]", "special"); + isDataViewToString.working = typeof ArrayBuffer !== "undefined" && typeof DataView !== "undefined" && isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1)); + function isDataView(value) { + if (typeof DataView === "undefined") { + return false; } + return isDataViewToString.working ? isDataViewToString(value) : value instanceof DataView; } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; + exports.isDataView = isDataView; + var SharedArrayBufferCopy = typeof SharedArrayBuffer !== "undefined" ? SharedArrayBuffer : void 0; + function isSharedArrayBufferToString(value) { + return ObjectToString(value) === "[object SharedArrayBuffer]"; + } + function isSharedArrayBuffer(value) { + if (typeof SharedArrayBufferCopy === "undefined") { + return false; } - name = JSON.stringify("" + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, "name"); - } else { - name = name.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, "string"); + if (typeof isSharedArrayBufferToString.working === "undefined") { + isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy()); } + return isSharedArrayBufferToString.working ? isSharedArrayBufferToString(value) : value instanceof SharedArrayBufferCopy; } - return name + ": " + str; - } - function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf("\n") >= 0) - numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, "").length + 1; - }, 0); - if (length > 60) { - return braces[0] + (base === "" ? "" : base + "\n ") + " " + output.join(",\n ") + " " + braces[1]; - } - return braces[0] + base + " " + output.join(", ") + " " + braces[1]; - } - exports.types = require_types(); - function isArray(ar) { - return Array.isArray(ar); - } - exports.isArray = isArray; - function isBoolean(arg) { - return typeof arg === "boolean"; - } - exports.isBoolean = isBoolean; - function isNull(arg) { - return arg === null; - } - exports.isNull = isNull; - function isNullOrUndefined(arg) { - return arg == null; - } - exports.isNullOrUndefined = isNullOrUndefined; - function isNumber(arg) { - return typeof arg === "number"; - } - exports.isNumber = isNumber; - function isString(arg) { - return typeof arg === "string"; - } - exports.isString = isString; - function isSymbol(arg) { - return typeof arg === "symbol"; - } - exports.isSymbol = isSymbol; - function isUndefined(arg) { - return arg === void 0; - } - exports.isUndefined = isUndefined; - function isRegExp(re) { - return isObject(re) && objectToString(re) === "[object RegExp]"; - } - exports.isRegExp = isRegExp; - exports.types.isRegExp = isRegExp; - function isObject(arg) { - return typeof arg === "object" && arg !== null; - } - exports.isObject = isObject; - function isDate(d) { - return isObject(d) && objectToString(d) === "[object Date]"; - } - exports.isDate = isDate; - exports.types.isDate = isDate; - function isError(e) { - return isObject(e) && (objectToString(e) === "[object Error]" || e instanceof Error); - } - exports.isError = isError; - exports.types.isNativeError = isError; - function isFunction(arg) { - return typeof arg === "function"; - } - exports.isFunction = isFunction; - function isPrimitive(arg) { - return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || typeof arg === "undefined"; - } - exports.isPrimitive = isPrimitive; - exports.isBuffer = require_isBufferBrowser(); - function objectToString(o) { - return Object.prototype.toString.call(o); - } - function pad(n) { - return n < 10 ? "0" + n.toString(10) : n.toString(10); - } - var months = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ]; - function timestamp() { - var d = new Date(); - var time = [ - pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds()) - ].join(":"); - return [d.getDate(), months[d.getMonth()], time].join(" "); - } - exports.log = function() { - console.log("%s - %s", timestamp(), exports.format.apply(exports, arguments)); - }; - exports.inherits = require_inherits_browser(); - exports._extend = function(origin, add) { - if (!add || !isObject(add)) - return origin; - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; - }; - function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); - } - var kCustomPromisifiedSymbol = typeof Symbol !== "undefined" ? Symbol("util.promisify.custom") : void 0; - exports.promisify = function promisify(original) { - if (typeof original !== "function") - throw new TypeError('The "original" argument must be of type Function'); - if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { - var fn = original[kCustomPromisifiedSymbol]; - if (typeof fn !== "function") { - throw new TypeError('The "util.promisify.custom" argument must be of type Function'); - } - Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true - }); - return fn; + exports.isSharedArrayBuffer = isSharedArrayBuffer; + function isAsyncFunction(value) { + return ObjectToString(value) === "[object AsyncFunction]"; } - function fn() { - var promiseResolve, promiseReject; - var promise = new Promise(function(resolve, reject) { - promiseResolve = resolve; - promiseReject = reject; - }); - var args = []; - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - args.push(function(err, value) { - if (err) { - promiseReject(err); - } else { - promiseResolve(value); - } - }); - try { - original.apply(this, args); - } catch (err) { - promiseReject(err); - } - return promise; + exports.isAsyncFunction = isAsyncFunction; + function isMapIterator(value) { + return ObjectToString(value) === "[object Map Iterator]"; } - Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); - if (kCustomPromisifiedSymbol) - Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true - }); - return Object.defineProperties(fn, getOwnPropertyDescriptors(original)); - }; - exports.promisify.custom = kCustomPromisifiedSymbol; - function callbackifyOnRejected(reason, cb) { - if (!reason) { - var newReason = new Error("Promise was rejected with a falsy value"); - newReason.reason = reason; - reason = newReason; - } - return cb(reason); - } - function callbackify(original) { - if (typeof original !== "function") { - throw new TypeError('The "original" argument must be of type Function'); - } - function callbackified() { - var args = []; - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - var maybeCb = args.pop(); - if (typeof maybeCb !== "function") { - throw new TypeError("The last argument must be of type Function"); - } - var self = this; - var cb = function() { - return maybeCb.apply(self, arguments); - }; - original.apply(this, args).then(function(ret) { - process.nextTick(cb.bind(null, null, ret)); - }, function(rej) { - process.nextTick(callbackifyOnRejected.bind(null, rej, cb)); - }); - } - Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); - Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); - return callbackified; - } - exports.callbackify = callbackify; - }); - - // node_modules/assert/build/internal/errors.js - var require_errors = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; + exports.isMapIterator = isMapIterator; + function isSetIterator(value) { + return ObjectToString(value) === "[object Set Iterator]"; } - return _typeof(obj); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + exports.isSetIterator = isSetIterator; + function isGeneratorObject(value) { + return ObjectToString(value) === "[object Generator]"; } - } - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; + exports.isGeneratorObject = isGeneratorObject; + function isWebAssemblyCompiledModule(value) { + return ObjectToString(value) === "[object WebAssembly.Module]"; } - return _assertThisInitialized(self); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule; + function isNumberObject(value) { + return checkBoxedPrimitive(value, numberValue); } - return self; - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { - return o2.__proto__ || Object.getPrototypeOf(o2); - }; - return _getPrototypeOf(o); - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); + exports.isNumberObject = isNumberObject; + function isStringObject(value) { + return checkBoxedPrimitive(value, stringValue); } - subClass.prototype = Object.create(superClass && superClass.prototype, {constructor: {value: subClass, writable: true, configurable: true}}); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { - o2.__proto__ = p2; - return o2; - }; - return _setPrototypeOf(o, p); - } - var codes = {}; - var assert; - var util; - function createErrorType(code, message, Base) { - if (!Base) { - Base = Error; + exports.isStringObject = isStringObject; + function isBooleanObject(value) { + return checkBoxedPrimitive(value, booleanValue); } - function getMessage(arg1, arg2, arg3) { - if (typeof message === "string") { - return message; - } else { - return message(arg1, arg2, arg3); - } + exports.isBooleanObject = isBooleanObject; + function isBigIntObject(value) { + return BigIntSupported && checkBoxedPrimitive(value, bigIntValue); } - var NodeError = /* @__PURE__ */ function(_Base) { - _inherits(NodeError2, _Base); - function NodeError2(arg1, arg2, arg3) { - var _this; - _classCallCheck(this, NodeError2); - _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError2).call(this, getMessage(arg1, arg2, arg3))); - _this.code = code; - return _this; - } - return NodeError2; - }(Base); - codes[code] = NodeError; - } - function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - expected = expected.map(function(i) { - return String(i); - }); - if (len > 2) { - return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(", "), ", or ") + expected[len - 1]; - } else if (len === 2) { - return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); - } else { - return "of ".concat(thing, " ").concat(expected[0]); - } - } else { - return "of ".concat(thing, " ").concat(String(expected)); + exports.isBigIntObject = isBigIntObject; + function isSymbolObject(value) { + return SymbolSupported && checkBoxedPrimitive(value, symbolValue); } - } - function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; - } - function endsWith(str, search, this_len) { - if (this_len === void 0 || this_len > str.length) { - this_len = str.length; + exports.isSymbolObject = isSymbolObject; + function isBoxedPrimitive(value) { + return isNumberObject(value) || isStringObject(value) || isBooleanObject(value) || isBigIntObject(value) || isSymbolObject(value); } - return str.substring(this_len - search.length, this_len) === search; - } - function includes(str, search, start) { - if (typeof start !== "number") { - start = 0; + exports.isBoxedPrimitive = isBoxedPrimitive; + function isAnyArrayBuffer(value) { + return typeof Uint8Array !== "undefined" && (isArrayBuffer(value) || isSharedArrayBuffer(value)); } - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; - } - } - createErrorType("ERR_AMBIGUOUS_ARGUMENT", 'The "%s" argument is ambiguous. %s', TypeError); - createErrorType("ERR_INVALID_ARG_TYPE", function(name, expected, actual) { - if (assert === void 0) - assert = require_assert(); - assert(typeof name === "string", "'name' must be a string"); - var determiner; - if (typeof expected === "string" && startsWith(expected, "not ")) { - determiner = "must not be"; - expected = expected.replace(/^not /, ""); - } else { - determiner = "must be"; - } - var msg; - if (endsWith(name, " argument")) { - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, "type")); - } else { - var type = includes(name, ".") ? "property" : "argument"; - msg = 'The "'.concat(name, '" ').concat(type, " ").concat(determiner, " ").concat(oneOf(expected, "type")); - } - msg += ". Received type ".concat(_typeof(actual)); - return msg; - }, TypeError); - createErrorType("ERR_INVALID_ARG_VALUE", function(name, value) { - var reason = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "is invalid"; - if (util === void 0) - util = require_util(); - var inspected = util.inspect(value); - if (inspected.length > 128) { - inspected = "".concat(inspected.slice(0, 128), "..."); - } - return "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected); - }, TypeError, RangeError); - createErrorType("ERR_INVALID_RETURN_VALUE", function(input, name, value) { - var type; - if (value && value.constructor && value.constructor.name) { - type = "instance of ".concat(value.constructor.name); - } else { - type = "type ".concat(_typeof(value)); - } - return "Expected ".concat(input, ' to be returned from the "').concat(name, '"') + " function but got ".concat(type, "."); - }, TypeError); - createErrorType("ERR_MISSING_ARGS", function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - if (assert === void 0) - assert = require_assert(); - assert(args.length > 0, "At least one arg needs to be specified"); - var msg = "The "; - var len = args.length; - args = args.map(function(a) { - return '"'.concat(a, '"'); + exports.isAnyArrayBuffer = isAnyArrayBuffer; + ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach(function(method) { + Object.defineProperty(exports, method, { + enumerable: false, + value: function() { + throw new Error(method + " is not supported in userland"); + } + }); }); - switch (len) { - case 1: - msg += "".concat(args[0], " argument"); - break; - case 2: - msg += "".concat(args[0], " and ").concat(args[1], " arguments"); - break; - default: - msg += args.slice(0, len - 1).join(", "); - msg += ", and ".concat(args[len - 1], " arguments"); - break; - } - return "".concat(msg, " must be specified"); - }, TypeError); - module.exports.codes = codes; + } }); - // node_modules/assert/build/internal/assert/assertion_error.js - var require_assertion_error = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); - if (typeof Object.getOwnPropertySymbols === "function") { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - ownKeys.forEach(function(key) { - _defineProperty(target, key, source[key]); - }); - } - return target; + // node_modules/util/support/isBufferBrowser.js + var require_isBufferBrowser = __commonJS({ + "node_modules/util/support/isBufferBrowser.js"(exports, module) { + init_process_shim(); + module.exports = function isBuffer(arg) { + return arg && typeof arg === "object" && typeof arg.copy === "function" && typeof arg.fill === "function" && typeof arg.readUInt8 === "function"; + }; } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, {value, enumerable: true, configurable: true, writable: true}); + }); + + // node_modules/inherits/inherits_browser.js + var require_inherits_browser = __commonJS({ + "node_modules/inherits/inherits_browser.js"(exports, module) { + init_process_shim(); + if (typeof Object.create === "function") { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; } else { - obj[key] = value; - } - return obj; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; } - subClass.prototype = Object.create(superClass && superClass.prototype, {constructor: {value: subClass, writable: true, configurable: true}}); - if (superClass) - _setPrototypeOf(subClass, superClass); } - function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? new Map() : void 0; - _wrapNativeSuper = function _wrapNativeSuper2(Class2) { - if (Class2 === null || !_isNativeFunction(Class2)) - return Class2; - if (typeof Class2 !== "function") { - throw new TypeError("Super expression must either be null or a function"); + }); + + // node_modules/util/util.js + var require_util = __commonJS({ + "node_modules/util/util.js"(exports) { + init_process_shim(); + var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors2(obj) { + var keys = Object.keys(obj); + var descriptors = {}; + for (var i = 0; i < keys.length; i++) { + descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); + } + return descriptors; + }; + var formatRegExp = /%[sdj%]/g; + exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(" "); + } + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x2) { + if (x2 === "%%") + return "%"; + if (i >= len) + return x2; + switch (x2) { + case "%s": + return String(args[i++]); + case "%d": + return Number(args[i++]); + case "%j": + try { + return JSON.stringify(args[i++]); + } catch (_) { + return "[Circular]"; + } + default: + return x2; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += " " + x; + } else { + str += " " + inspect(x); + } + } + return str; + }; + exports.deprecate = function(fn, msg) { + if (typeof process !== "undefined" && process.noDeprecation === true) { + return fn; } - if (typeof _cache !== "undefined") { - if (_cache.has(Class2)) - return _cache.get(Class2); - _cache.set(Class2, Wrapper); + if (typeof process === "undefined") { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; } - function Wrapper() { - return _construct(Class2, arguments, _getPrototypeOf(this).constructor); + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); } - Wrapper.prototype = Object.create(Class2.prototype, {constructor: {value: Wrapper, enumerable: false, writable: true, configurable: true}}); - return _setPrototypeOf(Wrapper, Class2); + return deprecated; }; - return _wrapNativeSuper(Class); - } - function isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Date.prototype.toString.call(Reflect.construct(Date, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _construct(Parent, args, Class) { - if (isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct2(Parent2, args2, Class2) { - var a = [null]; - a.push.apply(a, args2); - var Constructor = Function.bind.apply(Parent2, a); - var instance = new Constructor(); - if (Class2) - _setPrototypeOf(instance, Class2.prototype); - return instance; + var debugs = {}; + var debugEnvRegex = /^$/; + if (process.env.NODE_DEBUG) { + debugEnv = process.env.NODE_DEBUG; + debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^").toUpperCase(); + debugEnvRegex = new RegExp("^" + debugEnv + "$", "i"); + } + var debugEnv; + exports.debuglog = function(set) { + set = set.toUpperCase(); + if (!debugs[set]) { + if (debugEnvRegex.test(set)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error("%s %d: %s", set, pid, msg); + }; + } else { + debugs[set] = function() { + }; + } + } + return debugs[set]; + }; + function inspect(obj, opts) { + var ctx = { + seen: [], + stylize: stylizeNoColor }; - } - return _construct.apply(null, arguments); - } - function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { - o2.__proto__ = p2; - return o2; + if (arguments.length >= 3) + ctx.depth = arguments[2]; + if (arguments.length >= 4) + ctx.colors = arguments[3]; + if (isBoolean(opts)) { + ctx.showHidden = opts; + } else if (opts) { + exports._extend(ctx, opts); + } + if (isUndefined(ctx.showHidden)) + ctx.showHidden = false; + if (isUndefined(ctx.depth)) + ctx.depth = 2; + if (isUndefined(ctx.colors)) + ctx.colors = false; + if (isUndefined(ctx.customInspect)) + ctx.customInspect = true; + if (ctx.colors) + ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); + } + exports.inspect = inspect; + inspect.colors = { + "bold": [1, 22], + "italic": [3, 23], + "underline": [4, 24], + "inverse": [7, 27], + "white": [37, 39], + "grey": [90, 39], + "black": [30, 39], + "blue": [34, 39], + "cyan": [36, 39], + "green": [32, 39], + "magenta": [35, 39], + "red": [31, 39], + "yellow": [33, 39] }; - return _setPrototypeOf(o, p); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { - return o2.__proto__ || Object.getPrototypeOf(o2); + inspect.styles = { + "special": "cyan", + "number": "yellow", + "boolean": "yellow", + "undefined": "grey", + "null": "bold", + "string": "green", + "date": "magenta", + "regexp": "red" }; - return _getPrototypeOf(o); - } - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; + function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + if (style) { + return "[" + inspect.colors[style][0] + "m" + str + "[" + inspect.colors[style][1] + "m"; + } else { + return str; + } } - return _typeof(obj); - } - var _require = require_util(); - var inspect = _require.inspect; - var _require2 = require_errors(); - var ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; - function endsWith(str, search, this_len) { - if (this_len === void 0 || this_len > str.length) { - this_len = str.length; + function stylizeNoColor(str, styleType) { + return str; } - return str.substring(this_len - search.length, this_len) === search; - } - function repeat(str, count) { - count = Math.floor(count); - if (str.length == 0 || count == 0) - return ""; - var maxCount = str.length * count; - count = Math.floor(Math.log(count) / Math.log(2)); - while (count) { - str += str; - count--; - } - str += str.substring(0, maxCount - str.length); - return str; - } - var blue = ""; - var green = ""; - var red = ""; - var white = ""; - var kReadableOperator = { - deepStrictEqual: "Expected values to be strictly deep-equal:", - strictEqual: "Expected values to be strictly equal:", - strictEqualObject: 'Expected "actual" to be reference-equal to "expected":', - deepEqual: "Expected values to be loosely deep-equal:", - equal: "Expected values to be loosely equal:", - notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:', - notStrictEqual: 'Expected "actual" to be strictly unequal to:', - notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":', - notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', - notEqual: 'Expected "actual" to be loosely unequal to:', - notIdentical: "Values identical but not reference-equal:" - }; - var kMaxShortLength = 10; - function copyError(source) { - var keys = Object.keys(source); - var target = Object.create(Object.getPrototypeOf(source)); - keys.forEach(function(key) { - target[key] = source[key]; - }); - Object.defineProperty(target, "message", { - value: source.message - }); - return target; - } - function inspectValue(val) { - return inspect(val, { - compact: false, - customInspect: false, - depth: 1e3, - maxArrayLength: Infinity, - showHidden: false, - breakLength: Infinity, - showProxy: false, - sorted: true, - getters: true - }); - } - function createErrDiff(actual, expected, operator) { - var other = ""; - var res = ""; - var lastPos = 0; - var end = ""; - var skipped = false; - var actualInspected = inspectValue(actual); - var actualLines = actualInspected.split("\n"); - var expectedLines = inspectValue(expected).split("\n"); - var i = 0; - var indicator = ""; - if (operator === "strictEqual" && _typeof(actual) === "object" && _typeof(expected) === "object" && actual !== null && expected !== null) { - operator = "strictEqualObject"; - } - if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) { - var inputLength = actualLines[0].length + expectedLines[0].length; - if (inputLength <= kMaxShortLength) { - if ((_typeof(actual) !== "object" || actual === null) && (_typeof(expected) !== "object" || expected === null) && (actual !== 0 || expected !== 0)) { - return "".concat(kReadableOperator[operator], "\n\n") + "".concat(actualLines[0], " !== ").concat(expectedLines[0], "\n"); - } - } else if (operator !== "strictEqualObject") { - var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80; - if (inputLength < maxLength) { - while (actualLines[0][i] === expectedLines[0][i]) { - i++; - } - if (i > 2) { - indicator = "\n ".concat(repeat(" ", i), "^"); - i = 0; - } + function arrayToHash(array) { + var hash = {}; + array.forEach(function(val, idx) { + hash[val] = true; + }); + return hash; + } + function formatValue(ctx, value, recurseTimes) { + if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); } + return ret; } - } - var a = actualLines[actualLines.length - 1]; - var b = expectedLines[expectedLines.length - 1]; - while (a === b) { - if (i++ < 2) { - end = "\n ".concat(a).concat(end); - } else { - other = a; + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; } - actualLines.pop(); - expectedLines.pop(); - if (actualLines.length === 0 || expectedLines.length === 0) - break; - a = actualLines[actualLines.length - 1]; - b = expectedLines[expectedLines.length - 1]; - } - var maxLines = Math.max(actualLines.length, expectedLines.length); - if (maxLines === 0) { - var _actualLines = actualInspected.split("\n"); - if (_actualLines.length > 30) { - _actualLines[26] = "".concat(blue, "...").concat(white); - while (_actualLines.length > 27) { - _actualLines.pop(); - } - } - return "".concat(kReadableOperator.notIdentical, "\n\n").concat(_actualLines.join("\n"), "\n"); - } - if (i > 3) { - end = "\n".concat(blue, "...").concat(white).concat(end); - skipped = true; - } - if (other !== "") { - end = "\n ".concat(other).concat(end); - other = ""; - } - var printedLines = 0; - var msg = kReadableOperator[operator] + "\n".concat(green, "+ actual").concat(white, " ").concat(red, "- expected").concat(white); - var skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped"); - for (i = 0; i < maxLines; i++) { - var cur = i - lastPos; - if (actualLines.length < i + 1) { - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(expectedLines[i - 2]); - printedLines++; - } - res += "\n ".concat(expectedLines[i - 1]); - printedLines++; + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + if (isError(value) && (keys.indexOf("message") >= 0 || keys.indexOf("description") >= 0)) { + return formatError(value); + } + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ": " + value.name : ""; + return ctx.stylize("[Function" + name + "]", "special"); } - lastPos = i; - other += "\n".concat(red, "-").concat(white, " ").concat(expectedLines[i]); - printedLines++; - } else if (expectedLines.length < i + 1) { - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(actualLines[i - 2]); - printedLines++; - } - res += "\n ".concat(actualLines[i - 1]); - printedLines++; + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); } - lastPos = i; - res += "\n".concat(green, "+").concat(white, " ").concat(actualLines[i]); - printedLines++; - } else { - var expectedLine = expectedLines[i]; - var actualLine = actualLines[i]; - var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ",") || actualLine.slice(0, -1) !== expectedLine); - if (divergingLines && endsWith(expectedLine, ",") && expectedLine.slice(0, -1) === actualLine) { - divergingLines = false; - actualLine += ","; - } - if (divergingLines) { - if (cur > 1 && i > 2) { - if (cur > 4) { - res += "\n".concat(blue, "...").concat(white); - skipped = true; - } else if (cur > 3) { - res += "\n ".concat(actualLines[i - 2]); - printedLines++; - } - res += "\n ".concat(actualLines[i - 1]); - printedLines++; - } - lastPos = i; - res += "\n".concat(green, "+").concat(white, " ").concat(actualLine); - other += "\n".concat(red, "-").concat(white, " ").concat(expectedLine); - printedLines += 2; - } else { - res += other; - other = ""; - if (cur === 1 || i === 0) { - res += "\n ".concat(actualLine); - printedLines++; - } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), "date"); + } + if (isError(value)) { + return formatError(value); } } - if (printedLines > 20 && i < maxLines - 2) { - return "".concat(msg).concat(skippedMsg, "\n").concat(res, "\n").concat(blue, "...").concat(white).concat(other, "\n") + "".concat(blue, "...").concat(white); + var base = "", array = false, braces = ["{", "}"]; + if (isArray(value)) { + array = true; + braces = ["[", "]"]; } - } - return "".concat(msg).concat(skipped ? skippedMsg : "", "\n").concat(res).concat(other).concat(end).concat(indicator); - } - var AssertionError = /* @__PURE__ */ function(_Error) { - _inherits(AssertionError2, _Error); - function AssertionError2(options) { - var _this; - _classCallCheck(this, AssertionError2); - if (_typeof(options) !== "object" || options === null) { - throw new ERR_INVALID_ARG_TYPE("options", "Object", options); + if (isFunction(value)) { + var n = value.name ? ": " + value.name : ""; + base = " [Function" + n + "]"; + } + if (isRegExp(value)) { + base = " " + RegExp.prototype.toString.call(value); + } + if (isDate(value)) { + base = " " + Date.prototype.toUTCString.call(value); + } + if (isError(value)) { + base = " " + formatError(value); + } + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; } - var message = options.message, operator = options.operator, stackStartFn = options.stackStartFn; - var actual = options.actual, expected = options.expected; - var limit = Error.stackTraceLimit; - Error.stackTraceLimit = 0; - if (message != null) { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, String(message))); + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); + } else { + return ctx.stylize("[Object]", "special"); + } + } + ctx.seen.push(value); + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); } else { - if (process.stderr && process.stderr.isTTY) { - if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) { - blue = ""; - green = ""; - white = ""; - red = ""; - } else { - blue = ""; - green = ""; - white = ""; - red = ""; - } + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + ctx.seen.pop(); + return reduceToSingleString(output, base, braces); + } + function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize("undefined", "undefined"); + if (isString(value)) { + var simple = "'" + JSON.stringify(value).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; + return ctx.stylize(simple, "string"); + } + if (isNumber(value)) + return ctx.stylize("" + value, "number"); + if (isBoolean(value)) + return ctx.stylize("" + value, "boolean"); + if (isNull(value)) + return ctx.stylize("null", "null"); + } + function formatError(value) { + return "[" + Error.prototype.toString.call(value) + "]"; + } + function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); + } else { + output.push(""); } - if (_typeof(actual) === "object" && actual !== null && _typeof(expected) === "object" && expected !== null && "stack" in actual && actual instanceof Error && "stack" in expected && expected instanceof Error) { - actual = copyError(actual); - expected = copyError(expected); + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); } - if (operator === "deepStrictEqual" || operator === "strictEqual") { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, createErrDiff(actual, expected, operator))); - } else if (operator === "notDeepStrictEqual" || operator === "notStrictEqual") { - var base = kReadableOperator[operator]; - var res = inspectValue(actual).split("\n"); - if (operator === "notStrictEqual" && _typeof(actual) === "object" && actual !== null) { - base = kReadableOperator.notStrictEqualObject; - } - if (res.length > 30) { - res[26] = "".concat(blue, "...").concat(white); - while (res.length > 27) { - res.pop(); - } - } - if (res.length === 1) { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(base, " ").concat(res[0]))); - } else { - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(base, "\n\n").concat(res.join("\n"), "\n"))); - } + }); + return output; + } + function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]}; + if (desc.get) { + if (desc.set) { + str = ctx.stylize("[Getter/Setter]", "special"); } else { - var _res = inspectValue(actual); - var other = ""; - var knownOperators = kReadableOperator[operator]; - if (operator === "notDeepEqual" || operator === "notEqual") { - _res = "".concat(kReadableOperator[operator], "\n\n").concat(_res); - if (_res.length > 1024) { - _res = "".concat(_res.slice(0, 1021), "..."); - } + str = ctx.stylize("[Getter]", "special"); + } + } else { + if (desc.set) { + str = ctx.stylize("[Setter]", "special"); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = "[" + key + "]"; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); } else { - other = "".concat(inspectValue(expected)); - if (_res.length > 512) { - _res = "".concat(_res.slice(0, 509), "..."); - } - if (other.length > 512) { - other = "".concat(other.slice(0, 509), "..."); - } - if (operator === "deepEqual" || operator === "equal") { - _res = "".concat(knownOperators, "\n\n").concat(_res, "\n\nshould equal\n\n"); + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf("\n") > -1) { + if (array) { + str = str.split("\n").map(function(line) { + return " " + line; + }).join("\n").substr(2); } else { - other = " ".concat(operator, " ").concat(other); + str = "\n" + str.split("\n").map(function(line) { + return " " + line; + }).join("\n"); } } - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(_res).concat(other))); + } else { + str = ctx.stylize("[Circular]", "special"); } } - Error.stackTraceLimit = limit; - _this.generatedMessage = !message; - Object.defineProperty(_assertThisInitialized(_this), "name", { - value: "AssertionError [ERR_ASSERTION]", - enumerable: false, - writable: true, - configurable: true - }); - _this.code = "ERR_ASSERTION"; - _this.actual = actual; - _this.expected = expected; - _this.operator = operator; - if (Error.captureStackTrace) { - Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn); - } - _this.stack; - _this.name = "AssertionError"; - return _possibleConstructorReturn(_this); - } - _createClass(AssertionError2, [{ - key: "toString", - value: function toString() { - return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message); - } - }, { - key: inspect.custom, - value: function value(recurseTimes, ctx) { - return inspect(this, _objectSpread({}, ctx, { - customInspect: false, - depth: 0 - })); + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify("" + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, "name"); + } else { + name = name.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, "string"); + } } - }]); - return AssertionError2; - }(_wrapNativeSuper(Error)); - module.exports = AssertionError; - }); - - // node_modules/es6-object-assign/index.js - var require_es6_object_assign = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - function assign(target, firstSource) { - if (target === void 0 || target === null) { - throw new TypeError("Cannot convert first argument to object"); + return name + ": " + str; } - var to = Object(target); - for (var i = 1; i < arguments.length; i++) { - var nextSource = arguments[i]; - if (nextSource === void 0 || nextSource === null) { - continue; + function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf("\n") >= 0) + numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, "").length + 1; + }, 0); + if (length > 60) { + return braces[0] + (base === "" ? "" : base + "\n ") + " " + output.join(",\n ") + " " + braces[1]; + } + return braces[0] + base + " " + output.join(", ") + " " + braces[1]; + } + exports.types = require_types(); + function isArray(ar) { + return Array.isArray(ar); + } + exports.isArray = isArray; + function isBoolean(arg) { + return typeof arg === "boolean"; + } + exports.isBoolean = isBoolean; + function isNull(arg) { + return arg === null; + } + exports.isNull = isNull; + function isNullOrUndefined(arg) { + return arg == null; + } + exports.isNullOrUndefined = isNullOrUndefined; + function isNumber(arg) { + return typeof arg === "number"; + } + exports.isNumber = isNumber; + function isString(arg) { + return typeof arg === "string"; + } + exports.isString = isString; + function isSymbol(arg) { + return typeof arg === "symbol"; + } + exports.isSymbol = isSymbol; + function isUndefined(arg) { + return arg === void 0; + } + exports.isUndefined = isUndefined; + function isRegExp(re) { + return isObject(re) && objectToString(re) === "[object RegExp]"; + } + exports.isRegExp = isRegExp; + exports.types.isRegExp = isRegExp; + function isObject(arg) { + return typeof arg === "object" && arg !== null; + } + exports.isObject = isObject; + function isDate(d) { + return isObject(d) && objectToString(d) === "[object Date]"; + } + exports.isDate = isDate; + exports.types.isDate = isDate; + function isError(e) { + return isObject(e) && (objectToString(e) === "[object Error]" || e instanceof Error); + } + exports.isError = isError; + exports.types.isNativeError = isError; + function isFunction(arg) { + return typeof arg === "function"; + } + exports.isFunction = isFunction; + function isPrimitive(arg) { + return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || typeof arg === "undefined"; + } + exports.isPrimitive = isPrimitive; + exports.isBuffer = require_isBufferBrowser(); + function objectToString(o) { + return Object.prototype.toString.call(o); + } + function pad(n) { + return n < 10 ? "0" + n.toString(10) : n.toString(10); + } + var months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + function timestamp() { + var d = new Date(); + var time = [ + pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds()) + ].join(":"); + return [d.getDate(), months[d.getMonth()], time].join(" "); + } + exports.log = function() { + console.log("%s - %s", timestamp(), exports.format.apply(exports, arguments)); + }; + exports.inherits = require_inherits_browser(); + exports._extend = function(origin, add) { + if (!add || !isObject(add)) + return origin; + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; + }; + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + var kCustomPromisifiedSymbol = typeof Symbol !== "undefined" ? Symbol("util.promisify.custom") : void 0; + exports.promisify = function promisify(original) { + if (typeof original !== "function") + throw new TypeError('The "original" argument must be of type Function'); + if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { + var fn = original[kCustomPromisifiedSymbol]; + if (typeof fn !== "function") { + throw new TypeError('The "util.promisify.custom" argument must be of type Function'); + } + Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, + enumerable: false, + writable: false, + configurable: true + }); + return fn; } - var keysArray = Object.keys(Object(nextSource)); - for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { - var nextKey = keysArray[nextIndex]; - var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); - if (desc !== void 0 && desc.enumerable) { - to[nextKey] = nextSource[nextKey]; + function fn() { + var promiseResolve, promiseReject; + var promise = new Promise(function(resolve, reject) { + promiseResolve = resolve; + promiseReject = reject; + }); + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + args.push(function(err, value) { + if (err) { + promiseReject(err); + } else { + promiseResolve(value); + } + }); + try { + original.apply(this, args); + } catch (err) { + promiseReject(err); } + return promise; } + Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); + if (kCustomPromisifiedSymbol) + Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, + enumerable: false, + writable: false, + configurable: true + }); + return Object.defineProperties(fn, getOwnPropertyDescriptors(original)); + }; + exports.promisify.custom = kCustomPromisifiedSymbol; + function callbackifyOnRejected(reason, cb) { + if (!reason) { + var newReason = new Error("Promise was rejected with a falsy value"); + newReason.reason = reason; + reason = newReason; + } + return cb(reason); + } + function callbackify(original) { + if (typeof original !== "function") { + throw new TypeError('The "original" argument must be of type Function'); + } + function callbackified() { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + var maybeCb = args.pop(); + if (typeof maybeCb !== "function") { + throw new TypeError("The last argument must be of type Function"); + } + var self = this; + var cb = function() { + return maybeCb.apply(self, arguments); + }; + original.apply(this, args).then(function(ret) { + process.nextTick(cb.bind(null, null, ret)); + }, function(rej) { + process.nextTick(callbackifyOnRejected.bind(null, rej, cb)); + }); + } + Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); + Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); + return callbackified; } - return to; - } - function polyfill() { - if (!Object.assign) { - Object.defineProperty(Object, "assign", { - enumerable: false, - configurable: true, - writable: true, - value: assign - }); - } + exports.callbackify = callbackify; } - module.exports = { - assign, - polyfill - }; - }); - - // node_modules/object-keys/isArguments.js - var require_isArguments = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var toStr = Object.prototype.toString; - module.exports = function isArguments(value) { - var str = toStr.call(value); - var isArgs = str === "[object Arguments]"; - if (!isArgs) { - isArgs = str !== "[object Array]" && value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && toStr.call(value.callee) === "[object Function]"; - } - return isArgs; - }; }); - // node_modules/object-keys/implementation.js - var require_implementation2 = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var keysShim; - if (!Object.keys) { - has = Object.prototype.hasOwnProperty; - toStr = Object.prototype.toString; - isArgs = require_isArguments(); - isEnumerable = Object.prototype.propertyIsEnumerable; - hasDontEnumBug = !isEnumerable.call({toString: null}, "toString"); - hasProtoEnumBug = isEnumerable.call(function() { - }, "prototype"); - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ]; - equalsConstructorPrototype = function(o) { - var ctor = o.constructor; - return ctor && ctor.prototype === o; - }; - excludedKeys = { - $applicationCache: true, - $console: true, - $external: true, - $frame: true, - $frameElement: true, - $frames: true, - $innerHeight: true, - $innerWidth: true, - $onmozfullscreenchange: true, - $onmozfullscreenerror: true, - $outerHeight: true, - $outerWidth: true, - $pageXOffset: true, - $pageYOffset: true, - $parent: true, - $scrollLeft: true, - $scrollTop: true, - $scrollX: true, - $scrollY: true, - $self: true, - $webkitIndexedDB: true, - $webkitStorageInfo: true, - $window: true - }; - hasAutomationEqualityBug = function() { - if (typeof window === "undefined") { - return false; - } - for (var k in window) { - try { - if (!excludedKeys["$" + k] && has.call(window, k) && window[k] !== null && typeof window[k] === "object") { - try { - equalsConstructorPrototype(window[k]); - } catch (e) { - return true; - } - } - } catch (e) { - return true; - } - } - return false; - }(); - equalsConstructorPrototypeIfNotBuggy = function(o) { - if (typeof window === "undefined" || !hasAutomationEqualityBug) { - return equalsConstructorPrototype(o); - } - try { - return equalsConstructorPrototype(o); - } catch (e) { - return false; - } - }; - keysShim = function keys(object) { - var isObject = object !== null && typeof object === "object"; - var isFunction = toStr.call(object) === "[object Function]"; - var isArguments = isArgs(object); - var isString = isObject && toStr.call(object) === "[object String]"; - var theKeys = []; - if (!isObject && !isFunction && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - var skipProto = hasProtoEnumBug && isFunction; - if (isString && object.length > 0 && !has.call(object, 0)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)); - } - } - if (isArguments && object.length > 0) { - for (var j = 0; j < object.length; ++j) { - theKeys.push(String(j)); - } + // node_modules/assert/build/internal/errors.js + var require_errors = __commonJS({ + "node_modules/assert/build/internal/errors.js"(exports, module) { + init_process_shim(); + "use strict"; + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof2(obj2) { + return typeof obj2; + }; } else { - for (var name in object) { - if (!(skipProto && name === "prototype") && has.call(object, name)) { - theKeys.push(String(name)); - } - } - } - if (hasDontEnumBug) { - var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); - for (var k = 0; k < dontEnums.length; ++k) { - if (!(skipConstructor && dontEnums[k] === "constructor") && has.call(object, dontEnums[k])) { - theKeys.push(dontEnums[k]); - } - } - } - return theKeys; - }; - } - var has; - var toStr; - var isArgs; - var isEnumerable; - var hasDontEnumBug; - var hasProtoEnumBug; - var dontEnums; - var equalsConstructorPrototype; - var excludedKeys; - var hasAutomationEqualityBug; - var equalsConstructorPrototypeIfNotBuggy; - module.exports = keysShim; - }); - - // node_modules/object-keys/index.js - var require_object_keys = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var slice = Array.prototype.slice; - var isArgs = require_isArguments(); - var origKeys = Object.keys; - var keysShim = origKeys ? function keys(o) { - return origKeys(o); - } : require_implementation2(); - var originalKeys = Object.keys; - keysShim.shim = function shimObjectKeys() { - if (Object.keys) { - var keysWorksWithArguments = function() { - var args = Object.keys(arguments); - return args && args.length === arguments.length; - }(1, 2); - if (!keysWorksWithArguments) { - Object.keys = function keys(object) { - if (isArgs(object)) { - return originalKeys(slice.call(object)); - } - return originalKeys(object); + _typeof = function _typeof2(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } - } else { - Object.keys = keysShim; + return _typeof(obj); } - return Object.keys || keysShim; - }; - module.exports = keysShim; - }); - - // node_modules/define-properties/index.js - var require_define_properties = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var keys = require_object_keys(); - var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; - var toStr = Object.prototype.toString; - var concat = Array.prototype.concat; - var origDefineProperty = Object.defineProperty; - var isFunction = function(fn) { - return typeof fn === "function" && toStr.call(fn) === "[object Function]"; - }; - var arePropertyDescriptorsSupported = function() { - var obj = {}; - try { - origDefineProperty(obj, "x", {enumerable: false, value: obj}); - for (var _ in obj) { - return false; + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); } - return obj.x === obj; - } catch (e) { - return false; - } - }; - var supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported(); - var defineProperty = function(object, name, value, predicate) { - if (name in object && (!isFunction(predicate) || !predicate())) { - return; - } - if (supportsDescriptors) { - origDefineProperty(object, name, { - configurable: true, - enumerable: false, - value, - writable: true - }); - } else { - object[name] = value; - } - }; - var defineProperties = function(object, map) { - var predicates = arguments.length > 2 ? arguments[2] : {}; - var props = keys(map); - if (hasSymbols) { - props = concat.call(props, Object.getOwnPropertySymbols(map)); } - for (var i = 0; i < props.length; i += 1) { - defineProperty(object, props[i], map[props[i]], predicates[props[i]]); - } - }; - defineProperties.supportsDescriptors = !!supportsDescriptors; - module.exports = defineProperties; - }); - - // node_modules/object-is/implementation.js - var require_implementation3 = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var numberIsNaN = function(value) { - return value !== value; - }; - module.exports = function is(a, b) { - if (a === 0 && b === 0) { - return 1 / a === 1 / b; - } - if (a === b) { - return true; - } - if (numberIsNaN(a) && numberIsNaN(b)) { - return true; - } - return false; - }; - }); - - // node_modules/object-is/polyfill.js - var require_polyfill = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var implementation = require_implementation3(); - module.exports = function getPolyfill() { - return typeof Object.is === "function" ? Object.is : implementation; - }; - }); - - // node_modules/object-is/shim.js - var require_shim = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var getPolyfill = require_polyfill(); - var define = require_define_properties(); - module.exports = function shimObjectIs() { - var polyfill = getPolyfill(); - define(Object, {is: polyfill}, { - is: function testObjectIs() { - return Object.is !== polyfill; - } - }); - return polyfill; - }; - }); - - // node_modules/object-is/index.js - var require_object_is = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var define = require_define_properties(); - var callBind = require_call_bind(); - var implementation = require_implementation3(); - var getPolyfill = require_polyfill(); - var shim = require_shim(); - var polyfill = callBind(getPolyfill(), Object); - define(polyfill, { - getPolyfill, - implementation, - shim - }); - module.exports = polyfill; - }); - - // node_modules/is-nan/implementation.js - var require_implementation4 = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - module.exports = function isNaN2(value) { - return value !== value; - }; - }); - - // node_modules/is-nan/polyfill.js - var require_polyfill2 = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var implementation = require_implementation4(); - module.exports = function getPolyfill() { - if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN("a")) { - return Number.isNaN; - } - return implementation; - }; - }); - - // node_modules/is-nan/shim.js - var require_shim2 = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var define = require_define_properties(); - var getPolyfill = require_polyfill2(); - module.exports = function shimNumberIsNaN() { - var polyfill = getPolyfill(); - define(Number, {isNaN: polyfill}, { - isNaN: function testIsNaN() { - return Number.isNaN !== polyfill; - } - }); - return polyfill; - }; - }); - - // node_modules/is-nan/index.js - var require_is_nan = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - var callBind = require_call_bind(); - var define = require_define_properties(); - var implementation = require_implementation4(); - var getPolyfill = require_polyfill2(); - var shim = require_shim2(); - var polyfill = callBind(getPolyfill(), Number); - define(polyfill, { - getPolyfill, - implementation, - shim - }); - module.exports = polyfill; - }); - - // node_modules/assert/build/internal/util/comparisons.js - var require_comparisons = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = void 0; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) - break; + function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) - _i["return"](); - } finally { - if (_d) - throw _e; + return _assertThisInitialized(self); + } + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } + return self; } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; - } - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { + return o2.__proto__ || Object.getPrototypeOf(o2); }; + return _getPrototypeOf(o); } - return _typeof(obj); - } - var regexFlagsSupported = /a/g.flags !== void 0; - var arrayFromSet = function arrayFromSet2(set) { - var array = []; - set.forEach(function(value) { - return array.push(value); - }); - return array; - }; - var arrayFromMap = function arrayFromMap2(map) { - var array = []; - map.forEach(function(value, key) { - return array.push([key, value]); - }); - return array; - }; - var objectIs = Object.is ? Object.is : require_object_is(); - var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function() { - return []; - }; - var numberIsNaN = Number.isNaN ? Number.isNaN : require_is_nan(); - function uncurryThis(f) { - return f.call.bind(f); - } - var hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty); - var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable); - var objectToString = uncurryThis(Object.prototype.toString); - var _require$types = require_util().types; - var isAnyArrayBuffer = _require$types.isAnyArrayBuffer; - var isArrayBufferView = _require$types.isArrayBufferView; - var isDate = _require$types.isDate; - var isMap = _require$types.isMap; - var isRegExp = _require$types.isRegExp; - var isSet = _require$types.isSet; - var isNativeError = _require$types.isNativeError; - var isBoxedPrimitive = _require$types.isBoxedPrimitive; - var isNumberObject = _require$types.isNumberObject; - var isStringObject = _require$types.isStringObject; - var isBooleanObject = _require$types.isBooleanObject; - var isBigIntObject = _require$types.isBigIntObject; - var isSymbolObject = _require$types.isSymbolObject; - var isFloat32Array = _require$types.isFloat32Array; - var isFloat64Array = _require$types.isFloat64Array; - function isNonIndex(key) { - if (key.length === 0 || key.length > 10) - return true; - for (var i = 0; i < key.length; i++) { - var code = key.charCodeAt(i); - if (code < 48 || code > 57) - return true; - } - return key.length === 10 && key >= Math.pow(2, 32); - } - function getOwnNonIndexProperties(value) { - return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value))); - } - function compare(a, b) { - if (a === b) { - return 0; - } - var x = a.length; - var y = b.length; - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); } + subClass.prototype = Object.create(superClass && superClass.prototype, {constructor: {value: subClass, writable: true, configurable: true}}); + if (superClass) + _setPrototypeOf(subClass, superClass); } - if (x < y) { - return -1; - } - if (y < x) { - return 1; - } - return 0; - } - var ONLY_ENUMERABLE = void 0; - var kStrict = true; - var kLoose = false; - var kNoIterator = 0; - var kIsArray = 1; - var kIsSet = 2; - var kIsMap = 3; - function areSimilarRegExps(a, b) { - return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b); - } - function areSimilarFloatArrays(a, b) { - if (a.byteLength !== b.byteLength) { - return false; - } - for (var offset = 0; offset < a.byteLength; offset++) { - if (a[offset] !== b[offset]) { - return false; + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { + o2.__proto__ = p2; + return o2; + }; + return _setPrototypeOf(o, p); + } + var codes = {}; + var assert; + var util; + function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + function getMessage(arg1, arg2, arg3) { + if (typeof message === "string") { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + var NodeError = /* @__PURE__ */ function(_Base) { + _inherits(NodeError2, _Base); + function NodeError2(arg1, arg2, arg3) { + var _this; + _classCallCheck(this, NodeError2); + _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError2).call(this, getMessage(arg1, arg2, arg3))); + _this.code = code; + return _this; + } + return NodeError2; + }(Base); + codes[code] = NodeError; + } + function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function(i) { + return String(i); + }); + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(", "), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); } } - return true; - } - function areSimilarTypedArrays(a, b) { - if (a.byteLength !== b.byteLength) { - return false; - } - return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0; - } - function areEqualArrayBuffers(buf1, buf2) { - return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0; - } - function isEqualBoxedPrimitive(val1, val2) { - if (isNumberObject(val1)) { - return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2)); - } - if (isStringObject(val1)) { - return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2); - } - if (isBooleanObject(val1)) { - return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2); - } - if (isBigIntObject(val1)) { - return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2); + function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; } - return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2); - } - function innerDeepEqual(val1, val2, strict, memos) { - if (val1 === val2) { - if (val1 !== 0) - return true; - return strict ? objectIs(val1, val2) : true; - } - if (strict) { - if (_typeof(val1) !== "object") { - return typeof val1 === "number" && numberIsNaN(val1) && numberIsNaN(val2); - } - if (_typeof(val2) !== "object" || val1 === null || val2 === null) { - return false; + function endsWith(str, search, this_len) { + if (this_len === void 0 || this_len > str.length) { + this_len = str.length; } - if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) { - return false; + return str.substring(this_len - search.length, this_len) === search; + } + function includes(str, search, start) { + if (typeof start !== "number") { + start = 0; } - } else { - if (val1 === null || _typeof(val1) !== "object") { - if (val2 === null || _typeof(val2) !== "object") { - return val1 == val2; - } + if (start + search.length > str.length) { return false; + } else { + return str.indexOf(search, start) !== -1; + } + } + createErrorType("ERR_AMBIGUOUS_ARGUMENT", 'The "%s" argument is ambiguous. %s', TypeError); + createErrorType("ERR_INVALID_ARG_TYPE", function(name, expected, actual) { + if (assert === void 0) + assert = require_assert(); + assert(typeof name === "string", "'name' must be a string"); + var determiner; + if (typeof expected === "string" && startsWith(expected, "not ")) { + determiner = "must not be"; + expected = expected.replace(/^not /, ""); + } else { + determiner = "must be"; + } + var msg; + if (endsWith(name, " argument")) { + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, "type")); + } else { + var type = includes(name, ".") ? "property" : "argument"; + msg = 'The "'.concat(name, '" ').concat(type, " ").concat(determiner, " ").concat(oneOf(expected, "type")); + } + msg += ". Received type ".concat(_typeof(actual)); + return msg; + }, TypeError); + createErrorType("ERR_INVALID_ARG_VALUE", function(name, value) { + var reason = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "is invalid"; + if (util === void 0) + util = require_util(); + var inspected = util.inspect(value); + if (inspected.length > 128) { + inspected = "".concat(inspected.slice(0, 128), "..."); + } + return "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected); + }, TypeError, RangeError); + createErrorType("ERR_INVALID_RETURN_VALUE", function(input, name, value) { + var type; + if (value && value.constructor && value.constructor.name) { + type = "instance of ".concat(value.constructor.name); + } else { + type = "type ".concat(_typeof(value)); + } + return "Expected ".concat(input, ' to be returned from the "').concat(name, '"') + " function but got ".concat(type, "."); + }, TypeError); + createErrorType("ERR_MISSING_ARGS", function() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (assert === void 0) + assert = require_assert(); + assert(args.length > 0, "At least one arg needs to be specified"); + var msg = "The "; + var len = args.length; + args = args.map(function(a) { + return '"'.concat(a, '"'); + }); + switch (len) { + case 1: + msg += "".concat(args[0], " argument"); + break; + case 2: + msg += "".concat(args[0], " and ").concat(args[1], " arguments"); + break; + default: + msg += args.slice(0, len - 1).join(", "); + msg += ", and ".concat(args[len - 1], " arguments"); + break; } - if (val2 === null || _typeof(val2) !== "object") { - return false; + return "".concat(msg, " must be specified"); + }, TypeError); + module.exports.codes = codes; + } + }); + + // node_modules/assert/build/internal/assert/assertion_error.js + var require_assertion_error = __commonJS({ + "node_modules/assert/build/internal/assert/assertion_error.js"(exports, module) { + init_process_shim(); + "use strict"; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + if (typeof Object.getOwnPropertySymbols === "function") { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + ownKeys.forEach(function(key) { + _defineProperty(target, key, source[key]); + }); } + return target; } - var val1Tag = objectToString(val1); - var val2Tag = objectToString(val2); - if (val1Tag !== val2Tag) { - return false; - } - if (Array.isArray(val1)) { - if (val1.length !== val2.length) { - return false; + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, {value, enumerable: true, configurable: true, writable: true}); + } else { + obj[key] = value; } - var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); - var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); - if (keys1.length !== keys2.length) { - return false; + return obj; + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); } - return keyCheck(val1, val2, strict, memos, kIsArray, keys1); } - if (val1Tag === "[object Object]") { - if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) { - return false; + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); } } - if (isDate(val1)) { - if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) { - return false; + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) + _defineProperties(Constructor.prototype, protoProps); + if (staticProps) + _defineProperties(Constructor, staticProps); + return Constructor; + } + function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; } - } else if (isRegExp(val1)) { - if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) { - return false; + return _assertThisInitialized(self); + } + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } - } else if (isNativeError(val1) || val1 instanceof Error) { - if (val1.message !== val2.message || val1.name !== val2.name) { - return false; + return self; + } + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); } - } else if (isArrayBufferView(val1)) { - if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) { - if (!areSimilarFloatArrays(val1, val2)) { - return false; + subClass.prototype = Object.create(superClass && superClass.prototype, {constructor: {value: subClass, writable: true, configurable: true}}); + if (superClass) + _setPrototypeOf(subClass, superClass); + } + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : void 0; + _wrapNativeSuper = function _wrapNativeSuper2(Class2) { + if (Class2 === null || !_isNativeFunction(Class2)) + return Class2; + if (typeof Class2 !== "function") { + throw new TypeError("Super expression must either be null or a function"); } - } else if (!areSimilarTypedArrays(val1, val2)) { - return false; - } - var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); - var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); - if (_keys.length !== _keys2.length) { - return false; - } - return keyCheck(val1, val2, strict, memos, kNoIterator, _keys); - } else if (isSet(val1)) { - if (!isSet(val2) || val1.size !== val2.size) { - return false; - } - return keyCheck(val1, val2, strict, memos, kIsSet); - } else if (isMap(val1)) { - if (!isMap(val2) || val1.size !== val2.size) { - return false; - } - return keyCheck(val1, val2, strict, memos, kIsMap); - } else if (isAnyArrayBuffer(val1)) { - if (!areEqualArrayBuffers(val1, val2)) { - return false; - } - } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) { - return false; + if (typeof _cache !== "undefined") { + if (_cache.has(Class2)) + return _cache.get(Class2); + _cache.set(Class2, Wrapper); + } + function Wrapper() { + return _construct(Class2, arguments, _getPrototypeOf(this).constructor); + } + Wrapper.prototype = Object.create(Class2.prototype, {constructor: {value: Wrapper, enumerable: false, writable: true, configurable: true}}); + return _setPrototypeOf(Wrapper, Class2); + }; + return _wrapNativeSuper(Class); } - return keyCheck(val1, val2, strict, memos, kNoIterator); - } - function getEnumerables(val, keys) { - return keys.filter(function(k) { - return propertyIsEnumerable(val, k); - }); - } - function keyCheck(val1, val2, strict, memos, iterationType, aKeys) { - if (arguments.length === 5) { - aKeys = Object.keys(val1); - var bKeys = Object.keys(val2); - if (aKeys.length !== bKeys.length) { + function isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; - } - } - var i = 0; - for (; i < aKeys.length; i++) { - if (!hasOwnProperty(val2, aKeys[i])) { + if (Reflect.construct.sham) + return false; + if (typeof Proxy === "function") + return true; + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function() { + })); + return true; + } catch (e) { return false; } } - if (strict && arguments.length === 5) { - var symbolKeysA = objectGetOwnPropertySymbols(val1); - if (symbolKeysA.length !== 0) { - var count = 0; - for (i = 0; i < symbolKeysA.length; i++) { - var key = symbolKeysA[i]; - if (propertyIsEnumerable(val1, key)) { - if (!propertyIsEnumerable(val2, key)) { - return false; - } - aKeys.push(key); - count++; - } else if (propertyIsEnumerable(val2, key)) { - return false; - } - } - var symbolKeysB = objectGetOwnPropertySymbols(val2); - if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) { - return false; - } + function _construct(Parent, args, Class) { + if (isNativeReflectConstruct()) { + _construct = Reflect.construct; } else { - var _symbolKeysB = objectGetOwnPropertySymbols(val2); - if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) { - return false; - } + _construct = function _construct2(Parent2, args2, Class2) { + var a = [null]; + a.push.apply(a, args2); + var Constructor = Function.bind.apply(Parent2, a); + var instance = new Constructor(); + if (Class2) + _setPrototypeOf(instance, Class2.prototype); + return instance; + }; } + return _construct.apply(null, arguments); } - if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) { - return true; + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; } - if (memos === void 0) { - memos = { - val1: new Map(), - val2: new Map(), - position: 0 + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { + o2.__proto__ = p2; + return o2; }; - } else { - var val2MemoA = memos.val1.get(val1); - if (val2MemoA !== void 0) { - var val2MemoB = memos.val2.get(val2); - if (val2MemoB !== void 0) { - return val2MemoA === val2MemoB; - } + return _setPrototypeOf(o, p); + } + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { + return o2.__proto__ || Object.getPrototypeOf(o2); + }; + return _getPrototypeOf(o); + } + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof2(obj2) { + return typeof obj2; + }; + } else { + _typeof = function _typeof2(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; } - memos.position++; + return _typeof(obj); } - memos.val1.set(val1, memos.position); - memos.val2.set(val2, memos.position); - var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType); - memos.val1.delete(val1); - memos.val2.delete(val2); - return areEq; - } - function setHasEqualElement(set, val1, strict, memo) { - var setValues = arrayFromSet(set); - for (var i = 0; i < setValues.length; i++) { - var val2 = setValues[i]; - if (innerDeepEqual(val1, val2, strict, memo)) { - set.delete(val2); - return true; + var _require = require_util(); + var inspect = _require.inspect; + var _require2 = require_errors(); + var ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; + function endsWith(str, search, this_len) { + if (this_len === void 0 || this_len > str.length) { + this_len = str.length; } + return str.substring(this_len - search.length, this_len) === search; } - return false; - } - function findLooseMatchingPrimitives(prim) { - switch (_typeof(prim)) { - case "undefined": - return null; - case "object": - return void 0; - case "symbol": - return false; - case "string": - prim = +prim; - case "number": - if (numberIsNaN(prim)) { - return false; - } + function repeat(str, count) { + count = Math.floor(count); + if (str.length == 0 || count == 0) + return ""; + var maxCount = str.length * count; + count = Math.floor(Math.log(count) / Math.log(2)); + while (count) { + str += str; + count--; + } + str += str.substring(0, maxCount - str.length); + return str; } - return true; - } - function setMightHaveLoosePrim(a, b, prim) { - var altValue = findLooseMatchingPrimitives(prim); - if (altValue != null) - return altValue; - return b.has(altValue) && !a.has(altValue); - } - function mapMightHaveLoosePrim(a, b, prim, item, memo) { - var altValue = findLooseMatchingPrimitives(prim); - if (altValue != null) { - return altValue; + var blue = ""; + var green = ""; + var red = ""; + var white = ""; + var kReadableOperator = { + deepStrictEqual: "Expected values to be strictly deep-equal:", + strictEqual: "Expected values to be strictly equal:", + strictEqualObject: 'Expected "actual" to be reference-equal to "expected":', + deepEqual: "Expected values to be loosely deep-equal:", + equal: "Expected values to be loosely equal:", + notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:', + notStrictEqual: 'Expected "actual" to be strictly unequal to:', + notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":', + notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', + notEqual: 'Expected "actual" to be loosely unequal to:', + notIdentical: "Values identical but not reference-equal:" + }; + var kMaxShortLength = 10; + function copyError(source) { + var keys = Object.keys(source); + var target = Object.create(Object.getPrototypeOf(source)); + keys.forEach(function(key) { + target[key] = source[key]; + }); + Object.defineProperty(target, "message", { + value: source.message + }); + return target; } - var curB = b.get(altValue); - if (curB === void 0 && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) { - return false; + function inspectValue(val) { + return inspect(val, { + compact: false, + customInspect: false, + depth: 1e3, + maxArrayLength: Infinity, + showHidden: false, + breakLength: Infinity, + showProxy: false, + sorted: true, + getters: true + }); } - return !a.has(altValue) && innerDeepEqual(item, curB, false, memo); - } - function setEquiv(a, b, strict, memo) { - var set = null; - var aValues = arrayFromSet(a); - for (var i = 0; i < aValues.length; i++) { - var val = aValues[i]; - if (_typeof(val) === "object" && val !== null) { - if (set === null) { - set = new Set(); - } - set.add(val); - } else if (!b.has(val)) { - if (strict) - return false; - if (!setMightHaveLoosePrim(a, b, val)) { - return false; - } - if (set === null) { - set = new Set(); + function createErrDiff(actual, expected, operator) { + var other = ""; + var res = ""; + var lastPos = 0; + var end = ""; + var skipped = false; + var actualInspected = inspectValue(actual); + var actualLines = actualInspected.split("\n"); + var expectedLines = inspectValue(expected).split("\n"); + var i = 0; + var indicator = ""; + if (operator === "strictEqual" && _typeof(actual) === "object" && _typeof(expected) === "object" && actual !== null && expected !== null) { + operator = "strictEqualObject"; + } + if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) { + var inputLength = actualLines[0].length + expectedLines[0].length; + if (inputLength <= kMaxShortLength) { + if ((_typeof(actual) !== "object" || actual === null) && (_typeof(expected) !== "object" || expected === null) && (actual !== 0 || expected !== 0)) { + return "".concat(kReadableOperator[operator], "\n\n") + "".concat(actualLines[0], " !== ").concat(expectedLines[0], "\n"); + } + } else if (operator !== "strictEqualObject") { + var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80; + if (inputLength < maxLength) { + while (actualLines[0][i] === expectedLines[0][i]) { + i++; + } + if (i > 2) { + indicator = "\n ".concat(repeat(" ", i), "^"); + i = 0; + } + } } - set.add(val); } - } - if (set !== null) { - var bValues = arrayFromSet(b); - for (var _i = 0; _i < bValues.length; _i++) { - var _val = bValues[_i]; - if (_typeof(_val) === "object" && _val !== null) { - if (!setHasEqualElement(set, _val, strict, memo)) - return false; - } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) { - return false; + var a = actualLines[actualLines.length - 1]; + var b = expectedLines[expectedLines.length - 1]; + while (a === b) { + if (i++ < 2) { + end = "\n ".concat(a).concat(end); + } else { + other = a; + } + actualLines.pop(); + expectedLines.pop(); + if (actualLines.length === 0 || expectedLines.length === 0) + break; + a = actualLines[actualLines.length - 1]; + b = expectedLines[expectedLines.length - 1]; + } + var maxLines = Math.max(actualLines.length, expectedLines.length); + if (maxLines === 0) { + var _actualLines = actualInspected.split("\n"); + if (_actualLines.length > 30) { + _actualLines[26] = "".concat(blue, "...").concat(white); + while (_actualLines.length > 27) { + _actualLines.pop(); + } + } + return "".concat(kReadableOperator.notIdentical, "\n\n").concat(_actualLines.join("\n"), "\n"); + } + if (i > 3) { + end = "\n".concat(blue, "...").concat(white).concat(end); + skipped = true; + } + if (other !== "") { + end = "\n ".concat(other).concat(end); + other = ""; + } + var printedLines = 0; + var msg = kReadableOperator[operator] + "\n".concat(green, "+ actual").concat(white, " ").concat(red, "- expected").concat(white); + var skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped"); + for (i = 0; i < maxLines; i++) { + var cur = i - lastPos; + if (actualLines.length < i + 1) { + if (cur > 1 && i > 2) { + if (cur > 4) { + res += "\n".concat(blue, "...").concat(white); + skipped = true; + } else if (cur > 3) { + res += "\n ".concat(expectedLines[i - 2]); + printedLines++; + } + res += "\n ".concat(expectedLines[i - 1]); + printedLines++; + } + lastPos = i; + other += "\n".concat(red, "-").concat(white, " ").concat(expectedLines[i]); + printedLines++; + } else if (expectedLines.length < i + 1) { + if (cur > 1 && i > 2) { + if (cur > 4) { + res += "\n".concat(blue, "...").concat(white); + skipped = true; + } else if (cur > 3) { + res += "\n ".concat(actualLines[i - 2]); + printedLines++; + } + res += "\n ".concat(actualLines[i - 1]); + printedLines++; + } + lastPos = i; + res += "\n".concat(green, "+").concat(white, " ").concat(actualLines[i]); + printedLines++; + } else { + var expectedLine = expectedLines[i]; + var actualLine = actualLines[i]; + var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ",") || actualLine.slice(0, -1) !== expectedLine); + if (divergingLines && endsWith(expectedLine, ",") && expectedLine.slice(0, -1) === actualLine) { + divergingLines = false; + actualLine += ","; + } + if (divergingLines) { + if (cur > 1 && i > 2) { + if (cur > 4) { + res += "\n".concat(blue, "...").concat(white); + skipped = true; + } else if (cur > 3) { + res += "\n ".concat(actualLines[i - 2]); + printedLines++; + } + res += "\n ".concat(actualLines[i - 1]); + printedLines++; + } + lastPos = i; + res += "\n".concat(green, "+").concat(white, " ").concat(actualLine); + other += "\n".concat(red, "-").concat(white, " ").concat(expectedLine); + printedLines += 2; + } else { + res += other; + other = ""; + if (cur === 1 || i === 0) { + res += "\n ".concat(actualLine); + printedLines++; + } + } + } + if (printedLines > 20 && i < maxLines - 2) { + return "".concat(msg).concat(skippedMsg, "\n").concat(res, "\n").concat(blue, "...").concat(white).concat(other, "\n") + "".concat(blue, "...").concat(white); } } - return set.size === 0; - } - return true; - } - function mapHasEqualEntry(set, map, key1, item1, strict, memo) { - var setValues = arrayFromSet(set); - for (var i = 0; i < setValues.length; i++) { - var key2 = setValues[i]; - if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) { - set.delete(key2); - return true; - } + return "".concat(msg).concat(skipped ? skippedMsg : "", "\n").concat(res).concat(other).concat(end).concat(indicator); } - return false; + var AssertionError = /* @__PURE__ */ function(_Error) { + _inherits(AssertionError2, _Error); + function AssertionError2(options) { + var _this; + _classCallCheck(this, AssertionError2); + if (_typeof(options) !== "object" || options === null) { + throw new ERR_INVALID_ARG_TYPE("options", "Object", options); + } + var message = options.message, operator = options.operator, stackStartFn = options.stackStartFn; + var actual = options.actual, expected = options.expected; + var limit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; + if (message != null) { + _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, String(message))); + } else { + if (process.stderr && process.stderr.isTTY) { + if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) { + blue = ""; + green = ""; + white = ""; + red = ""; + } else { + blue = ""; + green = ""; + white = ""; + red = ""; + } + } + if (_typeof(actual) === "object" && actual !== null && _typeof(expected) === "object" && expected !== null && "stack" in actual && actual instanceof Error && "stack" in expected && expected instanceof Error) { + actual = copyError(actual); + expected = copyError(expected); + } + if (operator === "deepStrictEqual" || operator === "strictEqual") { + _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, createErrDiff(actual, expected, operator))); + } else if (operator === "notDeepStrictEqual" || operator === "notStrictEqual") { + var base = kReadableOperator[operator]; + var res = inspectValue(actual).split("\n"); + if (operator === "notStrictEqual" && _typeof(actual) === "object" && actual !== null) { + base = kReadableOperator.notStrictEqualObject; + } + if (res.length > 30) { + res[26] = "".concat(blue, "...").concat(white); + while (res.length > 27) { + res.pop(); + } + } + if (res.length === 1) { + _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(base, " ").concat(res[0]))); + } else { + _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(base, "\n\n").concat(res.join("\n"), "\n"))); + } + } else { + var _res = inspectValue(actual); + var other = ""; + var knownOperators = kReadableOperator[operator]; + if (operator === "notDeepEqual" || operator === "notEqual") { + _res = "".concat(kReadableOperator[operator], "\n\n").concat(_res); + if (_res.length > 1024) { + _res = "".concat(_res.slice(0, 1021), "..."); + } + } else { + other = "".concat(inspectValue(expected)); + if (_res.length > 512) { + _res = "".concat(_res.slice(0, 509), "..."); + } + if (other.length > 512) { + other = "".concat(other.slice(0, 509), "..."); + } + if (operator === "deepEqual" || operator === "equal") { + _res = "".concat(knownOperators, "\n\n").concat(_res, "\n\nshould equal\n\n"); + } else { + other = " ".concat(operator, " ").concat(other); + } + } + _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, "".concat(_res).concat(other))); + } + } + Error.stackTraceLimit = limit; + _this.generatedMessage = !message; + Object.defineProperty(_assertThisInitialized(_this), "name", { + value: "AssertionError [ERR_ASSERTION]", + enumerable: false, + writable: true, + configurable: true + }); + _this.code = "ERR_ASSERTION"; + _this.actual = actual; + _this.expected = expected; + _this.operator = operator; + if (Error.captureStackTrace) { + Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn); + } + _this.stack; + _this.name = "AssertionError"; + return _possibleConstructorReturn(_this); + } + _createClass(AssertionError2, [{ + key: "toString", + value: function toString() { + return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message); + } + }, { + key: inspect.custom, + value: function value(recurseTimes, ctx) { + return inspect(this, _objectSpread({}, ctx, { + customInspect: false, + depth: 0 + })); + } + }]); + return AssertionError2; + }(_wrapNativeSuper(Error)); + module.exports = AssertionError; } - function mapEquiv(a, b, strict, memo) { - var set = null; - var aEntries = arrayFromMap(a); - for (var i = 0; i < aEntries.length; i++) { - var _aEntries$i = _slicedToArray(aEntries[i], 2), key = _aEntries$i[0], item1 = _aEntries$i[1]; - if (_typeof(key) === "object" && key !== null) { - if (set === null) { - set = new Set(); + }); + + // node_modules/es6-object-assign/index.js + var require_es6_object_assign = __commonJS({ + "node_modules/es6-object-assign/index.js"(exports, module) { + init_process_shim(); + "use strict"; + function assign(target, firstSource) { + if (target === void 0 || target === null) { + throw new TypeError("Cannot convert first argument to object"); + } + var to = Object(target); + for (var i = 1; i < arguments.length; i++) { + var nextSource = arguments[i]; + if (nextSource === void 0 || nextSource === null) { + continue; } - set.add(key); - } else { - var item2 = b.get(key); - if (item2 === void 0 && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) { - if (strict) - return false; - if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) - return false; - if (set === null) { - set = new Set(); + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== void 0 && desc.enumerable) { + to[nextKey] = nextSource[nextKey]; } - set.add(key); } } + return to; } - if (set !== null) { - var bEntries = arrayFromMap(b); - for (var _i2 = 0; _i2 < bEntries.length; _i2++) { - var _bEntries$_i = _slicedToArray(bEntries[_i2], 2), key = _bEntries$_i[0], item = _bEntries$_i[1]; - if (_typeof(key) === "object" && key !== null) { - if (!mapHasEqualEntry(set, a, key, item, strict, memo)) - return false; - } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) { - return false; - } + function polyfill() { + if (!Object.assign) { + Object.defineProperty(Object, "assign", { + enumerable: false, + configurable: true, + writable: true, + value: assign + }); } - return set.size === 0; } - return true; + module.exports = { + assign, + polyfill + }; } - function objEquiv(a, b, strict, keys, memos, iterationType) { - var i = 0; - if (iterationType === kIsSet) { - if (!setEquiv(a, b, strict, memos)) { - return false; - } - } else if (iterationType === kIsMap) { - if (!mapEquiv(a, b, strict, memos)) { - return false; - } - } else if (iterationType === kIsArray) { - for (; i < a.length; i++) { - if (hasOwnProperty(a, i)) { - if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) { - return false; + }); + + // node_modules/object-keys/isArguments.js + var require_isArguments = __commonJS({ + "node_modules/object-keys/isArguments.js"(exports, module) { + init_process_shim(); + "use strict"; + var toStr = Object.prototype.toString; + module.exports = function isArguments(value) { + var str = toStr.call(value); + var isArgs = str === "[object Arguments]"; + if (!isArgs) { + isArgs = str !== "[object Array]" && value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && toStr.call(value.callee) === "[object Function]"; + } + return isArgs; + }; + } + }); + + // node_modules/object-keys/implementation.js + var require_implementation2 = __commonJS({ + "node_modules/object-keys/implementation.js"(exports, module) { + init_process_shim(); + "use strict"; + var keysShim; + if (!Object.keys) { + has = Object.prototype.hasOwnProperty; + toStr = Object.prototype.toString; + isArgs = require_isArguments(); + isEnumerable = Object.prototype.propertyIsEnumerable; + hasDontEnumBug = !isEnumerable.call({toString: null}, "toString"); + hasProtoEnumBug = isEnumerable.call(function() { + }, "prototype"); + dontEnums = [ + "toString", + "toLocaleString", + "valueOf", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "constructor" + ]; + equalsConstructorPrototype = function(o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; + }; + excludedKeys = { + $applicationCache: true, + $console: true, + $external: true, + $frame: true, + $frameElement: true, + $frames: true, + $innerHeight: true, + $innerWidth: true, + $onmozfullscreenchange: true, + $onmozfullscreenerror: true, + $outerHeight: true, + $outerWidth: true, + $pageXOffset: true, + $pageYOffset: true, + $parent: true, + $scrollLeft: true, + $scrollTop: true, + $scrollX: true, + $scrollY: true, + $self: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true, + $window: true + }; + hasAutomationEqualityBug = function() { + if (typeof window === "undefined") { + return false; + } + for (var k in window) { + try { + if (!excludedKeys["$" + k] && has.call(window, k) && window[k] !== null && typeof window[k] === "object") { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } catch (e) { + return true; } - } else if (hasOwnProperty(b, i)) { + } + return false; + }(); + equalsConstructorPrototypeIfNotBuggy = function(o) { + if (typeof window === "undefined" || !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { return false; + } + }; + keysShim = function keys(object) { + var isObject = object !== null && typeof object === "object"; + var isFunction = toStr.call(object) === "[object Function]"; + var isArguments = isArgs(object); + var isString = isObject && toStr.call(object) === "[object String]"; + var theKeys = []; + if (!isObject && !isFunction && !isArguments) { + throw new TypeError("Object.keys called on a non-object"); + } + var skipProto = hasProtoEnumBug && isFunction; + if (isString && object.length > 0 && !has.call(object, 0)) { + for (var i = 0; i < object.length; ++i) { + theKeys.push(String(i)); + } + } + if (isArguments && object.length > 0) { + for (var j = 0; j < object.length; ++j) { + theKeys.push(String(j)); + } } else { - var keysA = Object.keys(a); - for (; i < keysA.length; i++) { - var key = keysA[i]; - if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) { - return false; + for (var name in object) { + if (!(skipProto && name === "prototype") && has.call(object, name)) { + theKeys.push(String(name)); } } - if (keysA.length !== Object.keys(b).length) { - return false; + } + if (hasDontEnumBug) { + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); + for (var k = 0; k < dontEnums.length; ++k) { + if (!(skipConstructor && dontEnums[k] === "constructor") && has.call(object, dontEnums[k])) { + theKeys.push(dontEnums[k]); + } } - return true; } - } + return theKeys; + }; } - for (i = 0; i < keys.length; i++) { - var _key = keys[i]; - if (!innerDeepEqual(a[_key], b[_key], strict, memos)) { - return false; + var has; + var toStr; + var isArgs; + var isEnumerable; + var hasDontEnumBug; + var hasProtoEnumBug; + var dontEnums; + var equalsConstructorPrototype; + var excludedKeys; + var hasAutomationEqualityBug; + var equalsConstructorPrototypeIfNotBuggy; + module.exports = keysShim; + } + }); + + // node_modules/object-keys/index.js + var require_object_keys = __commonJS({ + "node_modules/object-keys/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var slice = Array.prototype.slice; + var isArgs = require_isArguments(); + var origKeys = Object.keys; + var keysShim = origKeys ? function keys(o) { + return origKeys(o); + } : require_implementation2(); + var originalKeys = Object.keys; + keysShim.shim = function shimObjectKeys() { + if (Object.keys) { + var keysWorksWithArguments = function() { + var args = Object.keys(arguments); + return args && args.length === arguments.length; + }(1, 2); + if (!keysWorksWithArguments) { + Object.keys = function keys(object) { + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } + return originalKeys(object); + }; + } + } else { + Object.keys = keysShim; } - } - return true; + return Object.keys || keysShim; + }; + module.exports = keysShim; } - function isDeepEqual(val1, val2) { - return innerDeepEqual(val1, val2, kLoose); + }); + + // node_modules/has-property-descriptors/index.js + var require_has_property_descriptors = __commonJS({ + "node_modules/has-property-descriptors/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var hasPropertyDescriptors = function hasPropertyDescriptors2() { + if ($defineProperty) { + try { + $defineProperty({}, "a", {value: 1}); + return true; + } catch (e) { + return false; + } + } + return false; + }; + hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { + if (!hasPropertyDescriptors()) { + return null; + } + try { + return $defineProperty([], "length", {value: 1}).length !== 1; + } catch (e) { + return true; + } + }; + module.exports = hasPropertyDescriptors; } - function isDeepStrictEqual(val1, val2) { - return innerDeepEqual(val1, val2, kStrict); + }); + + // node_modules/define-properties/index.js + var require_define_properties = __commonJS({ + "node_modules/define-properties/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var keys = require_object_keys(); + var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; + var toStr = Object.prototype.toString; + var concat = Array.prototype.concat; + var origDefineProperty = Object.defineProperty; + var isFunction = function(fn) { + return typeof fn === "function" && toStr.call(fn) === "[object Function]"; + }; + var hasPropertyDescriptors = require_has_property_descriptors()(); + var supportsDescriptors = origDefineProperty && hasPropertyDescriptors; + var defineProperty = function(object, name, value, predicate) { + if (name in object && (!isFunction(predicate) || !predicate())) { + return; + } + if (supportsDescriptors) { + origDefineProperty(object, name, { + configurable: true, + enumerable: false, + value, + writable: true + }); + } else { + object[name] = value; + } + }; + var defineProperties = function(object, map) { + var predicates = arguments.length > 2 ? arguments[2] : {}; + var props = keys(map); + if (hasSymbols) { + props = concat.call(props, Object.getOwnPropertySymbols(map)); + } + for (var i = 0; i < props.length; i += 1) { + defineProperty(object, props[i], map[props[i]], predicates[props[i]]); + } + }; + defineProperties.supportsDescriptors = !!supportsDescriptors; + module.exports = defineProperties; } - module.exports = { - isDeepEqual, - isDeepStrictEqual - }; }); - // node_modules/assert/build/assert.js - var require_assert = __commonJS((exports, module) => { - init_process_shim(); - "use strict"; - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = require_errors(); - var _require$codes = _require.codes; - var ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT; - var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; - var ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE; - var ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE; - var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS; - var AssertionError = require_assertion_error(); - var _require2 = require_util(); - var inspect = _require2.inspect; - var _require$types = require_util().types; - var isPromise = _require$types.isPromise; - var isRegExp = _require$types.isRegExp; - var objectAssign = Object.assign ? Object.assign : require_es6_object_assign().assign; - var objectIs = Object.is ? Object.is : require_object_is(); - var errorCache = new Map(); - var isDeepEqual; - var isDeepStrictEqual; - function lazyLoadComparison() { - var comparison = require_comparisons(); - isDeepEqual = comparison.isDeepEqual; - isDeepStrictEqual = comparison.isDeepStrictEqual; - } - var warned = false; - var assert = module.exports = ok; - var NO_EXCEPTION_SENTINEL = {}; - function innerFail(obj) { - if (obj.message instanceof Error) - throw obj.message; - throw new AssertionError(obj); - } - function fail(actual, expected, message, operator, stackStartFn) { - var argsLen = arguments.length; - var internalMessage; - if (argsLen === 0) { - internalMessage = "Failed"; - } else if (argsLen === 1) { - message = actual; - actual = void 0; - } else { - if (warned === false) { - warned = true; - var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console); - warn("assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.", "DeprecationWarning", "DEP0094"); - } - if (argsLen === 2) - operator = "!="; - } - if (message instanceof Error) - throw message; - var errArgs = { - actual, - expected, - operator: operator === void 0 ? "fail" : operator, - stackStartFn: stackStartFn || fail - }; - if (message !== void 0) { - errArgs.message = message; - } - var err = new AssertionError(errArgs); - if (internalMessage) { - err.message = internalMessage; - err.generatedMessage = true; - } - throw err; - } - assert.fail = fail; - assert.AssertionError = AssertionError; - function innerOk(fn, argLen, value, message) { - if (!value) { - var generatedMessage = false; - if (argLen === 0) { - generatedMessage = true; - message = "No value argument passed to `assert.ok()`"; - } else if (message instanceof Error) { - throw message; + // node_modules/object-is/implementation.js + var require_implementation3 = __commonJS({ + "node_modules/object-is/implementation.js"(exports, module) { + init_process_shim(); + "use strict"; + var numberIsNaN = function(value) { + return value !== value; + }; + module.exports = function is(a, b) { + if (a === 0 && b === 0) { + return 1 / a === 1 / b; + } + if (a === b) { + return true; } - var err = new AssertionError({ - actual: value, - expected: true, - message, - operator: "==", - stackStartFn: fn + if (numberIsNaN(a) && numberIsNaN(b)) { + return true; + } + return false; + }; + } + }); + + // node_modules/object-is/polyfill.js + var require_polyfill = __commonJS({ + "node_modules/object-is/polyfill.js"(exports, module) { + init_process_shim(); + "use strict"; + var implementation = require_implementation3(); + module.exports = function getPolyfill() { + return typeof Object.is === "function" ? Object.is : implementation; + }; + } + }); + + // node_modules/object-is/shim.js + var require_shim = __commonJS({ + "node_modules/object-is/shim.js"(exports, module) { + init_process_shim(); + "use strict"; + var getPolyfill = require_polyfill(); + var define = require_define_properties(); + module.exports = function shimObjectIs() { + var polyfill = getPolyfill(); + define(Object, {is: polyfill}, { + is: function testObjectIs() { + return Object.is !== polyfill; + } }); - err.generatedMessage = generatedMessage; - throw err; - } + return polyfill; + }; } - function ok() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - innerOk.apply(void 0, [ok, args.length].concat(args)); + }); + + // node_modules/object-is/index.js + var require_object_is = __commonJS({ + "node_modules/object-is/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var define = require_define_properties(); + var callBind = require_call_bind(); + var implementation = require_implementation3(); + var getPolyfill = require_polyfill(); + var shim = require_shim(); + var polyfill = callBind(getPolyfill(), Object); + define(polyfill, { + getPolyfill, + implementation, + shim + }); + module.exports = polyfill; } - assert.ok = ok; - assert.equal = function equal(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (actual != expected) { - innerFail({ - actual, - expected, - message, - operator: "==", - stackStartFn: equal + }); + + // node_modules/is-nan/implementation.js + var require_implementation4 = __commonJS({ + "node_modules/is-nan/implementation.js"(exports, module) { + init_process_shim(); + "use strict"; + module.exports = function isNaN2(value) { + return value !== value; + }; + } + }); + + // node_modules/is-nan/polyfill.js + var require_polyfill2 = __commonJS({ + "node_modules/is-nan/polyfill.js"(exports, module) { + init_process_shim(); + "use strict"; + var implementation = require_implementation4(); + module.exports = function getPolyfill() { + if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN("a")) { + return Number.isNaN; + } + return implementation; + }; + } + }); + + // node_modules/is-nan/shim.js + var require_shim2 = __commonJS({ + "node_modules/is-nan/shim.js"(exports, module) { + init_process_shim(); + "use strict"; + var define = require_define_properties(); + var getPolyfill = require_polyfill2(); + module.exports = function shimNumberIsNaN() { + var polyfill = getPolyfill(); + define(Number, {isNaN: polyfill}, { + isNaN: function testIsNaN() { + return Number.isNaN !== polyfill; + } }); + return polyfill; + }; + } + }); + + // node_modules/is-nan/index.js + var require_is_nan = __commonJS({ + "node_modules/is-nan/index.js"(exports, module) { + init_process_shim(); + "use strict"; + var callBind = require_call_bind(); + var define = require_define_properties(); + var implementation = require_implementation4(); + var getPolyfill = require_polyfill2(); + var shim = require_shim2(); + var polyfill = callBind(getPolyfill(), Number); + define(polyfill, { + getPolyfill, + implementation, + shim + }); + module.exports = polyfill; + } + }); + + // node_modules/assert/build/internal/util/comparisons.js + var require_comparisons = __commonJS({ + "node_modules/assert/build/internal/util/comparisons.js"(exports, module) { + init_process_shim(); + "use strict"; + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = void 0; + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + if (i && _arr.length === i) + break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) + _i["return"](); + } finally { + if (_d) + throw _e; + } + } + return _arr; } - }; - assert.notEqual = function notEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (actual == expected) { - innerFail({ - actual, - expected, - message, - operator: "!=", - stackStartFn: notEqual - }); + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) + return arr; } - }; - assert.deepEqual = function deepEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof2(obj2) { + return typeof obj2; + }; + } else { + _typeof = function _typeof2(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof(obj); } - if (isDeepEqual === void 0) - lazyLoadComparison(); - if (!isDeepEqual(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "deepEqual", - stackStartFn: deepEqual + var regexFlagsSupported = /a/g.flags !== void 0; + var arrayFromSet = function arrayFromSet2(set) { + var array = []; + set.forEach(function(value) { + return array.push(value); }); + return array; + }; + var arrayFromMap = function arrayFromMap2(map) { + var array = []; + map.forEach(function(value, key) { + return array.push([key, value]); + }); + return array; + }; + var objectIs = Object.is ? Object.is : require_object_is(); + var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function() { + return []; + }; + var numberIsNaN = Number.isNaN ? Number.isNaN : require_is_nan(); + function uncurryThis(f) { + return f.call.bind(f); + } + var hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty); + var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable); + var objectToString = uncurryThis(Object.prototype.toString); + var _require$types = require_util().types; + var isAnyArrayBuffer = _require$types.isAnyArrayBuffer; + var isArrayBufferView = _require$types.isArrayBufferView; + var isDate = _require$types.isDate; + var isMap = _require$types.isMap; + var isRegExp = _require$types.isRegExp; + var isSet = _require$types.isSet; + var isNativeError = _require$types.isNativeError; + var isBoxedPrimitive = _require$types.isBoxedPrimitive; + var isNumberObject = _require$types.isNumberObject; + var isStringObject = _require$types.isStringObject; + var isBooleanObject = _require$types.isBooleanObject; + var isBigIntObject = _require$types.isBigIntObject; + var isSymbolObject = _require$types.isSymbolObject; + var isFloat32Array = _require$types.isFloat32Array; + var isFloat64Array = _require$types.isFloat64Array; + function isNonIndex(key) { + if (key.length === 0 || key.length > 10) + return true; + for (var i = 0; i < key.length; i++) { + var code = key.charCodeAt(i); + if (code < 48 || code > 57) + return true; + } + return key.length === 10 && key >= Math.pow(2, 32); } - }; - assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); + function getOwnNonIndexProperties(value) { + return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value))); } - if (isDeepEqual === void 0) - lazyLoadComparison(); - if (isDeepEqual(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "notDeepEqual", - stackStartFn: notDeepEqual - }); - } - }; - assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (isDeepEqual === void 0) - lazyLoadComparison(); - if (!isDeepStrictEqual(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "deepStrictEqual", - stackStartFn: deepStrictEqual - }); - } - }; - assert.notDeepStrictEqual = notDeepStrictEqual; - function notDeepStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (isDeepEqual === void 0) - lazyLoadComparison(); - if (isDeepStrictEqual(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "notDeepStrictEqual", - stackStartFn: notDeepStrictEqual - }); - } - } - assert.strictEqual = function strictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (!objectIs(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "strictEqual", - stackStartFn: strictEqual - }); - } - }; - assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (arguments.length < 2) { - throw new ERR_MISSING_ARGS("actual", "expected"); - } - if (objectIs(actual, expected)) { - innerFail({ - actual, - expected, - message, - operator: "notStrictEqual", - stackStartFn: notStrictEqual - }); - } - }; - var Comparison = function Comparison2(obj, keys, actual) { - var _this = this; - _classCallCheck(this, Comparison2); - keys.forEach(function(key) { - if (key in obj) { - if (actual !== void 0 && typeof actual[key] === "string" && isRegExp(obj[key]) && obj[key].test(actual[key])) { - _this[key] = actual[key]; - } else { - _this[key] = obj[key]; - } + function compare(a, b) { + if (a === b) { + return 0; } - }); - }; - function compareExceptionKey(actual, expected, key, message, keys, fn) { - if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) { - if (!message) { - var a = new Comparison(actual, keys); - var b = new Comparison(expected, keys, actual); - var err = new AssertionError({ - actual: a, - expected: b, - operator: "deepStrictEqual", - stackStartFn: fn - }); - err.actual = actual; - err.expected = expected; - err.operator = fn.name; - throw err; + var x = a.length; + var y = b.length; + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } } - innerFail({ - actual, - expected, - message, - operator: fn.name, - stackStartFn: fn - }); - } - } - function expectedException(actual, expected, msg, fn) { - if (typeof expected !== "function") { - if (isRegExp(expected)) - return expected.test(actual); - if (arguments.length === 2) { - throw new ERR_INVALID_ARG_TYPE("expected", ["Function", "RegExp"], expected); + if (x < y) { + return -1; } - if (_typeof(actual) !== "object" || actual === null) { - var err = new AssertionError({ - actual, - expected, - message: msg, - operator: "deepStrictEqual", - stackStartFn: fn - }); - err.operator = fn.name; - throw err; + if (y < x) { + return 1; } - var keys = Object.keys(expected); - if (expected instanceof Error) { - keys.push("name", "message"); - } else if (keys.length === 0) { - throw new ERR_INVALID_ARG_VALUE("error", expected, "may not be an empty object"); + return 0; + } + var ONLY_ENUMERABLE = void 0; + var kStrict = true; + var kLoose = false; + var kNoIterator = 0; + var kIsArray = 1; + var kIsSet = 2; + var kIsMap = 3; + function areSimilarRegExps(a, b) { + return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b); + } + function areSimilarFloatArrays(a, b) { + if (a.byteLength !== b.byteLength) { + return false; } - if (isDeepEqual === void 0) - lazyLoadComparison(); - keys.forEach(function(key) { - if (typeof actual[key] === "string" && isRegExp(expected[key]) && expected[key].test(actual[key])) { - return; + for (var offset = 0; offset < a.byteLength; offset++) { + if (a[offset] !== b[offset]) { + return false; } - compareExceptionKey(actual, expected, key, msg, keys, fn); - }); - return true; - } - if (expected.prototype !== void 0 && actual instanceof expected) { + } return true; } - if (Error.isPrototypeOf(expected)) { - return false; - } - return expected.call({}, actual) === true; - } - function getActual(fn) { - if (typeof fn !== "function") { - throw new ERR_INVALID_ARG_TYPE("fn", "Function", fn); + function areSimilarTypedArrays(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0; } - try { - fn(); - } catch (e) { - return e; + function areEqualArrayBuffers(buf1, buf2) { + return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0; } - return NO_EXCEPTION_SENTINEL; - } - function checkIsPromise(obj) { - return isPromise(obj) || obj !== null && _typeof(obj) === "object" && typeof obj.then === "function" && typeof obj.catch === "function"; - } - function waitForActual(promiseFn) { - return Promise.resolve().then(function() { - var resultPromise; - if (typeof promiseFn === "function") { - resultPromise = promiseFn(); - if (!checkIsPromise(resultPromise)) { - throw new ERR_INVALID_RETURN_VALUE("instance of Promise", "promiseFn", resultPromise); - } - } else if (checkIsPromise(promiseFn)) { - resultPromise = promiseFn; - } else { - throw new ERR_INVALID_ARG_TYPE("promiseFn", ["Function", "Promise"], promiseFn); + function isEqualBoxedPrimitive(val1, val2) { + if (isNumberObject(val1)) { + return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2)); } - return Promise.resolve().then(function() { - return resultPromise; - }).then(function() { - return NO_EXCEPTION_SENTINEL; - }).catch(function(e) { - return e; - }); - }); - } - function expectsError(stackStartFn, actual, error, message) { - if (typeof error === "string") { - if (arguments.length === 4) { - throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); + if (isStringObject(val1)) { + return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2); } - if (_typeof(actual) === "object" && actual !== null) { - if (actual.message === error) { - throw new ERR_AMBIGUOUS_ARGUMENT("error/message", 'The error message "'.concat(actual.message, '" is identical to the message.')); - } - } else if (actual === error) { - throw new ERR_AMBIGUOUS_ARGUMENT("error/message", 'The error "'.concat(actual, '" is identical to the message.')); - } - message = error; - error = void 0; - } else if (error != null && _typeof(error) !== "object" && typeof error !== "function") { - throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); - } - if (actual === NO_EXCEPTION_SENTINEL) { - var details = ""; - if (error && error.name) { - details += " (".concat(error.name, ")"); - } - details += message ? ": ".concat(message) : "."; - var fnType = stackStartFn.name === "rejects" ? "rejection" : "exception"; - innerFail({ - actual: void 0, - expected: error, - operator: stackStartFn.name, - message: "Missing expected ".concat(fnType).concat(details), - stackStartFn - }); - } - if (error && !expectedException(actual, error, message, stackStartFn)) { - throw actual; - } - } - function expectsNoError(stackStartFn, actual, error, message) { - if (actual === NO_EXCEPTION_SENTINEL) - return; - if (typeof error === "string") { - message = error; - error = void 0; - } - if (!error || expectedException(actual, error)) { - var details = message ? ": ".concat(message) : "."; - var fnType = stackStartFn.name === "doesNotReject" ? "rejection" : "exception"; - innerFail({ - actual, - expected: error, - operator: stackStartFn.name, - message: "Got unwanted ".concat(fnType).concat(details, "\n") + 'Actual message: "'.concat(actual && actual.message, '"'), - stackStartFn - }); - } - throw actual; - } - assert.throws = function throws(promiseFn) { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args)); - }; - assert.rejects = function rejects(promiseFn) { - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - args[_key3 - 1] = arguments[_key3]; + if (isBooleanObject(val1)) { + return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2); + } + if (isBigIntObject(val1)) { + return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2); + } + return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2); } - return waitForActual(promiseFn).then(function(result) { - return expectsError.apply(void 0, [rejects, result].concat(args)); - }); - }; - assert.doesNotThrow = function doesNotThrow(fn) { - for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { - args[_key4 - 1] = arguments[_key4]; - } - expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args)); - }; - assert.doesNotReject = function doesNotReject(fn) { - for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { - args[_key5 - 1] = arguments[_key5]; - } - return waitForActual(fn).then(function(result) { - return expectsNoError.apply(void 0, [doesNotReject, result].concat(args)); - }); - }; - assert.ifError = function ifError(err) { - if (err !== null && err !== void 0) { - var message = "ifError got unwanted exception: "; - if (_typeof(err) === "object" && typeof err.message === "string") { - if (err.message.length === 0 && err.constructor) { - message += err.constructor.name; - } else { - message += err.message; + function innerDeepEqual(val1, val2, strict, memos) { + if (val1 === val2) { + if (val1 !== 0) + return true; + return strict ? objectIs(val1, val2) : true; + } + if (strict) { + if (_typeof(val1) !== "object") { + return typeof val1 === "number" && numberIsNaN(val1) && numberIsNaN(val2); + } + if (_typeof(val2) !== "object" || val1 === null || val2 === null) { + return false; + } + if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) { + return false; } } else { - message += inspect(err); - } - var newErr = new AssertionError({ - actual: err, - expected: null, - operator: "ifError", - message, - stackStartFn: ifError - }); - var origStack = err.stack; - if (typeof origStack === "string") { - var tmp2 = origStack.split("\n"); - tmp2.shift(); - var tmp1 = newErr.stack.split("\n"); - for (var i = 0; i < tmp2.length; i++) { - var pos = tmp1.indexOf(tmp2[i]); - if (pos !== -1) { - tmp1 = tmp1.slice(0, pos); - break; + if (val1 === null || _typeof(val1) !== "object") { + if (val2 === null || _typeof(val2) !== "object") { + return val1 == val2; } + return false; + } + if (val2 === null || _typeof(val2) !== "object") { + return false; } - newErr.stack = "".concat(tmp1.join("\n"), "\n").concat(tmp2.join("\n")); } - throw newErr; - } - }; - function strict() { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - innerOk.apply(void 0, [strict, args.length].concat(args)); - } - assert.strict = objectAssign(strict, assert, { - equal: assert.strictEqual, - deepEqual: assert.deepStrictEqual, - notEqual: assert.notStrictEqual, - notDeepEqual: assert.notDeepStrictEqual - }); - assert.strict.strict = assert.strict; - }); - - // node_modules/antlr4ts/Decorators.js - var require_Decorators = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.SuppressWarnings = exports.Override = exports.Nullable = exports.NotNull = void 0; - function NotNull(target, propertyKey, propertyDescriptor) { - } - exports.NotNull = NotNull; - function Nullable(target, propertyKey, propertyDescriptor) { - } - exports.Nullable = Nullable; - function Override(target, propertyKey, propertyDescriptor) { - } - exports.Override = Override; - function SuppressWarnings(options) { - return (target, propertyKey, descriptor) => { - }; - } - exports.SuppressWarnings = SuppressWarnings; - }); - - // node_modules/antlr4ts/IntStream.js - var require_IntStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.IntStream = void 0; - var IntStream; - (function(IntStream2) { - IntStream2.EOF = -1; - IntStream2.UNKNOWN_SOURCE_NAME = ""; - })(IntStream = exports.IntStream || (exports.IntStream = {})); - }); - - // node_modules/antlr4ts/ANTLRInputStream.js - var require_ANTLRInputStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ANTLRInputStream = void 0; - var assert = require_assert(); - var Decorators_1 = require_Decorators(); - var IntStream_1 = require_IntStream(); - var ANTLRInputStream2 = class { - constructor(input) { - this.p = 0; - this.data = input; - this.n = input.length; - } - reset() { - this.p = 0; - } - consume() { - if (this.p >= this.n) { - assert(this.LA(1) === IntStream_1.IntStream.EOF); - throw new Error("cannot consume EOF"); - } - if (this.p < this.n) { - this.p++; - } - } - LA(i) { - if (i === 0) { - return 0; + var val1Tag = objectToString(val1); + var val2Tag = objectToString(val2); + if (val1Tag !== val2Tag) { + return false; } - if (i < 0) { - i++; - if (this.p + i - 1 < 0) { - return IntStream_1.IntStream.EOF; + if (Array.isArray(val1)) { + if (val1.length !== val2.length) { + return false; + } + var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); + var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); + if (keys1.length !== keys2.length) { + return false; } + return keyCheck(val1, val2, strict, memos, kIsArray, keys1); } - if (this.p + i - 1 >= this.n) { - return IntStream_1.IntStream.EOF; + if (val1Tag === "[object Object]") { + if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) { + return false; + } } - return this.data.charCodeAt(this.p + i - 1); - } - LT(i) { - return this.LA(i); - } - get index() { - return this.p; - } - get size() { - return this.n; - } - mark() { - return -1; + if (isDate(val1)) { + if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) { + return false; + } + } else if (isRegExp(val1)) { + if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) { + return false; + } + } else if (isNativeError(val1) || val1 instanceof Error) { + if (val1.message !== val2.message || val1.name !== val2.name) { + return false; + } + } else if (isArrayBufferView(val1)) { + if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) { + if (!areSimilarFloatArrays(val1, val2)) { + return false; + } + } else if (!areSimilarTypedArrays(val1, val2)) { + return false; + } + var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE); + var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE); + if (_keys.length !== _keys2.length) { + return false; + } + return keyCheck(val1, val2, strict, memos, kNoIterator, _keys); + } else if (isSet(val1)) { + if (!isSet(val2) || val1.size !== val2.size) { + return false; + } + return keyCheck(val1, val2, strict, memos, kIsSet); + } else if (isMap(val1)) { + if (!isMap(val2) || val1.size !== val2.size) { + return false; + } + return keyCheck(val1, val2, strict, memos, kIsMap); + } else if (isAnyArrayBuffer(val1)) { + if (!areEqualArrayBuffers(val1, val2)) { + return false; + } + } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) { + return false; + } + return keyCheck(val1, val2, strict, memos, kNoIterator); } - release(marker) { + function getEnumerables(val, keys) { + return keys.filter(function(k) { + return propertyIsEnumerable(val, k); + }); } - seek(index) { - if (index <= this.p) { - this.p = index; - return; + function keyCheck(val1, val2, strict, memos, iterationType, aKeys) { + if (arguments.length === 5) { + aKeys = Object.keys(val1); + var bKeys = Object.keys(val2); + if (aKeys.length !== bKeys.length) { + return false; + } } - index = Math.min(index, this.n); - while (this.p < index) { - this.consume(); + var i = 0; + for (; i < aKeys.length; i++) { + if (!hasOwnProperty(val2, aKeys[i])) { + return false; + } } - } - getText(interval) { - let start = interval.a; - let stop = interval.b; - if (stop >= this.n) { - stop = this.n - 1; + if (strict && arguments.length === 5) { + var symbolKeysA = objectGetOwnPropertySymbols(val1); + if (symbolKeysA.length !== 0) { + var count = 0; + for (i = 0; i < symbolKeysA.length; i++) { + var key = symbolKeysA[i]; + if (propertyIsEnumerable(val1, key)) { + if (!propertyIsEnumerable(val2, key)) { + return false; + } + aKeys.push(key); + count++; + } else if (propertyIsEnumerable(val2, key)) { + return false; + } + } + var symbolKeysB = objectGetOwnPropertySymbols(val2); + if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) { + return false; + } + } else { + var _symbolKeysB = objectGetOwnPropertySymbols(val2); + if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) { + return false; + } + } } - let count = stop - start + 1; - if (start >= this.n) { - return ""; + if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) { + return true; } - return this.data.substr(start, count); - } - get sourceName() { - if (!this.name) { - return IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; - } - return this.name; - } - toString() { - return this.data; - } - }; - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "consume", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "LA", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "index", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "mark", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "release", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "seek", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "getText", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "sourceName", null); - __decorate([ - Decorators_1.Override - ], ANTLRInputStream2.prototype, "toString", null); - exports.ANTLRInputStream = ANTLRInputStream2; - }); - - // node_modules/antlr4ts/atn/ATNState.js - var require_ATNState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNState = void 0; - var Decorators_1 = require_Decorators(); - var ATNState = class { - constructor() { - this.stateNumber = ATNState.INVALID_STATE_NUMBER; - this.ruleIndex = 0; - this.epsilonOnlyTransitions = false; - this.transitions = []; - this.optimizedTransitions = this.transitions; - } - getStateNumber() { - return this.stateNumber; - } - get nonStopStateNumber() { - return this.getStateNumber(); - } - hashCode() { - return this.stateNumber; - } - equals(o) { - if (o instanceof ATNState) { - return this.stateNumber === o.stateNumber; + if (memos === void 0) { + memos = { + val1: new Map(), + val2: new Map(), + position: 0 + }; + } else { + var val2MemoA = memos.val1.get(val1); + if (val2MemoA !== void 0) { + var val2MemoB = memos.val2.get(val2); + if (val2MemoB !== void 0) { + return val2MemoA === val2MemoB; + } + } + memos.position++; } - return false; + memos.val1.set(val1, memos.position); + memos.val2.set(val2, memos.position); + var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType); + memos.val1.delete(val1); + memos.val2.delete(val2); + return areEq; } - get isNonGreedyExitState() { + function setHasEqualElement(set, val1, strict, memo) { + var setValues = arrayFromSet(set); + for (var i = 0; i < setValues.length; i++) { + var val2 = setValues[i]; + if (innerDeepEqual(val1, val2, strict, memo)) { + set.delete(val2); + return true; + } + } return false; } - toString() { - return String(this.stateNumber); - } - getTransitions() { - return this.transitions.slice(0); - } - get numberOfTransitions() { - return this.transitions.length; - } - addTransition(e, index) { - if (this.transitions.length === 0) { - this.epsilonOnlyTransitions = e.isEpsilon; - } else if (this.epsilonOnlyTransitions !== e.isEpsilon) { - this.epsilonOnlyTransitions = false; - throw new Error("ATN state " + this.stateNumber + " has both epsilon and non-epsilon transitions."); + function findLooseMatchingPrimitives(prim) { + switch (_typeof(prim)) { + case "undefined": + return null; + case "object": + return void 0; + case "symbol": + return false; + case "string": + prim = +prim; + case "number": + if (numberIsNaN(prim)) { + return false; + } } - this.transitions.splice(index !== void 0 ? index : this.transitions.length, 0, e); - } - transition(i) { - return this.transitions[i]; - } - setTransition(i, e) { - this.transitions[i] = e; - } - removeTransition(index) { - return this.transitions.splice(index, 1)[0]; - } - get onlyHasEpsilonTransitions() { - return this.epsilonOnlyTransitions; - } - setRuleIndex(ruleIndex) { - this.ruleIndex = ruleIndex; - } - get isOptimized() { - return this.optimizedTransitions !== this.transitions; - } - get numberOfOptimizedTransitions() { - return this.optimizedTransitions.length; + return true; } - getOptimizedTransition(i) { - return this.optimizedTransitions[i]; + function setMightHaveLoosePrim(a, b, prim) { + var altValue = findLooseMatchingPrimitives(prim); + if (altValue != null) + return altValue; + return b.has(altValue) && !a.has(altValue); } - addOptimizedTransition(e) { - if (!this.isOptimized) { - this.optimizedTransitions = new Array(); + function mapMightHaveLoosePrim(a, b, prim, item, memo) { + var altValue = findLooseMatchingPrimitives(prim); + if (altValue != null) { + return altValue; } - this.optimizedTransitions.push(e); - } - setOptimizedTransition(i, e) { - if (!this.isOptimized) { - throw new Error("This ATNState is not optimized."); + var curB = b.get(altValue); + if (curB === void 0 && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) { + return false; } - this.optimizedTransitions[i] = e; + return !a.has(altValue) && innerDeepEqual(item, curB, false, memo); } - removeOptimizedTransition(i) { - if (!this.isOptimized) { - throw new Error("This ATNState is not optimized."); + function setEquiv(a, b, strict, memo) { + var set = null; + var aValues = arrayFromSet(a); + for (var i = 0; i < aValues.length; i++) { + var val = aValues[i]; + if (_typeof(val) === "object" && val !== null) { + if (set === null) { + set = new Set(); + } + set.add(val); + } else if (!b.has(val)) { + if (strict) + return false; + if (!setMightHaveLoosePrim(a, b, val)) { + return false; + } + if (set === null) { + set = new Set(); + } + set.add(val); + } } - this.optimizedTransitions.splice(i, 1); - } - }; - __decorate([ - Decorators_1.Override - ], ATNState.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], ATNState.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], ATNState.prototype, "toString", null); - exports.ATNState = ATNState; - (function(ATNState2) { - ATNState2.INVALID_STATE_NUMBER = -1; - })(ATNState = exports.ATNState || (exports.ATNState = {})); - }); - - // node_modules/antlr4ts/atn/ATNStateType.js - var require_ATNStateType = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNStateType = void 0; - var ATNStateType; - (function(ATNStateType2) { - ATNStateType2[ATNStateType2["INVALID_TYPE"] = 0] = "INVALID_TYPE"; - ATNStateType2[ATNStateType2["BASIC"] = 1] = "BASIC"; - ATNStateType2[ATNStateType2["RULE_START"] = 2] = "RULE_START"; - ATNStateType2[ATNStateType2["BLOCK_START"] = 3] = "BLOCK_START"; - ATNStateType2[ATNStateType2["PLUS_BLOCK_START"] = 4] = "PLUS_BLOCK_START"; - ATNStateType2[ATNStateType2["STAR_BLOCK_START"] = 5] = "STAR_BLOCK_START"; - ATNStateType2[ATNStateType2["TOKEN_START"] = 6] = "TOKEN_START"; - ATNStateType2[ATNStateType2["RULE_STOP"] = 7] = "RULE_STOP"; - ATNStateType2[ATNStateType2["BLOCK_END"] = 8] = "BLOCK_END"; - ATNStateType2[ATNStateType2["STAR_LOOP_BACK"] = 9] = "STAR_LOOP_BACK"; - ATNStateType2[ATNStateType2["STAR_LOOP_ENTRY"] = 10] = "STAR_LOOP_ENTRY"; - ATNStateType2[ATNStateType2["PLUS_LOOP_BACK"] = 11] = "PLUS_LOOP_BACK"; - ATNStateType2[ATNStateType2["LOOP_END"] = 12] = "LOOP_END"; - })(ATNStateType = exports.ATNStateType || (exports.ATNStateType = {})); - }); - - // node_modules/antlr4ts/RecognitionException.js - var require_RecognitionException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RecognitionException = void 0; - var RecognitionException2 = class extends Error { - constructor(recognizer, input, ctx, message) { - super(message); - this._offendingState = -1; - this._recognizer = recognizer; - this.input = input; - this.ctx = ctx; - if (recognizer) { - this._offendingState = recognizer.state; - } - } - get offendingState() { - return this._offendingState; - } - setOffendingState(offendingState) { - this._offendingState = offendingState; - } - get expectedTokens() { - if (this._recognizer) { - return this._recognizer.atn.getExpectedTokens(this._offendingState, this.ctx); - } - return void 0; - } - get context() { - return this.ctx; - } - get inputStream() { - return this.input; - } - getOffendingToken(recognizer) { - if (recognizer && recognizer !== this._recognizer) { - return void 0; + if (set !== null) { + var bValues = arrayFromSet(b); + for (var _i = 0; _i < bValues.length; _i++) { + var _val = bValues[_i]; + if (_typeof(_val) === "object" && _val !== null) { + if (!setHasEqualElement(set, _val, strict, memo)) + return false; + } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) { + return false; + } + } + return set.size === 0; } - return this.offendingToken; + return true; } - setOffendingToken(recognizer, offendingToken) { - if (recognizer === this._recognizer) { - this.offendingToken = offendingToken; + function mapHasEqualEntry(set, map, key1, item1, strict, memo) { + var setValues = arrayFromSet(set); + for (var i = 0; i < setValues.length; i++) { + var key2 = setValues[i]; + if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) { + set.delete(key2); + return true; + } } - } - get recognizer() { - return this._recognizer; - } - }; - exports.RecognitionException = RecognitionException2; - }); - - // node_modules/antlr4ts/atn/Transition.js - var require_Transition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Transition = void 0; - var Decorators_1 = require_Decorators(); - var Transition = class Transition { - constructor(target) { - if (target == null) { - throw new Error("target cannot be null."); - } - this.target = target; - } - get isEpsilon() { return false; } - get label() { - return void 0; - } - }; - Transition.serializationNames = [ - "INVALID", - "EPSILON", - "RANGE", - "RULE", - "PREDICATE", - "ATOM", - "ACTION", - "SET", - "NOT_SET", - "WILDCARD", - "PRECEDENCE" - ]; - __decorate([ - Decorators_1.NotNull - ], Transition.prototype, "target", void 0); - Transition = __decorate([ - __param(0, Decorators_1.NotNull) - ], Transition); - exports.Transition = Transition; - }); - - // node_modules/antlr4ts/atn/AbstractPredicateTransition.js - var require_AbstractPredicateTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.AbstractPredicateTransition = void 0; - var Transition_1 = require_Transition(); - var AbstractPredicateTransition = class extends Transition_1.Transition { - constructor(target) { - super(target); - } - }; - exports.AbstractPredicateTransition = AbstractPredicateTransition; - }); - - // node_modules/antlr4ts/misc/MurmurHash.js - var require_MurmurHash = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.MurmurHash = void 0; - var MurmurHash; - (function(MurmurHash2) { - const DEFAULT_SEED = 0; - function initialize(seed = DEFAULT_SEED) { - return seed; - } - MurmurHash2.initialize = initialize; - function update(hash, value) { - const c1 = 3432918353; - const c2 = 461845907; - const r1 = 15; - const r2 = 13; - const m = 5; - const n = 3864292196; - if (value == null) { - value = 0; - } else if (typeof value === "string") { - value = hashString(value); - } else if (typeof value === "object") { - value = value.hashCode(); - } - let k = value; - k = Math.imul(k, c1); - k = k << r1 | k >>> 32 - r1; - k = Math.imul(k, c2); - hash = hash ^ k; - hash = hash << r2 | hash >>> 32 - r2; - hash = Math.imul(hash, m) + n; - return hash & 4294967295; - } - MurmurHash2.update = update; - function finish(hash, numberOfWords) { - hash = hash ^ numberOfWords * 4; - hash = hash ^ hash >>> 16; - hash = Math.imul(hash, 2246822507); - hash = hash ^ hash >>> 13; - hash = Math.imul(hash, 3266489909); - hash = hash ^ hash >>> 16; - return hash; - } - MurmurHash2.finish = finish; - function hashCode(data, seed = DEFAULT_SEED) { - let hash = initialize(seed); - let length = 0; - for (let value of data) { - hash = update(hash, value); - length++; - } - hash = finish(hash, length); - return hash; - } - MurmurHash2.hashCode = hashCode; - function hashString(str) { - let len = str.length; - if (len === 0) { - return 0; + function mapEquiv(a, b, strict, memo) { + var set = null; + var aEntries = arrayFromMap(a); + for (var i = 0; i < aEntries.length; i++) { + var _aEntries$i = _slicedToArray(aEntries[i], 2), key = _aEntries$i[0], item1 = _aEntries$i[1]; + if (_typeof(key) === "object" && key !== null) { + if (set === null) { + set = new Set(); + } + set.add(key); + } else { + var item2 = b.get(key); + if (item2 === void 0 && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) { + if (strict) + return false; + if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) + return false; + if (set === null) { + set = new Set(); + } + set.add(key); + } + } } - let hash = 0; - for (let i = 0; i < len; i++) { - let c = str.charCodeAt(i); - hash = (hash << 5 >>> 0) - hash + c; - hash |= 0; + if (set !== null) { + var bEntries = arrayFromMap(b); + for (var _i2 = 0; _i2 < bEntries.length; _i2++) { + var _bEntries$_i = _slicedToArray(bEntries[_i2], 2), key = _bEntries$_i[0], item = _bEntries$_i[1]; + if (_typeof(key) === "object" && key !== null) { + if (!mapHasEqualEntry(set, a, key, item, strict, memo)) + return false; + } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) { + return false; + } + } + return set.size === 0; } - return hash; + return true; } - })(MurmurHash = exports.MurmurHash || (exports.MurmurHash = {})); - }); - - // node_modules/antlr4ts/misc/ObjectEqualityComparator.js - var require_ObjectEqualityComparator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ObjectEqualityComparator = void 0; - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator = class { - hashCode(obj) { - if (obj == null) { - return 0; + function objEquiv(a, b, strict, keys, memos, iterationType) { + var i = 0; + if (iterationType === kIsSet) { + if (!setEquiv(a, b, strict, memos)) { + return false; + } + } else if (iterationType === kIsMap) { + if (!mapEquiv(a, b, strict, memos)) { + return false; + } + } else if (iterationType === kIsArray) { + for (; i < a.length; i++) { + if (hasOwnProperty(a, i)) { + if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) { + return false; + } + } else if (hasOwnProperty(b, i)) { + return false; + } else { + var keysA = Object.keys(a); + for (; i < keysA.length; i++) { + var key = keysA[i]; + if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) { + return false; + } + } + if (keysA.length !== Object.keys(b).length) { + return false; + } + return true; + } + } } - return obj.hashCode(); - } - equals(a, b) { - if (a == null) { - return b == null; + for (i = 0; i < keys.length; i++) { + var _key = keys[i]; + if (!innerDeepEqual(a[_key], b[_key], strict, memos)) { + return false; + } } - return a.equals(b); + return true; } - }; - ObjectEqualityComparator.INSTANCE = new ObjectEqualityComparator(); - __decorate([ - Decorators_1.Override - ], ObjectEqualityComparator.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], ObjectEqualityComparator.prototype, "equals", null); - exports.ObjectEqualityComparator = ObjectEqualityComparator; - }); - - // node_modules/antlr4ts/misc/DefaultEqualityComparator.js - var require_DefaultEqualityComparator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DefaultEqualityComparator = void 0; - var Decorators_1 = require_Decorators(); - var MurmurHash_1 = require_MurmurHash(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var DefaultEqualityComparator = class { - hashCode(obj) { - if (obj == null) { - return 0; - } else if (typeof obj === "string" || typeof obj === "number") { - return MurmurHash_1.MurmurHash.hashCode([obj]); - } else { - return ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.hashCode(obj); - } + function isDeepEqual(val1, val2) { + return innerDeepEqual(val1, val2, kLoose); } - equals(a, b) { - if (a == null) { - return b == null; - } else if (typeof a === "string" || typeof a === "number") { - return a === b; - } else { - return ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(a, b); - } - } - }; - DefaultEqualityComparator.INSTANCE = new DefaultEqualityComparator(); - __decorate([ - Decorators_1.Override - ], DefaultEqualityComparator.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], DefaultEqualityComparator.prototype, "equals", null); - exports.DefaultEqualityComparator = DefaultEqualityComparator; + function isDeepStrictEqual(val1, val2) { + return innerDeepEqual(val1, val2, kStrict); + } + module.exports = { + isDeepEqual, + isDeepStrictEqual + }; + } }); - // node_modules/antlr4ts/misc/Array2DHashSet.js - var require_Array2DHashSet = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Array2DHashSet = void 0; - var assert = require_assert(); - var DefaultEqualityComparator_1 = require_DefaultEqualityComparator(); - var Decorators_1 = require_Decorators(); - var MurmurHash_1 = require_MurmurHash(); - var INITAL_CAPACITY = 16; - var LOAD_FACTOR = 0.75; - var Array2DHashSet = class { - constructor(comparatorOrSet, initialCapacity = INITAL_CAPACITY) { - this.n = 0; - this.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); - if (comparatorOrSet instanceof Array2DHashSet) { - this.comparator = comparatorOrSet.comparator; - this.buckets = comparatorOrSet.buckets.slice(0); - for (let i = 0; i < this.buckets.length; i++) { - let bucket = this.buckets[i]; - if (bucket) { - this.buckets[i] = bucket.slice(0); - } - } - this.n = comparatorOrSet.n; - this.threshold = comparatorOrSet.threshold; + // node_modules/assert/build/assert.js + var require_assert = __commonJS({ + "node_modules/assert/build/assert.js"(exports, module) { + init_process_shim(); + "use strict"; + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof2(obj2) { + return typeof obj2; + }; } else { - this.comparator = comparatorOrSet || DefaultEqualityComparator_1.DefaultEqualityComparator.INSTANCE; - this.buckets = this.createBuckets(initialCapacity); + _typeof = function _typeof2(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; } + return _typeof(obj); + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = require_errors(); + var _require$codes = _require.codes; + var ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT; + var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; + var ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE; + var ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE; + var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS; + var AssertionError = require_assertion_error(); + var _require2 = require_util(); + var inspect = _require2.inspect; + var _require$types = require_util().types; + var isPromise = _require$types.isPromise; + var isRegExp = _require$types.isRegExp; + var objectAssign = Object.assign ? Object.assign : require_es6_object_assign().assign; + var objectIs = Object.is ? Object.is : require_object_is(); + var errorCache = new Map(); + var isDeepEqual; + var isDeepStrictEqual; + function lazyLoadComparison() { + var comparison = require_comparisons(); + isDeepEqual = comparison.isDeepEqual; + isDeepStrictEqual = comparison.isDeepStrictEqual; } - getOrAdd(o) { - if (this.n > this.threshold) { - this.expand(); + var warned = false; + var assert = module.exports = ok; + var NO_EXCEPTION_SENTINEL = {}; + function innerFail(obj) { + if (obj.message instanceof Error) + throw obj.message; + throw new AssertionError(obj); + } + function fail(actual, expected, message, operator, stackStartFn) { + var argsLen = arguments.length; + var internalMessage; + if (argsLen === 0) { + internalMessage = "Failed"; + } else if (argsLen === 1) { + message = actual; + actual = void 0; + } else { + if (warned === false) { + warned = true; + var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console); + warn("assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.", "DeprecationWarning", "DEP0094"); + } + if (argsLen === 2) + operator = "!="; + } + if (message instanceof Error) + throw message; + var errArgs = { + actual, + expected, + operator: operator === void 0 ? "fail" : operator, + stackStartFn: stackStartFn || fail + }; + if (message !== void 0) { + errArgs.message = message; } - return this.getOrAddImpl(o); - } - getOrAddImpl(o) { - let b = this.getBucket(o); - let bucket = this.buckets[b]; - if (!bucket) { - bucket = [o]; - this.buckets[b] = bucket; - this.n++; - return o; + var err = new AssertionError(errArgs); + if (internalMessage) { + err.message = internalMessage; + err.generatedMessage = true; } - for (let existing of bucket) { - if (this.comparator.equals(existing, o)) { - return existing; + throw err; + } + assert.fail = fail; + assert.AssertionError = AssertionError; + function innerOk(fn, argLen, value, message) { + if (!value) { + var generatedMessage = false; + if (argLen === 0) { + generatedMessage = true; + message = "No value argument passed to `assert.ok()`"; + } else if (message instanceof Error) { + throw message; } + var err = new AssertionError({ + actual: value, + expected: true, + message, + operator: "==", + stackStartFn: fn + }); + err.generatedMessage = generatedMessage; + throw err; } - bucket.push(o); - this.n++; - return o; } - get(o) { - if (o == null) { - return o; + function ok() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - let b = this.getBucket(o); - let bucket = this.buckets[b]; - if (!bucket) { - return void 0; + innerOk.apply(void 0, [ok, args.length].concat(args)); + } + assert.ok = ok; + assert.equal = function equal(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); } - for (let e of bucket) { - if (this.comparator.equals(e, o)) { - return e; - } + if (actual != expected) { + innerFail({ + actual, + expected, + message, + operator: "==", + stackStartFn: equal + }); + } + }; + assert.notEqual = function notEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (actual == expected) { + innerFail({ + actual, + expected, + message, + operator: "!=", + stackStartFn: notEqual + }); + } + }; + assert.deepEqual = function deepEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (isDeepEqual === void 0) + lazyLoadComparison(); + if (!isDeepEqual(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "deepEqual", + stackStartFn: deepEqual + }); + } + }; + assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (isDeepEqual === void 0) + lazyLoadComparison(); + if (isDeepEqual(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "notDeepEqual", + stackStartFn: notDeepEqual + }); + } + }; + assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (isDeepEqual === void 0) + lazyLoadComparison(); + if (!isDeepStrictEqual(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "deepStrictEqual", + stackStartFn: deepStrictEqual + }); + } + }; + assert.notDeepStrictEqual = notDeepStrictEqual; + function notDeepStrictEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (isDeepEqual === void 0) + lazyLoadComparison(); + if (isDeepStrictEqual(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "notDeepStrictEqual", + stackStartFn: notDeepStrictEqual + }); } - return void 0; - } - getBucket(o) { - let hash = this.comparator.hashCode(o); - let b = hash & this.buckets.length - 1; - return b; } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - for (let bucket of this.buckets) { - if (bucket == null) { - continue; - } - for (let o of bucket) { - if (o == null) { - break; + assert.strictEqual = function strictEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (!objectIs(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "strictEqual", + stackStartFn: strictEqual + }); + } + }; + assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (arguments.length < 2) { + throw new ERR_MISSING_ARGS("actual", "expected"); + } + if (objectIs(actual, expected)) { + innerFail({ + actual, + expected, + message, + operator: "notStrictEqual", + stackStartFn: notStrictEqual + }); + } + }; + var Comparison = function Comparison2(obj, keys, actual) { + var _this = this; + _classCallCheck(this, Comparison2); + keys.forEach(function(key) { + if (key in obj) { + if (actual !== void 0 && typeof actual[key] === "string" && isRegExp(obj[key]) && obj[key].test(actual[key])) { + _this[key] = actual[key]; + } else { + _this[key] = obj[key]; } - hash = MurmurHash_1.MurmurHash.update(hash, this.comparator.hashCode(o)); } + }); + }; + function compareExceptionKey(actual, expected, key, message, keys, fn) { + if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) { + if (!message) { + var a = new Comparison(actual, keys); + var b = new Comparison(expected, keys, actual); + var err = new AssertionError({ + actual: a, + expected: b, + operator: "deepStrictEqual", + stackStartFn: fn + }); + err.actual = actual; + err.expected = expected; + err.operator = fn.name; + throw err; + } + innerFail({ + actual, + expected, + message, + operator: fn.name, + stackStartFn: fn + }); } - hash = MurmurHash_1.MurmurHash.finish(hash, this.size); - return hash; } - equals(o) { - if (o === this) { + function expectedException(actual, expected, msg, fn) { + if (typeof expected !== "function") { + if (isRegExp(expected)) + return expected.test(actual); + if (arguments.length === 2) { + throw new ERR_INVALID_ARG_TYPE("expected", ["Function", "RegExp"], expected); + } + if (_typeof(actual) !== "object" || actual === null) { + var err = new AssertionError({ + actual, + expected, + message: msg, + operator: "deepStrictEqual", + stackStartFn: fn + }); + err.operator = fn.name; + throw err; + } + var keys = Object.keys(expected); + if (expected instanceof Error) { + keys.push("name", "message"); + } else if (keys.length === 0) { + throw new ERR_INVALID_ARG_VALUE("error", expected, "may not be an empty object"); + } + if (isDeepEqual === void 0) + lazyLoadComparison(); + keys.forEach(function(key) { + if (typeof actual[key] === "string" && isRegExp(expected[key]) && expected[key].test(actual[key])) { + return; + } + compareExceptionKey(actual, expected, key, msg, keys, fn); + }); return true; } - if (!(o instanceof Array2DHashSet)) { - return false; + if (expected.prototype !== void 0 && actual instanceof expected) { + return true; } - if (o.size !== this.size) { + if (Error.isPrototypeOf(expected)) { return false; } - let same = this.containsAll(o); - return same; - } - expand() { - let old = this.buckets; - let newCapacity = this.buckets.length * 2; - let newTable = this.createBuckets(newCapacity); - this.buckets = newTable; - this.threshold = Math.floor(newCapacity * LOAD_FACTOR); - let oldSize = this.size; - for (let bucket of old) { - if (!bucket) { - continue; - } - for (let o of bucket) { - let b = this.getBucket(o); - let newBucket = this.buckets[b]; - if (!newBucket) { - newBucket = []; - this.buckets[b] = newBucket; - } - newBucket.push(o); - } - } - assert(this.n === oldSize); - } - add(t) { - let existing = this.getOrAdd(t); - return existing === t; - } - get size() { - return this.n; - } - get isEmpty() { - return this.n === 0; - } - contains(o) { - return this.containsFast(this.asElementType(o)); + return expected.call({}, actual) === true; } - containsFast(obj) { - if (obj == null) { - return false; + function getActual(fn) { + if (typeof fn !== "function") { + throw new ERR_INVALID_ARG_TYPE("fn", "Function", fn); + } + try { + fn(); + } catch (e) { + return e; } - return this.get(obj) != null; + return NO_EXCEPTION_SENTINEL; } - *[Symbol.iterator]() { - yield* this.toArray(); + function checkIsPromise(obj) { + return isPromise(obj) || obj !== null && _typeof(obj) === "object" && typeof obj.then === "function" && typeof obj.catch === "function"; } - toArray() { - const a = new Array(this.size); - let i = 0; - for (let bucket of this.buckets) { - if (bucket == null) { - continue; - } - for (let o of bucket) { - if (o == null) { - break; - } - a[i++] = o; + function waitForActual(promiseFn) { + return Promise.resolve().then(function() { + var resultPromise; + if (typeof promiseFn === "function") { + resultPromise = promiseFn(); + if (!checkIsPromise(resultPromise)) { + throw new ERR_INVALID_RETURN_VALUE("instance of Promise", "promiseFn", resultPromise); + } + } else if (checkIsPromise(promiseFn)) { + resultPromise = promiseFn; + } else { + throw new ERR_INVALID_ARG_TYPE("promiseFn", ["Function", "Promise"], promiseFn); } - } - return a; + return Promise.resolve().then(function() { + return resultPromise; + }).then(function() { + return NO_EXCEPTION_SENTINEL; + }).catch(function(e) { + return e; + }); + }); } - containsAll(collection) { - if (collection instanceof Array2DHashSet) { - let s = collection; - for (let bucket of s.buckets) { - if (bucket == null) { - continue; - } - for (let o of bucket) { - if (o == null) { - break; - } - if (!this.containsFast(this.asElementType(o))) { - return false; - } - } + function expectsError(stackStartFn, actual, error, message) { + if (typeof error === "string") { + if (arguments.length === 4) { + throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); } - } else { - for (let o of collection) { - if (!this.containsFast(this.asElementType(o))) { - return false; + if (_typeof(actual) === "object" && actual !== null) { + if (actual.message === error) { + throw new ERR_AMBIGUOUS_ARGUMENT("error/message", 'The error message "'.concat(actual.message, '" is identical to the message.')); } + } else if (actual === error) { + throw new ERR_AMBIGUOUS_ARGUMENT("error/message", 'The error "'.concat(actual, '" is identical to the message.')); } + message = error; + error = void 0; + } else if (error != null && _typeof(error) !== "object" && typeof error !== "function") { + throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); } - return true; - } - addAll(c) { - let changed = false; - for (let o of c) { - let existing = this.getOrAdd(o); - if (existing !== o) { - changed = true; - } + if (actual === NO_EXCEPTION_SENTINEL) { + var details = ""; + if (error && error.name) { + details += " (".concat(error.name, ")"); + } + details += message ? ": ".concat(message) : "."; + var fnType = stackStartFn.name === "rejects" ? "rejection" : "exception"; + innerFail({ + actual: void 0, + expected: error, + operator: stackStartFn.name, + message: "Missing expected ".concat(fnType).concat(details), + stackStartFn + }); + } + if (error && !expectedException(actual, error, message, stackStartFn)) { + throw actual; } - return changed; } - clear() { - this.buckets = this.createBuckets(INITAL_CAPACITY); - this.n = 0; - this.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); + function expectsNoError(stackStartFn, actual, error, message) { + if (actual === NO_EXCEPTION_SENTINEL) + return; + if (typeof error === "string") { + message = error; + error = void 0; + } + if (!error || expectedException(actual, error)) { + var details = message ? ": ".concat(message) : "."; + var fnType = stackStartFn.name === "doesNotReject" ? "rejection" : "exception"; + innerFail({ + actual, + expected: error, + operator: stackStartFn.name, + message: "Got unwanted ".concat(fnType).concat(details, "\n") + 'Actual message: "'.concat(actual && actual.message, '"'), + stackStartFn + }); + } + throw actual; } - toString() { - if (this.size === 0) { - return "{}"; + assert.throws = function throws(promiseFn) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; } - let buf = "{"; - let first = true; - for (let bucket of this.buckets) { - if (bucket == null) { - continue; - } - for (let o of bucket) { - if (o == null) { - break; - } - if (first) { - first = false; - } else { - buf += ", "; - } - buf += o.toString(); - } + expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args)); + }; + assert.rejects = function rejects(promiseFn) { + for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; } - buf += "}"; - return buf; - } - toTableString() { - let buf = ""; - for (let bucket of this.buckets) { - if (bucket == null) { - buf += "null\n"; - continue; - } - buf += "["; - let first = true; - for (let o of bucket) { - if (first) { - first = false; + return waitForActual(promiseFn).then(function(result) { + return expectsError.apply(void 0, [rejects, result].concat(args)); + }); + }; + assert.doesNotThrow = function doesNotThrow(fn) { + for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + args[_key4 - 1] = arguments[_key4]; + } + expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args)); + }; + assert.doesNotReject = function doesNotReject(fn) { + for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { + args[_key5 - 1] = arguments[_key5]; + } + return waitForActual(fn).then(function(result) { + return expectsNoError.apply(void 0, [doesNotReject, result].concat(args)); + }); + }; + assert.ifError = function ifError(err) { + if (err !== null && err !== void 0) { + var message = "ifError got unwanted exception: "; + if (_typeof(err) === "object" && typeof err.message === "string") { + if (err.message.length === 0 && err.constructor) { + message += err.constructor.name; } else { - buf += " "; + message += err.message; } - if (o == null) { - buf += "_"; - } else { - buf += o.toString(); + } else { + message += inspect(err); + } + var newErr = new AssertionError({ + actual: err, + expected: null, + operator: "ifError", + message, + stackStartFn: ifError + }); + var origStack = err.stack; + if (typeof origStack === "string") { + var tmp2 = origStack.split("\n"); + tmp2.shift(); + var tmp1 = newErr.stack.split("\n"); + for (var i = 0; i < tmp2.length; i++) { + var pos = tmp1.indexOf(tmp2[i]); + if (pos !== -1) { + tmp1 = tmp1.slice(0, pos); + break; + } } + newErr.stack = "".concat(tmp1.join("\n"), "\n").concat(tmp2.join("\n")); } - buf += "]\n"; + throw newErr; } - return buf; + }; + function strict() { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + innerOk.apply(void 0, [strict, args.length].concat(args)); } - asElementType(o) { - return o; - } - createBuckets(capacity) { - return new Array(capacity); - } - }; - __decorate([ - Decorators_1.NotNull - ], Array2DHashSet.prototype, "comparator", void 0); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "add", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "isEmpty", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "contains", null); - __decorate([ - __param(0, Decorators_1.Nullable) - ], Array2DHashSet.prototype, "containsFast", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, Symbol.iterator, null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "toArray", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "containsAll", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "addAll", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "clear", null); - __decorate([ - Decorators_1.Override - ], Array2DHashSet.prototype, "toString", null); - __decorate([ - Decorators_1.SuppressWarnings("unchecked") - ], Array2DHashSet.prototype, "asElementType", null); - __decorate([ - Decorators_1.SuppressWarnings("unchecked") - ], Array2DHashSet.prototype, "createBuckets", null); - exports.Array2DHashSet = Array2DHashSet; + assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual + }); + assert.strict.strict = assert.strict; + } }); - // node_modules/antlr4ts/misc/ArrayEqualityComparator.js - var require_ArrayEqualityComparator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ArrayEqualityComparator = void 0; - var Decorators_1 = require_Decorators(); - var MurmurHash_1 = require_MurmurHash(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var ArrayEqualityComparator = class { - hashCode(obj) { - if (obj == null) { - return 0; - } - return MurmurHash_1.MurmurHash.hashCode(obj, 0); - } - equals(a, b) { - if (a == null) { - return b == null; - } else if (b == null) { - return false; - } - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (!ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(a[i], b[i])) { - return false; - } - } - return true; + // node_modules/antlr4ts/Decorators.js + var require_Decorators = __commonJS({ + "node_modules/antlr4ts/Decorators.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.SuppressWarnings = exports.Override = exports.Nullable = exports.NotNull = void 0; + function NotNull(target, propertyKey, propertyDescriptor) { + } + exports.NotNull = NotNull; + function Nullable(target, propertyKey, propertyDescriptor) { + } + exports.Nullable = Nullable; + function Override(target, propertyKey, propertyDescriptor) { + } + exports.Override = Override; + function SuppressWarnings(options) { + return (target, propertyKey, descriptor) => { + }; } - }; - ArrayEqualityComparator.INSTANCE = new ArrayEqualityComparator(); - __decorate([ - Decorators_1.Override - ], ArrayEqualityComparator.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], ArrayEqualityComparator.prototype, "equals", null); - exports.ArrayEqualityComparator = ArrayEqualityComparator; + exports.SuppressWarnings = SuppressWarnings; + } }); - // node_modules/antlr4ts/misc/Utils.js - var require_Utils = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.toCharArray = exports.toMap = exports.equals = exports.join = exports.escapeWhitespace = void 0; - function escapeWhitespace(s, escapeSpaces) { - return escapeSpaces ? s.replace(/ /, "\xB7") : s.replace(/\t/, "\\t").replace(/\n/, "\\n").replace(/\r/, "\\r"); - } - exports.escapeWhitespace = escapeWhitespace; - function join3(collection, separator) { - let buf = ""; - let first = true; - for (let current of collection) { - if (first) { - first = false; - } else { - buf += separator; - } - buf += current; - } - return buf; - } - exports.join = join3; - function equals(x, y) { - if (x === y) { - return true; - } - if (x === void 0 || y === void 0) { - return false; - } - return x.equals(y); - } - exports.equals = equals; - function toMap(keys) { - let m = new Map(); - for (let i = 0; i < keys.length; i++) { - m.set(keys[i], i); - } - return m; - } - exports.toMap = toMap; - function toCharArray3(str) { - if (typeof str === "string") { - let result = new Uint16Array(str.length); - for (let i = 0; i < str.length; i++) { - result[i] = str.charCodeAt(i); - } - return result; - } else { - return str.toCharArray(); - } + // node_modules/antlr4ts/IntStream.js + var require_IntStream = __commonJS({ + "node_modules/antlr4ts/IntStream.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.IntStream = void 0; + var IntStream; + (function(IntStream2) { + IntStream2.EOF = -1; + IntStream2.UNKNOWN_SOURCE_NAME = ""; + })(IntStream = exports.IntStream || (exports.IntStream = {})); } - exports.toCharArray = toCharArray3; }); - // node_modules/antlr4ts/atn/SemanticContext.js - var require_SemanticContext = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.SemanticContext = void 0; - var Array2DHashSet_1 = require_Array2DHashSet(); - var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var Utils3 = require_Utils(); - function max(items) { - let result; - for (let current of items) { - if (result === void 0) { - result = current; - continue; - } - let comparison = result.compareTo(current); - if (comparison < 0) { - result = current; - } - } - return result; - } - function min(items) { - let result; - for (let current of items) { - if (result === void 0) { - result = current; - continue; + // node_modules/antlr4ts/ANTLRInputStream.js + var require_ANTLRInputStream = __commonJS({ + "node_modules/antlr4ts/ANTLRInputStream.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ANTLRInputStream = void 0; + var assert = require_assert(); + var Decorators_1 = require_Decorators(); + var IntStream_1 = require_IntStream(); + var ANTLRInputStream2 = class { + constructor(input) { + this.p = 0; + this.data = input; + this.n = input.length; } - let comparison = result.compareTo(current); - if (comparison > 0) { - result = current; + reset() { + this.p = 0; } - } - return result; - } - var SemanticContext = class { - static get NONE() { - if (SemanticContext._NONE === void 0) { - SemanticContext._NONE = new SemanticContext.Predicate(); + consume() { + if (this.p >= this.n) { + assert(this.LA(1) === IntStream_1.IntStream.EOF); + throw new Error("cannot consume EOF"); + } + if (this.p < this.n) { + this.p++; + } } - return SemanticContext._NONE; - } - evalPrecedence(parser, parserCallStack) { - return this; - } - static and(a, b) { - if (!a || a === SemanticContext.NONE) { - return b; + LA(i) { + if (i === 0) { + return 0; + } + if (i < 0) { + i++; + if (this.p + i - 1 < 0) { + return IntStream_1.IntStream.EOF; + } + } + if (this.p + i - 1 >= this.n) { + return IntStream_1.IntStream.EOF; + } + return this.data.charCodeAt(this.p + i - 1); } - if (b === SemanticContext.NONE) { - return a; + LT(i) { + return this.LA(i); } - let result = new SemanticContext.AND(a, b); - if (result.opnds.length === 1) { - return result.opnds[0]; + get index() { + return this.p; } - return result; - } - static or(a, b) { - if (!a) { - return b; + get size() { + return this.n; } - if (a === SemanticContext.NONE || b === SemanticContext.NONE) { - return SemanticContext.NONE; + mark() { + return -1; } - let result = new SemanticContext.OR(a, b); - if (result.opnds.length === 1) { - return result.opnds[0]; + release(marker) { } - return result; - } - }; - exports.SemanticContext = SemanticContext; - (function(SemanticContext2) { - const AND_HASHCODE = 40363613; - const OR_HASHCODE = 486279973; - function filterPrecedencePredicates(collection) { - let result = []; - for (let i = 0; i < collection.length; i++) { - let context = collection[i]; - if (context instanceof SemanticContext2.PrecedencePredicate) { - result.push(context); - collection.splice(i, 1); - i--; + seek(index) { + if (index <= this.p) { + this.p = index; + return; + } + index = Math.min(index, this.n); + while (this.p < index) { + this.consume(); } } - return result; - } - class Predicate extends SemanticContext2 { - constructor(ruleIndex = -1, predIndex = -1, isCtxDependent = false) { - super(); - this.ruleIndex = ruleIndex; - this.predIndex = predIndex; - this.isCtxDependent = isCtxDependent; - } - eval(parser, parserCallStack) { - let localctx = this.isCtxDependent ? parserCallStack : void 0; - return parser.sempred(localctx, this.ruleIndex, this.predIndex); - } - hashCode() { - let hashCode = MurmurHash_1.MurmurHash.initialize(); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.ruleIndex); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.predIndex); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.isCtxDependent ? 1 : 0); - hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 3); - return hashCode; - } - equals(obj) { - if (!(obj instanceof Predicate)) { - return false; + getText(interval) { + let start = interval.a; + let stop = interval.b; + if (stop >= this.n) { + stop = this.n - 1; } - if (this === obj) { - return true; + let count = stop - start + 1; + if (start >= this.n) { + return ""; + } + return this.data.substr(start, count); + } + get sourceName() { + if (!this.name) { + return IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; } - return this.ruleIndex === obj.ruleIndex && this.predIndex === obj.predIndex && this.isCtxDependent === obj.isCtxDependent; + return this.name; } toString() { - return "{" + this.ruleIndex + ":" + this.predIndex + "}?"; + return this.data; } - } + }; __decorate([ Decorators_1.Override - ], Predicate.prototype, "eval", null); + ], ANTLRInputStream2.prototype, "consume", null); __decorate([ Decorators_1.Override - ], Predicate.prototype, "hashCode", null); + ], ANTLRInputStream2.prototype, "LA", null); __decorate([ Decorators_1.Override - ], Predicate.prototype, "equals", null); + ], ANTLRInputStream2.prototype, "index", null); __decorate([ Decorators_1.Override - ], Predicate.prototype, "toString", null); - SemanticContext2.Predicate = Predicate; - class PrecedencePredicate extends SemanticContext2 { - constructor(precedence) { - super(); - this.precedence = precedence; - } - eval(parser, parserCallStack) { - return parser.precpred(parserCallStack, this.precedence); - } - evalPrecedence(parser, parserCallStack) { - if (parser.precpred(parserCallStack, this.precedence)) { - return SemanticContext2.NONE; - } else { - return void 0; - } - } - compareTo(o) { - return this.precedence - o.precedence; - } - hashCode() { - let hashCode = 1; - hashCode = 31 * hashCode + this.precedence; - return hashCode; - } - equals(obj) { - if (!(obj instanceof PrecedencePredicate)) { - return false; - } - if (this === obj) { - return true; - } - return this.precedence === obj.precedence; - } - toString() { - return "{" + this.precedence + ">=prec}?"; - } - } + ], ANTLRInputStream2.prototype, "size", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "eval", null); + ], ANTLRInputStream2.prototype, "mark", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "evalPrecedence", null); + ], ANTLRInputStream2.prototype, "release", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "compareTo", null); + ], ANTLRInputStream2.prototype, "seek", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "hashCode", null); + ], ANTLRInputStream2.prototype, "getText", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "equals", null); + ], ANTLRInputStream2.prototype, "sourceName", null); __decorate([ Decorators_1.Override - ], PrecedencePredicate.prototype, "toString", null); - SemanticContext2.PrecedencePredicate = PrecedencePredicate; - class Operator extends SemanticContext2 { - } - SemanticContext2.Operator = Operator; - let AND = class AND2 extends Operator { - constructor(a, b) { - super(); - let operands = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - if (a instanceof AND2) { - operands.addAll(a.opnds); - } else { - operands.add(a); - } - if (b instanceof AND2) { - operands.addAll(b.opnds); - } else { - operands.add(b); - } - this.opnds = operands.toArray(); - let precedencePredicates = filterPrecedencePredicates(this.opnds); - let reduced = min(precedencePredicates); - if (reduced) { - this.opnds.push(reduced); - } + ], ANTLRInputStream2.prototype, "toString", null); + exports.ANTLRInputStream = ANTLRInputStream2; + } + }); + + // node_modules/antlr4ts/atn/ATNState.js + var require_ATNState = __commonJS({ + "node_modules/antlr4ts/atn/ATNState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNState = void 0; + var Decorators_1 = require_Decorators(); + var ATNState2 = class { + constructor() { + this.stateNumber = ATNState2.INVALID_STATE_NUMBER; + this.ruleIndex = 0; + this.epsilonOnlyTransitions = false; + this.transitions = []; + this.optimizedTransitions = this.transitions; } - get operands() { - return this.opnds; + getStateNumber() { + return this.stateNumber; } - equals(obj) { - if (this === obj) { - return true; - } - if (!(obj instanceof AND2)) { - return false; - } - return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds); + get nonStopStateNumber() { + return this.getStateNumber(); } hashCode() { - return MurmurHash_1.MurmurHash.hashCode(this.opnds, AND_HASHCODE); + return this.stateNumber; } - eval(parser, parserCallStack) { - for (let opnd of this.opnds) { - if (!opnd.eval(parser, parserCallStack)) { - return false; - } + equals(o) { + if (o instanceof ATNState2) { + return this.stateNumber === o.stateNumber; } - return true; + return false; } - evalPrecedence(parser, parserCallStack) { - let differs = false; - let operands = []; - for (let context of this.opnds) { - let evaluated = context.evalPrecedence(parser, parserCallStack); - differs = differs || evaluated !== context; - if (evaluated == null) { - return void 0; - } else if (evaluated !== SemanticContext2.NONE) { - operands.push(evaluated); - } - } - if (!differs) { - return this; + get isNonGreedyExitState() { + return false; + } + toString() { + return String(this.stateNumber); + } + getTransitions() { + return this.transitions.slice(0); + } + get numberOfTransitions() { + return this.transitions.length; + } + addTransition(e, index) { + if (this.transitions.length === 0) { + this.epsilonOnlyTransitions = e.isEpsilon; + } else if (this.epsilonOnlyTransitions !== e.isEpsilon) { + this.epsilonOnlyTransitions = false; + throw new Error("ATN state " + this.stateNumber + " has both epsilon and non-epsilon transitions."); } - if (operands.length === 0) { - return SemanticContext2.NONE; + this.transitions.splice(index !== void 0 ? index : this.transitions.length, 0, e); + } + transition(i) { + return this.transitions[i]; + } + setTransition(i, e) { + this.transitions[i] = e; + } + removeTransition(index) { + return this.transitions.splice(index, 1)[0]; + } + get onlyHasEpsilonTransitions() { + return this.epsilonOnlyTransitions; + } + setRuleIndex(ruleIndex) { + this.ruleIndex = ruleIndex; + } + get isOptimized() { + return this.optimizedTransitions !== this.transitions; + } + get numberOfOptimizedTransitions() { + return this.optimizedTransitions.length; + } + getOptimizedTransition(i) { + return this.optimizedTransitions[i]; + } + addOptimizedTransition(e) { + if (!this.isOptimized) { + this.optimizedTransitions = new Array(); } - let result = operands[0]; - for (let i = 1; i < operands.length; i++) { - result = SemanticContext2.and(result, operands[i]); + this.optimizedTransitions.push(e); + } + setOptimizedTransition(i, e) { + if (!this.isOptimized) { + throw new Error("This ATNState is not optimized."); } - return result; + this.optimizedTransitions[i] = e; } - toString() { - return Utils3.join(this.opnds, "&&"); + removeOptimizedTransition(i) { + if (!this.isOptimized) { + throw new Error("This ATNState is not optimized."); + } + this.optimizedTransitions.splice(i, 1); } }; __decorate([ Decorators_1.Override - ], AND.prototype, "operands", null); - __decorate([ - Decorators_1.Override - ], AND.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], AND.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], AND.prototype, "eval", null); + ], ATNState2.prototype, "hashCode", null); __decorate([ Decorators_1.Override - ], AND.prototype, "evalPrecedence", null); + ], ATNState2.prototype, "equals", null); __decorate([ Decorators_1.Override - ], AND.prototype, "toString", null); - AND = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], AND); - SemanticContext2.AND = AND; - let OR = class OR2 extends Operator { - constructor(a, b) { - super(); - let operands = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - if (a instanceof OR2) { - operands.addAll(a.opnds); - } else { - operands.add(a); - } - if (b instanceof OR2) { - operands.addAll(b.opnds); - } else { - operands.add(b); - } - this.opnds = operands.toArray(); - let precedencePredicates = filterPrecedencePredicates(this.opnds); - let reduced = max(precedencePredicates); - if (reduced) { - this.opnds.push(reduced); + ], ATNState2.prototype, "toString", null); + exports.ATNState = ATNState2; + (function(ATNState3) { + ATNState3.INVALID_STATE_NUMBER = -1; + })(ATNState2 = exports.ATNState || (exports.ATNState = {})); + } + }); + + // node_modules/antlr4ts/atn/ATNStateType.js + var require_ATNStateType = __commonJS({ + "node_modules/antlr4ts/atn/ATNStateType.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNStateType = void 0; + var ATNStateType; + (function(ATNStateType2) { + ATNStateType2[ATNStateType2["INVALID_TYPE"] = 0] = "INVALID_TYPE"; + ATNStateType2[ATNStateType2["BASIC"] = 1] = "BASIC"; + ATNStateType2[ATNStateType2["RULE_START"] = 2] = "RULE_START"; + ATNStateType2[ATNStateType2["BLOCK_START"] = 3] = "BLOCK_START"; + ATNStateType2[ATNStateType2["PLUS_BLOCK_START"] = 4] = "PLUS_BLOCK_START"; + ATNStateType2[ATNStateType2["STAR_BLOCK_START"] = 5] = "STAR_BLOCK_START"; + ATNStateType2[ATNStateType2["TOKEN_START"] = 6] = "TOKEN_START"; + ATNStateType2[ATNStateType2["RULE_STOP"] = 7] = "RULE_STOP"; + ATNStateType2[ATNStateType2["BLOCK_END"] = 8] = "BLOCK_END"; + ATNStateType2[ATNStateType2["STAR_LOOP_BACK"] = 9] = "STAR_LOOP_BACK"; + ATNStateType2[ATNStateType2["STAR_LOOP_ENTRY"] = 10] = "STAR_LOOP_ENTRY"; + ATNStateType2[ATNStateType2["PLUS_LOOP_BACK"] = 11] = "PLUS_LOOP_BACK"; + ATNStateType2[ATNStateType2["LOOP_END"] = 12] = "LOOP_END"; + })(ATNStateType = exports.ATNStateType || (exports.ATNStateType = {})); + } + }); + + // node_modules/antlr4ts/RecognitionException.js + var require_RecognitionException = __commonJS({ + "node_modules/antlr4ts/RecognitionException.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RecognitionException = void 0; + var RecognitionException3 = class extends Error { + constructor(recognizer, input, ctx, message) { + super(message); + this._offendingState = -1; + this._recognizer = recognizer; + this.input = input; + this.ctx = ctx; + if (recognizer) { + this._offendingState = recognizer.state; + } + } + get offendingState() { + return this._offendingState; + } + setOffendingState(offendingState) { + this._offendingState = offendingState; + } + get expectedTokens() { + if (this._recognizer) { + return this._recognizer.atn.getExpectedTokens(this._offendingState, this.ctx); } + return void 0; } - get operands() { - return this.opnds; + get context() { + return this.ctx; } - equals(obj) { - if (this === obj) { - return true; + get inputStream() { + return this.input; + } + getOffendingToken(recognizer) { + if (recognizer && recognizer !== this._recognizer) { + return void 0; } - if (!(obj instanceof OR2)) { - return false; + return this.offendingToken; + } + setOffendingToken(recognizer, offendingToken) { + if (recognizer === this._recognizer) { + this.offendingToken = offendingToken; } - return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds); } - hashCode() { - return MurmurHash_1.MurmurHash.hashCode(this.opnds, OR_HASHCODE); + get recognizer() { + return this._recognizer; } - eval(parser, parserCallStack) { - for (let opnd of this.opnds) { - if (opnd.eval(parser, parserCallStack)) { - return true; - } + }; + exports.RecognitionException = RecognitionException3; + } + }); + + // node_modules/antlr4ts/atn/Transition.js + var require_Transition = __commonJS({ + "node_modules/antlr4ts/atn/Transition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Transition = void 0; + var Decorators_1 = require_Decorators(); + var Transition2 = class Transition { + constructor(target) { + if (target == null) { + throw new Error("target cannot be null."); } + this.target = target; + } + get isEpsilon() { return false; } - evalPrecedence(parser, parserCallStack) { - let differs = false; - let operands = []; - for (let context of this.opnds) { - let evaluated = context.evalPrecedence(parser, parserCallStack); - differs = differs || evaluated !== context; - if (evaluated === SemanticContext2.NONE) { - return SemanticContext2.NONE; - } else if (evaluated) { - operands.push(evaluated); - } - } - if (!differs) { - return this; + get label() { + return void 0; + } + }; + Transition2.serializationNames = [ + "INVALID", + "EPSILON", + "RANGE", + "RULE", + "PREDICATE", + "ATOM", + "ACTION", + "SET", + "NOT_SET", + "WILDCARD", + "PRECEDENCE" + ]; + __decorate([ + Decorators_1.NotNull + ], Transition2.prototype, "target", void 0); + Transition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], Transition2); + exports.Transition = Transition2; + } + }); + + // node_modules/antlr4ts/atn/AbstractPredicateTransition.js + var require_AbstractPredicateTransition = __commonJS({ + "node_modules/antlr4ts/atn/AbstractPredicateTransition.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.AbstractPredicateTransition = void 0; + var Transition_1 = require_Transition(); + var AbstractPredicateTransition2 = class extends Transition_1.Transition { + constructor(target) { + super(target); + } + }; + exports.AbstractPredicateTransition = AbstractPredicateTransition2; + } + }); + + // node_modules/antlr4ts/misc/MurmurHash.js + var require_MurmurHash = __commonJS({ + "node_modules/antlr4ts/misc/MurmurHash.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.MurmurHash = void 0; + var MurmurHash; + (function(MurmurHash2) { + const DEFAULT_SEED = 0; + function initialize(seed = DEFAULT_SEED) { + return seed; + } + MurmurHash2.initialize = initialize; + function update(hash, value) { + const c1 = 3432918353; + const c2 = 461845907; + const r1 = 15; + const r2 = 13; + const m = 5; + const n = 3864292196; + if (value == null) { + value = 0; + } else if (typeof value === "string") { + value = hashString(value); + } else if (typeof value === "object") { + value = value.hashCode(); + } + let k = value; + k = Math.imul(k, c1); + k = k << r1 | k >>> 32 - r1; + k = Math.imul(k, c2); + hash = hash ^ k; + hash = hash << r2 | hash >>> 32 - r2; + hash = Math.imul(hash, m) + n; + return hash & 4294967295; + } + MurmurHash2.update = update; + function finish(hash, numberOfWords) { + hash = hash ^ numberOfWords * 4; + hash = hash ^ hash >>> 16; + hash = Math.imul(hash, 2246822507); + hash = hash ^ hash >>> 13; + hash = Math.imul(hash, 3266489909); + hash = hash ^ hash >>> 16; + return hash; + } + MurmurHash2.finish = finish; + function hashCode(data, seed = DEFAULT_SEED) { + let hash = initialize(seed); + let length = 0; + for (let value of data) { + hash = update(hash, value); + length++; + } + hash = finish(hash, length); + return hash; + } + MurmurHash2.hashCode = hashCode; + function hashString(str) { + let len = str.length; + if (len === 0) { + return 0; } - if (operands.length === 0) { - return void 0; + let hash = 0; + for (let i = 0; i < len; i++) { + let c = str.charCodeAt(i); + hash = (hash << 5 >>> 0) - hash + c; + hash |= 0; } - let result = operands[0]; - for (let i = 1; i < operands.length; i++) { - result = SemanticContext2.or(result, operands[i]); + return hash; + } + })(MurmurHash = exports.MurmurHash || (exports.MurmurHash = {})); + } + }); + + // node_modules/antlr4ts/misc/ObjectEqualityComparator.js + var require_ObjectEqualityComparator = __commonJS({ + "node_modules/antlr4ts/misc/ObjectEqualityComparator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ObjectEqualityComparator = void 0; + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator = class { + hashCode(obj) { + if (obj == null) { + return 0; } - return result; + return obj.hashCode(); } - toString() { - return Utils3.join(this.opnds, "||"); + equals(a, b) { + if (a == null) { + return b == null; + } + return a.equals(b); } }; + ObjectEqualityComparator.INSTANCE = new ObjectEqualityComparator(); __decorate([ Decorators_1.Override - ], OR.prototype, "operands", null); - __decorate([ - Decorators_1.Override - ], OR.prototype, "equals", null); + ], ObjectEqualityComparator.prototype, "hashCode", null); __decorate([ Decorators_1.Override - ], OR.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], OR.prototype, "eval", null); + ], ObjectEqualityComparator.prototype, "equals", null); + exports.ObjectEqualityComparator = ObjectEqualityComparator; + } + }); + + // node_modules/antlr4ts/misc/DefaultEqualityComparator.js + var require_DefaultEqualityComparator = __commonJS({ + "node_modules/antlr4ts/misc/DefaultEqualityComparator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DefaultEqualityComparator = void 0; + var Decorators_1 = require_Decorators(); + var MurmurHash_1 = require_MurmurHash(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var DefaultEqualityComparator = class { + hashCode(obj) { + if (obj == null) { + return 0; + } else if (typeof obj === "string" || typeof obj === "number") { + return MurmurHash_1.MurmurHash.hashCode([obj]); + } else { + return ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.hashCode(obj); + } + } + equals(a, b) { + if (a == null) { + return b == null; + } else if (typeof a === "string" || typeof a === "number") { + return a === b; + } else { + return ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(a, b); + } + } + }; + DefaultEqualityComparator.INSTANCE = new DefaultEqualityComparator(); __decorate([ Decorators_1.Override - ], OR.prototype, "evalPrecedence", null); + ], DefaultEqualityComparator.prototype, "hashCode", null); __decorate([ Decorators_1.Override - ], OR.prototype, "toString", null); - OR = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], OR); - SemanticContext2.OR = OR; - })(SemanticContext = exports.SemanticContext || (exports.SemanticContext = {})); + ], DefaultEqualityComparator.prototype, "equals", null); + exports.DefaultEqualityComparator = DefaultEqualityComparator; + } }); - // node_modules/antlr4ts/atn/PredicateTransition.js - var require_PredicateTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PredicateTransition = void 0; - var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); - var Decorators_1 = require_Decorators(); - var SemanticContext_1 = require_SemanticContext(); - var PredicateTransition = class PredicateTransition extends AbstractPredicateTransition_1.AbstractPredicateTransition { - constructor(target, ruleIndex, predIndex, isCtxDependent) { - super(target); - this.ruleIndex = ruleIndex; - this.predIndex = predIndex; - this.isCtxDependent = isCtxDependent; - } - get serializationType() { - return 4; - } - get isEpsilon() { - return true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - get predicate() { - return new SemanticContext_1.SemanticContext.Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent); - } - toString() { - return "pred_" + this.ruleIndex + ":" + this.predIndex; - } - }; - __decorate([ - Decorators_1.Override - ], PredicateTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], PredicateTransition.prototype, "isEpsilon", null); - __decorate([ - Decorators_1.Override - ], PredicateTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], PredicateTransition.prototype, "toString", null); - PredicateTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], PredicateTransition); - exports.PredicateTransition = PredicateTransition; - }); - - // node_modules/antlr4ts/FailedPredicateException.js - var require_FailedPredicateException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.FailedPredicateException = void 0; - var RecognitionException_1 = require_RecognitionException(); - var Decorators_1 = require_Decorators(); - var PredicateTransition_1 = require_PredicateTransition(); - var FailedPredicateException2 = class FailedPredicateException3 extends RecognitionException_1.RecognitionException { - constructor(recognizer, predicate, message) { - super(recognizer, recognizer.inputStream, recognizer.context, FailedPredicateException3.formatMessage(predicate, message)); - let s = recognizer.interpreter.atn.states[recognizer.state]; - let trans = s.transition(0); - if (trans instanceof PredicateTransition_1.PredicateTransition) { - this._ruleIndex = trans.ruleIndex; - this._predicateIndex = trans.predIndex; - } else { - this._ruleIndex = 0; - this._predicateIndex = 0; - } - this._predicate = predicate; - super.setOffendingToken(recognizer, recognizer.currentToken); - } - get ruleIndex() { - return this._ruleIndex; - } - get predicateIndex() { - return this._predicateIndex; - } - get predicate() { - return this._predicate; - } - static formatMessage(predicate, message) { - if (message) { - return message; - } - return `failed predicate: {${predicate}}?`; - } - }; - __decorate([ - Decorators_1.NotNull - ], FailedPredicateException2, "formatMessage", null); - FailedPredicateException2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], FailedPredicateException2); - exports.FailedPredicateException = FailedPredicateException2; - }); - - // node_modules/antlr4ts/InputMismatchException.js - var require_InputMismatchException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.InputMismatchException = void 0; - var RecognitionException_1 = require_RecognitionException(); - var Decorators_1 = require_Decorators(); - var InputMismatchException = class InputMismatchException extends RecognitionException_1.RecognitionException { - constructor(recognizer, state, context) { - if (context === void 0) { - context = recognizer.context; - } - super(recognizer, recognizer.inputStream, context); - if (state !== void 0) { - this.setOffendingState(state); - } - this.setOffendingToken(recognizer, recognizer.currentToken); - } - }; - InputMismatchException = __decorate([ - __param(0, Decorators_1.NotNull) - ], InputMismatchException); - exports.InputMismatchException = InputMismatchException; - }); - - // node_modules/antlr4ts/misc/Arrays.js - var require_Arrays = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Arrays = void 0; - var Arrays; - (function(Arrays2) { - function binarySearch(array, key, fromIndex, toIndex) { - return binarySearch0(array, fromIndex !== void 0 ? fromIndex : 0, toIndex !== void 0 ? toIndex : array.length, key); - } - Arrays2.binarySearch = binarySearch; - function binarySearch0(array, fromIndex, toIndex, key) { - let low = fromIndex; - let high = toIndex - 1; - while (low <= high) { - let mid = low + high >>> 1; - let midVal = array[mid]; - if (midVal < key) { - low = mid + 1; - } else if (midVal > key) { - high = mid - 1; + // node_modules/antlr4ts/misc/Array2DHashSet.js + var require_Array2DHashSet = __commonJS({ + "node_modules/antlr4ts/misc/Array2DHashSet.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Array2DHashSet = void 0; + var assert = require_assert(); + var DefaultEqualityComparator_1 = require_DefaultEqualityComparator(); + var Decorators_1 = require_Decorators(); + var MurmurHash_1 = require_MurmurHash(); + var INITAL_CAPACITY = 16; + var LOAD_FACTOR = 0.75; + var Array2DHashSet = class { + constructor(comparatorOrSet, initialCapacity = INITAL_CAPACITY) { + this.n = 0; + this.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); + if (comparatorOrSet instanceof Array2DHashSet) { + this.comparator = comparatorOrSet.comparator; + this.buckets = comparatorOrSet.buckets.slice(0); + for (let i = 0; i < this.buckets.length; i++) { + let bucket = this.buckets[i]; + if (bucket) { + this.buckets[i] = bucket.slice(0); + } + } + this.n = comparatorOrSet.n; + this.threshold = comparatorOrSet.threshold; } else { - return mid; + this.comparator = comparatorOrSet || DefaultEqualityComparator_1.DefaultEqualityComparator.INSTANCE; + this.buckets = this.createBuckets(initialCapacity); } } - return -(low + 1); - } - function toString(array) { - let result = "["; - let first = true; - for (let element of array) { - if (first) { - first = false; - } else { - result += ", "; + getOrAdd(o) { + if (this.n > this.threshold) { + this.expand(); } - if (element === null) { - result += "null"; - } else if (element === void 0) { - result += "undefined"; - } else { - result += element; + return this.getOrAddImpl(o); + } + getOrAddImpl(o) { + let b = this.getBucket(o); + let bucket = this.buckets[b]; + if (!bucket) { + bucket = [o]; + this.buckets[b] = bucket; + this.n++; + return o; } + for (let existing of bucket) { + if (this.comparator.equals(existing, o)) { + return existing; + } + } + bucket.push(o); + this.n++; + return o; } - result += "]"; - return result; - } - Arrays2.toString = toString; - })(Arrays = exports.Arrays || (exports.Arrays = {})); - }); - - // node_modules/antlr4ts/misc/IntegerList.js - var require_IntegerList = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.IntegerList = void 0; - var Arrays_1 = require_Arrays(); - var Decorators_1 = require_Decorators(); - var EMPTY_DATA = new Int32Array(0); - var INITIAL_SIZE = 4; - var MAX_ARRAY_SIZE = (1 << 31 >>> 0) - 1 - 8; - var IntegerList = class { - constructor(arg) { - if (!arg) { - this._data = EMPTY_DATA; - this._size = 0; - } else if (arg instanceof IntegerList) { - this._data = arg._data.slice(0); - this._size = arg._size; - } else if (typeof arg === "number") { - if (arg === 0) { - this._data = EMPTY_DATA; - this._size = 0; - } else { - this._data = new Int32Array(arg); - this._size = 0; + get(o) { + if (o == null) { + return o; } - } else { - this._data = EMPTY_DATA; - this._size = 0; - for (let value of arg) { - this.add(value); + let b = this.getBucket(o); + let bucket = this.buckets[b]; + if (!bucket) { + return void 0; + } + for (let e of bucket) { + if (this.comparator.equals(e, o)) { + return e; + } } + return void 0; } - } - add(value) { - if (this._data.length === this._size) { - this.ensureCapacity(this._size + 1); + getBucket(o) { + let hash = this.comparator.hashCode(o); + let b = hash & this.buckets.length - 1; + return b; } - this._data[this._size] = value; - this._size++; - } - addAll(list) { - if (Array.isArray(list)) { - this.ensureCapacity(this._size + list.length); - this._data.subarray(this._size, this._size + list.length).set(list); - this._size += list.length; - } else if (list instanceof IntegerList) { - this.ensureCapacity(this._size + list._size); - this._data.subarray(this._size, this._size + list.size).set(list._data); - this._size += list._size; - } else { - this.ensureCapacity(this._size + list.size); - let current = 0; - for (let xi of list) { - this._data[this._size + current] = xi; - current++; + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + for (let bucket of this.buckets) { + if (bucket == null) { + continue; + } + for (let o of bucket) { + if (o == null) { + break; + } + hash = MurmurHash_1.MurmurHash.update(hash, this.comparator.hashCode(o)); + } } - this._size += list.size; - } - } - get(index) { - if (index < 0 || index >= this._size) { - throw RangeError(); + hash = MurmurHash_1.MurmurHash.finish(hash, this.size); + return hash; } - return this._data[index]; - } - contains(value) { - for (let i = 0; i < this._size; i++) { - if (this._data[i] === value) { + equals(o) { + if (o === this) { return true; } + if (!(o instanceof Array2DHashSet)) { + return false; + } + if (o.size !== this.size) { + return false; + } + let same = this.containsAll(o); + return same; + } + expand() { + let old = this.buckets; + let newCapacity = this.buckets.length * 2; + let newTable = this.createBuckets(newCapacity); + this.buckets = newTable; + this.threshold = Math.floor(newCapacity * LOAD_FACTOR); + let oldSize = this.size; + for (let bucket of old) { + if (!bucket) { + continue; + } + for (let o of bucket) { + let b = this.getBucket(o); + let newBucket = this.buckets[b]; + if (!newBucket) { + newBucket = []; + this.buckets[b] = newBucket; + } + newBucket.push(o); + } + } + assert(this.n === oldSize); } - return false; - } - set(index, value) { - if (index < 0 || index >= this._size) { - throw RangeError(); + add(t) { + let existing = this.getOrAdd(t); + return existing === t; } - let previous = this._data[index]; - this._data[index] = value; - return previous; - } - removeAt(index) { - let value = this.get(index); - this._data.copyWithin(index, index + 1, this._size); - this._data[this._size - 1] = 0; - this._size--; - return value; - } - removeRange(fromIndex, toIndex) { - if (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) { - throw RangeError(); + get size() { + return this.n; } - if (fromIndex > toIndex) { - throw RangeError(); + get isEmpty() { + return this.n === 0; } - this._data.copyWithin(toIndex, fromIndex, this._size); - this._data.fill(0, this._size - (toIndex - fromIndex), this._size); - this._size -= toIndex - fromIndex; - } - get isEmpty() { - return this._size === 0; - } - get size() { - return this._size; - } - trimToSize() { - if (this._data.length === this._size) { - return; + contains(o) { + return this.containsFast(this.asElementType(o)); } - this._data = this._data.slice(0, this._size); - } - clear() { - this._data.fill(0, 0, this._size); - this._size = 0; - } - toArray() { - if (this._size === 0) { - return []; + containsFast(obj) { + if (obj == null) { + return false; + } + return this.get(obj) != null; } - return Array.from(this._data.subarray(0, this._size)); - } - sort() { - this._data.subarray(0, this._size).sort(); - } - equals(o) { - if (o === this) { - return true; + *[Symbol.iterator]() { + yield* this.toArray(); } - if (!(o instanceof IntegerList)) { - return false; + toArray() { + const a = new Array(this.size); + let i = 0; + for (let bucket of this.buckets) { + if (bucket == null) { + continue; + } + for (let o of bucket) { + if (o == null) { + break; + } + a[i++] = o; + } + } + return a; } - if (this._size !== o._size) { - return false; + containsAll(collection) { + if (collection instanceof Array2DHashSet) { + let s = collection; + for (let bucket of s.buckets) { + if (bucket == null) { + continue; + } + for (let o of bucket) { + if (o == null) { + break; + } + if (!this.containsFast(this.asElementType(o))) { + return false; + } + } + } + } else { + for (let o of collection) { + if (!this.containsFast(this.asElementType(o))) { + return false; + } + } + } + return true; } - for (let i = 0; i < this._size; i++) { - if (this._data[i] !== o._data[i]) { - return false; + addAll(c) { + let changed = false; + for (let o of c) { + let existing = this.getOrAdd(o); + if (existing !== o) { + changed = true; + } } + return changed; } - return true; - } - hashCode() { - let hashCode = 1; - for (let i = 0; i < this._size; i++) { - hashCode = 31 * hashCode + this._data[i]; + clear() { + this.buckets = this.createBuckets(INITAL_CAPACITY); + this.n = 0; + this.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); } - return hashCode; - } - toString() { - return this._data.toString(); - } - binarySearch(key, fromIndex, toIndex) { - if (fromIndex === void 0) { - fromIndex = 0; + toString() { + if (this.size === 0) { + return "{}"; + } + let buf = "{"; + let first = true; + for (let bucket of this.buckets) { + if (bucket == null) { + continue; + } + for (let o of bucket) { + if (o == null) { + break; + } + if (first) { + first = false; + } else { + buf += ", "; + } + buf += o.toString(); + } + } + buf += "}"; + return buf; } - if (toIndex === void 0) { - toIndex = this._size; + toTableString() { + let buf = ""; + for (let bucket of this.buckets) { + if (bucket == null) { + buf += "null\n"; + continue; + } + buf += "["; + let first = true; + for (let o of bucket) { + if (first) { + first = false; + } else { + buf += " "; + } + if (o == null) { + buf += "_"; + } else { + buf += o.toString(); + } + } + buf += "]\n"; + } + return buf; } - if (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) { - throw new RangeError(); + asElementType(o) { + return o; } - if (fromIndex > toIndex) { - throw new RangeError(); + createBuckets(capacity) { + return new Array(capacity); } - return Arrays_1.Arrays.binarySearch(this._data, key, fromIndex, toIndex); - } - ensureCapacity(capacity) { - if (capacity < 0 || capacity > MAX_ARRAY_SIZE) { - throw new RangeError(); + }; + __decorate([ + Decorators_1.NotNull + ], Array2DHashSet.prototype, "comparator", void 0); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "add", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "isEmpty", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "contains", null); + __decorate([ + __param(0, Decorators_1.Nullable) + ], Array2DHashSet.prototype, "containsFast", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, Symbol.iterator, null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "toArray", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "containsAll", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "addAll", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "clear", null); + __decorate([ + Decorators_1.Override + ], Array2DHashSet.prototype, "toString", null); + __decorate([ + Decorators_1.SuppressWarnings("unchecked") + ], Array2DHashSet.prototype, "asElementType", null); + __decorate([ + Decorators_1.SuppressWarnings("unchecked") + ], Array2DHashSet.prototype, "createBuckets", null); + exports.Array2DHashSet = Array2DHashSet; + } + }); + + // node_modules/antlr4ts/misc/ArrayEqualityComparator.js + var require_ArrayEqualityComparator = __commonJS({ + "node_modules/antlr4ts/misc/ArrayEqualityComparator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ArrayEqualityComparator = void 0; + var Decorators_1 = require_Decorators(); + var MurmurHash_1 = require_MurmurHash(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var ArrayEqualityComparator = class { + hashCode(obj) { + if (obj == null) { + return 0; + } + return MurmurHash_1.MurmurHash.hashCode(obj, 0); } - let newLength; - if (this._data.length === 0) { - newLength = INITIAL_SIZE; - } else { - newLength = this._data.length; - } - while (newLength < capacity) { - newLength = newLength * 2; - if (newLength < 0 || newLength > MAX_ARRAY_SIZE) { - newLength = MAX_ARRAY_SIZE; - } - } - let tmp = new Int32Array(newLength); - tmp.set(this._data); - this._data = tmp; - } - toCharArray() { - let resultArray = new Uint16Array(this._size); - let resultIdx = 0; - let calculatedPreciseResultSize = false; - for (let i = 0; i < this._size; i++) { - let codePoint = this._data[i]; - if (codePoint >= 0 && codePoint < 65536) { - resultArray[resultIdx] = codePoint; - resultIdx++; - continue; + equals(a, b) { + if (a == null) { + return b == null; + } else if (b == null) { + return false; } - if (!calculatedPreciseResultSize) { - let newResultArray = new Uint16Array(this.charArraySize()); - newResultArray.set(resultArray, 0); - resultArray = newResultArray; - calculatedPreciseResultSize = true; + if (a.length !== b.length) { + return false; } - let pair = String.fromCodePoint(codePoint); - resultArray[resultIdx] = pair.charCodeAt(0); - resultArray[resultIdx + 1] = pair.charCodeAt(1); - resultIdx += 2; - } - return resultArray; - } - charArraySize() { - let result = 0; - for (let i = 0; i < this._size; i++) { - result += this._data[i] >= 65536 ? 2 : 1; + for (let i = 0; i < a.length; i++) { + if (!ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(a[i], b[i])) { + return false; + } + } + return true; } - return result; - } - }; - __decorate([ - Decorators_1.NotNull - ], IntegerList.prototype, "_data", void 0); - __decorate([ - Decorators_1.Override - ], IntegerList.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], IntegerList.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], IntegerList.prototype, "toString", null); - exports.IntegerList = IntegerList; + }; + ArrayEqualityComparator.INSTANCE = new ArrayEqualityComparator(); + __decorate([ + Decorators_1.Override + ], ArrayEqualityComparator.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], ArrayEqualityComparator.prototype, "equals", null); + exports.ArrayEqualityComparator = ArrayEqualityComparator; + } }); - // node_modules/antlr4ts/misc/Interval.js - var require_Interval = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Interval = void 0; - var Decorators_1 = require_Decorators(); - var INTERVAL_POOL_MAX_VALUE = 1e3; - var Interval = class { - constructor(a, b) { - this.a = a; - this.b = b; - } - static get INVALID() { - return Interval._INVALID; - } - static of(a, b) { - if (a !== b || a < 0 || a > INTERVAL_POOL_MAX_VALUE) { - return new Interval(a, b); - } - if (Interval.cache[a] == null) { - Interval.cache[a] = new Interval(a, a); - } - return Interval.cache[a]; - } - get length() { - if (this.b < this.a) { - return 0; + // node_modules/antlr4ts/misc/Utils.js + var require_Utils = __commonJS({ + "node_modules/antlr4ts/misc/Utils.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.toCharArray = exports.toMap = exports.equals = exports.join = exports.escapeWhitespace = void 0; + function escapeWhitespace2(s, escapeSpaces) { + return escapeSpaces ? s.replace(/ /, "\xB7") : s.replace(/\t/, "\\t").replace(/\n/, "\\n").replace(/\r/, "\\r"); + } + exports.escapeWhitespace = escapeWhitespace2; + function join3(collection, separator) { + let buf = ""; + let first = true; + for (let current of collection) { + if (first) { + first = false; + } else { + buf += separator; + } + buf += current; } - return this.b - this.a + 1; + return buf; } - equals(o) { - if (o === this) { + exports.join = join3; + function equals(x, y) { + if (x === y) { return true; - } else if (!(o instanceof Interval)) { + } + if (x === void 0 || y === void 0) { return false; } - return this.a === o.a && this.b === o.b; - } - hashCode() { - let hash = 23; - hash = hash * 31 + this.a; - hash = hash * 31 + this.b; - return hash; - } - startsBeforeDisjoint(other) { - return this.a < other.a && this.b < other.a; - } - startsBeforeNonDisjoint(other) { - return this.a <= other.a && this.b >= other.a; - } - startsAfter(other) { - return this.a > other.a; - } - startsAfterDisjoint(other) { - return this.a > other.b; - } - startsAfterNonDisjoint(other) { - return this.a > other.a && this.a <= other.b; - } - disjoint(other) { - return this.startsBeforeDisjoint(other) || this.startsAfterDisjoint(other); + return x.equals(y); } - adjacent(other) { - return this.a === other.b + 1 || this.b === other.a - 1; - } - properlyContains(other) { - return other.a >= this.a && other.b <= this.b; - } - union(other) { - return Interval.of(Math.min(this.a, other.a), Math.max(this.b, other.b)); - } - intersection(other) { - return Interval.of(Math.max(this.a, other.a), Math.min(this.b, other.b)); - } - differenceNotProperlyContained(other) { - let diff; - if (other.startsBeforeNonDisjoint(this)) { - diff = Interval.of(Math.max(this.a, other.b + 1), this.b); - } else if (other.startsAfterNonDisjoint(this)) { - diff = Interval.of(this.a, other.a - 1); + exports.equals = equals; + function toMap(keys) { + let m = new Map(); + for (let i = 0; i < keys.length; i++) { + m.set(keys[i], i); } - return diff; - } - toString() { - return this.a + ".." + this.b; + return m; } - }; - Interval._INVALID = new Interval(-1, -2); - Interval.cache = new Array(INTERVAL_POOL_MAX_VALUE + 1); - __decorate([ - Decorators_1.Override - ], Interval.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], Interval.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], Interval.prototype, "toString", null); - exports.Interval = Interval; - }); - - // node_modules/antlr4ts/Token.js - var require_Token = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Token = void 0; - var IntStream_1 = require_IntStream(); - var Token2; - (function(Token3) { - Token3.INVALID_TYPE = 0; - Token3.EPSILON = -2; - Token3.MIN_USER_TOKEN_TYPE = 1; - Token3.EOF = IntStream_1.IntStream.EOF; - Token3.DEFAULT_CHANNEL = 0; - Token3.HIDDEN_CHANNEL = 1; - Token3.MIN_USER_CHANNEL_VALUE = 2; - })(Token2 = exports.Token || (exports.Token = {})); - }); - - // node_modules/antlr4ts/CommonToken.js - var require_CommonToken = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CommonToken = void 0; - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var CommonToken = class CommonToken2 { - constructor(type, text, source = CommonToken2.EMPTY_SOURCE, channel = Token_1.Token.DEFAULT_CHANNEL, start = 0, stop = 0) { - this._line = 0; - this._charPositionInLine = -1; - this._channel = Token_1.Token.DEFAULT_CHANNEL; - this.index = -1; - this._text = text; - this._type = type; - this.source = source; - this._channel = channel; - this.start = start; - this.stop = stop; - if (source.source != null) { - this._line = source.source.line; - this._charPositionInLine = source.source.charPositionInLine; - } - } - static fromToken(oldToken) { - let result = new CommonToken2(oldToken.type, void 0, CommonToken2.EMPTY_SOURCE, oldToken.channel, oldToken.startIndex, oldToken.stopIndex); - result._line = oldToken.line; - result.index = oldToken.tokenIndex; - result._charPositionInLine = oldToken.charPositionInLine; - if (oldToken instanceof CommonToken2) { - result._text = oldToken._text; - result.source = oldToken.source; + exports.toMap = toMap; + function toCharArray3(str) { + if (typeof str === "string") { + let result = new Uint16Array(str.length); + for (let i = 0; i < str.length; i++) { + result[i] = str.charCodeAt(i); + } + return result; } else { - result._text = oldToken.text; - result.source = {source: oldToken.tokenSource, stream: oldToken.inputStream}; + return str.toCharArray(); } - return result; } - get type() { - return this._type; - } - set type(type) { - this._type = type; - } - get line() { - return this._line; - } - set line(line) { - this._line = line; - } - get text() { - if (this._text != null) { - return this._text; - } - let input = this.inputStream; - if (input == null) { - return void 0; - } - let n = input.size; - if (this.start < n && this.stop < n) { - return input.getText(Interval_1.Interval.of(this.start, this.stop)); - } else { - return ""; - } - } - set text(text) { - this._text = text; - } - get charPositionInLine() { - return this._charPositionInLine; - } - set charPositionInLine(charPositionInLine) { - this._charPositionInLine = charPositionInLine; - } - get channel() { - return this._channel; - } - set channel(channel) { - this._channel = channel; - } - get startIndex() { - return this.start; - } - set startIndex(start) { - this.start = start; - } - get stopIndex() { - return this.stop; - } - set stopIndex(stop) { - this.stop = stop; - } - get tokenIndex() { - return this.index; - } - set tokenIndex(index) { - this.index = index; - } - get tokenSource() { - return this.source.source; - } - get inputStream() { - return this.source.stream; - } - toString(recognizer) { - let channelStr = ""; - if (this._channel > 0) { - channelStr = ",channel=" + this._channel; - } - let txt = this.text; - if (txt != null) { - txt = txt.replace(/\n/g, "\\n"); - txt = txt.replace(/\r/g, "\\r"); - txt = txt.replace(/\t/g, "\\t"); - } else { - txt = ""; - } - let typeString = String(this._type); - if (recognizer) { - typeString = recognizer.vocabulary.getDisplayName(this._type); - } - return "[@" + this.tokenIndex + "," + this.start + ":" + this.stop + "='" + txt + "',<" + typeString + ">" + channelStr + "," + this._line + ":" + this.charPositionInLine + "]"; - } - }; - CommonToken.EMPTY_SOURCE = {source: void 0, stream: void 0}; - __decorate([ - Decorators_1.NotNull - ], CommonToken.prototype, "source", void 0); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "type", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "line", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "charPositionInLine", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "channel", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "startIndex", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "stopIndex", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "tokenIndex", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "tokenSource", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "inputStream", null); - __decorate([ - Decorators_1.Override - ], CommonToken.prototype, "toString", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], CommonToken, "fromToken", null); - CommonToken = __decorate([ - __param(2, Decorators_1.NotNull) - ], CommonToken); - exports.CommonToken = CommonToken; - }); - - // node_modules/antlr4ts/CommonTokenFactory.js - var require_CommonTokenFactory = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CommonTokenFactory = void 0; - var CommonToken_1 = require_CommonToken(); - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var CommonTokenFactory = class { - constructor(copyText = false) { - this.copyText = copyText; - } - create(source, type, text, channel, start, stop, line, charPositionInLine) { - let t = new CommonToken_1.CommonToken(type, text, source, channel, start, stop); - t.line = line; - t.charPositionInLine = charPositionInLine; - if (text == null && this.copyText && source.stream != null) { - t.text = source.stream.getText(Interval_1.Interval.of(start, stop)); - } - return t; - } - createSimple(type, text) { - return new CommonToken_1.CommonToken(type, text); - } - }; - __decorate([ - Decorators_1.Override - ], CommonTokenFactory.prototype, "create", null); - __decorate([ - Decorators_1.Override - ], CommonTokenFactory.prototype, "createSimple", null); - exports.CommonTokenFactory = CommonTokenFactory; - (function(CommonTokenFactory2) { - CommonTokenFactory2.DEFAULT = new CommonTokenFactory2(); - })(CommonTokenFactory = exports.CommonTokenFactory || (exports.CommonTokenFactory = {})); - }); - - // node_modules/antlr4ts/misc/IntegerStack.js - var require_IntegerStack = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.IntegerStack = void 0; - var IntegerList_1 = require_IntegerList(); - var IntegerStack = class extends IntegerList_1.IntegerList { - constructor(arg) { - super(arg); - } - push(value) { - this.add(value); - } - pop() { - return this.removeAt(this.size - 1); - } - peek() { - return this.get(this.size - 1); - } - }; - exports.IntegerStack = IntegerStack; - }); - - // node_modules/antlr4ts/dfa/AcceptStateInfo.js - var require_AcceptStateInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.AcceptStateInfo = void 0; - var AcceptStateInfo = class { - constructor(prediction, lexerActionExecutor) { - this._prediction = prediction; - this._lexerActionExecutor = lexerActionExecutor; - } - get prediction() { - return this._prediction; - } - get lexerActionExecutor() { - return this._lexerActionExecutor; - } - }; - exports.AcceptStateInfo = AcceptStateInfo; + exports.toCharArray = toCharArray3; + } }); - // node_modules/antlr4ts/misc/Array2DHashMap.js - var require_Array2DHashMap = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Array2DHashMap = void 0; - var Array2DHashSet_1 = require_Array2DHashSet(); - var MapKeyEqualityComparator = class { - constructor(keyComparator) { - this.keyComparator = keyComparator; - } - hashCode(obj) { - return this.keyComparator.hashCode(obj.key); - } - equals(a, b) { - return this.keyComparator.equals(a.key, b.key); - } - }; - var Array2DHashMap = class { - constructor(keyComparer) { - if (keyComparer instanceof Array2DHashMap) { - this.backingStore = new Array2DHashSet_1.Array2DHashSet(keyComparer.backingStore); - } else { - this.backingStore = new Array2DHashSet_1.Array2DHashSet(new MapKeyEqualityComparator(keyComparer)); - } - } - clear() { - this.backingStore.clear(); - } - containsKey(key) { - return this.backingStore.contains({key}); - } - get(key) { - let bucket = this.backingStore.get({key}); - if (!bucket) { - return void 0; - } - return bucket.value; - } - get isEmpty() { - return this.backingStore.isEmpty; - } - put(key, value) { - let element = this.backingStore.get({key, value}); + // node_modules/antlr4ts/atn/SemanticContext.js + var require_SemanticContext = __commonJS({ + "node_modules/antlr4ts/atn/SemanticContext.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.SemanticContext = void 0; + var Array2DHashSet_1 = require_Array2DHashSet(); + var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var Utils3 = require_Utils(); + function max(items) { let result; - if (!element) { - this.backingStore.add({key, value}); - } else { - result = element.value; - element.value = value; + for (let current of items) { + if (result === void 0) { + result = current; + continue; + } + let comparison = result.compareTo(current); + if (comparison < 0) { + result = current; + } } return result; } - putIfAbsent(key, value) { - let element = this.backingStore.get({key, value}); + function min(items) { let result; - if (!element) { - this.backingStore.add({key, value}); - } else { - result = element.value; - } - return result; - } - get size() { - return this.backingStore.size; - } - hashCode() { - return this.backingStore.hashCode(); - } - equals(o) { - if (!(o instanceof Array2DHashMap)) { - return false; - } - return this.backingStore.equals(o.backingStore); - } - }; - exports.Array2DHashMap = Array2DHashMap; - }); - - // node_modules/antlr4ts/atn/DecisionState.js - var require_DecisionState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DecisionState = void 0; - var ATNState_1 = require_ATNState(); - var DecisionState = class extends ATNState_1.ATNState { - constructor() { - super(...arguments); - this.decision = -1; - this.nonGreedy = false; - this.sll = false; - } - }; - exports.DecisionState = DecisionState; - }); - - // node_modules/antlr4ts/atn/PredictionContextCache.js - var require_PredictionContextCache = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PredictionContextCache = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var PredictionContext_1 = require_PredictionContext(); - var assert = require_assert(); - var PredictionContextCache = class { - constructor(enableCache = true) { - this.contexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - this.childContexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - this.joinContexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - this.enableCache = enableCache; - } - getAsCached(context) { - if (!this.enableCache) { - return context; - } - let result = this.contexts.get(context); - if (!result) { - result = context; - this.contexts.put(context, context); + for (let current of items) { + if (result === void 0) { + result = current; + continue; + } + let comparison = result.compareTo(current); + if (comparison > 0) { + result = current; + } } return result; } - getChild(context, invokingState) { - if (!this.enableCache) { - return context.getChild(invokingState); - } - let operands = new PredictionContextCache.PredictionContextAndInt(context, invokingState); - let result = this.childContexts.get(operands); - if (!result) { - result = context.getChild(invokingState); - result = this.getAsCached(result); - this.childContexts.put(operands, result); + var SemanticContext2 = class { + static get NONE() { + if (SemanticContext2._NONE === void 0) { + SemanticContext2._NONE = new SemanticContext2.Predicate(); + } + return SemanticContext2._NONE; } - return result; - } - join(x, y) { - if (!this.enableCache) { - return PredictionContext_1.PredictionContext.join(x, y, this); + evalPrecedence(parser, parserCallStack) { + return this; } - let operands = new PredictionContextCache.IdentityCommutativePredictionContextOperands(x, y); - let result = this.joinContexts.get(operands); - if (result) { + static and(a, b) { + if (!a || a === SemanticContext2.NONE) { + return b; + } + if (b === SemanticContext2.NONE) { + return a; + } + let result = new SemanticContext2.AND(a, b); + if (result.opnds.length === 1) { + return result.opnds[0]; + } return result; } - result = PredictionContext_1.PredictionContext.join(x, y, this); - result = this.getAsCached(result); - this.joinContexts.put(operands, result); - return result; - } - }; - exports.PredictionContextCache = PredictionContextCache; - PredictionContextCache.UNCACHED = new PredictionContextCache(false); - (function(PredictionContextCache2) { - class PredictionContextAndInt { - constructor(obj, value) { - this.obj = obj; - this.value = value; - } - equals(obj) { - if (!(obj instanceof PredictionContextAndInt)) { - return false; - } else if (obj === this) { - return true; + static or(a, b) { + if (!a) { + return b; } - let other = obj; - return this.value === other.value && (this.obj === other.obj || this.obj != null && this.obj.equals(other.obj)); - } - hashCode() { - let hashCode = 5; - hashCode = 7 * hashCode + (this.obj != null ? this.obj.hashCode() : 0); - hashCode = 7 * hashCode + this.value; - return hashCode; - } - } - __decorate([ - Decorators_1.Override - ], PredictionContextAndInt.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], PredictionContextAndInt.prototype, "hashCode", null); - PredictionContextCache2.PredictionContextAndInt = PredictionContextAndInt; - class IdentityCommutativePredictionContextOperands { - constructor(x, y) { - assert(x != null); - assert(y != null); - this._x = x; - this._y = y; - } - get x() { - return this._x; - } - get y() { - return this._y; - } - equals(o) { - if (!(o instanceof IdentityCommutativePredictionContextOperands)) { - return false; - } else if (this === o) { - return true; + if (a === SemanticContext2.NONE || b === SemanticContext2.NONE) { + return SemanticContext2.NONE; } - let other = o; - return this._x === other._x && this._y === other._y || this._x === other._y && this._y === other._x; - } - hashCode() { - return this._x.hashCode() ^ this._y.hashCode(); - } - } - __decorate([ - Decorators_1.Override - ], IdentityCommutativePredictionContextOperands.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], IdentityCommutativePredictionContextOperands.prototype, "hashCode", null); - PredictionContextCache2.IdentityCommutativePredictionContextOperands = IdentityCommutativePredictionContextOperands; - })(PredictionContextCache = exports.PredictionContextCache || (exports.PredictionContextCache = {})); - }); - - // node_modules/antlr4ts/atn/PredictionContext.js - var require_PredictionContext = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.SingletonPredictionContext = exports.PredictionContext = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var Array2DHashSet_1 = require_Array2DHashSet(); - var Arrays_1 = require_Arrays(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var PredictionContextCache_1 = require_PredictionContextCache(); - var assert = require_assert(); - var INITIAL_HASH = 1; - var PredictionContext = class { - constructor(cachedHashCode) { - this.cachedHashCode = cachedHashCode; - } - static calculateEmptyHashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); - hash = MurmurHash_1.MurmurHash.finish(hash, 0); - return hash; - } - static calculateSingleHashCode(parent, returnState) { - let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); - hash = MurmurHash_1.MurmurHash.update(hash, parent); - hash = MurmurHash_1.MurmurHash.update(hash, returnState); - hash = MurmurHash_1.MurmurHash.finish(hash, 2); - return hash; - } - static calculateHashCode(parents, returnStates) { - let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); - for (let parent of parents) { - hash = MurmurHash_1.MurmurHash.update(hash, parent); - } - for (let returnState of returnStates) { - hash = MurmurHash_1.MurmurHash.update(hash, returnState); - } - hash = MurmurHash_1.MurmurHash.finish(hash, 2 * parents.length); - return hash; - } - static fromRuleContext(atn, outerContext, fullContext = true) { - if (outerContext.isEmpty) { - return fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL; - } - let parent; - if (outerContext._parent) { - parent = PredictionContext.fromRuleContext(atn, outerContext._parent, fullContext); - } else { - parent = fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL; - } - let state = atn.states[outerContext.invokingState]; - let transition = state.transition(0); - return parent.getChild(transition.followState.stateNumber); - } - static addEmptyContext(context) { - return context.addEmptyContext(); - } - static removeEmptyContext(context) { - return context.removeEmptyContext(); - } - static join(context0, context1, contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED) { - if (context0 === context1) { - return context0; - } - if (context0.isEmpty) { - return PredictionContext.isEmptyLocal(context0) ? context0 : PredictionContext.addEmptyContext(context1); - } else if (context1.isEmpty) { - return PredictionContext.isEmptyLocal(context1) ? context1 : PredictionContext.addEmptyContext(context0); - } - let context0size = context0.size; - let context1size = context1.size; - if (context0size === 1 && context1size === 1 && context0.getReturnState(0) === context1.getReturnState(0)) { - let merged = contextCache.join(context0.getParent(0), context1.getParent(0)); - if (merged === context0.getParent(0)) { - return context0; - } else if (merged === context1.getParent(0)) { - return context1; - } else { - return merged.getChild(context0.getReturnState(0)); - } - } - let count = 0; - let parentsList = new Array(context0size + context1size); - let returnStatesList = new Array(parentsList.length); - let leftIndex = 0; - let rightIndex = 0; - let canReturnLeft = true; - let canReturnRight = true; - while (leftIndex < context0size && rightIndex < context1size) { - if (context0.getReturnState(leftIndex) === context1.getReturnState(rightIndex)) { - parentsList[count] = contextCache.join(context0.getParent(leftIndex), context1.getParent(rightIndex)); - returnStatesList[count] = context0.getReturnState(leftIndex); - canReturnLeft = canReturnLeft && parentsList[count] === context0.getParent(leftIndex); - canReturnRight = canReturnRight && parentsList[count] === context1.getParent(rightIndex); - leftIndex++; - rightIndex++; - } else if (context0.getReturnState(leftIndex) < context1.getReturnState(rightIndex)) { - parentsList[count] = context0.getParent(leftIndex); - returnStatesList[count] = context0.getReturnState(leftIndex); - canReturnRight = false; - leftIndex++; - } else { - assert(context1.getReturnState(rightIndex) < context0.getReturnState(leftIndex)); - parentsList[count] = context1.getParent(rightIndex); - returnStatesList[count] = context1.getReturnState(rightIndex); - canReturnLeft = false; - rightIndex++; + let result = new SemanticContext2.OR(a, b); + if (result.opnds.length === 1) { + return result.opnds[0]; } - count++; - } - while (leftIndex < context0size) { - parentsList[count] = context0.getParent(leftIndex); - returnStatesList[count] = context0.getReturnState(leftIndex); - leftIndex++; - canReturnRight = false; - count++; - } - while (rightIndex < context1size) { - parentsList[count] = context1.getParent(rightIndex); - returnStatesList[count] = context1.getReturnState(rightIndex); - rightIndex++; - canReturnLeft = false; - count++; - } - if (canReturnLeft) { - return context0; - } else if (canReturnRight) { - return context1; - } - if (count < parentsList.length) { - parentsList = parentsList.slice(0, count); - returnStatesList = returnStatesList.slice(0, count); - } - if (parentsList.length === 0) { - return PredictionContext.EMPTY_FULL; - } else if (parentsList.length === 1) { - return new SingletonPredictionContext(parentsList[0], returnStatesList[0]); - } else { - return new ArrayPredictionContext(parentsList, returnStatesList); - } - } - static isEmptyLocal(context) { - return context === PredictionContext.EMPTY_LOCAL; - } - static getCachedContext(context, contextCache, visited) { - if (context.isEmpty) { - return context; + return result; } - let existing = visited.get(context); - if (existing) { - return existing; - } - existing = contextCache.get(context); - if (existing) { - visited.put(context, existing); - return existing; - } - let changed = false; - let parents = new Array(context.size); - for (let i = 0; i < parents.length; i++) { - let parent = PredictionContext.getCachedContext(context.getParent(i), contextCache, visited); - if (changed || parent !== context.getParent(i)) { - if (!changed) { - parents = new Array(context.size); - for (let j = 0; j < context.size; j++) { - parents[j] = context.getParent(j); - } - changed = true; + }; + exports.SemanticContext = SemanticContext2; + (function(SemanticContext3) { + const AND_HASHCODE = 40363613; + const OR_HASHCODE = 486279973; + function filterPrecedencePredicates2(collection) { + let result = []; + for (let i = 0; i < collection.length; i++) { + let context = collection[i]; + if (context instanceof SemanticContext3.PrecedencePredicate) { + result.push(context); + collection.splice(i, 1); + i--; } - parents[i] = parent; } + return result; } - if (!changed) { - existing = contextCache.putIfAbsent(context, context); - visited.put(context, existing != null ? existing : context); - return context; - } - let updated; - if (parents.length === 1) { - updated = new SingletonPredictionContext(parents[0], context.getReturnState(0)); - } else { - let returnStates = new Array(context.size); - for (let i = 0; i < context.size; i++) { - returnStates[i] = context.getReturnState(i); - } - updated = new ArrayPredictionContext(parents, returnStates, context.hashCode()); - } - existing = contextCache.putIfAbsent(updated, updated); - visited.put(updated, existing || updated); - visited.put(context, existing || updated); - return updated; - } - appendSingleContext(returnContext, contextCache) { - return this.appendContext(PredictionContext.EMPTY_FULL.getChild(returnContext), contextCache); - } - getChild(returnState) { - return new SingletonPredictionContext(this, returnState); - } - hashCode() { - return this.cachedHashCode; - } - toStrings(recognizer, currentState, stop = PredictionContext.EMPTY_FULL) { - let result = []; - outer: - for (let perm = 0; ; perm++) { - let offset = 0; - let last = true; - let p = this; - let stateNumber = currentState; - let localBuffer = ""; - localBuffer += "["; - while (!p.isEmpty && p !== stop) { - let index = 0; - if (p.size > 0) { - let bits = 1; - while (1 << bits >>> 0 < p.size) { - bits++; - } - let mask = (1 << bits >>> 0) - 1; - index = perm >> offset & mask; - last = last && index >= p.size - 1; - if (index >= p.size) { - continue outer; - } - offset += bits; - } - if (recognizer) { - if (localBuffer.length > 1) { - localBuffer += " "; - } - let atn = recognizer.atn; - let s = atn.states[stateNumber]; - let ruleName = recognizer.ruleNames[s.ruleIndex]; - localBuffer += ruleName; - } else if (p.getReturnState(index) !== PredictionContext.EMPTY_FULL_STATE_KEY) { - if (!p.isEmpty) { - if (localBuffer.length > 1) { - localBuffer += " "; - } - localBuffer += p.getReturnState(index); - } - } - stateNumber = p.getReturnState(index); - p = p.getParent(index); + class Predicate2 extends SemanticContext3 { + constructor(ruleIndex = -1, predIndex = -1, isCtxDependent = false) { + super(); + this.ruleIndex = ruleIndex; + this.predIndex = predIndex; + this.isCtxDependent = isCtxDependent; + } + eval(parser, parserCallStack) { + let localctx = this.isCtxDependent ? parserCallStack : void 0; + return parser.sempred(localctx, this.ruleIndex, this.predIndex); + } + hashCode() { + let hashCode = MurmurHash_1.MurmurHash.initialize(); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.ruleIndex); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.predIndex); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.isCtxDependent ? 1 : 0); + hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 3); + return hashCode; + } + equals(obj) { + if (!(obj instanceof Predicate2)) { + return false; } - localBuffer += "]"; - result.push(localBuffer); - if (last) { - break; + if (this === obj) { + return true; } - } - return result; - } - }; - __decorate([ - Decorators_1.Override - ], PredictionContext.prototype, "hashCode", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], PredictionContext, "join", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], PredictionContext, "getCachedContext", null); - exports.PredictionContext = PredictionContext; - var EmptyPredictionContext = class extends PredictionContext { - constructor(fullContext) { - super(PredictionContext.calculateEmptyHashCode()); - this.fullContext = fullContext; - } - get isFullContext() { - return this.fullContext; - } - addEmptyContext() { - return this; - } - removeEmptyContext() { - throw new Error("Cannot remove the empty context from itself."); - } - getParent(index) { - throw new Error("index out of bounds"); - } - getReturnState(index) { - throw new Error("index out of bounds"); - } - findReturnState(returnState) { - return -1; - } - get size() { - return 0; - } - appendSingleContext(returnContext, contextCache) { - return contextCache.getChild(this, returnContext); - } - appendContext(suffix, contextCache) { - return suffix; - } - get isEmpty() { - return true; - } - get hasEmpty() { - return true; - } - equals(o) { - return this === o; - } - toStrings(recognizer, currentState, stop) { - return ["[]"]; - } - }; - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "addEmptyContext", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "removeEmptyContext", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "getParent", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "getReturnState", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "findReturnState", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "appendSingleContext", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "appendContext", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "isEmpty", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "hasEmpty", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], EmptyPredictionContext.prototype, "toStrings", null); - var ArrayPredictionContext = class ArrayPredictionContext2 extends PredictionContext { - constructor(parents, returnStates, hashCode) { - super(hashCode || PredictionContext.calculateHashCode(parents, returnStates)); - assert(parents.length === returnStates.length); - assert(returnStates.length > 1 || returnStates[0] !== PredictionContext.EMPTY_FULL_STATE_KEY, "Should be using PredictionContext.EMPTY instead."); - this.parents = parents; - this.returnStates = returnStates; - } - getParent(index) { - return this.parents[index]; - } - getReturnState(index) { - return this.returnStates[index]; - } - findReturnState(returnState) { - return Arrays_1.Arrays.binarySearch(this.returnStates, returnState); - } - get size() { - return this.returnStates.length; - } - get isEmpty() { - return false; - } - get hasEmpty() { - return this.returnStates[this.returnStates.length - 1] === PredictionContext.EMPTY_FULL_STATE_KEY; - } - addEmptyContext() { - if (this.hasEmpty) { - return this; - } - let parents2 = this.parents.slice(0); - let returnStates2 = this.returnStates.slice(0); - parents2.push(PredictionContext.EMPTY_FULL); - returnStates2.push(PredictionContext.EMPTY_FULL_STATE_KEY); - return new ArrayPredictionContext2(parents2, returnStates2); - } - removeEmptyContext() { - if (!this.hasEmpty) { - return this; - } - if (this.returnStates.length === 2) { - return new SingletonPredictionContext(this.parents[0], this.returnStates[0]); - } else { - let parents2 = this.parents.slice(0, this.parents.length - 1); - let returnStates2 = this.returnStates.slice(0, this.returnStates.length - 1); - return new ArrayPredictionContext2(parents2, returnStates2); - } - } - appendContext(suffix, contextCache) { - return ArrayPredictionContext2.appendContextImpl(this, suffix, new PredictionContext.IdentityHashMap()); - } - static appendContextImpl(context, suffix, visited) { - if (suffix.isEmpty) { - if (PredictionContext.isEmptyLocal(suffix)) { - if (context.hasEmpty) { - return PredictionContext.EMPTY_LOCAL; + return this.ruleIndex === obj.ruleIndex && this.predIndex === obj.predIndex && this.isCtxDependent === obj.isCtxDependent; + } + toString() { + return "{" + this.ruleIndex + ":" + this.predIndex + "}?"; + } + } + __decorate([ + Decorators_1.Override + ], Predicate2.prototype, "eval", null); + __decorate([ + Decorators_1.Override + ], Predicate2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], Predicate2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], Predicate2.prototype, "toString", null); + SemanticContext3.Predicate = Predicate2; + class PrecedencePredicate2 extends SemanticContext3 { + constructor(precedence) { + super(); + this.precedence = precedence; + } + eval(parser, parserCallStack) { + return parser.precpred(parserCallStack, this.precedence); + } + evalPrecedence(parser, parserCallStack) { + if (parser.precpred(parserCallStack, this.precedence)) { + return SemanticContext3.NONE; + } else { + return void 0; } - throw new Error("what to do here?"); } - return context; - } - if (suffix.size !== 1) { - throw new Error("Appending a tree suffix is not yet supported."); - } - let result = visited.get(context); - if (!result) { - if (context.isEmpty) { - result = suffix; - } else { - let parentCount = context.size; - if (context.hasEmpty) { - parentCount--; + compareTo(o) { + return this.precedence - o.precedence; + } + hashCode() { + let hashCode = 1; + hashCode = 31 * hashCode + this.precedence; + return hashCode; + } + equals(obj) { + if (!(obj instanceof PrecedencePredicate2)) { + return false; } - let updatedParents = new Array(parentCount); - let updatedReturnStates = new Array(parentCount); - for (let i = 0; i < parentCount; i++) { - updatedReturnStates[i] = context.getReturnState(i); + if (this === obj) { + return true; } - for (let i = 0; i < parentCount; i++) { - updatedParents[i] = ArrayPredictionContext2.appendContextImpl(context.getParent(i), suffix, visited); + return this.precedence === obj.precedence; + } + toString() { + return "{" + this.precedence + ">=prec}?"; + } + } + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "eval", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "evalPrecedence", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "compareTo", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicate2.prototype, "toString", null); + SemanticContext3.PrecedencePredicate = PrecedencePredicate2; + class Operator extends SemanticContext3 { + } + SemanticContext3.Operator = Operator; + let AND2 = class AND3 extends Operator { + constructor(a, b) { + super(); + let operands = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + if (a instanceof AND3) { + operands.addAll(a.opnds); + } else { + operands.add(a); } - if (updatedParents.length === 1) { - result = new SingletonPredictionContext(updatedParents[0], updatedReturnStates[0]); + if (b instanceof AND3) { + operands.addAll(b.opnds); } else { - assert(updatedParents.length > 1); - result = new ArrayPredictionContext2(updatedParents, updatedReturnStates); + operands.add(b); } - if (context.hasEmpty) { - result = PredictionContext.join(result, suffix); + this.opnds = operands.toArray(); + let precedencePredicates = filterPrecedencePredicates2(this.opnds); + let reduced = min(precedencePredicates); + if (reduced) { + this.opnds.push(reduced); } } - visited.put(context, result); - } - return result; - } - equals(o) { - if (this === o) { - return true; - } else if (!(o instanceof ArrayPredictionContext2)) { - return false; - } - if (this.hashCode() !== o.hashCode()) { - return false; - } - let other = o; - return this.equalsImpl(other, new Array2DHashSet_1.Array2DHashSet()); - } - equalsImpl(other, visited) { - let selfWorkList = []; - let otherWorkList = []; - selfWorkList.push(this); - otherWorkList.push(other); - while (true) { - let currentSelf = selfWorkList.pop(); - let currentOther = otherWorkList.pop(); - if (!currentSelf || !currentOther) { - break; - } - let operands = new PredictionContextCache_1.PredictionContextCache.IdentityCommutativePredictionContextOperands(currentSelf, currentOther); - if (!visited.add(operands)) { - continue; + get operands() { + return this.opnds; } - let selfSize = operands.x.size; - if (selfSize === 0) { - if (!operands.x.equals(operands.y)) { + equals(obj) { + if (this === obj) { + return true; + } + if (!(obj instanceof AND3)) { return false; } - continue; + return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds); } - let otherSize = operands.y.size; - if (selfSize !== otherSize) { - return false; + hashCode() { + return MurmurHash_1.MurmurHash.hashCode(this.opnds, AND_HASHCODE); } - for (let i = 0; i < selfSize; i++) { - if (operands.x.getReturnState(i) !== operands.y.getReturnState(i)) { - return false; + eval(parser, parserCallStack) { + for (let opnd of this.opnds) { + if (!opnd.eval(parser, parserCallStack)) { + return false; + } } - let selfParent = operands.x.getParent(i); - let otherParent = operands.y.getParent(i); - if (selfParent.hashCode() !== otherParent.hashCode()) { - return false; + return true; + } + evalPrecedence(parser, parserCallStack) { + let differs = false; + let operands = []; + for (let context of this.opnds) { + let evaluated = context.evalPrecedence(parser, parserCallStack); + differs = differs || evaluated !== context; + if (evaluated == null) { + return void 0; + } else if (evaluated !== SemanticContext3.NONE) { + operands.push(evaluated); + } + } + if (!differs) { + return this; } - if (selfParent !== otherParent) { - selfWorkList.push(selfParent); - otherWorkList.push(otherParent); + if (operands.length === 0) { + return SemanticContext3.NONE; } + let result = operands[0]; + for (let i = 1; i < operands.length; i++) { + result = SemanticContext3.and(result, operands[i]); + } + return result; } + toString() { + return Utils3.join(this.opnds, "&&"); + } + }; + __decorate([ + Decorators_1.Override + ], AND2.prototype, "operands", null); + __decorate([ + Decorators_1.Override + ], AND2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], AND2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], AND2.prototype, "eval", null); + __decorate([ + Decorators_1.Override + ], AND2.prototype, "evalPrecedence", null); + __decorate([ + Decorators_1.Override + ], AND2.prototype, "toString", null); + AND2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], AND2); + SemanticContext3.AND = AND2; + let OR2 = class OR3 extends Operator { + constructor(a, b) { + super(); + let operands = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + if (a instanceof OR3) { + operands.addAll(a.opnds); + } else { + operands.add(a); + } + if (b instanceof OR3) { + operands.addAll(b.opnds); + } else { + operands.add(b); + } + this.opnds = operands.toArray(); + let precedencePredicates = filterPrecedencePredicates2(this.opnds); + let reduced = max(precedencePredicates); + if (reduced) { + this.opnds.push(reduced); + } + } + get operands() { + return this.opnds; + } + equals(obj) { + if (this === obj) { + return true; + } + if (!(obj instanceof OR3)) { + return false; + } + return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds); + } + hashCode() { + return MurmurHash_1.MurmurHash.hashCode(this.opnds, OR_HASHCODE); + } + eval(parser, parserCallStack) { + for (let opnd of this.opnds) { + if (opnd.eval(parser, parserCallStack)) { + return true; + } + } + return false; + } + evalPrecedence(parser, parserCallStack) { + let differs = false; + let operands = []; + for (let context of this.opnds) { + let evaluated = context.evalPrecedence(parser, parserCallStack); + differs = differs || evaluated !== context; + if (evaluated === SemanticContext3.NONE) { + return SemanticContext3.NONE; + } else if (evaluated) { + operands.push(evaluated); + } + } + if (!differs) { + return this; + } + if (operands.length === 0) { + return void 0; + } + let result = operands[0]; + for (let i = 1; i < operands.length; i++) { + result = SemanticContext3.or(result, operands[i]); + } + return result; + } + toString() { + return Utils3.join(this.opnds, "||"); + } + }; + __decorate([ + Decorators_1.Override + ], OR2.prototype, "operands", null); + __decorate([ + Decorators_1.Override + ], OR2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], OR2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], OR2.prototype, "eval", null); + __decorate([ + Decorators_1.Override + ], OR2.prototype, "evalPrecedence", null); + __decorate([ + Decorators_1.Override + ], OR2.prototype, "toString", null); + OR2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], OR2); + SemanticContext3.OR = OR2; + })(SemanticContext2 = exports.SemanticContext || (exports.SemanticContext = {})); + } + }); + + // node_modules/antlr4ts/atn/PredicateTransition.js + var require_PredicateTransition = __commonJS({ + "node_modules/antlr4ts/atn/PredicateTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PredicateTransition = void 0; + var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); + var Decorators_1 = require_Decorators(); + var SemanticContext_1 = require_SemanticContext(); + var PredicateTransition2 = class PredicateTransition extends AbstractPredicateTransition_1.AbstractPredicateTransition { + constructor(target, ruleIndex, predIndex, isCtxDependent) { + super(target); + this.ruleIndex = ruleIndex; + this.predIndex = predIndex; + this.isCtxDependent = isCtxDependent; } - return true; - } - }; - __decorate([ - Decorators_1.NotNull - ], ArrayPredictionContext.prototype, "parents", void 0); - __decorate([ - Decorators_1.NotNull - ], ArrayPredictionContext.prototype, "returnStates", void 0); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "getParent", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "getReturnState", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "findReturnState", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "isEmpty", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "hasEmpty", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "addEmptyContext", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "removeEmptyContext", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "appendContext", null); - __decorate([ - Decorators_1.Override - ], ArrayPredictionContext.prototype, "equals", null); - ArrayPredictionContext = __decorate([ - __param(0, Decorators_1.NotNull) - ], ArrayPredictionContext); - var SingletonPredictionContext = class SingletonPredictionContext2 extends PredictionContext { - constructor(parent, returnState) { - super(PredictionContext.calculateSingleHashCode(parent, returnState)); - this.parent = parent; - this.returnState = returnState; - } - getParent(index) { - return this.parent; - } - getReturnState(index) { - return this.returnState; - } - findReturnState(returnState) { - return this.returnState === returnState ? 0 : -1; - } - get size() { - return 1; - } - get isEmpty() { - return false; - } - get hasEmpty() { - return false; - } - appendContext(suffix, contextCache) { - return contextCache.getChild(this.parent.appendContext(suffix, contextCache), this.returnState); - } - addEmptyContext() { - let parents = [this.parent, PredictionContext.EMPTY_FULL]; - let returnStates = [this.returnState, PredictionContext.EMPTY_FULL_STATE_KEY]; - return new ArrayPredictionContext(parents, returnStates); - } - removeEmptyContext() { - return this; - } - equals(o) { - if (o === this) { - return true; - } else if (!(o instanceof SingletonPredictionContext2)) { - return false; - } - let other = o; - if (this.hashCode() !== other.hashCode()) { - return false; + get serializationType() { + return 4; } - return this.returnState === other.returnState && this.parent.equals(other.parent); - } - }; - __decorate([ - Decorators_1.NotNull - ], SingletonPredictionContext.prototype, "parent", void 0); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "getParent", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "getReturnState", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "findReturnState", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "isEmpty", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "hasEmpty", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "appendContext", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "addEmptyContext", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "removeEmptyContext", null); - __decorate([ - Decorators_1.Override - ], SingletonPredictionContext.prototype, "equals", null); - SingletonPredictionContext = __decorate([ - __param(0, Decorators_1.NotNull) - ], SingletonPredictionContext); - exports.SingletonPredictionContext = SingletonPredictionContext; - (function(PredictionContext2) { - PredictionContext2.EMPTY_LOCAL = new EmptyPredictionContext(false); - PredictionContext2.EMPTY_FULL = new EmptyPredictionContext(true); - PredictionContext2.EMPTY_LOCAL_STATE_KEY = -(1 << 31 >>> 0); - PredictionContext2.EMPTY_FULL_STATE_KEY = (1 << 31 >>> 0) - 1; - class IdentityHashMap extends Array2DHashMap_1.Array2DHashMap { - constructor() { - super(IdentityEqualityComparator.INSTANCE); + get isEpsilon() { + return true; } - } - PredictionContext2.IdentityHashMap = IdentityHashMap; - class IdentityEqualityComparator { - IdentityEqualityComparator() { + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - hashCode(obj) { - return obj.hashCode(); + get predicate() { + return new SemanticContext_1.SemanticContext.Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent); } - equals(a, b) { - return a === b; + toString() { + return "pred_" + this.ruleIndex + ":" + this.predIndex; } - } - IdentityEqualityComparator.INSTANCE = new IdentityEqualityComparator(); + }; + __decorate([ + Decorators_1.Override + ], PredicateTransition2.prototype, "serializationType", null); __decorate([ Decorators_1.Override - ], IdentityEqualityComparator.prototype, "hashCode", null); + ], PredicateTransition2.prototype, "isEpsilon", null); __decorate([ Decorators_1.Override - ], IdentityEqualityComparator.prototype, "equals", null); - PredictionContext2.IdentityEqualityComparator = IdentityEqualityComparator; - })(PredictionContext = exports.PredictionContext || (exports.PredictionContext = {})); + ], PredicateTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], PredicateTransition2.prototype, "toString", null); + PredicateTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], PredicateTransition2); + exports.PredicateTransition = PredicateTransition2; + } }); - // node_modules/antlr4ts/atn/ATNConfig.js - var require_ATNConfig = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNConfig = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var DecisionState_1 = require_DecisionState(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var PredictionContext_1 = require_PredictionContext(); - var SemanticContext_1 = require_SemanticContext(); - var assert = require_assert(); - var SUPPRESS_PRECEDENCE_FILTER = 2147483648; - var ATNConfig = class ATNConfig2 { - constructor(state, altOrConfig, context) { - if (typeof altOrConfig === "number") { - assert((altOrConfig & 16777215) === altOrConfig); - this._state = state; - this.altAndOuterContextDepth = altOrConfig; - this._context = context; - } else { - this._state = state; - this.altAndOuterContextDepth = altOrConfig.altAndOuterContextDepth; - this._context = context; - } - } - static create(state, alt, context, semanticContext = SemanticContext_1.SemanticContext.NONE, lexerActionExecutor) { - if (semanticContext !== SemanticContext_1.SemanticContext.NONE) { - if (lexerActionExecutor != null) { - return new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, alt, context, false); + // node_modules/antlr4ts/FailedPredicateException.js + var require_FailedPredicateException = __commonJS({ + "node_modules/antlr4ts/FailedPredicateException.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.FailedPredicateException = void 0; + var RecognitionException_1 = require_RecognitionException(); + var Decorators_1 = require_Decorators(); + var PredicateTransition_1 = require_PredicateTransition(); + var FailedPredicateException3 = class FailedPredicateException4 extends RecognitionException_1.RecognitionException { + constructor(recognizer, predicate, message) { + super(recognizer, recognizer.inputStream, recognizer.context, FailedPredicateException4.formatMessage(predicate, message)); + let s = recognizer.interpreter.atn.states[recognizer.state]; + let trans = s.transition(0); + if (trans instanceof PredicateTransition_1.PredicateTransition) { + this._ruleIndex = trans.ruleIndex; + this._predicateIndex = trans.predIndex; } else { - return new SemanticContextATNConfig(semanticContext, state, alt, context); + this._ruleIndex = 0; + this._predicateIndex = 0; } - } else if (lexerActionExecutor != null) { - return new ActionATNConfig(lexerActionExecutor, state, alt, context, false); - } else { - return new ATNConfig2(state, alt, context); + this._predicate = predicate; + super.setOffendingToken(recognizer, recognizer.currentToken); } - } - get state() { - return this._state; - } - get alt() { - return this.altAndOuterContextDepth & 16777215; - } - get context() { - return this._context; - } - set context(context) { - this._context = context; - } - get reachesIntoOuterContext() { - return this.outerContextDepth !== 0; - } - get outerContextDepth() { - return this.altAndOuterContextDepth >>> 24 & 127; - } - set outerContextDepth(outerContextDepth) { - assert(outerContextDepth >= 0); - outerContextDepth = Math.min(outerContextDepth, 127); - this.altAndOuterContextDepth = outerContextDepth << 24 | (this.altAndOuterContextDepth & ~2130706432) >>> 0; - } - get lexerActionExecutor() { - return void 0; - } - get semanticContext() { - return SemanticContext_1.SemanticContext.NONE; - } - get hasPassedThroughNonGreedyDecision() { - return false; - } - clone() { - return this.transform(this.state, false); - } - transform(state, checkNonGreedy, arg2) { - if (arg2 == null) { - return this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, this.lexerActionExecutor); - } else if (arg2 instanceof PredictionContext_1.PredictionContext) { - return this.transformImpl(state, arg2, this.semanticContext, checkNonGreedy, this.lexerActionExecutor); - } else if (arg2 instanceof SemanticContext_1.SemanticContext) { - return this.transformImpl(state, this._context, arg2, checkNonGreedy, this.lexerActionExecutor); - } else { - return this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, arg2); + get ruleIndex() { + return this._ruleIndex; } - } - transformImpl(state, context, semanticContext, checkNonGreedy, lexerActionExecutor) { - let passedThroughNonGreedy = checkNonGreedy && ATNConfig2.checkNonGreedyDecision(this, state); - if (semanticContext !== SemanticContext_1.SemanticContext.NONE) { - if (lexerActionExecutor != null || passedThroughNonGreedy) { - return new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, this, context, passedThroughNonGreedy); - } else { - return new SemanticContextATNConfig(semanticContext, state, this, context); + get predicateIndex() { + return this._predicateIndex; + } + get predicate() { + return this._predicate; + } + static formatMessage(predicate, message) { + if (message) { + return message; } - } else if (lexerActionExecutor != null || passedThroughNonGreedy) { - return new ActionATNConfig(lexerActionExecutor, state, this, context, passedThroughNonGreedy); - } else { - return new ATNConfig2(state, this, context); + return `failed predicate: {${predicate}}?`; } - } - static checkNonGreedyDecision(source, target) { - return source.hasPassedThroughNonGreedyDecision || target instanceof DecisionState_1.DecisionState && target.nonGreedy; - } - appendContext(context, contextCache) { - if (typeof context === "number") { - let appendedContext = this.context.appendSingleContext(context, contextCache); - let result = this.transform(this.state, false, appendedContext); - return result; - } else { - let appendedContext = this.context.appendContext(context, contextCache); - let result = this.transform(this.state, false, appendedContext); - return result; + }; + __decorate([ + Decorators_1.NotNull + ], FailedPredicateException3, "formatMessage", null); + FailedPredicateException3 = __decorate([ + __param(0, Decorators_1.NotNull) + ], FailedPredicateException3); + exports.FailedPredicateException = FailedPredicateException3; + } + }); + + // node_modules/antlr4ts/InputMismatchException.js + var require_InputMismatchException = __commonJS({ + "node_modules/antlr4ts/InputMismatchException.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.InputMismatchException = void 0; + var RecognitionException_1 = require_RecognitionException(); + var Decorators_1 = require_Decorators(); + var InputMismatchException2 = class InputMismatchException extends RecognitionException_1.RecognitionException { + constructor(recognizer, state, context) { + if (context === void 0) { + context = recognizer.context; + } + super(recognizer, recognizer.inputStream, context); + if (state !== void 0) { + this.setOffendingState(state); + } + this.setOffendingToken(recognizer, recognizer.currentToken); } - } - contains(subconfig) { - if (this.state.stateNumber !== subconfig.state.stateNumber || this.alt !== subconfig.alt || !this.semanticContext.equals(subconfig.semanticContext)) { - return false; + }; + InputMismatchException2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], InputMismatchException2); + exports.InputMismatchException = InputMismatchException2; + } + }); + + // node_modules/antlr4ts/misc/Arrays.js + var require_Arrays = __commonJS({ + "node_modules/antlr4ts/misc/Arrays.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Arrays = void 0; + var Arrays; + (function(Arrays2) { + function binarySearch(array, key, fromIndex, toIndex) { + return binarySearch0(array, fromIndex !== void 0 ? fromIndex : 0, toIndex !== void 0 ? toIndex : array.length, key); + } + Arrays2.binarySearch = binarySearch; + function binarySearch0(array, fromIndex, toIndex, key) { + let low = fromIndex; + let high = toIndex - 1; + while (low <= high) { + let mid = low + high >>> 1; + let midVal = array[mid]; + if (midVal < key) { + low = mid + 1; + } else if (midVal > key) { + high = mid - 1; + } else { + return mid; + } + } + return -(low + 1); } - let leftWorkList = []; - let rightWorkList = []; - leftWorkList.push(this.context); - rightWorkList.push(subconfig.context); - while (true) { - let left = leftWorkList.pop(); - let right = rightWorkList.pop(); - if (!left || !right) { - break; + function toString(array) { + let result = "["; + let first = true; + for (let element of array) { + if (first) { + first = false; + } else { + result += ", "; + } + if (element === null) { + result += "null"; + } else if (element === void 0) { + result += "undefined"; + } else { + result += element; + } } - if (left === right) { - return true; + result += "]"; + return result; + } + Arrays2.toString = toString; + })(Arrays = exports.Arrays || (exports.Arrays = {})); + } + }); + + // node_modules/antlr4ts/misc/IntegerList.js + var require_IntegerList = __commonJS({ + "node_modules/antlr4ts/misc/IntegerList.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.IntegerList = void 0; + var Arrays_1 = require_Arrays(); + var Decorators_1 = require_Decorators(); + var EMPTY_DATA = new Int32Array(0); + var INITIAL_SIZE = 4; + var MAX_ARRAY_SIZE = (1 << 31 >>> 0) - 1 - 8; + var IntegerList = class { + constructor(arg) { + if (!arg) { + this._data = EMPTY_DATA; + this._size = 0; + } else if (arg instanceof IntegerList) { + this._data = arg._data.slice(0); + this._size = arg._size; + } else if (typeof arg === "number") { + if (arg === 0) { + this._data = EMPTY_DATA; + this._size = 0; + } else { + this._data = new Int32Array(arg); + this._size = 0; + } + } else { + this._data = EMPTY_DATA; + this._size = 0; + for (let value of arg) { + this.add(value); + } } - if (left.size < right.size) { - return false; + } + add(value) { + if (this._data.length === this._size) { + this.ensureCapacity(this._size + 1); } - if (right.isEmpty) { - return left.hasEmpty; + this._data[this._size] = value; + this._size++; + } + addAll(list) { + if (Array.isArray(list)) { + this.ensureCapacity(this._size + list.length); + this._data.subarray(this._size, this._size + list.length).set(list); + this._size += list.length; + } else if (list instanceof IntegerList) { + this.ensureCapacity(this._size + list._size); + this._data.subarray(this._size, this._size + list.size).set(list._data); + this._size += list._size; } else { - for (let i = 0; i < right.size; i++) { - let index = left.findReturnState(right.getReturnState(i)); - if (index < 0) { - return false; - } - leftWorkList.push(left.getParent(index)); - rightWorkList.push(right.getParent(i)); + this.ensureCapacity(this._size + list.size); + let current = 0; + for (let xi of list) { + this._data[this._size + current] = xi; + current++; } + this._size += list.size; } } - return false; - } - get isPrecedenceFilterSuppressed() { - return (this.altAndOuterContextDepth & SUPPRESS_PRECEDENCE_FILTER) !== 0; - } - set isPrecedenceFilterSuppressed(value) { - if (value) { - this.altAndOuterContextDepth |= SUPPRESS_PRECEDENCE_FILTER; - } else { - this.altAndOuterContextDepth &= ~SUPPRESS_PRECEDENCE_FILTER; + get(index) { + if (index < 0 || index >= this._size) { + throw RangeError(); + } + return this._data[index]; } - } - equals(o) { - if (this === o) { - return true; - } else if (!(o instanceof ATNConfig2)) { + contains(value) { + for (let i = 0; i < this._size; i++) { + if (this._data[i] === value) { + return true; + } + } return false; } - return this.state.stateNumber === o.state.stateNumber && this.alt === o.alt && this.reachesIntoOuterContext === o.reachesIntoOuterContext && this.context.equals(o.context) && this.semanticContext.equals(o.semanticContext) && this.isPrecedenceFilterSuppressed === o.isPrecedenceFilterSuppressed && this.hasPassedThroughNonGreedyDecision === o.hasPassedThroughNonGreedyDecision && ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(this.lexerActionExecutor, o.lexerActionExecutor); - } - hashCode() { - let hashCode = MurmurHash_1.MurmurHash.initialize(7); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.state.stateNumber); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.alt); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.reachesIntoOuterContext ? 1 : 0); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.context); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.semanticContext); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.hasPassedThroughNonGreedyDecision ? 1 : 0); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.lexerActionExecutor); - hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 7); - return hashCode; - } - toDotString() { - let builder = ""; - builder += "digraph G {\n"; - builder += "rankdir=LR;\n"; - let visited = new Array2DHashMap_1.Array2DHashMap(PredictionContext_1.PredictionContext.IdentityEqualityComparator.INSTANCE); - let workList = []; - function getOrAddContext(context) { - let newNumber = visited.size; - let result = visited.putIfAbsent(context, newNumber); - if (result != null) { - return result; + set(index, value) { + if (index < 0 || index >= this._size) { + throw RangeError(); } - workList.push(context); - return newNumber; + let previous = this._data[index]; + this._data[index] = value; + return previous; } - workList.push(this.context); - visited.put(this.context, 0); - while (true) { - let current = workList.pop(); - if (!current) { - break; + removeAt(index) { + let value = this.get(index); + this._data.copyWithin(index, index + 1, this._size); + this._data[this._size - 1] = 0; + this._size--; + return value; + } + removeRange(fromIndex, toIndex) { + if (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) { + throw RangeError(); } - for (let i = 0; i < current.size; i++) { - builder += " s" + getOrAddContext(current); - builder += "->"; - builder += "s" + getOrAddContext(current.getParent(i)); - builder += '[label="' + current.getReturnState(i) + '"];\n'; + if (fromIndex > toIndex) { + throw RangeError(); } + this._data.copyWithin(toIndex, fromIndex, this._size); + this._data.fill(0, this._size - (toIndex - fromIndex), this._size); + this._size -= toIndex - fromIndex; } - builder += "}\n"; - return builder.toString(); - } - toString(recog, showAlt, showContext) { - if (showContext == null) { - showContext = showAlt != null; + get isEmpty() { + return this._size === 0; } - if (showAlt == null) { - showAlt = true; + get size() { + return this._size; } - let buf = ""; - let contexts; - if (showContext) { - contexts = this.context.toStrings(recog, this.state.stateNumber); - } else { - contexts = ["?"]; + trimToSize() { + if (this._data.length === this._size) { + return; + } + this._data = this._data.slice(0, this._size); } - let first = true; - for (let contextDesc of contexts) { - if (first) { - first = false; - } else { - buf += ", "; + clear() { + this._data.fill(0, 0, this._size); + this._size = 0; + } + toArray() { + if (this._size === 0) { + return []; } - buf += "("; - buf += this.state; - if (showAlt) { - buf += ","; - buf += this.alt; + return Array.from(this._data.subarray(0, this._size)); + } + sort() { + this._data.subarray(0, this._size).sort(); + } + equals(o) { + if (o === this) { + return true; } - if (this.context) { - buf += ","; - buf += contextDesc; + if (!(o instanceof IntegerList)) { + return false; } - if (this.semanticContext !== SemanticContext_1.SemanticContext.NONE) { - buf += ","; - buf += this.semanticContext; + if (this._size !== o._size) { + return false; } - if (this.reachesIntoOuterContext) { - buf += ",up=" + this.outerContextDepth; + for (let i = 0; i < this._size; i++) { + if (this._data[i] !== o._data[i]) { + return false; + } } - buf += ")"; + return true; } - return buf.toString(); - } - }; - __decorate([ - Decorators_1.NotNull - ], ATNConfig.prototype, "_state", void 0); - __decorate([ - Decorators_1.NotNull - ], ATNConfig.prototype, "_context", void 0); - __decorate([ - Decorators_1.NotNull - ], ATNConfig.prototype, "state", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ATNConfig.prototype, "context", null); - __decorate([ - Decorators_1.NotNull - ], ATNConfig.prototype, "semanticContext", null); - __decorate([ - Decorators_1.Override - ], ATNConfig.prototype, "clone", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ATNConfig.prototype, "transformImpl", null); - __decorate([ - Decorators_1.Override - ], ATNConfig.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], ATNConfig.prototype, "hashCode", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], ATNConfig, "create", null); - ATNConfig = __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ATNConfig); - exports.ATNConfig = ATNConfig; - var SemanticContextATNConfig = class SemanticContextATNConfig extends ATNConfig { - constructor(semanticContext, state, altOrConfig, context) { - if (typeof altOrConfig === "number") { - super(state, altOrConfig, context); - } else { - super(state, altOrConfig, context); - } - this._semanticContext = semanticContext; - } - get semanticContext() { - return this._semanticContext; - } - }; - __decorate([ - Decorators_1.NotNull - ], SemanticContextATNConfig.prototype, "_semanticContext", void 0); - __decorate([ - Decorators_1.Override - ], SemanticContextATNConfig.prototype, "semanticContext", null); - SemanticContextATNConfig = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], SemanticContextATNConfig); - var ActionATNConfig = class ActionATNConfig extends ATNConfig { - constructor(lexerActionExecutor, state, altOrConfig, context, passedThroughNonGreedyDecision) { - if (typeof altOrConfig === "number") { - super(state, altOrConfig, context); - } else { - super(state, altOrConfig, context); - if (altOrConfig.semanticContext !== SemanticContext_1.SemanticContext.NONE) { - throw new Error("Not supported"); - } - } - this._lexerActionExecutor = lexerActionExecutor; - this.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision; - } - get lexerActionExecutor() { - return this._lexerActionExecutor; - } - get hasPassedThroughNonGreedyDecision() { - return this.passedThroughNonGreedyDecision; - } - }; - __decorate([ - Decorators_1.Override - ], ActionATNConfig.prototype, "lexerActionExecutor", null); - __decorate([ - Decorators_1.Override - ], ActionATNConfig.prototype, "hasPassedThroughNonGreedyDecision", null); - ActionATNConfig = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ActionATNConfig); - var ActionSemanticContextATNConfig = class ActionSemanticContextATNConfig extends SemanticContextATNConfig { - constructor(lexerActionExecutor, semanticContext, state, altOrConfig, context, passedThroughNonGreedyDecision) { - if (typeof altOrConfig === "number") { - super(semanticContext, state, altOrConfig, context); - } else { - super(semanticContext, state, altOrConfig, context); - } - this._lexerActionExecutor = lexerActionExecutor; - this.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision; - } - get lexerActionExecutor() { - return this._lexerActionExecutor; - } - get hasPassedThroughNonGreedyDecision() { - return this.passedThroughNonGreedyDecision; - } - }; - __decorate([ - Decorators_1.Override - ], ActionSemanticContextATNConfig.prototype, "lexerActionExecutor", null); - __decorate([ - Decorators_1.Override - ], ActionSemanticContextATNConfig.prototype, "hasPassedThroughNonGreedyDecision", null); - ActionSemanticContextATNConfig = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ActionSemanticContextATNConfig); - }); - - // node_modules/antlr4ts/misc/BitSet.js - var require_BitSet = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BitSet = void 0; - var util = require_util(); - var MurmurHash_1 = require_MurmurHash(); - var EMPTY_DATA = new Uint16Array(0); - function getIndex(bitNumber) { - return bitNumber >>> 4; - } - function unIndex(n) { - return n * 16; - } - function findLSBSet(word) { - let bit = 1; - for (let i = 0; i < 16; i++) { - if ((word & bit) !== 0) { - return i; + hashCode() { + let hashCode = 1; + for (let i = 0; i < this._size; i++) { + hashCode = 31 * hashCode + this._data[i]; + } + return hashCode; } - bit = bit << 1 >>> 0; - } - throw new RangeError("No specified bit found"); - } - function findMSBSet(word) { - let bit = 1 << 15 >>> 0; - for (let i = 15; i >= 0; i--) { - if ((word & bit) !== 0) { - return i; + toString() { + return this._data.toString(); } - bit = bit >>> 1; - } - throw new RangeError("No specified bit found"); - } - function bitsFor(fromBit, toBit) { - fromBit &= 15; - toBit &= 15; - if (fromBit === toBit) { - return 1 << fromBit >>> 0; - } - return 65535 >>> 15 - toBit ^ 65535 >>> 16 - fromBit; - } - var POP_CNT = new Uint8Array(65536); - for (let i = 0; i < 16; i++) { - const stride = 1 << i >>> 0; - let index = 0; - while (index < POP_CNT.length) { - index += stride; - for (let j = 0; j < stride; j++) { - POP_CNT[index]++; - index++; + binarySearch(key, fromIndex, toIndex) { + if (fromIndex === void 0) { + fromIndex = 0; + } + if (toIndex === void 0) { + toIndex = this._size; + } + if (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) { + throw new RangeError(); + } + if (fromIndex > toIndex) { + throw new RangeError(); + } + return Arrays_1.Arrays.binarySearch(this._data, key, fromIndex, toIndex); } - } - } - var BitSet = class { - constructor(arg) { - if (!arg) { - this.data = EMPTY_DATA; - } else if (typeof arg === "number") { - if (arg < 0) { - throw new RangeError("nbits cannot be negative"); - } else { - this.data = new Uint16Array(getIndex(arg - 1) + 1); + ensureCapacity(capacity) { + if (capacity < 0 || capacity > MAX_ARRAY_SIZE) { + throw new RangeError(); } - } else { - if (arg instanceof BitSet) { - this.data = arg.data.slice(0); + let newLength; + if (this._data.length === 0) { + newLength = INITIAL_SIZE; } else { - let max = -1; - for (let v of arg) { - if (max < v) { - max = v; - } + newLength = this._data.length; + } + while (newLength < capacity) { + newLength = newLength * 2; + if (newLength < 0 || newLength > MAX_ARRAY_SIZE) { + newLength = MAX_ARRAY_SIZE; + } + } + let tmp = new Int32Array(newLength); + tmp.set(this._data); + this._data = tmp; + } + toCharArray() { + let resultArray = new Uint16Array(this._size); + let resultIdx = 0; + let calculatedPreciseResultSize = false; + for (let i = 0; i < this._size; i++) { + let codePoint = this._data[i]; + if (codePoint >= 0 && codePoint < 65536) { + resultArray[resultIdx] = codePoint; + resultIdx++; + continue; } - this.data = new Uint16Array(getIndex(max - 1) + 1); - for (let v of arg) { - this.set(v); + if (!calculatedPreciseResultSize) { + let newResultArray = new Uint16Array(this.charArraySize()); + newResultArray.set(resultArray, 0); + resultArray = newResultArray; + calculatedPreciseResultSize = true; } + let pair = String.fromCodePoint(codePoint); + resultArray[resultIdx] = pair.charCodeAt(0); + resultArray[resultIdx + 1] = pair.charCodeAt(1); + resultIdx += 2; } + return resultArray; } - } - and(set) { - const data = this.data; - const other = set.data; - const words = Math.min(data.length, other.length); - let lastWord = -1; - for (let i = 0; i < words; i++) { - let value = data[i] &= other[i]; - if (value !== 0) { - lastWord = i; + charArraySize() { + let result = 0; + for (let i = 0; i < this._size; i++) { + result += this._data[i] >= 65536 ? 2 : 1; } + return result; } - if (lastWord === -1) { - this.data = EMPTY_DATA; + }; + __decorate([ + Decorators_1.NotNull + ], IntegerList.prototype, "_data", void 0); + __decorate([ + Decorators_1.Override + ], IntegerList.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], IntegerList.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], IntegerList.prototype, "toString", null); + exports.IntegerList = IntegerList; + } + }); + + // node_modules/antlr4ts/misc/Interval.js + var require_Interval = __commonJS({ + "node_modules/antlr4ts/misc/Interval.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Interval = void 0; + var Decorators_1 = require_Decorators(); + var INTERVAL_POOL_MAX_VALUE = 1e3; + var Interval2 = class { + constructor(a, b) { + this.a = a; + this.b = b; } - if (lastWord < data.length - 1) { - this.data = data.slice(0, lastWord + 1); + static get INVALID() { + return Interval2._INVALID; } - } - andNot(set) { - const data = this.data; - const other = set.data; - const words = Math.min(data.length, other.length); - let lastWord = -1; - for (let i = 0; i < words; i++) { - let value = data[i] &= other[i] ^ 65535; - if (value !== 0) { - lastWord = i; + static of(a, b) { + if (a !== b || a < 0 || a > INTERVAL_POOL_MAX_VALUE) { + return new Interval2(a, b); + } + if (Interval2.cache[a] == null) { + Interval2.cache[a] = new Interval2(a, a); } + return Interval2.cache[a]; } - if (lastWord === -1) { - this.data = EMPTY_DATA; + get length() { + if (this.b < this.a) { + return 0; + } + return this.b - this.a + 1; } - if (lastWord < data.length - 1) { - this.data = data.slice(0, lastWord + 1); + equals(o) { + if (o === this) { + return true; + } else if (!(o instanceof Interval2)) { + return false; + } + return this.a === o.a && this.b === o.b; } - } - cardinality() { - if (this.isEmpty) { - return 0; + hashCode() { + let hash = 23; + hash = hash * 31 + this.a; + hash = hash * 31 + this.b; + return hash; } - const data = this.data; - const length = data.length; - let result = 0; - for (let i = 0; i < length; i++) { - result += POP_CNT[data[i]]; + startsBeforeDisjoint(other) { + return this.a < other.a && this.b < other.a; } - return result; - } - clear(fromIndex, toIndex) { - if (fromIndex == null) { - this.data.fill(0); - } else if (toIndex == null) { - this.set(fromIndex, false); - } else { - this.set(fromIndex, toIndex, false); + startsBeforeNonDisjoint(other) { + return this.a <= other.a && this.b >= other.a; } - } - flip(fromIndex, toIndex) { - if (toIndex == null) { - toIndex = fromIndex; + startsAfter(other) { + return this.a > other.a; } - if (fromIndex < 0 || toIndex < fromIndex) { - throw new RangeError(); + startsAfterDisjoint(other) { + return this.a > other.b; } - let word = getIndex(fromIndex); - const lastWord = getIndex(toIndex); - if (word === lastWord) { - this.data[word] ^= bitsFor(fromIndex, toIndex); - } else { - this.data[word++] ^= bitsFor(fromIndex, 15); - while (word < lastWord) { - this.data[word++] ^= 65535; - } - this.data[word++] ^= bitsFor(0, toIndex); + startsAfterNonDisjoint(other) { + return this.a > other.a && this.a <= other.b; } - } - get(fromIndex, toIndex) { - if (toIndex === void 0) { - return !!(this.data[getIndex(fromIndex)] & bitsFor(fromIndex, fromIndex)); - } else { - let result = new BitSet(toIndex + 1); - for (let i = fromIndex; i <= toIndex; i++) { - result.set(i, this.get(i)); - } - return result; + disjoint(other) { + return this.startsBeforeDisjoint(other) || this.startsAfterDisjoint(other); } - } - intersects(set) { - let smallerLength = Math.min(this.length(), set.length()); - if (smallerLength === 0) { - return false; + adjacent(other) { + return this.a === other.b + 1 || this.b === other.a - 1; } - let bound = getIndex(smallerLength - 1); - for (let i = 0; i <= bound; i++) { - if ((this.data[i] & set.data[i]) !== 0) { - return true; - } - } - return false; - } - get isEmpty() { - return this.length() === 0; - } - length() { - if (!this.data.length) { - return 0; + properlyContains(other) { + return other.a >= this.a && other.b <= this.b; } - return this.previousSetBit(unIndex(this.data.length) - 1) + 1; - } - nextClearBit(fromIndex) { - if (fromIndex < 0) { - throw new RangeError("fromIndex cannot be negative"); + union(other) { + return Interval2.of(Math.min(this.a, other.a), Math.max(this.b, other.b)); } - const data = this.data; - const length = data.length; - let word = getIndex(fromIndex); - if (word > length) { - return -1; + intersection(other) { + return Interval2.of(Math.max(this.a, other.a), Math.min(this.b, other.b)); } - let ignore = 65535 ^ bitsFor(fromIndex, 15); - if ((data[word] | ignore) === 65535) { - word++; - ignore = 0; - for (; word < length; word++) { - if (data[word] !== 65535) { - break; - } + differenceNotProperlyContained(other) { + let diff; + if (other.startsBeforeNonDisjoint(this)) { + diff = Interval2.of(Math.max(this.a, other.b + 1), this.b); + } else if (other.startsAfterNonDisjoint(this)) { + diff = Interval2.of(this.a, other.a - 1); } - if (word === length) { - return -1; + return diff; + } + toString() { + return this.a + ".." + this.b; + } + }; + Interval2._INVALID = new Interval2(-1, -2); + Interval2.cache = new Array(INTERVAL_POOL_MAX_VALUE + 1); + __decorate([ + Decorators_1.Override + ], Interval2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], Interval2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], Interval2.prototype, "toString", null); + exports.Interval = Interval2; + } + }); + + // node_modules/antlr4ts/Token.js + var require_Token = __commonJS({ + "node_modules/antlr4ts/Token.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Token = void 0; + var IntStream_1 = require_IntStream(); + var Token3; + (function(Token4) { + Token4.INVALID_TYPE = 0; + Token4.EPSILON = -2; + Token4.MIN_USER_TOKEN_TYPE = 1; + Token4.EOF = IntStream_1.IntStream.EOF; + Token4.DEFAULT_CHANNEL = 0; + Token4.HIDDEN_CHANNEL = 1; + Token4.MIN_USER_CHANNEL_VALUE = 2; + })(Token3 = exports.Token || (exports.Token = {})); + } + }); + + // node_modules/antlr4ts/CommonToken.js + var require_CommonToken = __commonJS({ + "node_modules/antlr4ts/CommonToken.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CommonToken = void 0; + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var CommonToken2 = class CommonToken3 { + constructor(type, text, source = CommonToken3.EMPTY_SOURCE, channel = Token_1.Token.DEFAULT_CHANNEL, start = 0, stop = 0) { + this._line = 0; + this._charPositionInLine = -1; + this._channel = Token_1.Token.DEFAULT_CHANNEL; + this.index = -1; + this._text = text; + this._type = type; + this.source = source; + this._channel = channel; + this.start = start; + this.stop = stop; + if (source.source != null) { + this._line = source.source.line; + this._charPositionInLine = source.source.charPositionInLine; + } + } + static fromToken(oldToken) { + let result = new CommonToken3(oldToken.type, void 0, CommonToken3.EMPTY_SOURCE, oldToken.channel, oldToken.startIndex, oldToken.stopIndex); + result._line = oldToken.line; + result.index = oldToken.tokenIndex; + result._charPositionInLine = oldToken.charPositionInLine; + if (oldToken instanceof CommonToken3) { + result._text = oldToken._text; + result.source = oldToken.source; + } else { + result._text = oldToken.text; + result.source = {source: oldToken.tokenSource, stream: oldToken.inputStream}; } + return result; } - return unIndex(word) + findLSBSet((data[word] | ignore) ^ 65535); - } - nextSetBit(fromIndex) { - if (fromIndex < 0) { - throw new RangeError("fromIndex cannot be negative"); + get type() { + return this._type; } - const data = this.data; - const length = data.length; - let word = getIndex(fromIndex); - if (word > length) { - return -1; + set type(type) { + this._type = type; } - let mask = bitsFor(fromIndex, 15); - if ((data[word] & mask) === 0) { - word++; - mask = 65535; - for (; word < length; word++) { - if (data[word] !== 0) { - break; - } + get line() { + return this._line; + } + set line(line) { + this._line = line; + } + get text() { + if (this._text != null) { + return this._text; } - if (word >= length) { - return -1; + let input = this.inputStream; + if (input == null) { + return void 0; } - } - return unIndex(word) + findLSBSet(data[word] & mask); - } - or(set) { - const data = this.data; - const other = set.data; - const minWords = Math.min(data.length, other.length); - const words = Math.max(data.length, other.length); - const dest = data.length === words ? data : new Uint16Array(words); - let lastWord = -1; - for (let i = 0; i < minWords; i++) { - let value = dest[i] = data[i] | other[i]; - if (value !== 0) { - lastWord = i; + let n = input.size; + if (this.start < n && this.stop < n) { + return input.getText(Interval_1.Interval.of(this.start, this.stop)); + } else { + return ""; } } - const longer = data.length > other.length ? data : other; - for (let i = minWords; i < words; i++) { - let value = dest[i] = longer[i]; - if (value !== 0) { - lastWord = i; - } + set text(text) { + this._text = text; } - if (lastWord === -1) { - this.data = EMPTY_DATA; - } else if (dest.length === lastWord + 1) { - this.data = dest; - } else { - this.data = dest.slice(0, lastWord); + get charPositionInLine() { + return this._charPositionInLine; } - } - previousClearBit(fromIndex) { - if (fromIndex < 0) { - throw new RangeError("fromIndex cannot be negative"); + set charPositionInLine(charPositionInLine) { + this._charPositionInLine = charPositionInLine; } - const data = this.data; - const length = data.length; - let word = getIndex(fromIndex); - if (word >= length) { - word = length - 1; + get channel() { + return this._channel; } - let ignore = 65535 ^ bitsFor(0, fromIndex); - if ((data[word] | ignore) === 65535) { - ignore = 0; - word--; - for (; word >= 0; word--) { - if (data[word] !== 65535) { - break; - } - } - if (word < 0) { - return -1; - } + set channel(channel) { + this._channel = channel; } - return unIndex(word) + findMSBSet((data[word] | ignore) ^ 65535); - } - previousSetBit(fromIndex) { - if (fromIndex < 0) { - throw new RangeError("fromIndex cannot be negative"); + get startIndex() { + return this.start; } - const data = this.data; - const length = data.length; - let word = getIndex(fromIndex); - if (word >= length) { - word = length - 1; + set startIndex(start) { + this.start = start; } - let mask = bitsFor(0, fromIndex); - if ((data[word] & mask) === 0) { - word--; - mask = 65535; - for (; word >= 0; word--) { - if (data[word] !== 0) { - break; - } - } - if (word < 0) { - return -1; - } + get stopIndex() { + return this.stop; } - return unIndex(word) + findMSBSet(data[word] & mask); - } - set(fromIndex, toIndex, value) { - if (toIndex === void 0) { - toIndex = fromIndex; - value = true; - } else if (typeof toIndex === "boolean") { - value = toIndex; - toIndex = fromIndex; + set stopIndex(stop) { + this.stop = stop; } - if (value === void 0) { - value = true; + get tokenIndex() { + return this.index; } - if (fromIndex < 0 || fromIndex > toIndex) { - throw new RangeError(); + set tokenIndex(index) { + this.index = index; } - let word = getIndex(fromIndex); - let lastWord = getIndex(toIndex); - if (value && lastWord >= this.data.length) { - let temp = new Uint16Array(lastWord + 1); - this.data.forEach((value2, index) => temp[index] = value2); - this.data = temp; - } else if (!value) { - if (word >= this.data.length) { - return; + get tokenSource() { + return this.source.source; + } + get inputStream() { + return this.source.stream; + } + toString(recognizer) { + let channelStr = ""; + if (this._channel > 0) { + channelStr = ",channel=" + this._channel; + } + let txt = this.text; + if (txt != null) { + txt = txt.replace(/\n/g, "\\n"); + txt = txt.replace(/\r/g, "\\r"); + txt = txt.replace(/\t/g, "\\t"); + } else { + txt = ""; } - if (lastWord >= this.data.length) { - lastWord = this.data.length - 1; - toIndex = this.data.length * 16 - 1; + let typeString = String(this._type); + if (recognizer) { + typeString = recognizer.vocabulary.getDisplayName(this._type); } + return "[@" + this.tokenIndex + "," + this.start + ":" + this.stop + "='" + txt + "',<" + typeString + ">" + channelStr + "," + this._line + ":" + this.charPositionInLine + "]"; } - if (word === lastWord) { - this._setBits(word, value, bitsFor(fromIndex, toIndex)); - } else { - this._setBits(word++, value, bitsFor(fromIndex, 15)); - while (word < lastWord) { - this.data[word++] = value ? 65535 : 0; + }; + CommonToken2.EMPTY_SOURCE = {source: void 0, stream: void 0}; + __decorate([ + Decorators_1.NotNull + ], CommonToken2.prototype, "source", void 0); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "type", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "line", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "charPositionInLine", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "channel", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "startIndex", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "stopIndex", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "tokenIndex", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "tokenSource", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "inputStream", null); + __decorate([ + Decorators_1.Override + ], CommonToken2.prototype, "toString", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], CommonToken2, "fromToken", null); + CommonToken2 = __decorate([ + __param(2, Decorators_1.NotNull) + ], CommonToken2); + exports.CommonToken = CommonToken2; + } + }); + + // node_modules/antlr4ts/CommonTokenFactory.js + var require_CommonTokenFactory = __commonJS({ + "node_modules/antlr4ts/CommonTokenFactory.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CommonTokenFactory = void 0; + var CommonToken_1 = require_CommonToken(); + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var CommonTokenFactory2 = class { + constructor(copyText = false) { + this.copyText = copyText; + } + create(source, type, text, channel, start, stop, line, charPositionInLine) { + let t = new CommonToken_1.CommonToken(type, text, source, channel, start, stop); + t.line = line; + t.charPositionInLine = charPositionInLine; + if (text == null && this.copyText && source.stream != null) { + t.text = source.stream.getText(Interval_1.Interval.of(start, stop)); } - this._setBits(word, value, bitsFor(0, toIndex)); + return t; } - } - _setBits(word, value, mask) { - if (value) { - this.data[word] |= mask; - } else { - this.data[word] &= 65535 ^ mask; + createSimple(type, text) { + return new CommonToken_1.CommonToken(type, text); } - } - get size() { - return this.data.byteLength * 8; - } - hashCode() { - return MurmurHash_1.MurmurHash.hashCode(this.data, 22); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof BitSet)) { - return false; + }; + __decorate([ + Decorators_1.Override + ], CommonTokenFactory2.prototype, "create", null); + __decorate([ + Decorators_1.Override + ], CommonTokenFactory2.prototype, "createSimple", null); + exports.CommonTokenFactory = CommonTokenFactory2; + (function(CommonTokenFactory3) { + CommonTokenFactory3.DEFAULT = new CommonTokenFactory3(); + })(CommonTokenFactory2 = exports.CommonTokenFactory || (exports.CommonTokenFactory = {})); + } + }); + + // node_modules/antlr4ts/misc/IntegerStack.js + var require_IntegerStack = __commonJS({ + "node_modules/antlr4ts/misc/IntegerStack.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.IntegerStack = void 0; + var IntegerList_1 = require_IntegerList(); + var IntegerStack = class extends IntegerList_1.IntegerList { + constructor(arg) { + super(arg); + } + push(value) { + this.add(value); + } + pop() { + return this.removeAt(this.size - 1); + } + peek() { + return this.get(this.size - 1); } - const len = this.length(); - if (len !== obj.length()) { - return false; + }; + exports.IntegerStack = IntegerStack; + } + }); + + // node_modules/antlr4ts/dfa/AcceptStateInfo.js + var require_AcceptStateInfo = __commonJS({ + "node_modules/antlr4ts/dfa/AcceptStateInfo.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.AcceptStateInfo = void 0; + var AcceptStateInfo = class { + constructor(prediction, lexerActionExecutor) { + this._prediction = prediction; + this._lexerActionExecutor = lexerActionExecutor; + } + get prediction() { + return this._prediction; + } + get lexerActionExecutor() { + return this._lexerActionExecutor; } - if (len === 0) { - return true; + }; + exports.AcceptStateInfo = AcceptStateInfo; + } + }); + + // node_modules/antlr4ts/misc/Array2DHashMap.js + var require_Array2DHashMap = __commonJS({ + "node_modules/antlr4ts/misc/Array2DHashMap.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Array2DHashMap = void 0; + var Array2DHashSet_1 = require_Array2DHashSet(); + var MapKeyEqualityComparator = class { + constructor(keyComparator) { + this.keyComparator = keyComparator; } - let bound = getIndex(len - 1); - for (let i = 0; i <= bound; i++) { - if (this.data[i] !== obj.data[i]) { - return false; - } + hashCode(obj) { + return this.keyComparator.hashCode(obj.key); } - return true; - } - toString() { - let result = "{"; - let first = true; - for (let i = this.nextSetBit(0); i >= 0; i = this.nextSetBit(i + 1)) { - if (first) { - first = false; + equals(a, b) { + return this.keyComparator.equals(a.key, b.key); + } + }; + var Array2DHashMap = class { + constructor(keyComparer) { + if (keyComparer instanceof Array2DHashMap) { + this.backingStore = new Array2DHashSet_1.Array2DHashSet(keyComparer.backingStore); } else { - result += ", "; + this.backingStore = new Array2DHashSet_1.Array2DHashSet(new MapKeyEqualityComparator(keyComparer)); } - result += i; } - result += "}"; - return result; - } - xor(set) { - const data = this.data; - const other = set.data; - const minWords = Math.min(data.length, other.length); - const words = Math.max(data.length, other.length); - const dest = data.length === words ? data : new Uint16Array(words); - let lastWord = -1; - for (let i = 0; i < minWords; i++) { - let value = dest[i] = data[i] ^ other[i]; - if (value !== 0) { - lastWord = i; - } - } - const longer = data.length > other.length ? data : other; - for (let i = minWords; i < words; i++) { - let value = dest[i] = longer[i]; - if (value !== 0) { - lastWord = i; - } - } - if (lastWord === -1) { - this.data = EMPTY_DATA; - } else if (dest.length === lastWord + 1) { - this.data = dest; - } else { - this.data = dest.slice(0, lastWord + 1); + clear() { + this.backingStore.clear(); } - } - clone() { - return new BitSet(this); - } - [Symbol.iterator]() { - return new BitSetIterator(this.data); - } - [util.inspect.custom]() { - return "BitSet " + this.toString(); - } - }; - exports.BitSet = BitSet; - var BitSetIterator = class { - constructor(data) { - this.data = data; - this.index = 0; - this.mask = 65535; - } - next() { - while (this.index < this.data.length) { - const bits = this.data[this.index] & this.mask; - if (bits !== 0) { - const bitNumber = unIndex(this.index) + findLSBSet(bits); - this.mask = bitsFor(bitNumber + 1, 15); - return {done: false, value: bitNumber}; - } - this.index++; - this.mask = 65535; + containsKey(key) { + return this.backingStore.contains({key}); } - return {done: true, value: -1}; - } - [Symbol.iterator]() { - return this; - } - }; - }); - - // node_modules/antlr4ts/atn/ATNConfigSet.js - var require_ATNConfigSet = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNConfigSet = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var Array2DHashSet_1 = require_Array2DHashSet(); - var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); - var ATN_1 = require_ATN(); - var ATNConfig_1 = require_ATNConfig(); - var BitSet_1 = require_BitSet(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var PredictionContext_1 = require_PredictionContext(); - var PredictionContextCache_1 = require_PredictionContextCache(); - var SemanticContext_1 = require_SemanticContext(); - var assert = require_assert(); - var Utils3 = require_Utils(); - var KeyTypeEqualityComparer = class { - hashCode(key) { - return key.state ^ key.alt; - } - equals(a, b) { - return a.state === b.state && a.alt === b.alt; - } - }; - KeyTypeEqualityComparer.INSTANCE = new KeyTypeEqualityComparer(); - function NewKeyedConfigMap(map) { - if (map) { - return new Array2DHashMap_1.Array2DHashMap(map); - } else { - return new Array2DHashMap_1.Array2DHashMap(KeyTypeEqualityComparer.INSTANCE); - } - } - var ATNConfigSet = class { - constructor(set, readonly) { - this._uniqueAlt = 0; - this._hasSemanticContext = false; - this._dipsIntoOuterContext = false; - this.outermostConfigSet = false; - this.cachedHashCode = -1; - if (!set) { - this.mergedConfigs = NewKeyedConfigMap(); - this.unmerged = []; - this.configs = []; - this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; - } else { - if (readonly) { - this.mergedConfigs = void 0; - this.unmerged = void 0; - } else if (!set.isReadOnly) { - this.mergedConfigs = NewKeyedConfigMap(set.mergedConfigs); - this.unmerged = set.unmerged.slice(0); - } else { - this.mergedConfigs = NewKeyedConfigMap(); - this.unmerged = []; - } - this.configs = set.configs.slice(0); - this._dipsIntoOuterContext = set._dipsIntoOuterContext; - this._hasSemanticContext = set._hasSemanticContext; - this.outermostConfigSet = set.outermostConfigSet; - if (readonly || !set.isReadOnly) { - this._uniqueAlt = set._uniqueAlt; - this._conflictInfo = set._conflictInfo; + get(key) { + let bucket = this.backingStore.get({key}); + if (!bucket) { + return void 0; } + return bucket.value; } - } - getRepresentedAlternatives() { - if (this._conflictInfo != null) { - return this._conflictInfo.conflictedAlts.clone(); - } - let alts = new BitSet_1.BitSet(); - for (let config of this) { - alts.set(config.alt); + get isEmpty() { + return this.backingStore.isEmpty; } - return alts; - } - get isReadOnly() { - return this.mergedConfigs == null; - } - get isOutermostConfigSet() { - return this.outermostConfigSet; - } - set isOutermostConfigSet(outermostConfigSet) { - if (this.outermostConfigSet && !outermostConfigSet) { - throw new Error("IllegalStateException"); + put(key, value) { + let element = this.backingStore.get({key, value}); + let result; + if (!element) { + this.backingStore.add({key, value}); + } else { + result = element.value; + element.value = value; + } + return result; } - assert(!outermostConfigSet || !this._dipsIntoOuterContext); - this.outermostConfigSet = outermostConfigSet; - } - getStates() { - let states = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - for (let c of this.configs) { - states.add(c.state); + putIfAbsent(key, value) { + let element = this.backingStore.get({key, value}); + let result; + if (!element) { + this.backingStore.add({key, value}); + } else { + result = element.value; + } + return result; } - return states; - } - optimizeConfigs(interpreter) { - if (this.configs.length === 0) { - return; + get size() { + return this.backingStore.size; } - for (let config of this.configs) { - config.context = interpreter.atn.getCachedContext(config.context); + hashCode() { + return this.backingStore.hashCode(); } - } - clone(readonly) { - let copy = new ATNConfigSet(this, readonly); - if (!readonly && this.isReadOnly) { - copy.addAll(this.configs); + equals(o) { + if (!(o instanceof Array2DHashMap)) { + return false; + } + return this.backingStore.equals(o.backingStore); } - return copy; - } - get size() { - return this.configs.length; - } - get isEmpty() { - return this.configs.length === 0; - } - contains(o) { - if (!(o instanceof ATNConfig_1.ATNConfig)) { - return false; + }; + exports.Array2DHashMap = Array2DHashMap; + } + }); + + // node_modules/antlr4ts/atn/DecisionState.js + var require_DecisionState = __commonJS({ + "node_modules/antlr4ts/atn/DecisionState.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DecisionState = void 0; + var ATNState_1 = require_ATNState(); + var DecisionState2 = class extends ATNState_1.ATNState { + constructor() { + super(...arguments); + this.decision = -1; + this.nonGreedy = false; + this.sll = false; } - if (this.mergedConfigs && this.unmerged) { - let config = o; - let configKey = this.getKey(config); - let mergedConfig = this.mergedConfigs.get(configKey); - if (mergedConfig != null && this.canMerge(config, configKey, mergedConfig)) { - return mergedConfig.contains(config); + }; + exports.DecisionState = DecisionState2; + } + }); + + // node_modules/antlr4ts/atn/PredictionContextCache.js + var require_PredictionContextCache = __commonJS({ + "node_modules/antlr4ts/atn/PredictionContextCache.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PredictionContextCache = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var PredictionContext_1 = require_PredictionContext(); + var assert = require_assert(); + var PredictionContextCache2 = class { + constructor(enableCache = true) { + this.contexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + this.childContexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + this.joinContexts = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + this.enableCache = enableCache; + } + getAsCached(context) { + if (!this.enableCache) { + return context; + } + let result = this.contexts.get(context); + if (!result) { + result = context; + this.contexts.put(context, context); } - for (let c of this.unmerged) { - if (c.contains(o)) { - return true; - } + return result; + } + getChild(context, invokingState) { + if (!this.enableCache) { + return context.getChild(invokingState); } - } else { - for (let c of this.configs) { - if (c.contains(o)) { - return true; - } + let operands = new PredictionContextCache2.PredictionContextAndInt(context, invokingState); + let result = this.childContexts.get(operands); + if (!result) { + result = context.getChild(invokingState); + result = this.getAsCached(result); + this.childContexts.put(operands, result); } + return result; } - return false; - } - *[Symbol.iterator]() { - yield* this.configs; - } - toArray() { - return this.configs; - } - add(e, contextCache) { - this.ensureWritable(); - if (!this.mergedConfigs || !this.unmerged) { - throw new Error("Covered by ensureWritable but duplicated here for strict null check limitation"); - } - assert(!this.outermostConfigSet || !e.reachesIntoOuterContext); - if (contextCache == null) { - contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED; - } - let addKey; - let key = this.getKey(e); - let mergedConfig = this.mergedConfigs.get(key); - addKey = mergedConfig == null; - if (mergedConfig != null && this.canMerge(e, key, mergedConfig)) { - mergedConfig.outerContextDepth = Math.max(mergedConfig.outerContextDepth, e.outerContextDepth); - if (e.isPrecedenceFilterSuppressed) { - mergedConfig.isPrecedenceFilterSuppressed = true; - } - let joined = PredictionContext_1.PredictionContext.join(mergedConfig.context, e.context, contextCache); - this.updatePropertiesForMergedConfig(e); - if (mergedConfig.context === joined) { - return false; + join(x, y) { + if (!this.enableCache) { + return PredictionContext_1.PredictionContext.join(x, y, this); } - mergedConfig.context = joined; - return true; + let operands = new PredictionContextCache2.IdentityCommutativePredictionContextOperands(x, y); + let result = this.joinContexts.get(operands); + if (result) { + return result; + } + result = PredictionContext_1.PredictionContext.join(x, y, this); + result = this.getAsCached(result); + this.joinContexts.put(operands, result); + return result; } - for (let i = 0; i < this.unmerged.length; i++) { - let unmergedConfig = this.unmerged[i]; - if (this.canMerge(e, key, unmergedConfig)) { - unmergedConfig.outerContextDepth = Math.max(unmergedConfig.outerContextDepth, e.outerContextDepth); - if (e.isPrecedenceFilterSuppressed) { - unmergedConfig.isPrecedenceFilterSuppressed = true; - } - let joined = PredictionContext_1.PredictionContext.join(unmergedConfig.context, e.context, contextCache); - this.updatePropertiesForMergedConfig(e); - if (unmergedConfig.context === joined) { + }; + exports.PredictionContextCache = PredictionContextCache2; + PredictionContextCache2.UNCACHED = new PredictionContextCache2(false); + (function(PredictionContextCache3) { + class PredictionContextAndInt { + constructor(obj, value) { + this.obj = obj; + this.value = value; + } + equals(obj) { + if (!(obj instanceof PredictionContextAndInt)) { return false; + } else if (obj === this) { + return true; } - unmergedConfig.context = joined; - if (addKey) { - this.mergedConfigs.put(key, unmergedConfig); - this.unmerged.splice(i, 1); + let other = obj; + return this.value === other.value && (this.obj === other.obj || this.obj != null && this.obj.equals(other.obj)); + } + hashCode() { + let hashCode = 5; + hashCode = 7 * hashCode + (this.obj != null ? this.obj.hashCode() : 0); + hashCode = 7 * hashCode + this.value; + return hashCode; + } + } + __decorate([ + Decorators_1.Override + ], PredictionContextAndInt.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], PredictionContextAndInt.prototype, "hashCode", null); + PredictionContextCache3.PredictionContextAndInt = PredictionContextAndInt; + class IdentityCommutativePredictionContextOperands { + constructor(x, y) { + assert(x != null); + assert(y != null); + this._x = x; + this._y = y; + } + get x() { + return this._x; + } + get y() { + return this._y; + } + equals(o) { + if (!(o instanceof IdentityCommutativePredictionContextOperands)) { + return false; + } else if (this === o) { + return true; } - return true; + let other = o; + return this._x === other._x && this._y === other._y || this._x === other._y && this._y === other._x; + } + hashCode() { + return this._x.hashCode() ^ this._y.hashCode(); } } - this.configs.push(e); - if (addKey) { - this.mergedConfigs.put(key, e); - } else { - this.unmerged.push(e); - } - this.updatePropertiesForAddedConfig(e); - return true; - } - updatePropertiesForMergedConfig(config) { - this._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext; - assert(!this.outermostConfigSet || !this._dipsIntoOuterContext); - } - updatePropertiesForAddedConfig(config) { - if (this.configs.length === 1) { - this._uniqueAlt = config.alt; - } else if (this._uniqueAlt !== config.alt) { - this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; - } - this._hasSemanticContext = this._hasSemanticContext || !SemanticContext_1.SemanticContext.NONE.equals(config.semanticContext); - this._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext; - assert(!this.outermostConfigSet || !this._dipsIntoOuterContext); - } - canMerge(left, leftKey, right) { - if (left.state.stateNumber !== right.state.stateNumber) { - return false; - } - if (leftKey.alt !== right.alt) { - return false; + __decorate([ + Decorators_1.Override + ], IdentityCommutativePredictionContextOperands.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], IdentityCommutativePredictionContextOperands.prototype, "hashCode", null); + PredictionContextCache3.IdentityCommutativePredictionContextOperands = IdentityCommutativePredictionContextOperands; + })(PredictionContextCache2 = exports.PredictionContextCache || (exports.PredictionContextCache = {})); + } + }); + + // node_modules/antlr4ts/atn/PredictionContext.js + var require_PredictionContext = __commonJS({ + "node_modules/antlr4ts/atn/PredictionContext.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.SingletonPredictionContext = exports.PredictionContext = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var Array2DHashSet_1 = require_Array2DHashSet(); + var Arrays_1 = require_Arrays(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var PredictionContextCache_1 = require_PredictionContextCache(); + var assert = require_assert(); + var INITIAL_HASH = 1; + var PredictionContext2 = class { + constructor(cachedHashCode) { + this.cachedHashCode = cachedHashCode; + } + static calculateEmptyHashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); + hash = MurmurHash_1.MurmurHash.finish(hash, 0); + return hash; + } + static calculateSingleHashCode(parent, returnState) { + let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); + hash = MurmurHash_1.MurmurHash.update(hash, parent); + hash = MurmurHash_1.MurmurHash.update(hash, returnState); + hash = MurmurHash_1.MurmurHash.finish(hash, 2); + return hash; } - return left.semanticContext.equals(right.semanticContext); - } - getKey(e) { - return {state: e.state.stateNumber, alt: e.alt}; - } - containsAll(c) { - for (let o of c) { - if (!(o instanceof ATNConfig_1.ATNConfig)) { - return false; + static calculateHashCode(parents, returnStates) { + let hash = MurmurHash_1.MurmurHash.initialize(INITIAL_HASH); + for (let parent of parents) { + hash = MurmurHash_1.MurmurHash.update(hash, parent); } - if (!this.contains(o)) { - return false; + for (let returnState of returnStates) { + hash = MurmurHash_1.MurmurHash.update(hash, returnState); } + hash = MurmurHash_1.MurmurHash.finish(hash, 2 * parents.length); + return hash; } - return true; - } - addAll(c, contextCache) { - this.ensureWritable(); - let changed = false; - for (let group of c) { - if (this.add(group, contextCache)) { - changed = true; + static fromRuleContext(atn, outerContext, fullContext = true) { + if (outerContext.isEmpty) { + return fullContext ? PredictionContext2.EMPTY_FULL : PredictionContext2.EMPTY_LOCAL; } + let parent; + if (outerContext._parent) { + parent = PredictionContext2.fromRuleContext(atn, outerContext._parent, fullContext); + } else { + parent = fullContext ? PredictionContext2.EMPTY_FULL : PredictionContext2.EMPTY_LOCAL; + } + let state = atn.states[outerContext.invokingState]; + let transition = state.transition(0); + return parent.getChild(transition.followState.stateNumber); } - return changed; - } - clear() { - this.ensureWritable(); - if (!this.mergedConfigs || !this.unmerged) { - throw new Error("Covered by ensureWritable but duplicated here for strict null check limitation"); - } - this.mergedConfigs.clear(); - this.unmerged.length = 0; - this.configs.length = 0; - this._dipsIntoOuterContext = false; - this._hasSemanticContext = false; - this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; - this._conflictInfo = void 0; - } - equals(obj) { - if (this === obj) { - return true; - } - if (!(obj instanceof ATNConfigSet)) { - return false; - } - return this.outermostConfigSet === obj.outermostConfigSet && Utils3.equals(this._conflictInfo, obj._conflictInfo) && ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.configs, obj.configs); - } - hashCode() { - if (this.isReadOnly && this.cachedHashCode !== -1) { - return this.cachedHashCode; - } - let hashCode = 1; - hashCode = 5 * hashCode ^ (this.outermostConfigSet ? 1 : 0); - hashCode = 5 * hashCode ^ ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.hashCode(this.configs); - if (this.isReadOnly) { - this.cachedHashCode = hashCode; + static addEmptyContext(context) { + return context.addEmptyContext(); } - return hashCode; - } - toString(showContext) { - if (showContext == null) { - showContext = false; + static removeEmptyContext(context) { + return context.removeEmptyContext(); } - let buf = ""; - let sortedConfigs = this.configs.slice(0); - sortedConfigs.sort((o1, o2) => { - if (o1.alt !== o2.alt) { - return o1.alt - o2.alt; - } else if (o1.state.stateNumber !== o2.state.stateNumber) { - return o1.state.stateNumber - o2.state.stateNumber; - } else { - return o1.semanticContext.toString().localeCompare(o2.semanticContext.toString()); + static join(context0, context1, contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED) { + if (context0 === context1) { + return context0; } - }); - buf += "["; - for (let i = 0; i < sortedConfigs.length; i++) { - if (i > 0) { - buf += ", "; + if (context0.isEmpty) { + return PredictionContext2.isEmptyLocal(context0) ? context0 : PredictionContext2.addEmptyContext(context1); + } else if (context1.isEmpty) { + return PredictionContext2.isEmptyLocal(context1) ? context1 : PredictionContext2.addEmptyContext(context0); + } + let context0size = context0.size; + let context1size = context1.size; + if (context0size === 1 && context1size === 1 && context0.getReturnState(0) === context1.getReturnState(0)) { + let merged = contextCache.join(context0.getParent(0), context1.getParent(0)); + if (merged === context0.getParent(0)) { + return context0; + } else if (merged === context1.getParent(0)) { + return context1; + } else { + return merged.getChild(context0.getReturnState(0)); + } + } + let count = 0; + let parentsList = new Array(context0size + context1size); + let returnStatesList = new Array(parentsList.length); + let leftIndex = 0; + let rightIndex = 0; + let canReturnLeft = true; + let canReturnRight = true; + while (leftIndex < context0size && rightIndex < context1size) { + if (context0.getReturnState(leftIndex) === context1.getReturnState(rightIndex)) { + parentsList[count] = contextCache.join(context0.getParent(leftIndex), context1.getParent(rightIndex)); + returnStatesList[count] = context0.getReturnState(leftIndex); + canReturnLeft = canReturnLeft && parentsList[count] === context0.getParent(leftIndex); + canReturnRight = canReturnRight && parentsList[count] === context1.getParent(rightIndex); + leftIndex++; + rightIndex++; + } else if (context0.getReturnState(leftIndex) < context1.getReturnState(rightIndex)) { + parentsList[count] = context0.getParent(leftIndex); + returnStatesList[count] = context0.getReturnState(leftIndex); + canReturnRight = false; + leftIndex++; + } else { + assert(context1.getReturnState(rightIndex) < context0.getReturnState(leftIndex)); + parentsList[count] = context1.getParent(rightIndex); + returnStatesList[count] = context1.getReturnState(rightIndex); + canReturnLeft = false; + rightIndex++; + } + count++; + } + while (leftIndex < context0size) { + parentsList[count] = context0.getParent(leftIndex); + returnStatesList[count] = context0.getReturnState(leftIndex); + leftIndex++; + canReturnRight = false; + count++; + } + while (rightIndex < context1size) { + parentsList[count] = context1.getParent(rightIndex); + returnStatesList[count] = context1.getReturnState(rightIndex); + rightIndex++; + canReturnLeft = false; + count++; + } + if (canReturnLeft) { + return context0; + } else if (canReturnRight) { + return context1; + } + if (count < parentsList.length) { + parentsList = parentsList.slice(0, count); + returnStatesList = returnStatesList.slice(0, count); + } + if (parentsList.length === 0) { + return PredictionContext2.EMPTY_FULL; + } else if (parentsList.length === 1) { + return new SingletonPredictionContext2(parentsList[0], returnStatesList[0]); + } else { + return new ArrayPredictionContext2(parentsList, returnStatesList); } - buf += sortedConfigs[i].toString(void 0, true, showContext); - } - buf += "]"; - if (this._hasSemanticContext) { - buf += ",hasSemanticContext=" + this._hasSemanticContext; } - if (this._uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { - buf += ",uniqueAlt=" + this._uniqueAlt; + static isEmptyLocal(context) { + return context === PredictionContext2.EMPTY_LOCAL; } - if (this._conflictInfo != null) { - buf += ",conflictingAlts=" + this._conflictInfo.conflictedAlts; - if (!this._conflictInfo.isExact) { - buf += "*"; + static getCachedContext(context, contextCache, visited) { + if (context.isEmpty) { + return context; + } + let existing = visited.get(context); + if (existing) { + return existing; + } + existing = contextCache.get(context); + if (existing) { + visited.put(context, existing); + return existing; + } + let changed = false; + let parents = new Array(context.size); + for (let i = 0; i < parents.length; i++) { + let parent = PredictionContext2.getCachedContext(context.getParent(i), contextCache, visited); + if (changed || parent !== context.getParent(i)) { + if (!changed) { + parents = new Array(context.size); + for (let j = 0; j < context.size; j++) { + parents[j] = context.getParent(j); + } + changed = true; + } + parents[i] = parent; + } } + if (!changed) { + existing = contextCache.putIfAbsent(context, context); + visited.put(context, existing != null ? existing : context); + return context; + } + let updated; + if (parents.length === 1) { + updated = new SingletonPredictionContext2(parents[0], context.getReturnState(0)); + } else { + let returnStates = new Array(context.size); + for (let i = 0; i < context.size; i++) { + returnStates[i] = context.getReturnState(i); + } + updated = new ArrayPredictionContext2(parents, returnStates, context.hashCode()); + } + existing = contextCache.putIfAbsent(updated, updated); + visited.put(updated, existing || updated); + visited.put(context, existing || updated); + return updated; } - if (this._dipsIntoOuterContext) { - buf += ",dipsIntoOuterContext"; + appendSingleContext(returnContext, contextCache) { + return this.appendContext(PredictionContext2.EMPTY_FULL.getChild(returnContext), contextCache); } - return buf.toString(); - } - get uniqueAlt() { - return this._uniqueAlt; - } - get hasSemanticContext() { - return this._hasSemanticContext; - } - set hasSemanticContext(value) { - this.ensureWritable(); - this._hasSemanticContext = value; - } - get conflictInfo() { - return this._conflictInfo; - } - set conflictInfo(conflictInfo) { - this.ensureWritable(); - this._conflictInfo = conflictInfo; - } - get conflictingAlts() { - if (this._conflictInfo == null) { - return void 0; + getChild(returnState) { + return new SingletonPredictionContext2(this, returnState); } - return this._conflictInfo.conflictedAlts; - } - get isExactConflict() { - if (this._conflictInfo == null) { - return false; + hashCode() { + return this.cachedHashCode; } - return this._conflictInfo.isExact; - } - get dipsIntoOuterContext() { - return this._dipsIntoOuterContext; - } - get(index) { - return this.configs[index]; - } - ensureWritable() { - if (this.isReadOnly) { - throw new Error("This ATNConfigSet is read only."); - } - } - }; - __decorate([ - Decorators_1.NotNull - ], ATNConfigSet.prototype, "getRepresentedAlternatives", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "isEmpty", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "contains", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, Symbol.iterator, null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "toArray", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "containsAll", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "clear", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], ATNConfigSet.prototype, "hashCode", null); - exports.ATNConfigSet = ATNConfigSet; - }); - - // node_modules/antlr4ts/dfa/DFAState.js - var require_DFAState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DFAState = void 0; - var ATN_1 = require_ATN(); - var BitSet_1 = require_BitSet(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var PredictionContext_1 = require_PredictionContext(); - var assert = require_assert(); - var DFAState = class { - constructor(configs) { - this.stateNumber = -1; - this.configs = configs; - this.edges = new Map(); - this.contextEdges = new Map(); - } - get isContextSensitive() { - return !!this.contextSymbols; - } - isContextSymbol(symbol) { - if (!this.isContextSensitive) { - return false; + toStrings(recognizer, currentState, stop = PredictionContext2.EMPTY_FULL) { + let result = []; + outer: + for (let perm = 0; ; perm++) { + let offset = 0; + let last = true; + let p = this; + let stateNumber = currentState; + let localBuffer = ""; + localBuffer += "["; + while (!p.isEmpty && p !== stop) { + let index = 0; + if (p.size > 0) { + let bits = 1; + while (1 << bits >>> 0 < p.size) { + bits++; + } + let mask = (1 << bits >>> 0) - 1; + index = perm >> offset & mask; + last = last && index >= p.size - 1; + if (index >= p.size) { + continue outer; + } + offset += bits; + } + if (recognizer) { + if (localBuffer.length > 1) { + localBuffer += " "; + } + let atn = recognizer.atn; + let s = atn.states[stateNumber]; + let ruleName = recognizer.ruleNames[s.ruleIndex]; + localBuffer += ruleName; + } else if (p.getReturnState(index) !== PredictionContext2.EMPTY_FULL_STATE_KEY) { + if (!p.isEmpty) { + if (localBuffer.length > 1) { + localBuffer += " "; + } + localBuffer += p.getReturnState(index); + } + } + stateNumber = p.getReturnState(index); + p = p.getParent(index); + } + localBuffer += "]"; + result.push(localBuffer); + if (last) { + break; + } + } + return result; } - return this.contextSymbols.get(symbol); - } - setContextSymbol(symbol) { - assert(this.isContextSensitive); - this.contextSymbols.set(symbol); - } - setContextSensitive(atn) { - assert(!this.configs.isOutermostConfigSet); - if (this.isContextSensitive) { - return; + }; + __decorate([ + Decorators_1.Override + ], PredictionContext2.prototype, "hashCode", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], PredictionContext2, "join", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], PredictionContext2, "getCachedContext", null); + exports.PredictionContext = PredictionContext2; + var EmptyPredictionContext2 = class extends PredictionContext2 { + constructor(fullContext) { + super(PredictionContext2.calculateEmptyHashCode()); + this.fullContext = fullContext; + } + get isFullContext() { + return this.fullContext; + } + addEmptyContext() { + return this; } - if (!this.contextSymbols) { - this.contextSymbols = new BitSet_1.BitSet(); + removeEmptyContext() { + throw new Error("Cannot remove the empty context from itself."); } - } - get acceptStateInfo() { - return this._acceptStateInfo; - } - set acceptStateInfo(acceptStateInfo) { - this._acceptStateInfo = acceptStateInfo; - } - get isAcceptState() { - return !!this._acceptStateInfo; - } - get prediction() { - if (!this._acceptStateInfo) { - return ATN_1.ATN.INVALID_ALT_NUMBER; + getParent(index) { + throw new Error("index out of bounds"); } - return this._acceptStateInfo.prediction; - } - get lexerActionExecutor() { - if (!this._acceptStateInfo) { - return void 0; + getReturnState(index) { + throw new Error("index out of bounds"); } - return this._acceptStateInfo.lexerActionExecutor; - } - getTarget(symbol) { - return this.edges.get(symbol); - } - setTarget(symbol, target) { - this.edges.set(symbol, target); - } - getEdgeMap() { - return this.edges; - } - getContextTarget(invokingState) { - if (invokingState === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - invokingState = -1; + findReturnState(returnState) { + return -1; } - return this.contextEdges.get(invokingState); - } - setContextTarget(invokingState, target) { - if (!this.isContextSensitive) { - throw new Error("The state is not context sensitive."); + get size() { + return 0; } - if (invokingState === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - invokingState = -1; + appendSingleContext(returnContext, contextCache) { + return contextCache.getChild(this, returnContext); } - this.contextEdges.set(invokingState, target); - } - getContextEdgeMap() { - let map = new Map(this.contextEdges); - let existing = map.get(-1); - if (existing !== void 0) { - if (map.size === 1) { - let result = new Map(); - result.set(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY, existing); - return result; - } else { - map.delete(-1); - map.set(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY, existing); - } + appendContext(suffix, contextCache) { + return suffix; } - return map; - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(7); - hash = MurmurHash_1.MurmurHash.update(hash, this.configs.hashCode()); - hash = MurmurHash_1.MurmurHash.finish(hash, 1); - return hash; - } - equals(o) { - if (this === o) { + get isEmpty() { return true; } - if (!(o instanceof DFAState)) { - return false; + get hasEmpty() { + return true; } - let other = o; - let sameSet = this.configs.equals(other.configs); - return sameSet; - } - toString() { - let buf = ""; - buf += this.stateNumber + ":" + this.configs; - if (this.isAcceptState) { - buf += "=>"; - if (this.predicates) { - buf += this.predicates; - } else { - buf += this.prediction; - } - } - return buf.toString(); - } - }; - __decorate([ - Decorators_1.NotNull - ], DFAState.prototype, "configs", void 0); - __decorate([ - Decorators_1.NotNull - ], DFAState.prototype, "edges", void 0); - __decorate([ - Decorators_1.NotNull - ], DFAState.prototype, "contextEdges", void 0); - __decorate([ - Decorators_1.Override - ], DFAState.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], DFAState.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], DFAState.prototype, "toString", null); - exports.DFAState = DFAState; - (function(DFAState2) { - let PredPrediction = class PredPrediction { - constructor(pred, alt) { - this.alt = alt; - this.pred = pred; + equals(o) { + return this === o; } - toString() { - return "(" + this.pred + ", " + this.alt + ")"; + toStrings(recognizer, currentState, stop) { + return ["[]"]; } }; __decorate([ - Decorators_1.NotNull - ], PredPrediction.prototype, "pred", void 0); + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "addEmptyContext", null); __decorate([ Decorators_1.Override - ], PredPrediction.prototype, "toString", null); - PredPrediction = __decorate([ - __param(0, Decorators_1.NotNull) - ], PredPrediction); - DFAState2.PredPrediction = PredPrediction; - })(DFAState = exports.DFAState || (exports.DFAState = {})); - }); - - // node_modules/antlr4ts/atn/ATNSimulator.js - var require_ATNSimulator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNSimulator = void 0; - var ATNConfigSet_1 = require_ATNConfigSet(); - var DFAState_1 = require_DFAState(); - var Decorators_1 = require_Decorators(); - var PredictionContext_1 = require_PredictionContext(); - var ATNSimulator = class ATNSimulator2 { - constructor(atn) { - this.atn = atn; - } - static get ERROR() { - if (!ATNSimulator2._ERROR) { - ATNSimulator2._ERROR = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); - ATNSimulator2._ERROR.stateNumber = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; - } - return ATNSimulator2._ERROR; - } - clearDFA() { - this.atn.clearDFA(); - } - }; - __decorate([ - Decorators_1.NotNull - ], ATNSimulator.prototype, "atn", void 0); - __decorate([ - Decorators_1.NotNull - ], ATNSimulator, "ERROR", null); - ATNSimulator = __decorate([ - __param(0, Decorators_1.NotNull) - ], ATNSimulator); - exports.ATNSimulator = ATNSimulator; - (function(ATNSimulator2) { - const RULE_VARIANT_DELIMITER = "$"; - const RULE_LF_VARIANT_MARKER = "$lf$"; - const RULE_NOLF_VARIANT_MARKER = "$nolf$"; - })(ATNSimulator = exports.ATNSimulator || (exports.ATNSimulator = {})); - exports.ATNSimulator = ATNSimulator; - }); - - // node_modules/antlr4ts/ConsoleErrorListener.js - var require_ConsoleErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ConsoleErrorListener = void 0; - var ConsoleErrorListener = class { - syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { - console.error(`line ${line}:${charPositionInLine} ${msg}`); - } - }; - exports.ConsoleErrorListener = ConsoleErrorListener; - ConsoleErrorListener.INSTANCE = new ConsoleErrorListener(); - }); - - // node_modules/antlr4ts/ProxyErrorListener.js - var require_ProxyErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ProxyErrorListener = void 0; - var Decorators_1 = require_Decorators(); - var ProxyErrorListener = class { - constructor(delegates) { - this.delegates = delegates; - if (!delegates) { - throw new Error("Invalid delegates"); - } - } - getDelegates() { - return this.delegates; - } - syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { - this.delegates.forEach((listener) => { - if (listener.syntaxError) { - listener.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); - } - }); - } - }; - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull), - __param(4, Decorators_1.NotNull) - ], ProxyErrorListener.prototype, "syntaxError", null); - exports.ProxyErrorListener = ProxyErrorListener; - }); - - // node_modules/antlr4ts/Recognizer.js - var require_Recognizer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Recognizer = void 0; - var ConsoleErrorListener_1 = require_ConsoleErrorListener(); - var ProxyErrorListener_1 = require_ProxyErrorListener(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var Utils3 = require_Utils(); - var Recognizer = class { - constructor() { - this._listeners = [ConsoleErrorListener_1.ConsoleErrorListener.INSTANCE]; - this._stateNumber = -1; - } - getTokenTypeMap() { - let vocabulary = this.vocabulary; - let result = Recognizer.tokenTypeMapCache.get(vocabulary); - if (result == null) { - let intermediateResult = new Map(); - for (let i = 0; i <= this.atn.maxTokenType; i++) { - let literalName = vocabulary.getLiteralName(i); - if (literalName != null) { - intermediateResult.set(literalName, i); - } - let symbolicName = vocabulary.getSymbolicName(i); - if (symbolicName != null) { - intermediateResult.set(symbolicName, i); - } - } - intermediateResult.set("EOF", Token_1.Token.EOF); - result = intermediateResult; - Recognizer.tokenTypeMapCache.set(vocabulary, result); + ], EmptyPredictionContext2.prototype, "removeEmptyContext", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "getParent", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "getReturnState", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "findReturnState", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "appendSingleContext", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "appendContext", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "isEmpty", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "hasEmpty", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], EmptyPredictionContext2.prototype, "toStrings", null); + var ArrayPredictionContext2 = class ArrayPredictionContext3 extends PredictionContext2 { + constructor(parents, returnStates, hashCode) { + super(hashCode || PredictionContext2.calculateHashCode(parents, returnStates)); + assert(parents.length === returnStates.length); + assert(returnStates.length > 1 || returnStates[0] !== PredictionContext2.EMPTY_FULL_STATE_KEY, "Should be using PredictionContext.EMPTY instead."); + this.parents = parents; + this.returnStates = returnStates; } - return result; - } - getRuleIndexMap() { - let ruleNames = this.ruleNames; - if (ruleNames == null) { - throw new Error("The current recognizer does not provide a list of rule names."); + getParent(index) { + return this.parents[index]; } - let result = Recognizer.ruleIndexMapCache.get(ruleNames); - if (result == null) { - result = Utils3.toMap(ruleNames); - Recognizer.ruleIndexMapCache.set(ruleNames, result); + getReturnState(index) { + return this.returnStates[index]; } - return result; - } - getTokenType(tokenName) { - let ttype = this.getTokenTypeMap().get(tokenName); - if (ttype != null) { - return ttype; + findReturnState(returnState) { + return Arrays_1.Arrays.binarySearch(this.returnStates, returnState); } - return Token_1.Token.INVALID_TYPE; - } - get serializedATN() { - throw new Error("there is no serialized ATN"); - } - get atn() { - return this._interp.atn; - } - get interpreter() { - return this._interp; - } - set interpreter(interpreter) { - this._interp = interpreter; - } - get parseInfo() { - return Promise.resolve(void 0); - } - getErrorHeader(e) { - let token = e.getOffendingToken(); - if (!token) { - return ""; + get size() { + return this.returnStates.length; } - let line = token.line; - let charPositionInLine = token.charPositionInLine; - return "line " + line + ":" + charPositionInLine; - } - addErrorListener(listener) { - if (!listener) { - throw new TypeError("listener must not be null"); + get isEmpty() { + return false; } - this._listeners.push(listener); - } - removeErrorListener(listener) { - let position = this._listeners.indexOf(listener); - if (position !== -1) { - this._listeners.splice(position, 1); + get hasEmpty() { + return this.returnStates[this.returnStates.length - 1] === PredictionContext2.EMPTY_FULL_STATE_KEY; } - } - removeErrorListeners() { - this._listeners.length = 0; - } - getErrorListeners() { - return this._listeners.slice(0); - } - getErrorListenerDispatch() { - return new ProxyErrorListener_1.ProxyErrorListener(this.getErrorListeners()); - } - sempred(_localctx, ruleIndex, actionIndex) { - return true; - } - precpred(localctx, precedence) { - return true; - } - action(_localctx, ruleIndex, actionIndex) { - } - get state() { - return this._stateNumber; - } - set state(atnState) { - this._stateNumber = atnState; - } - }; - Recognizer.EOF = -1; - Recognizer.tokenTypeMapCache = new WeakMap(); - Recognizer.ruleIndexMapCache = new WeakMap(); - __decorate([ - Decorators_1.SuppressWarnings("serial"), - Decorators_1.NotNull - ], Recognizer.prototype, "_listeners", void 0); - __decorate([ - Decorators_1.NotNull - ], Recognizer.prototype, "getTokenTypeMap", null); - __decorate([ - Decorators_1.NotNull - ], Recognizer.prototype, "getRuleIndexMap", null); - __decorate([ - Decorators_1.NotNull - ], Recognizer.prototype, "serializedATN", null); - __decorate([ - Decorators_1.NotNull - ], Recognizer.prototype, "atn", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], Recognizer.prototype, "interpreter", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], Recognizer.prototype, "getErrorHeader", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], Recognizer.prototype, "addErrorListener", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], Recognizer.prototype, "removeErrorListener", null); - __decorate([ - Decorators_1.NotNull - ], Recognizer.prototype, "getErrorListeners", null); - exports.Recognizer = Recognizer; - }); - - // node_modules/antlr4ts/VocabularyImpl.js - var require_VocabularyImpl = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.VocabularyImpl = void 0; - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var VocabularyImpl3 = class { - constructor(literalNames, symbolicNames, displayNames) { - this.literalNames = literalNames; - this.symbolicNames = symbolicNames; - this.displayNames = displayNames; - this._maxTokenType = Math.max(this.displayNames.length, Math.max(this.literalNames.length, this.symbolicNames.length)) - 1; - } - get maxTokenType() { - return this._maxTokenType; - } - getLiteralName(tokenType) { - if (tokenType >= 0 && tokenType < this.literalNames.length) { - return this.literalNames[tokenType]; - } - return void 0; - } - getSymbolicName(tokenType) { - if (tokenType >= 0 && tokenType < this.symbolicNames.length) { - return this.symbolicNames[tokenType]; - } - if (tokenType === Token_1.Token.EOF) { - return "EOF"; - } - return void 0; - } - getDisplayName(tokenType) { - if (tokenType >= 0 && tokenType < this.displayNames.length) { - let displayName = this.displayNames[tokenType]; - if (displayName) { - return displayName; + addEmptyContext() { + if (this.hasEmpty) { + return this; } + let parents2 = this.parents.slice(0); + let returnStates2 = this.returnStates.slice(0); + parents2.push(PredictionContext2.EMPTY_FULL); + returnStates2.push(PredictionContext2.EMPTY_FULL_STATE_KEY); + return new ArrayPredictionContext3(parents2, returnStates2); } - let literalName = this.getLiteralName(tokenType); - if (literalName) { - return literalName; - } - let symbolicName = this.getSymbolicName(tokenType); - if (symbolicName) { - return symbolicName; - } - return String(tokenType); - } - }; - VocabularyImpl3.EMPTY_VOCABULARY = new VocabularyImpl3([], [], []); - __decorate([ - Decorators_1.NotNull - ], VocabularyImpl3.prototype, "literalNames", void 0); - __decorate([ - Decorators_1.NotNull - ], VocabularyImpl3.prototype, "symbolicNames", void 0); - __decorate([ - Decorators_1.NotNull - ], VocabularyImpl3.prototype, "displayNames", void 0); - __decorate([ - Decorators_1.Override - ], VocabularyImpl3.prototype, "maxTokenType", null); - __decorate([ - Decorators_1.Override - ], VocabularyImpl3.prototype, "getLiteralName", null); - __decorate([ - Decorators_1.Override - ], VocabularyImpl3.prototype, "getSymbolicName", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], VocabularyImpl3.prototype, "getDisplayName", null); - __decorate([ - Decorators_1.NotNull - ], VocabularyImpl3, "EMPTY_VOCABULARY", void 0); - exports.VocabularyImpl = VocabularyImpl3; - }); - - // node_modules/antlr4ts/dfa/DFASerializer.js - var require_DFASerializer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DFASerializer = void 0; - var ATNSimulator_1 = require_ATNSimulator(); - var Decorators_1 = require_Decorators(); - var PredictionContext_1 = require_PredictionContext(); - var Recognizer_1 = require_Recognizer(); - var VocabularyImpl_1 = require_VocabularyImpl(); - var DFASerializer = class { - constructor(dfa, vocabulary, ruleNames, atn) { - if (vocabulary instanceof Recognizer_1.Recognizer) { - ruleNames = vocabulary.ruleNames; - atn = vocabulary.atn; - vocabulary = vocabulary.vocabulary; - } else if (!vocabulary) { - vocabulary = VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; - } - this.dfa = dfa; - this.vocabulary = vocabulary; - this.ruleNames = ruleNames; - this.atn = atn; - } - toString() { - if (!this.dfa.s0) { - return ""; + removeEmptyContext() { + if (!this.hasEmpty) { + return this; + } + if (this.returnStates.length === 2) { + return new SingletonPredictionContext2(this.parents[0], this.returnStates[0]); + } else { + let parents2 = this.parents.slice(0, this.parents.length - 1); + let returnStates2 = this.returnStates.slice(0, this.returnStates.length - 1); + return new ArrayPredictionContext3(parents2, returnStates2); + } } - let buf = ""; - if (this.dfa.states) { - let states = new Array(...this.dfa.states.toArray()); - states.sort((o1, o2) => o1.stateNumber - o2.stateNumber); - for (let s of states) { - let edges = s.getEdgeMap(); - let edgeKeys = [...edges.keys()].sort((a, b) => a - b); - let contextEdges = s.getContextEdgeMap(); - let contextEdgeKeys = [...contextEdges.keys()].sort((a, b) => a - b); - for (let entry of edgeKeys) { - let value = edges.get(entry); - if ((value == null || value === ATNSimulator_1.ATNSimulator.ERROR) && !s.isContextSymbol(entry)) { - continue; + appendContext(suffix, contextCache) { + return ArrayPredictionContext3.appendContextImpl(this, suffix, new PredictionContext2.IdentityHashMap()); + } + static appendContextImpl(context, suffix, visited) { + if (suffix.isEmpty) { + if (PredictionContext2.isEmptyLocal(suffix)) { + if (context.hasEmpty) { + return PredictionContext2.EMPTY_LOCAL; + } + throw new Error("what to do here?"); + } + return context; + } + if (suffix.size !== 1) { + throw new Error("Appending a tree suffix is not yet supported."); + } + let result = visited.get(context); + if (!result) { + if (context.isEmpty) { + result = suffix; + } else { + let parentCount = context.size; + if (context.hasEmpty) { + parentCount--; } - let contextSymbol = false; - buf += this.getStateString(s) + "-" + this.getEdgeLabel(entry) + "->"; - if (s.isContextSymbol(entry)) { - buf += "!"; - contextSymbol = true; + let updatedParents = new Array(parentCount); + let updatedReturnStates = new Array(parentCount); + for (let i = 0; i < parentCount; i++) { + updatedReturnStates[i] = context.getReturnState(i); } - let t = value; - if (t && t.stateNumber !== ATNSimulator_1.ATNSimulator.ERROR.stateNumber) { - buf += this.getStateString(t) + "\n"; - } else if (contextSymbol) { - buf += "ctx\n"; + for (let i = 0; i < parentCount; i++) { + updatedParents[i] = ArrayPredictionContext3.appendContextImpl(context.getParent(i), suffix, visited); } - } - if (s.isContextSensitive) { - for (let entry of contextEdgeKeys) { - buf += this.getStateString(s) + "-" + this.getContextLabel(entry) + "->" + this.getStateString(contextEdges.get(entry)) + "\n"; + if (updatedParents.length === 1) { + result = new SingletonPredictionContext2(updatedParents[0], updatedReturnStates[0]); + } else { + assert(updatedParents.length > 1); + result = new ArrayPredictionContext3(updatedParents, updatedReturnStates); + } + if (context.hasEmpty) { + result = PredictionContext2.join(result, suffix); } } + visited.put(context, result); } + return result; } - let output = buf; - if (output.length === 0) { - return ""; - } - return output; - } - getContextLabel(i) { - if (i === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - return "ctx:EMPTY_FULL"; - } else if (i === PredictionContext_1.PredictionContext.EMPTY_LOCAL_STATE_KEY) { - return "ctx:EMPTY_LOCAL"; - } - if (this.atn && i > 0 && i <= this.atn.states.length) { - let state = this.atn.states[i]; - let ruleIndex = state.ruleIndex; - if (this.ruleNames && ruleIndex >= 0 && ruleIndex < this.ruleNames.length) { - return "ctx:" + String(i) + "(" + this.ruleNames[ruleIndex] + ")"; + equals(o) { + if (this === o) { + return true; + } else if (!(o instanceof ArrayPredictionContext3)) { + return false; } - } - return "ctx:" + String(i); - } - getEdgeLabel(i) { - return this.vocabulary.getDisplayName(i); - } - getStateString(s) { - if (s === ATNSimulator_1.ATNSimulator.ERROR) { - return "ERROR"; - } - let n = s.stateNumber; - let stateStr = "s" + n; - if (s.isAcceptState) { - if (s.predicates) { - stateStr = ":s" + n + "=>" + s.predicates; - } else { - stateStr = ":s" + n + "=>" + s.prediction; + if (this.hashCode() !== o.hashCode()) { + return false; } + let other = o; + return this.equalsImpl(other, new Array2DHashSet_1.Array2DHashSet()); } - if (s.isContextSensitive) { - stateStr += "*"; - for (let config of s.configs) { - if (config.reachesIntoOuterContext) { - stateStr += "*"; + equalsImpl(other, visited) { + let selfWorkList = []; + let otherWorkList = []; + selfWorkList.push(this); + otherWorkList.push(other); + while (true) { + let currentSelf = selfWorkList.pop(); + let currentOther = otherWorkList.pop(); + if (!currentSelf || !currentOther) { break; } + let operands = new PredictionContextCache_1.PredictionContextCache.IdentityCommutativePredictionContextOperands(currentSelf, currentOther); + if (!visited.add(operands)) { + continue; + } + let selfSize = operands.x.size; + if (selfSize === 0) { + if (!operands.x.equals(operands.y)) { + return false; + } + continue; + } + let otherSize = operands.y.size; + if (selfSize !== otherSize) { + return false; + } + for (let i = 0; i < selfSize; i++) { + if (operands.x.getReturnState(i) !== operands.y.getReturnState(i)) { + return false; + } + let selfParent = operands.x.getParent(i); + let otherParent = operands.y.getParent(i); + if (selfParent.hashCode() !== otherParent.hashCode()) { + return false; + } + if (selfParent !== otherParent) { + selfWorkList.push(selfParent); + otherWorkList.push(otherParent); + } + } } + return true; } - return stateStr; - } - }; - __decorate([ - Decorators_1.NotNull - ], DFASerializer.prototype, "dfa", void 0); - __decorate([ - Decorators_1.NotNull - ], DFASerializer.prototype, "vocabulary", void 0); - __decorate([ - Decorators_1.Override - ], DFASerializer.prototype, "toString", null); - exports.DFASerializer = DFASerializer; - }); - - // node_modules/antlr4ts/dfa/LexerDFASerializer.js - var require_LexerDFASerializer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerDFASerializer = void 0; - var DFASerializer_1 = require_DFASerializer(); - var Decorators_1 = require_Decorators(); - var VocabularyImpl_1 = require_VocabularyImpl(); - var LexerDFASerializer = class LexerDFASerializer extends DFASerializer_1.DFASerializer { - constructor(dfa) { - super(dfa, VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY); - } - getEdgeLabel(i) { - return "'" + String.fromCodePoint(i) + "'"; - } - }; - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], LexerDFASerializer.prototype, "getEdgeLabel", null); - LexerDFASerializer = __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerDFASerializer); - exports.LexerDFASerializer = LexerDFASerializer; - }); - - // node_modules/antlr4ts/atn/StarLoopEntryState.js - var require_StarLoopEntryState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.StarLoopEntryState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var BitSet_1 = require_BitSet(); - var DecisionState_1 = require_DecisionState(); - var Decorators_1 = require_Decorators(); - var StarLoopEntryState = class extends DecisionState_1.DecisionState { - constructor() { - super(...arguments); - this.precedenceRuleDecision = false; - this.precedenceLoopbackStates = new BitSet_1.BitSet(); - } - get stateType() { - return ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY; - } - }; - __decorate([ - Decorators_1.Override - ], StarLoopEntryState.prototype, "stateType", null); - exports.StarLoopEntryState = StarLoopEntryState; - }); - - // node_modules/antlr4ts/dfa/DFA.js - var require_DFA = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DFA = void 0; - var Array2DHashSet_1 = require_Array2DHashSet(); - var ATNConfigSet_1 = require_ATNConfigSet(); - var DFASerializer_1 = require_DFASerializer(); - var DFAState_1 = require_DFAState(); - var LexerDFASerializer_1 = require_LexerDFASerializer(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var StarLoopEntryState_1 = require_StarLoopEntryState(); - var VocabularyImpl_1 = require_VocabularyImpl(); - var DFA = class DFA { - constructor(atnStartState, decision = 0) { - this.states = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - this.nextStateNumber = 0; - if (!atnStartState.atn) { - throw new Error("The ATNState must be associated with an ATN"); - } - this.atnStartState = atnStartState; - this.atn = atnStartState.atn; - this.decision = decision; - let isPrecedenceDfa = false; - if (atnStartState instanceof StarLoopEntryState_1.StarLoopEntryState) { - if (atnStartState.precedenceRuleDecision) { - isPrecedenceDfa = true; - this.s0 = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); - this.s0full = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); - } - } - this.precedenceDfa = isPrecedenceDfa; - } - get isPrecedenceDfa() { - return this.precedenceDfa; - } - getPrecedenceStartState(precedence, fullContext) { - if (!this.isPrecedenceDfa) { - throw new Error("Only precedence DFAs may contain a precedence start state."); - } - if (fullContext) { - return this.s0full.getTarget(precedence); - } else { - return this.s0.getTarget(precedence); - } - } - setPrecedenceStartState(precedence, fullContext, startState) { - if (!this.isPrecedenceDfa) { - throw new Error("Only precedence DFAs may contain a precedence start state."); - } - if (precedence < 0) { - return; - } - if (fullContext) { - this.s0full.setTarget(precedence, startState); - } else { - this.s0.setTarget(precedence, startState); - } - } - get isEmpty() { - if (this.isPrecedenceDfa) { - return this.s0.getEdgeMap().size === 0 && this.s0full.getEdgeMap().size === 0; + }; + __decorate([ + Decorators_1.NotNull + ], ArrayPredictionContext2.prototype, "parents", void 0); + __decorate([ + Decorators_1.NotNull + ], ArrayPredictionContext2.prototype, "returnStates", void 0); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "getParent", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "getReturnState", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "findReturnState", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "isEmpty", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "hasEmpty", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "addEmptyContext", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "removeEmptyContext", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "appendContext", null); + __decorate([ + Decorators_1.Override + ], ArrayPredictionContext2.prototype, "equals", null); + ArrayPredictionContext2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], ArrayPredictionContext2); + var SingletonPredictionContext2 = class SingletonPredictionContext3 extends PredictionContext2 { + constructor(parent, returnState) { + super(PredictionContext2.calculateSingleHashCode(parent, returnState)); + this.parent = parent; + this.returnState = returnState; } - return this.s0 == null && this.s0full == null; - } - get isContextSensitive() { - if (this.isPrecedenceDfa) { - return this.s0full.getEdgeMap().size > 0; + getParent(index) { + return this.parent; } - return this.s0full != null; - } - addState(state) { - state.stateNumber = this.nextStateNumber++; - return this.states.getOrAdd(state); - } - toString(vocabulary, ruleNames) { - if (!vocabulary) { - vocabulary = VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; + getReturnState(index) { + return this.returnState; } - if (!this.s0) { - return ""; + findReturnState(returnState) { + return this.returnState === returnState ? 0 : -1; } - let serializer; - if (ruleNames) { - serializer = new DFASerializer_1.DFASerializer(this, vocabulary, ruleNames, this.atnStartState.atn); - } else { - serializer = new DFASerializer_1.DFASerializer(this, vocabulary); + get size() { + return 1; } - return serializer.toString(); - } - toLexerString() { - if (!this.s0) { - return ""; + get isEmpty() { + return false; } - let serializer = new LexerDFASerializer_1.LexerDFASerializer(this); - return serializer.toString(); - } - }; - __decorate([ - Decorators_1.NotNull - ], DFA.prototype, "states", void 0); - __decorate([ - Decorators_1.NotNull - ], DFA.prototype, "atnStartState", void 0); - __decorate([ - Decorators_1.NotNull - ], DFA.prototype, "atn", void 0); - DFA = __decorate([ - __param(0, Decorators_1.NotNull) - ], DFA); - exports.DFA = DFA; - }); - - // node_modules/antlr4ts/atn/BasicState.js - var require_BasicState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BasicState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var BasicState = class extends ATNState_1.ATNState { - get stateType() { - return ATNStateType_1.ATNStateType.BASIC; - } - }; - __decorate([ - Decorators_1.Override - ], BasicState.prototype, "stateType", null); - exports.BasicState = BasicState; - }); - - // node_modules/antlr4ts/atn/InvalidState.js - var require_InvalidState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.InvalidState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var BasicState_1 = require_BasicState(); - var Decorators_1 = require_Decorators(); - var InvalidState = class extends BasicState_1.BasicState { - get stateType() { - return ATNStateType_1.ATNStateType.INVALID_TYPE; - } - }; - __decorate([ - Decorators_1.Override - ], InvalidState.prototype, "stateType", null); - exports.InvalidState = InvalidState; - }); - - // node_modules/antlr4ts/atn/SetTransition.js - var require_SetTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.SetTransition = void 0; - var IntervalSet_1 = require_IntervalSet(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var Transition_1 = require_Transition(); - var SetTransition = class SetTransition extends Transition_1.Transition { - constructor(target, set) { - super(target); - if (set == null) { - set = IntervalSet_1.IntervalSet.of(Token_1.Token.INVALID_TYPE); - } - this.set = set; - } - get serializationType() { - return 7; - } - get label() { - return this.set; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return this.set.contains(symbol); - } - toString() { - return this.set.toString(); - } - }; - __decorate([ - Decorators_1.NotNull - ], SetTransition.prototype, "set", void 0); - __decorate([ - Decorators_1.Override - ], SetTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], SetTransition.prototype, "label", null); - __decorate([ - Decorators_1.Override - ], SetTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], SetTransition.prototype, "toString", null); - SetTransition = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.Nullable) - ], SetTransition); - exports.SetTransition = SetTransition; - }); - - // node_modules/antlr4ts/atn/NotSetTransition.js - var require_NotSetTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.NotSetTransition = void 0; - var Decorators_1 = require_Decorators(); - var SetTransition_1 = require_SetTransition(); - var NotSetTransition = class NotSetTransition extends SetTransition_1.SetTransition { - constructor(target, set) { - super(target, set); - } - get serializationType() { - return 8; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= minVocabSymbol && symbol <= maxVocabSymbol && !super.matches(symbol, minVocabSymbol, maxVocabSymbol); - } - toString() { - return "~" + super.toString(); - } - }; - __decorate([ - Decorators_1.Override - ], NotSetTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], NotSetTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override - ], NotSetTransition.prototype, "toString", null); - NotSetTransition = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.Nullable) - ], NotSetTransition); - exports.NotSetTransition = NotSetTransition; - }); - - // node_modules/antlr4ts/atn/RuleStopState.js - var require_RuleStopState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleStopState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var RuleStopState = class extends ATNState_1.ATNState { - get nonStopStateNumber() { - return -1; - } - get stateType() { - return ATNStateType_1.ATNStateType.RULE_STOP; - } - }; - __decorate([ - Decorators_1.Override - ], RuleStopState.prototype, "nonStopStateNumber", null); - __decorate([ - Decorators_1.Override - ], RuleStopState.prototype, "stateType", null); - exports.RuleStopState = RuleStopState; - }); - - // node_modules/antlr4ts/atn/RuleTransition.js - var require_RuleTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleTransition = void 0; - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var RuleTransition = class RuleTransition extends Transition_1.Transition { - constructor(ruleStart, ruleIndex, precedence, followState) { - super(ruleStart); - this.tailCall = false; - this.optimizedTailCall = false; - this.ruleIndex = ruleIndex; - this.precedence = precedence; - this.followState = followState; - } - get serializationType() { - return 3; - } - get isEpsilon() { - return true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - }; - __decorate([ - Decorators_1.NotNull - ], RuleTransition.prototype, "followState", void 0); - __decorate([ - Decorators_1.Override - ], RuleTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], RuleTransition.prototype, "isEpsilon", null); - __decorate([ - Decorators_1.Override - ], RuleTransition.prototype, "matches", null); - RuleTransition = __decorate([ - __param(0, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], RuleTransition); - exports.RuleTransition = RuleTransition; - }); - - // node_modules/antlr4ts/atn/WildcardTransition.js - var require_WildcardTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.WildcardTransition = void 0; - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var WildcardTransition = class WildcardTransition extends Transition_1.Transition { - constructor(target) { - super(target); - } - get serializationType() { - return 9; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= minVocabSymbol && symbol <= maxVocabSymbol; - } - toString() { - return "."; - } - }; - __decorate([ - Decorators_1.Override - ], WildcardTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], WildcardTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], WildcardTransition.prototype, "toString", null); - WildcardTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], WildcardTransition); - exports.WildcardTransition = WildcardTransition; - }); - - // node_modules/antlr4ts/atn/LL1Analyzer.js - var require_LL1Analyzer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LL1Analyzer = void 0; - var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); - var Array2DHashSet_1 = require_Array2DHashSet(); - var ATNConfig_1 = require_ATNConfig(); - var BitSet_1 = require_BitSet(); - var IntervalSet_1 = require_IntervalSet(); - var Decorators_1 = require_Decorators(); - var NotSetTransition_1 = require_NotSetTransition(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var PredictionContext_1 = require_PredictionContext(); - var RuleStopState_1 = require_RuleStopState(); - var RuleTransition_1 = require_RuleTransition(); - var Token_1 = require_Token(); - var WildcardTransition_1 = require_WildcardTransition(); - var LL1Analyzer = class LL1Analyzer2 { - constructor(atn) { - this.atn = atn; - } - getDecisionLookahead(s) { - if (s == null) { - return void 0; + get hasEmpty() { + return false; } - let look = new Array(s.numberOfTransitions); - for (let alt = 0; alt < s.numberOfTransitions; alt++) { - let current = new IntervalSet_1.IntervalSet(); - look[alt] = current; - let lookBusy = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - let seeThruPreds = false; - this._LOOK(s.transition(alt).target, void 0, PredictionContext_1.PredictionContext.EMPTY_LOCAL, current, lookBusy, new BitSet_1.BitSet(), seeThruPreds, false); - if (current.size === 0 || current.contains(LL1Analyzer2.HIT_PRED)) { - current = void 0; - look[alt] = current; - } + appendContext(suffix, contextCache) { + return contextCache.getChild(this.parent.appendContext(suffix, contextCache), this.returnState); } - return look; - } - LOOK(s, ctx, stopState) { - if (stopState === void 0) { - if (s.atn == null) { - throw new Error("Illegal state"); - } - stopState = s.atn.ruleToStopState[s.ruleIndex]; - } else if (stopState === null) { - stopState = void 0; + addEmptyContext() { + let parents = [this.parent, PredictionContext2.EMPTY_FULL]; + let returnStates = [this.returnState, PredictionContext2.EMPTY_FULL_STATE_KEY]; + return new ArrayPredictionContext2(parents, returnStates); } - let r = new IntervalSet_1.IntervalSet(); - let seeThruPreds = true; - let addEOF = true; - this._LOOK(s, stopState, ctx, r, new Array2DHashSet_1.Array2DHashSet(), new BitSet_1.BitSet(), seeThruPreds, addEOF); - return r; - } - _LOOK(s, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) { - let c = ATNConfig_1.ATNConfig.create(s, 0, ctx); - if (!lookBusy.add(c)) { - return; + removeEmptyContext() { + return this; } - if (s === stopState) { - if (PredictionContext_1.PredictionContext.isEmptyLocal(ctx)) { - look.add(Token_1.Token.EPSILON); - return; - } else if (ctx.isEmpty) { - if (addEOF) { - look.add(Token_1.Token.EOF); - } - return; + equals(o) { + if (o === this) { + return true; + } else if (!(o instanceof SingletonPredictionContext3)) { + return false; } - } - if (s instanceof RuleStopState_1.RuleStopState) { - if (ctx.isEmpty && !PredictionContext_1.PredictionContext.isEmptyLocal(ctx)) { - if (addEOF) { - look.add(Token_1.Token.EOF); - } - return; + let other = o; + if (this.hashCode() !== other.hashCode()) { + return false; } - let removed = calledRuleStack.get(s.ruleIndex); - try { - calledRuleStack.clear(s.ruleIndex); - for (let i = 0; i < ctx.size; i++) { - if (ctx.getReturnState(i) === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - continue; - } - let returnState = this.atn.states[ctx.getReturnState(i)]; - this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } - } finally { - if (removed) { - calledRuleStack.set(s.ruleIndex); - } + return this.returnState === other.returnState && this.parent.equals(other.parent); + } + }; + __decorate([ + Decorators_1.NotNull + ], SingletonPredictionContext2.prototype, "parent", void 0); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "getParent", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "getReturnState", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "findReturnState", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "isEmpty", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "hasEmpty", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "appendContext", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "addEmptyContext", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "removeEmptyContext", null); + __decorate([ + Decorators_1.Override + ], SingletonPredictionContext2.prototype, "equals", null); + SingletonPredictionContext2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], SingletonPredictionContext2); + exports.SingletonPredictionContext = SingletonPredictionContext2; + (function(PredictionContext3) { + PredictionContext3.EMPTY_LOCAL = new EmptyPredictionContext2(false); + PredictionContext3.EMPTY_FULL = new EmptyPredictionContext2(true); + PredictionContext3.EMPTY_LOCAL_STATE_KEY = -(1 << 31 >>> 0); + PredictionContext3.EMPTY_FULL_STATE_KEY = (1 << 31 >>> 0) - 1; + class IdentityHashMap extends Array2DHashMap_1.Array2DHashMap { + constructor() { + super(IdentityEqualityComparator.INSTANCE); + } + } + PredictionContext3.IdentityHashMap = IdentityHashMap; + class IdentityEqualityComparator { + IdentityEqualityComparator() { + } + hashCode(obj) { + return obj.hashCode(); + } + equals(a, b) { + return a === b; + } + } + IdentityEqualityComparator.INSTANCE = new IdentityEqualityComparator(); + __decorate([ + Decorators_1.Override + ], IdentityEqualityComparator.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], IdentityEqualityComparator.prototype, "equals", null); + PredictionContext3.IdentityEqualityComparator = IdentityEqualityComparator; + })(PredictionContext2 = exports.PredictionContext || (exports.PredictionContext = {})); + } + }); + + // node_modules/antlr4ts/atn/ATNConfig.js + var require_ATNConfig = __commonJS({ + "node_modules/antlr4ts/atn/ATNConfig.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNConfig = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var DecisionState_1 = require_DecisionState(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var PredictionContext_1 = require_PredictionContext(); + var SemanticContext_1 = require_SemanticContext(); + var assert = require_assert(); + var SUPPRESS_PRECEDENCE_FILTER = 2147483648; + var ATNConfig2 = class ATNConfig3 { + constructor(state, altOrConfig, context) { + if (typeof altOrConfig === "number") { + assert((altOrConfig & 16777215) === altOrConfig); + this._state = state; + this.altAndOuterContextDepth = altOrConfig; + this._context = context; + } else { + this._state = state; + this.altAndOuterContextDepth = altOrConfig.altAndOuterContextDepth; + this._context = context; } } - let n = s.numberOfTransitions; - for (let i = 0; i < n; i++) { - let t = s.transition(i); - if (t instanceof RuleTransition_1.RuleTransition) { - if (calledRuleStack.get(t.ruleIndex)) { - continue; - } - let newContext = ctx.getChild(t.followState.stateNumber); - try { - calledRuleStack.set(t.ruleIndex); - this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } finally { - calledRuleStack.clear(t.ruleIndex); - } - } else if (t instanceof AbstractPredicateTransition_1.AbstractPredicateTransition) { - if (seeThruPreds) { - this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + static create(state, alt, context, semanticContext = SemanticContext_1.SemanticContext.NONE, lexerActionExecutor) { + if (semanticContext !== SemanticContext_1.SemanticContext.NONE) { + if (lexerActionExecutor != null) { + return new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, alt, context, false); } else { - look.add(LL1Analyzer2.HIT_PRED); + return new SemanticContextATNConfig(semanticContext, state, alt, context); } - } else if (t.isEpsilon) { - this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } else if (t instanceof WildcardTransition_1.WildcardTransition) { - look.addAll(IntervalSet_1.IntervalSet.of(Token_1.Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType)); + } else if (lexerActionExecutor != null) { + return new ActionATNConfig(lexerActionExecutor, state, alt, context, false); } else { - let set = t.label; - if (set != null) { - if (t instanceof NotSetTransition_1.NotSetTransition) { - set = set.complement(IntervalSet_1.IntervalSet.of(Token_1.Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType)); - } - look.addAll(set); - } - } - } - } - }; - LL1Analyzer.HIT_PRED = Token_1.Token.INVALID_TYPE; - __decorate([ - Decorators_1.NotNull - ], LL1Analyzer.prototype, "atn", void 0); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], LL1Analyzer.prototype, "LOOK", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull), - __param(4, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull) - ], LL1Analyzer.prototype, "_LOOK", null); - LL1Analyzer = __decorate([ - __param(0, Decorators_1.NotNull) - ], LL1Analyzer); - exports.LL1Analyzer = LL1Analyzer; - }); - - // node_modules/antlr4ts/atn/ATN.js - var require_ATN = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATN = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var DFA_1 = require_DFA(); - var IntervalSet_1 = require_IntervalSet(); - var InvalidState_1 = require_InvalidState(); - var LL1Analyzer_1 = require_LL1Analyzer(); - var Decorators_1 = require_Decorators(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var PredictionContext_1 = require_PredictionContext(); - var Token_1 = require_Token(); - var assert = require_assert(); - var ATN2 = class ATN { - constructor(grammarType, maxTokenType) { - this.states = []; - this.decisionToState = []; - this.modeNameToStartState = new Map(); - this.modeToStartState = []; - this.contextCache = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - this.decisionToDFA = []; - this.modeToDFA = []; - this.LL1Table = new Map(); - this.grammarType = grammarType; - this.maxTokenType = maxTokenType; - } - clearDFA() { - this.decisionToDFA = new Array(this.decisionToState.length); - for (let i = 0; i < this.decisionToDFA.length; i++) { - this.decisionToDFA[i] = new DFA_1.DFA(this.decisionToState[i], i); - } - this.modeToDFA = new Array(this.modeToStartState.length); - for (let i = 0; i < this.modeToDFA.length; i++) { - this.modeToDFA[i] = new DFA_1.DFA(this.modeToStartState[i]); - } - this.contextCache.clear(); - this.LL1Table.clear(); - } - get contextCacheSize() { - return this.contextCache.size; - } - getCachedContext(context) { - return PredictionContext_1.PredictionContext.getCachedContext(context, this.contextCache, new PredictionContext_1.PredictionContext.IdentityHashMap()); - } - getDecisionToDFA() { - assert(this.decisionToDFA != null && this.decisionToDFA.length === this.decisionToState.length); - return this.decisionToDFA; - } - nextTokens(s, ctx) { - if (ctx) { - let anal = new LL1Analyzer_1.LL1Analyzer(this); - let next = anal.LOOK(s, ctx); - return next; - } else { - if (s.nextTokenWithinRule) { - return s.nextTokenWithinRule; + return new ATNConfig3(state, alt, context); } - s.nextTokenWithinRule = this.nextTokens(s, PredictionContext_1.PredictionContext.EMPTY_LOCAL); - s.nextTokenWithinRule.setReadonly(true); - return s.nextTokenWithinRule; - } - } - addState(state) { - state.atn = this; - state.stateNumber = this.states.length; - this.states.push(state); - } - removeState(state) { - let invalidState = new InvalidState_1.InvalidState(); - invalidState.atn = this; - invalidState.stateNumber = state.stateNumber; - this.states[state.stateNumber] = invalidState; - } - defineMode(name, s) { - this.modeNameToStartState.set(name, s); - this.modeToStartState.push(s); - this.modeToDFA.push(new DFA_1.DFA(s)); - this.defineDecisionState(s); - } - defineDecisionState(s) { - this.decisionToState.push(s); - s.decision = this.decisionToState.length - 1; - this.decisionToDFA.push(new DFA_1.DFA(s, s.decision)); - return s.decision; - } - getDecisionState(decision) { - if (this.decisionToState.length > 0) { - return this.decisionToState[decision]; - } - return void 0; - } - get numberOfDecisions() { - return this.decisionToState.length; - } - getExpectedTokens(stateNumber, context) { - if (stateNumber < 0 || stateNumber >= this.states.length) { - throw new RangeError("Invalid state number."); - } - let ctx = context; - let s = this.states[stateNumber]; - let following = this.nextTokens(s); - if (!following.contains(Token_1.Token.EPSILON)) { - return following; - } - let expected = new IntervalSet_1.IntervalSet(); - expected.addAll(following); - expected.remove(Token_1.Token.EPSILON); - while (ctx != null && ctx.invokingState >= 0 && following.contains(Token_1.Token.EPSILON)) { - let invokingState = this.states[ctx.invokingState]; - let rt = invokingState.transition(0); - following = this.nextTokens(rt.followState); - expected.addAll(following); - expected.remove(Token_1.Token.EPSILON); - ctx = ctx._parent; - } - if (following.contains(Token_1.Token.EPSILON)) { - expected.add(Token_1.Token.EOF); - } - return expected; - } - }; - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "states", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "decisionToState", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "modeNameToStartState", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "modeToStartState", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "decisionToDFA", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "modeToDFA", void 0); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "nextTokens", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ATN2.prototype, "removeState", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ATN2.prototype, "defineMode", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ATN2.prototype, "defineDecisionState", null); - __decorate([ - Decorators_1.NotNull - ], ATN2.prototype, "getExpectedTokens", null); - ATN2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], ATN2); - exports.ATN = ATN2; - (function(ATN3) { - ATN3.INVALID_ALT_NUMBER = 0; - })(ATN2 = exports.ATN || (exports.ATN = {})); - exports.ATN = ATN2; - }); - - // node_modules/antlr4ts/atn/LexerIndexedCustomAction.js - var require_LexerIndexedCustomAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerIndexedCustomAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerIndexedCustomAction = class LexerIndexedCustomAction2 { - constructor(offset, action) { - this._offset = offset; - this._action = action; - } - get offset() { - return this._offset; - } - get action() { - return this._action; - } - get actionType() { - return this._action.actionType; - } - get isPositionDependent() { - return true; - } - execute(lexer) { - this._action.execute(lexer); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this._offset); - hash = MurmurHash_1.MurmurHash.update(hash, this._action); - return MurmurHash_1.MurmurHash.finish(hash, 2); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerIndexedCustomAction2)) { - return false; } - return this._offset === obj._offset && this._action.equals(obj._action); - } - }; - __decorate([ - Decorators_1.NotNull - ], LexerIndexedCustomAction.prototype, "action", null); - __decorate([ - Decorators_1.Override - ], LexerIndexedCustomAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerIndexedCustomAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override - ], LexerIndexedCustomAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerIndexedCustomAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerIndexedCustomAction.prototype, "equals", null); - LexerIndexedCustomAction = __decorate([ - __param(1, Decorators_1.NotNull) - ], LexerIndexedCustomAction); - exports.LexerIndexedCustomAction = LexerIndexedCustomAction; - }); - - // node_modules/antlr4ts/atn/LexerActionExecutor.js - var require_LexerActionExecutor = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerActionExecutor = void 0; - var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); - var LexerIndexedCustomAction_1 = require_LexerIndexedCustomAction(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerActionExecutor = class LexerActionExecutor2 { - constructor(lexerActions) { - this._lexerActions = lexerActions; - let hash = MurmurHash_1.MurmurHash.initialize(); - for (let lexerAction of lexerActions) { - hash = MurmurHash_1.MurmurHash.update(hash, lexerAction); - } - this.cachedHashCode = MurmurHash_1.MurmurHash.finish(hash, lexerActions.length); - } - static append(lexerActionExecutor, lexerAction) { - if (!lexerActionExecutor) { - return new LexerActionExecutor2([lexerAction]); - } - let lexerActions = lexerActionExecutor._lexerActions.slice(0); - lexerActions.push(lexerAction); - return new LexerActionExecutor2(lexerActions); - } - fixOffsetBeforeMatch(offset) { - let updatedLexerActions; - for (let i = 0; i < this._lexerActions.length; i++) { - if (this._lexerActions[i].isPositionDependent && !(this._lexerActions[i] instanceof LexerIndexedCustomAction_1.LexerIndexedCustomAction)) { - if (!updatedLexerActions) { - updatedLexerActions = this._lexerActions.slice(0); - } - updatedLexerActions[i] = new LexerIndexedCustomAction_1.LexerIndexedCustomAction(offset, this._lexerActions[i]); - } - } - if (!updatedLexerActions) { - return this; + get state() { + return this._state; } - return new LexerActionExecutor2(updatedLexerActions); - } - get lexerActions() { - return this._lexerActions; - } - execute(lexer, input, startIndex) { - let requiresSeek = false; - let stopIndex = input.index; - try { - for (let lexerAction of this._lexerActions) { - if (lexerAction instanceof LexerIndexedCustomAction_1.LexerIndexedCustomAction) { - let offset = lexerAction.offset; - input.seek(startIndex + offset); - lexerAction = lexerAction.action; - requiresSeek = startIndex + offset !== stopIndex; - } else if (lexerAction.isPositionDependent) { - input.seek(stopIndex); - requiresSeek = false; - } - lexerAction.execute(lexer); - } - } finally { - if (requiresSeek) { - input.seek(stopIndex); - } + get alt() { + return this.altAndOuterContextDepth & 16777215; } - } - hashCode() { - return this.cachedHashCode; - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerActionExecutor2)) { - return false; + get context() { + return this._context; } - return this.cachedHashCode === obj.cachedHashCode && ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this._lexerActions, obj._lexerActions); - } - }; - __decorate([ - Decorators_1.NotNull - ], LexerActionExecutor.prototype, "_lexerActions", void 0); - __decorate([ - Decorators_1.NotNull - ], LexerActionExecutor.prototype, "lexerActions", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerActionExecutor.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerActionExecutor.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerActionExecutor.prototype, "equals", null); - __decorate([ - Decorators_1.NotNull, - __param(1, Decorators_1.NotNull) - ], LexerActionExecutor, "append", null); - LexerActionExecutor = __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerActionExecutor); - exports.LexerActionExecutor = LexerActionExecutor; - }); - - // node_modules/antlr4ts/LexerNoViableAltException.js - var require_LexerNoViableAltException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerNoViableAltException = void 0; - var RecognitionException_1 = require_RecognitionException(); - var Decorators_1 = require_Decorators(); - var Interval_1 = require_Interval(); - var Utils3 = require_Utils(); - var LexerNoViableAltException = class LexerNoViableAltException extends RecognitionException_1.RecognitionException { - constructor(lexer, input, startIndex, deadEndConfigs) { - super(lexer, input); - this._startIndex = startIndex; - this._deadEndConfigs = deadEndConfigs; - } - get startIndex() { - return this._startIndex; - } - get deadEndConfigs() { - return this._deadEndConfigs; - } - get inputStream() { - return super.inputStream; - } - toString() { - let symbol = ""; - if (this._startIndex >= 0 && this._startIndex < this.inputStream.size) { - symbol = this.inputStream.getText(Interval_1.Interval.of(this._startIndex, this._startIndex)); - symbol = Utils3.escapeWhitespace(symbol, false); - } - return `LexerNoViableAltException('${symbol}')`; - } - }; - __decorate([ - Decorators_1.Override - ], LexerNoViableAltException.prototype, "inputStream", null); - __decorate([ - Decorators_1.Override - ], LexerNoViableAltException.prototype, "toString", null); - LexerNoViableAltException = __decorate([ - __param(1, Decorators_1.NotNull) - ], LexerNoViableAltException); - exports.LexerNoViableAltException = LexerNoViableAltException; - }); - - // node_modules/antlr4ts/atn/OrderedATNConfigSet.js - var require_OrderedATNConfigSet = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.OrderedATNConfigSet = void 0; - var ATNConfigSet_1 = require_ATNConfigSet(); - var Decorators_1 = require_Decorators(); - var OrderedATNConfigSet = class extends ATNConfigSet_1.ATNConfigSet { - constructor(set, readonly) { - if (set != null && readonly != null) { - super(set, readonly); - } else { - super(); + set context(context) { + this._context = context; } - } - clone(readonly) { - let copy = new OrderedATNConfigSet(this, readonly); - if (!readonly && this.isReadOnly) { - copy.addAll(this); + get reachesIntoOuterContext() { + return this.outerContextDepth !== 0; } - return copy; - } - getKey(e) { - return {state: 0, alt: e.hashCode()}; - } - canMerge(left, leftKey, right) { - return left.equals(right); - } - }; - __decorate([ - Decorators_1.Override - ], OrderedATNConfigSet.prototype, "clone", null); - __decorate([ - Decorators_1.Override - ], OrderedATNConfigSet.prototype, "getKey", null); - __decorate([ - Decorators_1.Override - ], OrderedATNConfigSet.prototype, "canMerge", null); - exports.OrderedATNConfigSet = OrderedATNConfigSet; - }); - - // node_modules/antlr4ts/atn/LexerATNSimulator.js - var require_LexerATNSimulator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerATNSimulator = void 0; - var AcceptStateInfo_1 = require_AcceptStateInfo(); - var ATN_1 = require_ATN(); - var ATNConfig_1 = require_ATNConfig(); - var ATNConfigSet_1 = require_ATNConfigSet(); - var ATNSimulator_1 = require_ATNSimulator(); - var DFAState_1 = require_DFAState(); - var Interval_1 = require_Interval(); - var IntStream_1 = require_IntStream(); - var Lexer_1 = require_Lexer(); - var LexerActionExecutor_1 = require_LexerActionExecutor(); - var LexerNoViableAltException_1 = require_LexerNoViableAltException(); - var Decorators_1 = require_Decorators(); - var OrderedATNConfigSet_1 = require_OrderedATNConfigSet(); - var PredictionContext_1 = require_PredictionContext(); - var RuleStopState_1 = require_RuleStopState(); - var Token_1 = require_Token(); - var assert = require_assert(); - var LexerATNSimulator2 = class LexerATNSimulator3 extends ATNSimulator_1.ATNSimulator { - constructor(atn, recog) { - super(atn); - this.optimize_tail_calls = true; - this.startIndex = -1; - this._line = 1; - this._charPositionInLine = 0; - this.mode = Lexer_1.Lexer.DEFAULT_MODE; - this.prevAccept = new LexerATNSimulator3.SimState(); - this.recog = recog; - } - copyState(simulator) { - this._charPositionInLine = simulator.charPositionInLine; - this._line = simulator._line; - this.mode = simulator.mode; - this.startIndex = simulator.startIndex; - } - match(input, mode) { - this.mode = mode; - let mark = input.mark(); - try { - this.startIndex = input.index; - this.prevAccept.reset(); - let s0 = this.atn.modeToDFA[mode].s0; - if (s0 == null) { - return this.matchATN(input); - } else { - return this.execATN(input, s0); - } - } finally { - input.release(mark); + get outerContextDepth() { + return this.altAndOuterContextDepth >>> 24 & 127; } - } - reset() { - this.prevAccept.reset(); - this.startIndex = -1; - this._line = 1; - this._charPositionInLine = 0; - this.mode = Lexer_1.Lexer.DEFAULT_MODE; - } - matchATN(input) { - let startState = this.atn.modeToStartState[this.mode]; - if (LexerATNSimulator3.debug) { - console.log(`matchATN mode ${this.mode} start: ${startState}`); - } - let old_mode = this.mode; - let s0_closure = this.computeStartState(input, startState); - let suppressEdge = s0_closure.hasSemanticContext; - if (suppressEdge) { - s0_closure.hasSemanticContext = false; + set outerContextDepth(outerContextDepth) { + assert(outerContextDepth >= 0); + outerContextDepth = Math.min(outerContextDepth, 127); + this.altAndOuterContextDepth = outerContextDepth << 24 | (this.altAndOuterContextDepth & ~2130706432) >>> 0; } - let next = this.addDFAState(s0_closure); - if (!suppressEdge) { - let dfa = this.atn.modeToDFA[this.mode]; - if (!dfa.s0) { - dfa.s0 = next; - } else { - next = dfa.s0; - } + get lexerActionExecutor() { + return void 0; } - let predict = this.execATN(input, next); - if (LexerATNSimulator3.debug) { - console.log(`DFA after matchATN: ${this.atn.modeToDFA[old_mode].toLexerString()}`); + get semanticContext() { + return SemanticContext_1.SemanticContext.NONE; } - return predict; - } - execATN(input, ds0) { - if (LexerATNSimulator3.debug) { - console.log(`start state closure=${ds0.configs}`); + get hasPassedThroughNonGreedyDecision() { + return false; } - if (ds0.isAcceptState) { - this.captureSimState(this.prevAccept, input, ds0); + clone() { + return this.transform(this.state, false); } - let t = input.LA(1); - let s = ds0; - while (true) { - if (LexerATNSimulator3.debug) { - console.log(`execATN loop starting closure: ${s.configs}`); - } - let target = this.getExistingTargetState(s, t); - if (target == null) { - target = this.computeTargetState(input, s, t); - } - if (target === ATNSimulator_1.ATNSimulator.ERROR) { - break; - } - if (t !== IntStream_1.IntStream.EOF) { - this.consume(input); + transform(state, checkNonGreedy, arg2) { + if (arg2 == null) { + return this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, this.lexerActionExecutor); + } else if (arg2 instanceof PredictionContext_1.PredictionContext) { + return this.transformImpl(state, arg2, this.semanticContext, checkNonGreedy, this.lexerActionExecutor); + } else if (arg2 instanceof SemanticContext_1.SemanticContext) { + return this.transformImpl(state, this._context, arg2, checkNonGreedy, this.lexerActionExecutor); + } else { + return this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, arg2); } - if (target.isAcceptState) { - this.captureSimState(this.prevAccept, input, target); - if (t === IntStream_1.IntStream.EOF) { - break; + } + transformImpl(state, context, semanticContext, checkNonGreedy, lexerActionExecutor) { + let passedThroughNonGreedy = checkNonGreedy && ATNConfig3.checkNonGreedyDecision(this, state); + if (semanticContext !== SemanticContext_1.SemanticContext.NONE) { + if (lexerActionExecutor != null || passedThroughNonGreedy) { + return new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, this, context, passedThroughNonGreedy); + } else { + return new SemanticContextATNConfig(semanticContext, state, this, context); } + } else if (lexerActionExecutor != null || passedThroughNonGreedy) { + return new ActionATNConfig(lexerActionExecutor, state, this, context, passedThroughNonGreedy); + } else { + return new ATNConfig3(state, this, context); } - t = input.LA(1); - s = target; - } - return this.failOrAccept(this.prevAccept, input, s.configs, t); - } - getExistingTargetState(s, t) { - let target = s.getTarget(t); - if (LexerATNSimulator3.debug && target != null) { - console.log("reuse state " + s.stateNumber + " edge to " + target.stateNumber); } - return target; - } - computeTargetState(input, s, t) { - let reach = new OrderedATNConfigSet_1.OrderedATNConfigSet(); - this.getReachableConfigSet(input, s.configs, reach, t); - if (reach.isEmpty) { - if (!reach.hasSemanticContext) { - this.addDFAEdge(s, t, ATNSimulator_1.ATNSimulator.ERROR); - } - return ATNSimulator_1.ATNSimulator.ERROR; + static checkNonGreedyDecision(source, target) { + return source.hasPassedThroughNonGreedyDecision || target instanceof DecisionState_1.DecisionState && target.nonGreedy; } - return this.addDFAEdge(s, t, reach); - } - failOrAccept(prevAccept, input, reach, t) { - if (prevAccept.dfaState != null) { - let lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor; - this.accept(input, lexerActionExecutor, this.startIndex, prevAccept.index, prevAccept.line, prevAccept.charPos); - return prevAccept.dfaState.prediction; - } else { - if (t === IntStream_1.IntStream.EOF && input.index === this.startIndex) { - return Token_1.Token.EOF; + appendContext(context, contextCache) { + if (typeof context === "number") { + let appendedContext = this.context.appendSingleContext(context, contextCache); + let result = this.transform(this.state, false, appendedContext); + return result; + } else { + let appendedContext = this.context.appendContext(context, contextCache); + let result = this.transform(this.state, false, appendedContext); + return result; } - throw new LexerNoViableAltException_1.LexerNoViableAltException(this.recog, input, this.startIndex, reach); } - } - getReachableConfigSet(input, closure, reach, t) { - let skipAlt = ATN_1.ATN.INVALID_ALT_NUMBER; - for (let c of closure) { - let currentAltReachedAcceptState = c.alt === skipAlt; - if (currentAltReachedAcceptState && c.hasPassedThroughNonGreedyDecision) { - continue; + contains(subconfig) { + if (this.state.stateNumber !== subconfig.state.stateNumber || this.alt !== subconfig.alt || !this.semanticContext.equals(subconfig.semanticContext)) { + return false; } - if (LexerATNSimulator3.debug) { - console.log(`testing ${this.getTokenName(t)} at ${c.toString(this.recog, true)}`); - } - let n = c.state.numberOfOptimizedTransitions; - for (let ti = 0; ti < n; ti++) { - let trans = c.state.getOptimizedTransition(ti); - let target = this.getReachableTarget(trans, t); - if (target != null) { - let lexerActionExecutor = c.lexerActionExecutor; - let config; - if (lexerActionExecutor != null) { - lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex); - config = c.transform(target, true, lexerActionExecutor); - } else { - assert(c.lexerActionExecutor == null); - config = c.transform(target, true); - } - let treatEofAsEpsilon = t === IntStream_1.IntStream.EOF; - if (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) { - skipAlt = c.alt; - break; + let leftWorkList = []; + let rightWorkList = []; + leftWorkList.push(this.context); + rightWorkList.push(subconfig.context); + while (true) { + let left = leftWorkList.pop(); + let right = rightWorkList.pop(); + if (!left || !right) { + break; + } + if (left === right) { + return true; + } + if (left.size < right.size) { + return false; + } + if (right.isEmpty) { + return left.hasEmpty; + } else { + for (let i = 0; i < right.size; i++) { + let index = left.findReturnState(right.getReturnState(i)); + if (index < 0) { + return false; + } + leftWorkList.push(left.getParent(index)); + rightWorkList.push(right.getParent(i)); } } } + return false; } - } - accept(input, lexerActionExecutor, startIndex, index, line, charPos) { - if (LexerATNSimulator3.debug) { - console.log(`ACTION ${lexerActionExecutor}`); + get isPrecedenceFilterSuppressed() { + return (this.altAndOuterContextDepth & SUPPRESS_PRECEDENCE_FILTER) !== 0; } - input.seek(index); - this._line = line; - this._charPositionInLine = charPos; - if (lexerActionExecutor != null && this.recog != null) { - lexerActionExecutor.execute(this.recog, input, startIndex); + set isPrecedenceFilterSuppressed(value) { + if (value) { + this.altAndOuterContextDepth |= SUPPRESS_PRECEDENCE_FILTER; + } else { + this.altAndOuterContextDepth &= ~SUPPRESS_PRECEDENCE_FILTER; + } } - } - getReachableTarget(trans, t) { - if (trans.matches(t, Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE)) { - return trans.target; + equals(o) { + if (this === o) { + return true; + } else if (!(o instanceof ATNConfig3)) { + return false; + } + return this.state.stateNumber === o.state.stateNumber && this.alt === o.alt && this.reachesIntoOuterContext === o.reachesIntoOuterContext && this.context.equals(o.context) && this.semanticContext.equals(o.semanticContext) && this.isPrecedenceFilterSuppressed === o.isPrecedenceFilterSuppressed && this.hasPassedThroughNonGreedyDecision === o.hasPassedThroughNonGreedyDecision && ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE.equals(this.lexerActionExecutor, o.lexerActionExecutor); } - return void 0; - } - computeStartState(input, p) { - let initialContext = PredictionContext_1.PredictionContext.EMPTY_FULL; - let configs = new OrderedATNConfigSet_1.OrderedATNConfigSet(); - for (let i = 0; i < p.numberOfTransitions; i++) { - let target = p.transition(i).target; - let c = ATNConfig_1.ATNConfig.create(target, i + 1, initialContext); - this.closure(input, c, configs, false, false, false); + hashCode() { + let hashCode = MurmurHash_1.MurmurHash.initialize(7); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.state.stateNumber); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.alt); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.reachesIntoOuterContext ? 1 : 0); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.context); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.semanticContext); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.hasPassedThroughNonGreedyDecision ? 1 : 0); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, this.lexerActionExecutor); + hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 7); + return hashCode; } - return configs; - } - closure(input, config, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon) { - if (LexerATNSimulator3.debug) { - console.log("closure(" + config.toString(this.recog, true) + ")"); - } - if (config.state instanceof RuleStopState_1.RuleStopState) { - if (LexerATNSimulator3.debug) { - if (this.recog != null) { - console.log(`closure at ${this.recog.ruleNames[config.state.ruleIndex]} rule stop ${config}`); - } else { - console.log(`closure at rule stop ${config}`); + toDotString() { + let builder = ""; + builder += "digraph G {\n"; + builder += "rankdir=LR;\n"; + let visited = new Array2DHashMap_1.Array2DHashMap(PredictionContext_1.PredictionContext.IdentityEqualityComparator.INSTANCE); + let workList = []; + function getOrAddContext(context) { + let newNumber = visited.size; + let result = visited.putIfAbsent(context, newNumber); + if (result != null) { + return result; + } + workList.push(context); + return newNumber; + } + workList.push(this.context); + visited.put(this.context, 0); + while (true) { + let current = workList.pop(); + if (!current) { + break; } - } - let context = config.context; - if (context.isEmpty) { - configs.add(config); - return true; - } else if (context.hasEmpty) { - configs.add(config.transform(config.state, true, PredictionContext_1.PredictionContext.EMPTY_FULL)); - currentAltReachedAcceptState = true; - } - for (let i = 0; i < context.size; i++) { - let returnStateNumber = context.getReturnState(i); - if (returnStateNumber === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - continue; + for (let i = 0; i < current.size; i++) { + builder += " s" + getOrAddContext(current); + builder += "->"; + builder += "s" + getOrAddContext(current.getParent(i)); + builder += '[label="' + current.getReturnState(i) + '"];\n'; } - let newContext = context.getParent(i); - let returnState = this.atn.states[returnStateNumber]; - let c = config.transform(returnState, false, newContext); - currentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); } - return currentAltReachedAcceptState; + builder += "}\n"; + return builder.toString(); } - if (!config.state.onlyHasEpsilonTransitions) { - if (!currentAltReachedAcceptState || !config.hasPassedThroughNonGreedyDecision) { - configs.add(config); + toString(recog, showAlt, showContext) { + if (showContext == null) { + showContext = showAlt != null; } - } - let p = config.state; - for (let i = 0; i < p.numberOfOptimizedTransitions; i++) { - let t = p.getOptimizedTransition(i); - let c = this.getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon); - if (c != null) { - currentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + if (showAlt == null) { + showAlt = true; } - } - return currentAltReachedAcceptState; - } - getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon) { - let c; - switch (t.serializationType) { - case 3: - let ruleTransition = t; - if (this.optimize_tail_calls && ruleTransition.optimizedTailCall && !config.context.hasEmpty) { - c = config.transform(t.target, true); + let buf = ""; + let contexts; + if (showContext) { + contexts = this.context.toStrings(recog, this.state.stateNumber); + } else { + contexts = ["?"]; + } + let first = true; + for (let contextDesc of contexts) { + if (first) { + first = false; } else { - let newContext = config.context.getChild(ruleTransition.followState.stateNumber); - c = config.transform(t.target, true, newContext); + buf += ", "; } - break; - case 10: - throw new Error("Precedence predicates are not supported in lexers."); - case 4: - let pt = t; - if (LexerATNSimulator3.debug) { - console.log("EVAL rule " + pt.ruleIndex + ":" + pt.predIndex); + buf += "("; + buf += this.state; + if (showAlt) { + buf += ","; + buf += this.alt; } - configs.hasSemanticContext = true; - if (this.evaluatePredicate(input, pt.ruleIndex, pt.predIndex, speculative)) { - c = config.transform(t.target, true); - } else { - c = void 0; + if (this.context) { + buf += ","; + buf += contextDesc; } - break; - case 6: - if (config.context.hasEmpty) { - let lexerActionExecutor = LexerActionExecutor_1.LexerActionExecutor.append(config.lexerActionExecutor, this.atn.lexerActions[t.actionIndex]); - c = config.transform(t.target, true, lexerActionExecutor); - break; - } else { - c = config.transform(t.target, true); - break; + if (this.semanticContext !== SemanticContext_1.SemanticContext.NONE) { + buf += ","; + buf += this.semanticContext; } - case 1: - c = config.transform(t.target, true); - break; - case 5: - case 2: - case 7: - if (treatEofAsEpsilon) { - if (t.matches(IntStream_1.IntStream.EOF, Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE)) { - c = config.transform(t.target, false); - break; - } + if (this.reachesIntoOuterContext) { + buf += ",up=" + this.outerContextDepth; } - c = void 0; - break; - default: - c = void 0; - break; - } - return c; - } - evaluatePredicate(input, ruleIndex, predIndex, speculative) { - if (this.recog == null) { - return true; + buf += ")"; + } + return buf.toString(); } - if (!speculative) { - return this.recog.sempred(void 0, ruleIndex, predIndex); + }; + __decorate([ + Decorators_1.NotNull + ], ATNConfig2.prototype, "_state", void 0); + __decorate([ + Decorators_1.NotNull + ], ATNConfig2.prototype, "_context", void 0); + __decorate([ + Decorators_1.NotNull + ], ATNConfig2.prototype, "state", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ATNConfig2.prototype, "context", null); + __decorate([ + Decorators_1.NotNull + ], ATNConfig2.prototype, "semanticContext", null); + __decorate([ + Decorators_1.Override + ], ATNConfig2.prototype, "clone", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ATNConfig2.prototype, "transformImpl", null); + __decorate([ + Decorators_1.Override + ], ATNConfig2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], ATNConfig2.prototype, "hashCode", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], ATNConfig2, "create", null); + ATNConfig2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ATNConfig2); + exports.ATNConfig = ATNConfig2; + var SemanticContextATNConfig = class SemanticContextATNConfig extends ATNConfig2 { + constructor(semanticContext, state, altOrConfig, context) { + if (typeof altOrConfig === "number") { + super(state, altOrConfig, context); + } else { + super(state, altOrConfig, context); + } + this._semanticContext = semanticContext; } - let savedCharPositionInLine = this._charPositionInLine; - let savedLine = this._line; - let index = input.index; - let marker = input.mark(); - try { - this.consume(input); - return this.recog.sempred(void 0, ruleIndex, predIndex); - } finally { - this._charPositionInLine = savedCharPositionInLine; - this._line = savedLine; - input.seek(index); - input.release(marker); + get semanticContext() { + return this._semanticContext; } - } - captureSimState(settings, input, dfaState) { - settings.index = input.index; - settings.line = this._line; - settings.charPos = this._charPositionInLine; - settings.dfaState = dfaState; - } - addDFAEdge(p, t, q) { - if (q instanceof ATNConfigSet_1.ATNConfigSet) { - let suppressEdge = q.hasSemanticContext; - if (suppressEdge) { - q.hasSemanticContext = false; - } - let to = this.addDFAState(q); - if (suppressEdge) { - return to; - } - this.addDFAEdge(p, t, to); - return to; - } else { - if (LexerATNSimulator3.debug) { - console.log("EDGE " + p + " -> " + q + " upon " + String.fromCharCode(t)); - } - if (p != null) { - p.setTarget(t, q); + }; + __decorate([ + Decorators_1.NotNull + ], SemanticContextATNConfig.prototype, "_semanticContext", void 0); + __decorate([ + Decorators_1.Override + ], SemanticContextATNConfig.prototype, "semanticContext", null); + SemanticContextATNConfig = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], SemanticContextATNConfig); + var ActionATNConfig = class ActionATNConfig extends ATNConfig2 { + constructor(lexerActionExecutor, state, altOrConfig, context, passedThroughNonGreedyDecision) { + if (typeof altOrConfig === "number") { + super(state, altOrConfig, context); + } else { + super(state, altOrConfig, context); + if (altOrConfig.semanticContext !== SemanticContext_1.SemanticContext.NONE) { + throw new Error("Not supported"); + } } + this._lexerActionExecutor = lexerActionExecutor; + this.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision; } - } - addDFAState(configs) { - assert(!configs.hasSemanticContext); - let proposed = new DFAState_1.DFAState(configs); - let existing = this.atn.modeToDFA[this.mode].states.get(proposed); - if (existing != null) { - return existing; + get lexerActionExecutor() { + return this._lexerActionExecutor; } - configs.optimizeConfigs(this); - let newState = new DFAState_1.DFAState(configs.clone(true)); - let firstConfigWithRuleStopState; - for (let c of configs) { - if (c.state instanceof RuleStopState_1.RuleStopState) { - firstConfigWithRuleStopState = c; - break; - } + get hasPassedThroughNonGreedyDecision() { + return this.passedThroughNonGreedyDecision; } - if (firstConfigWithRuleStopState != null) { - let prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex]; - let lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor; - newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(prediction, lexerActionExecutor); + }; + __decorate([ + Decorators_1.Override + ], ActionATNConfig.prototype, "lexerActionExecutor", null); + __decorate([ + Decorators_1.Override + ], ActionATNConfig.prototype, "hasPassedThroughNonGreedyDecision", null); + ActionATNConfig = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ActionATNConfig); + var ActionSemanticContextATNConfig = class ActionSemanticContextATNConfig extends SemanticContextATNConfig { + constructor(lexerActionExecutor, semanticContext, state, altOrConfig, context, passedThroughNonGreedyDecision) { + if (typeof altOrConfig === "number") { + super(semanticContext, state, altOrConfig, context); + } else { + super(semanticContext, state, altOrConfig, context); + } + this._lexerActionExecutor = lexerActionExecutor; + this.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision; } - return this.atn.modeToDFA[this.mode].addState(newState); - } - getDFA(mode) { - return this.atn.modeToDFA[mode]; - } - getText(input) { - return input.getText(Interval_1.Interval.of(this.startIndex, input.index - 1)); - } - get line() { - return this._line; - } - set line(line) { - this._line = line; - } - get charPositionInLine() { - return this._charPositionInLine; - } - set charPositionInLine(charPositionInLine) { - this._charPositionInLine = charPositionInLine; - } - consume(input) { - let curChar = input.LA(1); - if (curChar === "\n".charCodeAt(0)) { - this._line++; - this._charPositionInLine = 0; - } else { - this._charPositionInLine++; - } - input.consume(); - } - getTokenName(t) { - if (t === -1) { - return "EOF"; - } - return "'" + String.fromCharCode(t) + "'"; - } - }; - __decorate([ - Decorators_1.NotNull - ], LexerATNSimulator2.prototype, "prevAccept", void 0); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "copyState", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "match", null); - __decorate([ - Decorators_1.Override - ], LexerATNSimulator2.prototype, "reset", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "matchATN", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "execATN", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "getExistingTargetState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "computeTargetState", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "getReachableConfigSet", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "accept", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "computeStartState", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "closure", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "getEpsilonTarget", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "evaluatePredicate", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "captureSimState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "addDFAState", null); - __decorate([ - Decorators_1.NotNull - ], LexerATNSimulator2.prototype, "getDFA", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "getText", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2.prototype, "consume", null); - __decorate([ - Decorators_1.NotNull - ], LexerATNSimulator2.prototype, "getTokenName", null); - LexerATNSimulator2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], LexerATNSimulator2); - exports.LexerATNSimulator = LexerATNSimulator2; - (function(LexerATNSimulator3) { - LexerATNSimulator3.debug = false; - LexerATNSimulator3.dfa_debug = false; - class SimState { - constructor() { - this.index = -1; - this.line = 0; - this.charPos = -1; + get lexerActionExecutor() { + return this._lexerActionExecutor; } - reset() { - this.index = -1; - this.line = 0; - this.charPos = -1; - this.dfaState = void 0; + get hasPassedThroughNonGreedyDecision() { + return this.passedThroughNonGreedyDecision; } - } - LexerATNSimulator3.SimState = SimState; - })(LexerATNSimulator2 = exports.LexerATNSimulator || (exports.LexerATNSimulator = {})); - exports.LexerATNSimulator = LexerATNSimulator2; + }; + __decorate([ + Decorators_1.Override + ], ActionSemanticContextATNConfig.prototype, "lexerActionExecutor", null); + __decorate([ + Decorators_1.Override + ], ActionSemanticContextATNConfig.prototype, "hasPassedThroughNonGreedyDecision", null); + ActionSemanticContextATNConfig = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ActionSemanticContextATNConfig); + } }); - // node_modules/antlr4ts/Lexer.js - var require_Lexer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Lexer = void 0; - var CommonTokenFactory_1 = require_CommonTokenFactory(); - var IntegerStack_1 = require_IntegerStack(); - var Interval_1 = require_Interval(); - var IntStream_1 = require_IntStream(); - var LexerATNSimulator_1 = require_LexerATNSimulator(); - var LexerNoViableAltException_1 = require_LexerNoViableAltException(); - var Decorators_1 = require_Decorators(); - var Recognizer_1 = require_Recognizer(); - var Token_1 = require_Token(); - var Lexer2 = class extends Recognizer_1.Recognizer { - constructor(input) { - super(); - this._factory = CommonTokenFactory_1.CommonTokenFactory.DEFAULT; - this._tokenStartCharIndex = -1; - this._tokenStartLine = 0; - this._tokenStartCharPositionInLine = 0; - this._hitEOF = false; - this._channel = 0; - this._type = 0; - this._modeStack = new IntegerStack_1.IntegerStack(); - this._mode = Lexer2.DEFAULT_MODE; - this._input = input; - this._tokenFactorySourcePair = {source: this, stream: input}; - } - static get DEFAULT_TOKEN_CHANNEL() { - return Token_1.Token.DEFAULT_CHANNEL; - } - static get HIDDEN() { - return Token_1.Token.HIDDEN_CHANNEL; - } - reset(resetInput) { - if (resetInput === void 0 || resetInput) { - this._input.seek(0); - } - this._token = void 0; - this._type = Token_1.Token.INVALID_TYPE; - this._channel = Token_1.Token.DEFAULT_CHANNEL; - this._tokenStartCharIndex = -1; - this._tokenStartCharPositionInLine = -1; - this._tokenStartLine = -1; - this._text = void 0; - this._hitEOF = false; - this._mode = Lexer2.DEFAULT_MODE; - this._modeStack.clear(); - this.interpreter.reset(); - } - nextToken() { - if (this._input == null) { - throw new Error("nextToken requires a non-null input stream."); - } - let tokenStartMarker = this._input.mark(); - try { - outer: - while (true) { - if (this._hitEOF) { - return this.emitEOF(); - } - this._token = void 0; - this._channel = Token_1.Token.DEFAULT_CHANNEL; - this._tokenStartCharIndex = this._input.index; - this._tokenStartCharPositionInLine = this.interpreter.charPositionInLine; - this._tokenStartLine = this.interpreter.line; - this._text = void 0; - do { - this._type = Token_1.Token.INVALID_TYPE; - let ttype; - try { - ttype = this.interpreter.match(this._input, this._mode); - } catch (e) { - if (e instanceof LexerNoViableAltException_1.LexerNoViableAltException) { - this.notifyListeners(e); - this.recover(e); - ttype = Lexer2.SKIP; - } else { - throw e; - } - } - if (this._input.LA(1) === IntStream_1.IntStream.EOF) { - this._hitEOF = true; - } - if (this._type === Token_1.Token.INVALID_TYPE) { - this._type = ttype; - } - if (this._type === Lexer2.SKIP) { - continue outer; - } - } while (this._type === Lexer2.MORE); - if (this._token == null) { - return this.emit(); - } - return this._token; - } - } finally { - this._input.release(tokenStartMarker); - } - } - skip() { - this._type = Lexer2.SKIP; - } - more() { - this._type = Lexer2.MORE; - } - mode(m) { - this._mode = m; - } - pushMode(m) { - if (LexerATNSimulator_1.LexerATNSimulator.debug) { - console.log("pushMode " + m); - } - this._modeStack.push(this._mode); - this.mode(m); - } - popMode() { - if (this._modeStack.isEmpty) { - throw new Error("EmptyStackException"); - } - if (LexerATNSimulator_1.LexerATNSimulator.debug) { - console.log("popMode back to " + this._modeStack.peek()); + // node_modules/antlr4ts/misc/BitSet.js + var require_BitSet = __commonJS({ + "node_modules/antlr4ts/misc/BitSet.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BitSet = void 0; + var util = require_util(); + var MurmurHash_1 = require_MurmurHash(); + var EMPTY_DATA = new Uint16Array(0); + function getIndex(bitNumber) { + return bitNumber >>> 4; + } + function unIndex(n) { + return n * 16; + } + function findLSBSet(word) { + let bit = 1; + for (let i = 0; i < 16; i++) { + if ((word & bit) !== 0) { + return i; + } + bit = bit << 1 >>> 0; } - this.mode(this._modeStack.pop()); - return this._mode; - } - get tokenFactory() { - return this._factory; - } - set tokenFactory(factory) { - this._factory = factory; - } - get inputStream() { - return this._input; + throw new RangeError("No specified bit found"); } - set inputStream(input) { - this.reset(false); - this._input = input; - this._tokenFactorySourcePair = {source: this, stream: this._input}; - } - get sourceName() { - return this._input.sourceName; - } - emit(token) { - if (!token) { - token = this._factory.create(this._tokenFactorySourcePair, this._type, this._text, this._channel, this._tokenStartCharIndex, this.charIndex - 1, this._tokenStartLine, this._tokenStartCharPositionInLine); + function findMSBSet(word) { + let bit = 1 << 15 >>> 0; + for (let i = 15; i >= 0; i--) { + if ((word & bit) !== 0) { + return i; + } + bit = bit >>> 1; } - this._token = token; - return token; - } - emitEOF() { - let cpos = this.charPositionInLine; - let line = this.line; - let eof = this._factory.create(this._tokenFactorySourcePair, Token_1.Token.EOF, void 0, Token_1.Token.DEFAULT_CHANNEL, this._input.index, this._input.index - 1, line, cpos); - this.emit(eof); - return eof; - } - get line() { - return this.interpreter.line; - } - set line(line) { - this.interpreter.line = line; - } - get charPositionInLine() { - return this.interpreter.charPositionInLine; + throw new RangeError("No specified bit found"); } - set charPositionInLine(charPositionInLine) { - this.interpreter.charPositionInLine = charPositionInLine; - } - get charIndex() { - return this._input.index; - } - get text() { - if (this._text != null) { - return this._text; + function bitsFor(fromBit, toBit) { + fromBit &= 15; + toBit &= 15; + if (fromBit === toBit) { + return 1 << fromBit >>> 0; } - return this.interpreter.getText(this._input); - } - set text(text) { - this._text = text; - } - get token() { - return this._token; - } - set token(_token) { - this._token = _token; - } - set type(ttype) { - this._type = ttype; - } - get type() { - return this._type; + return 65535 >>> 15 - toBit ^ 65535 >>> 16 - fromBit; } - set channel(channel) { - this._channel = channel; - } - get channel() { - return this._channel; - } - getAllTokens() { - let tokens2 = []; - let t = this.nextToken(); - while (t.type !== Token_1.Token.EOF) { - tokens2.push(t); - t = this.nextToken(); + var POP_CNT = new Uint8Array(65536); + for (let i = 0; i < 16; i++) { + const stride = 1 << i >>> 0; + let index = 0; + while (index < POP_CNT.length) { + index += stride; + for (let j = 0; j < stride; j++) { + POP_CNT[index]++; + index++; + } + } + } + var BitSet2 = class { + constructor(arg) { + if (!arg) { + this.data = EMPTY_DATA; + } else if (typeof arg === "number") { + if (arg < 0) { + throw new RangeError("nbits cannot be negative"); + } else { + this.data = new Uint16Array(getIndex(arg - 1) + 1); + } + } else { + if (arg instanceof BitSet2) { + this.data = arg.data.slice(0); + } else { + let max = -1; + for (let v of arg) { + if (max < v) { + max = v; + } + } + this.data = new Uint16Array(getIndex(max - 1) + 1); + for (let v of arg) { + this.set(v); + } + } + } } - return tokens2; - } - notifyListeners(e) { - let text = this._input.getText(Interval_1.Interval.of(this._tokenStartCharIndex, this._input.index)); - let msg = "token recognition error at: '" + this.getErrorDisplay(text) + "'"; - let listener = this.getErrorListenerDispatch(); - if (listener.syntaxError) { - listener.syntaxError(this, void 0, this._tokenStartLine, this._tokenStartCharPositionInLine, msg, e); + and(set) { + const data = this.data; + const other = set.data; + const words = Math.min(data.length, other.length); + let lastWord = -1; + for (let i = 0; i < words; i++) { + let value = data[i] &= other[i]; + if (value !== 0) { + lastWord = i; + } + } + if (lastWord === -1) { + this.data = EMPTY_DATA; + } + if (lastWord < data.length - 1) { + this.data = data.slice(0, lastWord + 1); + } } - } - getErrorDisplay(s) { - if (typeof s === "number") { - switch (s) { - case Token_1.Token.EOF: - return ""; - case 10: - return "\\n"; - case 9: - return "\\t"; - case 13: - return "\\r"; + andNot(set) { + const data = this.data; + const other = set.data; + const words = Math.min(data.length, other.length); + let lastWord = -1; + for (let i = 0; i < words; i++) { + let value = data[i] &= other[i] ^ 65535; + if (value !== 0) { + lastWord = i; + } + } + if (lastWord === -1) { + this.data = EMPTY_DATA; + } + if (lastWord < data.length - 1) { + this.data = data.slice(0, lastWord + 1); } - return String.fromCharCode(s); } - return s.replace(/\n/g, "\\n").replace(/\t/g, "\\t").replace(/\r/g, "\\r"); - } - getCharErrorDisplay(c) { - let s = this.getErrorDisplay(c); - return "'" + s + "'"; - } - recover(re) { - if (re instanceof LexerNoViableAltException_1.LexerNoViableAltException) { - if (this._input.LA(1) !== IntStream_1.IntStream.EOF) { - this.interpreter.consume(this._input); + cardinality() { + if (this.isEmpty) { + return 0; } - } else { - this._input.consume(); + const data = this.data; + const length = data.length; + let result = 0; + for (let i = 0; i < length; i++) { + result += POP_CNT[data[i]]; + } + return result; } - } - }; - Lexer2.DEFAULT_MODE = 0; - Lexer2.MORE = -2; - Lexer2.SKIP = -3; - Lexer2.MIN_CHAR_VALUE = 0; - Lexer2.MAX_CHAR_VALUE = 1114111; - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "nextToken", null); - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "tokenFactory", null); - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "inputStream", null); - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "sourceName", null); - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "line", null); - __decorate([ - Decorators_1.Override - ], Lexer2.prototype, "charPositionInLine", null); - exports.Lexer = Lexer2; - }); - - // node_modules/antlr4ts/misc/IntervalSet.js - var require_IntervalSet = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.IntervalSet = void 0; - var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); - var IntegerList_1 = require_IntegerList(); - var Interval_1 = require_Interval(); - var Lexer_1 = require_Lexer(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var IntervalSet = class { - constructor(intervals) { - this.readonly = false; - if (intervals != null) { - this._intervals = intervals.slice(0); - } else { - this._intervals = []; + clear(fromIndex, toIndex) { + if (fromIndex == null) { + this.data.fill(0); + } else if (toIndex == null) { + this.set(fromIndex, false); + } else { + this.set(fromIndex, toIndex, false); + } } - } - static get COMPLETE_CHAR_SET() { - if (IntervalSet._COMPLETE_CHAR_SET === void 0) { - IntervalSet._COMPLETE_CHAR_SET = IntervalSet.of(Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE); - IntervalSet._COMPLETE_CHAR_SET.setReadonly(true); + flip(fromIndex, toIndex) { + if (toIndex == null) { + toIndex = fromIndex; + } + if (fromIndex < 0 || toIndex < fromIndex) { + throw new RangeError(); + } + let word = getIndex(fromIndex); + const lastWord = getIndex(toIndex); + if (word === lastWord) { + this.data[word] ^= bitsFor(fromIndex, toIndex); + } else { + this.data[word++] ^= bitsFor(fromIndex, 15); + while (word < lastWord) { + this.data[word++] ^= 65535; + } + this.data[word++] ^= bitsFor(0, toIndex); + } } - return IntervalSet._COMPLETE_CHAR_SET; - } - static get EMPTY_SET() { - if (IntervalSet._EMPTY_SET == null) { - IntervalSet._EMPTY_SET = new IntervalSet(); - IntervalSet._EMPTY_SET.setReadonly(true); + get(fromIndex, toIndex) { + if (toIndex === void 0) { + return !!(this.data[getIndex(fromIndex)] & bitsFor(fromIndex, fromIndex)); + } else { + let result = new BitSet2(toIndex + 1); + for (let i = fromIndex; i <= toIndex; i++) { + result.set(i, this.get(i)); + } + return result; + } } - return IntervalSet._EMPTY_SET; - } - static of(a, b = a) { - let s = new IntervalSet(); - s.add(a, b); - return s; - } - clear() { - if (this.readonly) { - throw new Error("can't alter readonly IntervalSet"); + intersects(set) { + let smallerLength = Math.min(this.length(), set.length()); + if (smallerLength === 0) { + return false; + } + let bound = getIndex(smallerLength - 1); + for (let i = 0; i <= bound; i++) { + if ((this.data[i] & set.data[i]) !== 0) { + return true; + } + } + return false; } - this._intervals.length = 0; - } - add(a, b = a) { - this.addRange(Interval_1.Interval.of(a, b)); - } - addRange(addition) { - if (this.readonly) { - throw new Error("can't alter readonly IntervalSet"); + get isEmpty() { + return this.length() === 0; } - if (addition.b < addition.a) { - return; + length() { + if (!this.data.length) { + return 0; + } + return this.previousSetBit(unIndex(this.data.length) - 1) + 1; } - for (let i = 0; i < this._intervals.length; i++) { - let r = this._intervals[i]; - if (addition.equals(r)) { - return; + nextClearBit(fromIndex) { + if (fromIndex < 0) { + throw new RangeError("fromIndex cannot be negative"); } - if (addition.adjacent(r) || !addition.disjoint(r)) { - let bigger = addition.union(r); - this._intervals[i] = bigger; - while (i < this._intervals.length - 1) { - i++; - let next = this._intervals[i]; - if (!bigger.adjacent(next) && bigger.disjoint(next)) { + const data = this.data; + const length = data.length; + let word = getIndex(fromIndex); + if (word > length) { + return -1; + } + let ignore = 65535 ^ bitsFor(fromIndex, 15); + if ((data[word] | ignore) === 65535) { + word++; + ignore = 0; + for (; word < length; word++) { + if (data[word] !== 65535) { break; } - this._intervals.splice(i, 1); - i--; - this._intervals[i] = bigger.union(next); } - return; - } - if (addition.startsBeforeDisjoint(r)) { - this._intervals.splice(i, 0, addition); - return; + if (word === length) { + return -1; + } } + return unIndex(word) + findLSBSet((data[word] | ignore) ^ 65535); } - this._intervals.push(addition); - } - static or(sets) { - let r = new IntervalSet(); - for (let s of sets) { - r.addAll(s); - } - return r; - } - addAll(set) { - if (set == null) { - return this; - } - if (set instanceof IntervalSet) { - let other = set; - let n = other._intervals.length; - for (let i = 0; i < n; i++) { - let I = other._intervals[i]; - this.add(I.a, I.b); + nextSetBit(fromIndex) { + if (fromIndex < 0) { + throw new RangeError("fromIndex cannot be negative"); } - } else { - for (let value of set.toArray()) { - this.add(value); + const data = this.data; + const length = data.length; + let word = getIndex(fromIndex); + if (word > length) { + return -1; + } + let mask = bitsFor(fromIndex, 15); + if ((data[word] & mask) === 0) { + word++; + mask = 65535; + for (; word < length; word++) { + if (data[word] !== 0) { + break; + } + } + if (word >= length) { + return -1; + } } + return unIndex(word) + findLSBSet(data[word] & mask); } - return this; - } - complementRange(minElement, maxElement) { - return this.complement(IntervalSet.of(minElement, maxElement)); - } - complement(vocabulary) { - if (vocabulary.isNil) { - return IntervalSet.EMPTY_SET; + or(set) { + const data = this.data; + const other = set.data; + const minWords = Math.min(data.length, other.length); + const words = Math.max(data.length, other.length); + const dest = data.length === words ? data : new Uint16Array(words); + let lastWord = -1; + for (let i = 0; i < minWords; i++) { + let value = dest[i] = data[i] | other[i]; + if (value !== 0) { + lastWord = i; + } + } + const longer = data.length > other.length ? data : other; + for (let i = minWords; i < words; i++) { + let value = dest[i] = longer[i]; + if (value !== 0) { + lastWord = i; + } + } + if (lastWord === -1) { + this.data = EMPTY_DATA; + } else if (dest.length === lastWord + 1) { + this.data = dest; + } else { + this.data = dest.slice(0, lastWord); + } } - let vocabularyIS; - if (vocabulary instanceof IntervalSet) { - vocabularyIS = vocabulary; - } else { - vocabularyIS = new IntervalSet(); - vocabularyIS.addAll(vocabulary); + previousClearBit(fromIndex) { + if (fromIndex < 0) { + throw new RangeError("fromIndex cannot be negative"); + } + const data = this.data; + const length = data.length; + let word = getIndex(fromIndex); + if (word >= length) { + word = length - 1; + } + let ignore = 65535 ^ bitsFor(0, fromIndex); + if ((data[word] | ignore) === 65535) { + ignore = 0; + word--; + for (; word >= 0; word--) { + if (data[word] !== 65535) { + break; + } + } + if (word < 0) { + return -1; + } + } + return unIndex(word) + findMSBSet((data[word] | ignore) ^ 65535); } - return vocabularyIS.subtract(this); - } - subtract(a) { - if (a == null || a.isNil) { - return new IntervalSet(this._intervals); + previousSetBit(fromIndex) { + if (fromIndex < 0) { + throw new RangeError("fromIndex cannot be negative"); + } + const data = this.data; + const length = data.length; + let word = getIndex(fromIndex); + if (word >= length) { + word = length - 1; + } + let mask = bitsFor(0, fromIndex); + if ((data[word] & mask) === 0) { + word--; + mask = 65535; + for (; word >= 0; word--) { + if (data[word] !== 0) { + break; + } + } + if (word < 0) { + return -1; + } + } + return unIndex(word) + findMSBSet(data[word] & mask); + } + set(fromIndex, toIndex, value) { + if (toIndex === void 0) { + toIndex = fromIndex; + value = true; + } else if (typeof toIndex === "boolean") { + value = toIndex; + toIndex = fromIndex; + } + if (value === void 0) { + value = true; + } + if (fromIndex < 0 || fromIndex > toIndex) { + throw new RangeError(); + } + let word = getIndex(fromIndex); + let lastWord = getIndex(toIndex); + if (value && lastWord >= this.data.length) { + let temp = new Uint16Array(lastWord + 1); + this.data.forEach((value2, index) => temp[index] = value2); + this.data = temp; + } else if (!value) { + if (word >= this.data.length) { + return; + } + if (lastWord >= this.data.length) { + lastWord = this.data.length - 1; + toIndex = this.data.length * 16 - 1; + } + } + if (word === lastWord) { + this._setBits(word, value, bitsFor(fromIndex, toIndex)); + } else { + this._setBits(word++, value, bitsFor(fromIndex, 15)); + while (word < lastWord) { + this.data[word++] = value ? 65535 : 0; + } + this._setBits(word, value, bitsFor(0, toIndex)); + } } - if (a instanceof IntervalSet) { - return IntervalSet.subtract(this, a); + _setBits(word, value, mask) { + if (value) { + this.data[word] |= mask; + } else { + this.data[word] &= 65535 ^ mask; + } } - let other = new IntervalSet(); - other.addAll(a); - return IntervalSet.subtract(this, other); - } - static subtract(left, right) { - if (left.isNil) { - return new IntervalSet(); + get size() { + return this.data.byteLength * 8; } - let result = new IntervalSet(left._intervals); - if (right.isNil) { - return result; + hashCode() { + return MurmurHash_1.MurmurHash.hashCode(this.data, 22); } - let resultI = 0; - let rightI = 0; - while (resultI < result._intervals.length && rightI < right._intervals.length) { - let resultInterval = result._intervals[resultI]; - let rightInterval = right._intervals[rightI]; - if (rightInterval.b < resultInterval.a) { - rightI++; - continue; + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof BitSet2)) { + return false; } - if (rightInterval.a > resultInterval.b) { - resultI++; - continue; + const len = this.length(); + if (len !== obj.length()) { + return false; } - let beforeCurrent; - let afterCurrent; - if (rightInterval.a > resultInterval.a) { - beforeCurrent = new Interval_1.Interval(resultInterval.a, rightInterval.a - 1); + if (len === 0) { + return true; } - if (rightInterval.b < resultInterval.b) { - afterCurrent = new Interval_1.Interval(rightInterval.b + 1, resultInterval.b); + let bound = getIndex(len - 1); + for (let i = 0; i <= bound; i++) { + if (this.data[i] !== obj.data[i]) { + return false; + } } - if (beforeCurrent) { - if (afterCurrent) { - result._intervals[resultI] = beforeCurrent; - result._intervals.splice(resultI + 1, 0, afterCurrent); - resultI++; - rightI++; - continue; + return true; + } + toString() { + let result = "{"; + let first = true; + for (let i = this.nextSetBit(0); i >= 0; i = this.nextSetBit(i + 1)) { + if (first) { + first = false; } else { - result._intervals[resultI] = beforeCurrent; - resultI++; - continue; + result += ", "; } + result += i; + } + result += "}"; + return result; + } + xor(set) { + const data = this.data; + const other = set.data; + const minWords = Math.min(data.length, other.length); + const words = Math.max(data.length, other.length); + const dest = data.length === words ? data : new Uint16Array(words); + let lastWord = -1; + for (let i = 0; i < minWords; i++) { + let value = dest[i] = data[i] ^ other[i]; + if (value !== 0) { + lastWord = i; + } + } + const longer = data.length > other.length ? data : other; + for (let i = minWords; i < words; i++) { + let value = dest[i] = longer[i]; + if (value !== 0) { + lastWord = i; + } + } + if (lastWord === -1) { + this.data = EMPTY_DATA; + } else if (dest.length === lastWord + 1) { + this.data = dest; } else { - if (afterCurrent) { - result._intervals[resultI] = afterCurrent; - rightI++; - continue; - } else { - result._intervals.splice(resultI, 1); - continue; - } + this.data = dest.slice(0, lastWord + 1); } } - return result; - } - or(a) { - let o = new IntervalSet(); - o.addAll(this); - o.addAll(a); - return o; - } - and(other) { - if (other.isNil) { - return new IntervalSet(); - } - let myIntervals = this._intervals; - let theirIntervals = other._intervals; - let intersection; - let mySize = myIntervals.length; - let theirSize = theirIntervals.length; - let i = 0; - let j = 0; - while (i < mySize && j < theirSize) { - let mine = myIntervals[i]; - let theirs = theirIntervals[j]; - if (mine.startsBeforeDisjoint(theirs)) { - i++; - } else if (theirs.startsBeforeDisjoint(mine)) { - j++; - } else if (mine.properlyContains(theirs)) { - if (!intersection) { - intersection = new IntervalSet(); - } - intersection.addRange(mine.intersection(theirs)); - j++; - } else if (theirs.properlyContains(mine)) { - if (!intersection) { - intersection = new IntervalSet(); - } - intersection.addRange(mine.intersection(theirs)); - i++; - } else if (!mine.disjoint(theirs)) { - if (!intersection) { - intersection = new IntervalSet(); - } - intersection.addRange(mine.intersection(theirs)); - if (mine.startsAfterNonDisjoint(theirs)) { - j++; - } else if (theirs.startsAfterNonDisjoint(mine)) { - i++; + clone() { + return new BitSet2(this); + } + [Symbol.iterator]() { + return new BitSetIterator(this.data); + } + [util.inspect.custom]() { + return "BitSet " + this.toString(); + } + }; + exports.BitSet = BitSet2; + var BitSetIterator = class { + constructor(data) { + this.data = data; + this.index = 0; + this.mask = 65535; + } + next() { + while (this.index < this.data.length) { + const bits = this.data[this.index] & this.mask; + if (bits !== 0) { + const bitNumber = unIndex(this.index) + findLSBSet(bits); + this.mask = bitsFor(bitNumber + 1, 15); + return {done: false, value: bitNumber}; } + this.index++; + this.mask = 65535; } + return {done: true, value: -1}; + } + [Symbol.iterator]() { + return this; + } + }; + } + }); + + // node_modules/antlr4ts/atn/ATNConfigSet.js + var require_ATNConfigSet = __commonJS({ + "node_modules/antlr4ts/atn/ATNConfigSet.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNConfigSet = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var Array2DHashSet_1 = require_Array2DHashSet(); + var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); + var ATN_1 = require_ATN(); + var ATNConfig_1 = require_ATNConfig(); + var BitSet_1 = require_BitSet(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var PredictionContext_1 = require_PredictionContext(); + var PredictionContextCache_1 = require_PredictionContextCache(); + var SemanticContext_1 = require_SemanticContext(); + var assert = require_assert(); + var Utils3 = require_Utils(); + var KeyTypeEqualityComparer = class { + hashCode(key) { + return key.state ^ key.alt; + } + equals(a, b) { + return a.state === b.state && a.alt === b.alt; } - if (!intersection) { - return new IntervalSet(); + }; + KeyTypeEqualityComparer.INSTANCE = new KeyTypeEqualityComparer(); + function NewKeyedConfigMap(map) { + if (map) { + return new Array2DHashMap_1.Array2DHashMap(map); + } else { + return new Array2DHashMap_1.Array2DHashMap(KeyTypeEqualityComparer.INSTANCE); } - return intersection; } - contains(el) { - let n = this._intervals.length; - let l = 0; - let r = n - 1; - while (l <= r) { - let m = l + r >> 1; - let I = this._intervals[m]; - let a = I.a; - let b = I.b; - if (b < el) { - l = m + 1; - } else if (a > el) { - r = m - 1; + var ATNConfigSet2 = class { + constructor(set, readonly) { + this._uniqueAlt = 0; + this._hasSemanticContext = false; + this._dipsIntoOuterContext = false; + this.outermostConfigSet = false; + this.cachedHashCode = -1; + if (!set) { + this.mergedConfigs = NewKeyedConfigMap(); + this.unmerged = []; + this.configs = []; + this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; } else { - return true; + if (readonly) { + this.mergedConfigs = void 0; + this.unmerged = void 0; + } else if (!set.isReadOnly) { + this.mergedConfigs = NewKeyedConfigMap(set.mergedConfigs); + this.unmerged = set.unmerged.slice(0); + } else { + this.mergedConfigs = NewKeyedConfigMap(); + this.unmerged = []; + } + this.configs = set.configs.slice(0); + this._dipsIntoOuterContext = set._dipsIntoOuterContext; + this._hasSemanticContext = set._hasSemanticContext; + this.outermostConfigSet = set.outermostConfigSet; + if (readonly || !set.isReadOnly) { + this._uniqueAlt = set._uniqueAlt; + this._conflictInfo = set._conflictInfo; + } } } - return false; - } - get isNil() { - return this._intervals == null || this._intervals.length === 0; - } - get maxElement() { - if (this.isNil) { - throw new RangeError("set is empty"); + getRepresentedAlternatives() { + if (this._conflictInfo != null) { + return this._conflictInfo.conflictedAlts.clone(); + } + let alts = new BitSet_1.BitSet(); + for (let config of this) { + alts.set(config.alt); + } + return alts; } - let last = this._intervals[this._intervals.length - 1]; - return last.b; - } - get minElement() { - if (this.isNil) { - throw new RangeError("set is empty"); + get isReadOnly() { + return this.mergedConfigs == null; } - return this._intervals[0].a; - } - get intervals() { - return this._intervals; - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - for (let I of this._intervals) { - hash = MurmurHash_1.MurmurHash.update(hash, I.a); - hash = MurmurHash_1.MurmurHash.update(hash, I.b); + get isOutermostConfigSet() { + return this.outermostConfigSet; } - hash = MurmurHash_1.MurmurHash.finish(hash, this._intervals.length * 2); - return hash; - } - equals(o) { - if (o == null || !(o instanceof IntervalSet)) { - return false; + set isOutermostConfigSet(outermostConfigSet) { + if (this.outermostConfigSet && !outermostConfigSet) { + throw new Error("IllegalStateException"); + } + assert(!outermostConfigSet || !this._dipsIntoOuterContext); + this.outermostConfigSet = outermostConfigSet; } - return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this._intervals, o._intervals); - } - toString(elemAreChar = false) { - let buf = ""; - if (this._intervals == null || this._intervals.length === 0) { - return "{}"; + getStates() { + let states = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + for (let c of this.configs) { + states.add(c.state); + } + return states; + } + optimizeConfigs(interpreter) { + if (this.configs.length === 0) { + return; + } + for (let config of this.configs) { + config.context = interpreter.atn.getCachedContext(config.context); + } } - if (this.size > 1) { - buf += "{"; + clone(readonly) { + let copy = new ATNConfigSet2(this, readonly); + if (!readonly && this.isReadOnly) { + copy.addAll(this.configs); + } + return copy; } - let first = true; - for (let I of this._intervals) { - if (first) { - first = false; - } else { - buf += ", "; - } - let a = I.a; - let b = I.b; - if (a === b) { - if (a === Token_1.Token.EOF) { - buf += ""; - } else if (elemAreChar) { - buf += "'" + String.fromCodePoint(a) + "'"; - } else { - buf += a; + get size() { + return this.configs.length; + } + get isEmpty() { + return this.configs.length === 0; + } + contains(o) { + if (!(o instanceof ATNConfig_1.ATNConfig)) { + return false; + } + if (this.mergedConfigs && this.unmerged) { + let config = o; + let configKey = this.getKey(config); + let mergedConfig = this.mergedConfigs.get(configKey); + if (mergedConfig != null && this.canMerge(config, configKey, mergedConfig)) { + return mergedConfig.contains(config); + } + for (let c of this.unmerged) { + if (c.contains(o)) { + return true; + } } } else { - if (elemAreChar) { - buf += "'" + String.fromCodePoint(a) + "'..'" + String.fromCodePoint(b) + "'"; - } else { - buf += a + ".." + b; + for (let c of this.configs) { + if (c.contains(o)) { + return true; + } } } + return false; } - if (this.size > 1) { - buf += "}"; - } - return buf; - } - toStringVocabulary(vocabulary) { - if (this._intervals == null || this._intervals.length === 0) { - return "{}"; + *[Symbol.iterator]() { + yield* this.configs; } - let buf = ""; - if (this.size > 1) { - buf += "{"; + toArray() { + return this.configs; } - let first = true; - for (let I of this._intervals) { - if (first) { - first = false; - } else { - buf += ", "; + add(e, contextCache) { + this.ensureWritable(); + if (!this.mergedConfigs || !this.unmerged) { + throw new Error("Covered by ensureWritable but duplicated here for strict null check limitation"); } - let a = I.a; - let b = I.b; - if (a === b) { - buf += this.elementName(vocabulary, a); - } else { - for (let i = a; i <= b; i++) { - if (i > a) { - buf += ", "; + assert(!this.outermostConfigSet || !e.reachesIntoOuterContext); + if (contextCache == null) { + contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED; + } + let addKey; + let key = this.getKey(e); + let mergedConfig = this.mergedConfigs.get(key); + addKey = mergedConfig == null; + if (mergedConfig != null && this.canMerge(e, key, mergedConfig)) { + mergedConfig.outerContextDepth = Math.max(mergedConfig.outerContextDepth, e.outerContextDepth); + if (e.isPrecedenceFilterSuppressed) { + mergedConfig.isPrecedenceFilterSuppressed = true; + } + let joined = PredictionContext_1.PredictionContext.join(mergedConfig.context, e.context, contextCache); + this.updatePropertiesForMergedConfig(e); + if (mergedConfig.context === joined) { + return false; + } + mergedConfig.context = joined; + return true; + } + for (let i = 0; i < this.unmerged.length; i++) { + let unmergedConfig = this.unmerged[i]; + if (this.canMerge(e, key, unmergedConfig)) { + unmergedConfig.outerContextDepth = Math.max(unmergedConfig.outerContextDepth, e.outerContextDepth); + if (e.isPrecedenceFilterSuppressed) { + unmergedConfig.isPrecedenceFilterSuppressed = true; + } + let joined = PredictionContext_1.PredictionContext.join(unmergedConfig.context, e.context, contextCache); + this.updatePropertiesForMergedConfig(e); + if (unmergedConfig.context === joined) { + return false; + } + unmergedConfig.context = joined; + if (addKey) { + this.mergedConfigs.put(key, unmergedConfig); + this.unmerged.splice(i, 1); } - buf += this.elementName(vocabulary, i); + return true; } } + this.configs.push(e); + if (addKey) { + this.mergedConfigs.put(key, e); + } else { + this.unmerged.push(e); + } + this.updatePropertiesForAddedConfig(e); + return true; } - if (this.size > 1) { - buf += "}"; + updatePropertiesForMergedConfig(config) { + this._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext; + assert(!this.outermostConfigSet || !this._dipsIntoOuterContext); } - return buf; - } - elementName(vocabulary, a) { - if (a === Token_1.Token.EOF) { - return ""; - } else if (a === Token_1.Token.EPSILON) { - return ""; - } else { - return vocabulary.getDisplayName(a); + updatePropertiesForAddedConfig(config) { + if (this.configs.length === 1) { + this._uniqueAlt = config.alt; + } else if (this._uniqueAlt !== config.alt) { + this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; + } + this._hasSemanticContext = this._hasSemanticContext || !SemanticContext_1.SemanticContext.NONE.equals(config.semanticContext); + this._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext; + assert(!this.outermostConfigSet || !this._dipsIntoOuterContext); } - } - get size() { - let n = 0; - let numIntervals = this._intervals.length; - if (numIntervals === 1) { - let firstInterval = this._intervals[0]; - return firstInterval.b - firstInterval.a + 1; + canMerge(left, leftKey, right) { + if (left.state.stateNumber !== right.state.stateNumber) { + return false; + } + if (leftKey.alt !== right.alt) { + return false; + } + return left.semanticContext.equals(right.semanticContext); } - for (let i = 0; i < numIntervals; i++) { - let I = this._intervals[i]; - n += I.b - I.a + 1; + getKey(e) { + return {state: e.state.stateNumber, alt: e.alt}; } - return n; - } - toIntegerList() { - let values = new IntegerList_1.IntegerList(this.size); - let n = this._intervals.length; - for (let i = 0; i < n; i++) { - let I = this._intervals[i]; - let a = I.a; - let b = I.b; - for (let v = a; v <= b; v++) { - values.add(v); + containsAll(c) { + for (let o of c) { + if (!(o instanceof ATNConfig_1.ATNConfig)) { + return false; + } + if (!this.contains(o)) { + return false; + } } + return true; } - return values; - } - toSet() { - let s = new Set(); - for (let I of this._intervals) { - let a = I.a; - let b = I.b; - for (let v = a; v <= b; v++) { - s.add(v); + addAll(c, contextCache) { + this.ensureWritable(); + let changed = false; + for (let group of c) { + if (this.add(group, contextCache)) { + changed = true; + } } + return changed; } - return s; - } - toArray() { - let values = new Array(); - let n = this._intervals.length; - for (let i = 0; i < n; i++) { - let I = this._intervals[i]; - let a = I.a; - let b = I.b; - for (let v = a; v <= b; v++) { - values.push(v); - } - } - return values; - } - remove(el) { - if (this.readonly) { - throw new Error("can't alter readonly IntervalSet"); - } - let n = this._intervals.length; - for (let i = 0; i < n; i++) { - let I = this._intervals[i]; - let a = I.a; - let b = I.b; - if (el < a) { - break; + clear() { + this.ensureWritable(); + if (!this.mergedConfigs || !this.unmerged) { + throw new Error("Covered by ensureWritable but duplicated here for strict null check limitation"); } - if (el === a && el === b) { - this._intervals.splice(i, 1); - break; + this.mergedConfigs.clear(); + this.unmerged.length = 0; + this.configs.length = 0; + this._dipsIntoOuterContext = false; + this._hasSemanticContext = false; + this._uniqueAlt = ATN_1.ATN.INVALID_ALT_NUMBER; + this._conflictInfo = void 0; + } + equals(obj) { + if (this === obj) { + return true; } - if (el === a) { - this._intervals[i] = Interval_1.Interval.of(I.a + 1, I.b); - break; + if (!(obj instanceof ATNConfigSet2)) { + return false; } - if (el === b) { - this._intervals[i] = Interval_1.Interval.of(I.a, I.b - 1); - break; + return this.outermostConfigSet === obj.outermostConfigSet && Utils3.equals(this._conflictInfo, obj._conflictInfo) && ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this.configs, obj.configs); + } + hashCode() { + if (this.isReadOnly && this.cachedHashCode !== -1) { + return this.cachedHashCode; } - if (el > a && el < b) { - let oldb = I.b; - this._intervals[i] = Interval_1.Interval.of(I.a, el - 1); - this.add(el + 1, oldb); - } - } - } - get isReadonly() { - return this.readonly; - } - setReadonly(readonly) { - if (this.readonly && !readonly) { - throw new Error("can't alter readonly IntervalSet"); - } - this.readonly = readonly; - } - }; - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "addAll", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "complement", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "subtract", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "or", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "and", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "contains", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "isNil", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "equals", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], IntervalSet.prototype, "toStringVocabulary", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], IntervalSet.prototype, "elementName", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], IntervalSet.prototype, "remove", null); - __decorate([ - Decorators_1.NotNull - ], IntervalSet, "of", null); - __decorate([ - Decorators_1.NotNull - ], IntervalSet, "subtract", null); - exports.IntervalSet = IntervalSet; - }); - - // node_modules/antlr4ts/atn/ATNDeserializationOptions.js - var require_ATNDeserializationOptions = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNDeserializationOptions = void 0; - var Decorators_1 = require_Decorators(); - var ATNDeserializationOptions = class { - constructor(options) { - this.readOnly = false; - if (options) { - this.verifyATN = options.verifyATN; - this.generateRuleBypassTransitions = options.generateRuleBypassTransitions; - this.optimize = options.optimize; - } else { - this.verifyATN = true; - this.generateRuleBypassTransitions = false; - this.optimize = true; + let hashCode = 1; + hashCode = 5 * hashCode ^ (this.outermostConfigSet ? 1 : 0); + hashCode = 5 * hashCode ^ ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.hashCode(this.configs); + if (this.isReadOnly) { + this.cachedHashCode = hashCode; + } + return hashCode; } - } - static get defaultOptions() { - if (ATNDeserializationOptions._defaultOptions == null) { - ATNDeserializationOptions._defaultOptions = new ATNDeserializationOptions(); - ATNDeserializationOptions._defaultOptions.makeReadOnly(); + toString(showContext) { + if (showContext == null) { + showContext = false; + } + let buf = ""; + let sortedConfigs = this.configs.slice(0); + sortedConfigs.sort((o1, o2) => { + if (o1.alt !== o2.alt) { + return o1.alt - o2.alt; + } else if (o1.state.stateNumber !== o2.state.stateNumber) { + return o1.state.stateNumber - o2.state.stateNumber; + } else { + return o1.semanticContext.toString().localeCompare(o2.semanticContext.toString()); + } + }); + buf += "["; + for (let i = 0; i < sortedConfigs.length; i++) { + if (i > 0) { + buf += ", "; + } + buf += sortedConfigs[i].toString(void 0, true, showContext); + } + buf += "]"; + if (this._hasSemanticContext) { + buf += ",hasSemanticContext=" + this._hasSemanticContext; + } + if (this._uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { + buf += ",uniqueAlt=" + this._uniqueAlt; + } + if (this._conflictInfo != null) { + buf += ",conflictingAlts=" + this._conflictInfo.conflictedAlts; + if (!this._conflictInfo.isExact) { + buf += "*"; + } + } + if (this._dipsIntoOuterContext) { + buf += ",dipsIntoOuterContext"; + } + return buf.toString(); } - return ATNDeserializationOptions._defaultOptions; - } - get isReadOnly() { - return this.readOnly; - } - makeReadOnly() { - this.readOnly = true; - } - get isVerifyATN() { - return this.verifyATN; - } - set isVerifyATN(verifyATN) { - this.throwIfReadOnly(); - this.verifyATN = verifyATN; - } - get isGenerateRuleBypassTransitions() { - return this.generateRuleBypassTransitions; - } - set isGenerateRuleBypassTransitions(generateRuleBypassTransitions) { - this.throwIfReadOnly(); - this.generateRuleBypassTransitions = generateRuleBypassTransitions; - } - get isOptimize() { - return this.optimize; - } - set isOptimize(optimize) { - this.throwIfReadOnly(); - this.optimize = optimize; - } - throwIfReadOnly() { - if (this.isReadOnly) { - throw new Error("The object is read only."); + get uniqueAlt() { + return this._uniqueAlt; } - } - }; - __decorate([ - Decorators_1.NotNull - ], ATNDeserializationOptions, "defaultOptions", null); - exports.ATNDeserializationOptions = ATNDeserializationOptions; - }); - - // node_modules/antlr4ts/atn/ActionTransition.js - var require_ActionTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ActionTransition = void 0; - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var ActionTransition = class ActionTransition extends Transition_1.Transition { - constructor(target, ruleIndex, actionIndex = -1, isCtxDependent = false) { - super(target); - this.ruleIndex = ruleIndex; - this.actionIndex = actionIndex; - this.isCtxDependent = isCtxDependent; - } - get serializationType() { - return 6; - } - get isEpsilon() { - return true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - toString() { - return "action_" + this.ruleIndex + ":" + this.actionIndex; - } - }; - __decorate([ - Decorators_1.Override - ], ActionTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], ActionTransition.prototype, "isEpsilon", null); - __decorate([ - Decorators_1.Override - ], ActionTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override - ], ActionTransition.prototype, "toString", null); - ActionTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], ActionTransition); - exports.ActionTransition = ActionTransition; - }); - - // node_modules/antlr4ts/atn/AtomTransition.js - var require_AtomTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.AtomTransition = void 0; - var IntervalSet_1 = require_IntervalSet(); - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var AtomTransition2 = class AtomTransition extends Transition_1.Transition { - constructor(target, label) { - super(target); - this._label = label; - } - get serializationType() { - return 5; - } - get label() { - return IntervalSet_1.IntervalSet.of(this._label); - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return this._label === symbol; - } - toString() { - return String(this.label); - } - }; - __decorate([ - Decorators_1.Override - ], AtomTransition2.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], AtomTransition2.prototype, "label", null); - __decorate([ - Decorators_1.Override - ], AtomTransition2.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], AtomTransition2.prototype, "toString", null); - AtomTransition2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], AtomTransition2); - exports.AtomTransition = AtomTransition2; - }); - - // node_modules/antlr4ts/atn/BlockStartState.js - var require_BlockStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BlockStartState = void 0; - var DecisionState_1 = require_DecisionState(); - var BlockStartState = class extends DecisionState_1.DecisionState { - }; - exports.BlockStartState = BlockStartState; - }); - - // node_modules/antlr4ts/atn/BasicBlockStartState.js - var require_BasicBlockStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BasicBlockStartState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var BlockStartState_1 = require_BlockStartState(); - var Decorators_1 = require_Decorators(); - var BasicBlockStartState = class extends BlockStartState_1.BlockStartState { - get stateType() { - return ATNStateType_1.ATNStateType.BLOCK_START; - } - }; - __decorate([ - Decorators_1.Override - ], BasicBlockStartState.prototype, "stateType", null); - exports.BasicBlockStartState = BasicBlockStartState; - }); - - // node_modules/antlr4ts/atn/BlockEndState.js - var require_BlockEndState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BlockEndState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var BlockEndState = class extends ATNState_1.ATNState { - get stateType() { - return ATNStateType_1.ATNStateType.BLOCK_END; - } - }; - __decorate([ - Decorators_1.Override - ], BlockEndState.prototype, "stateType", null); - exports.BlockEndState = BlockEndState; - }); - - // node_modules/antlr4ts/atn/EpsilonTransition.js - var require_EpsilonTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.EpsilonTransition = void 0; - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var EpsilonTransition = class EpsilonTransition extends Transition_1.Transition { - constructor(target, outermostPrecedenceReturn = -1) { - super(target); - this._outermostPrecedenceReturn = outermostPrecedenceReturn; - } - get outermostPrecedenceReturn() { - return this._outermostPrecedenceReturn; - } - get serializationType() { - return 1; - } - get isEpsilon() { - return true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - toString() { - return "epsilon"; - } - }; - __decorate([ - Decorators_1.Override - ], EpsilonTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], EpsilonTransition.prototype, "isEpsilon", null); - __decorate([ - Decorators_1.Override - ], EpsilonTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], EpsilonTransition.prototype, "toString", null); - EpsilonTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], EpsilonTransition); - exports.EpsilonTransition = EpsilonTransition; - }); - - // node_modules/antlr4ts/atn/LexerChannelAction.js - var require_LexerChannelAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerChannelAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerChannelAction = class { - constructor(channel) { - this._channel = channel; - } - get channel() { - return this._channel; - } - get actionType() { - return 0; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.channel = this._channel; - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - hash = MurmurHash_1.MurmurHash.update(hash, this._channel); - return MurmurHash_1.MurmurHash.finish(hash, 2); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerChannelAction)) { - return false; + get hasSemanticContext() { + return this._hasSemanticContext; } - return this._channel === obj._channel; - } - toString() { - return `channel(${this._channel})`; - } - }; - __decorate([ - Decorators_1.Override - ], LexerChannelAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerChannelAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerChannelAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerChannelAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerChannelAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerChannelAction.prototype, "toString", null); - exports.LexerChannelAction = LexerChannelAction; - }); - - // node_modules/antlr4ts/atn/LexerCustomAction.js - var require_LexerCustomAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerCustomAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerCustomAction = class { - constructor(ruleIndex, actionIndex) { - this._ruleIndex = ruleIndex; - this._actionIndex = actionIndex; - } - get ruleIndex() { - return this._ruleIndex; - } - get actionIndex() { - return this._actionIndex; - } - get actionType() { - return 1; - } - get isPositionDependent() { - return true; - } - execute(lexer) { - lexer.action(void 0, this._ruleIndex, this._actionIndex); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - hash = MurmurHash_1.MurmurHash.update(hash, this._ruleIndex); - hash = MurmurHash_1.MurmurHash.update(hash, this._actionIndex); - return MurmurHash_1.MurmurHash.finish(hash, 3); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerCustomAction)) { - return false; + set hasSemanticContext(value) { + this.ensureWritable(); + this._hasSemanticContext = value; } - return this._ruleIndex === obj._ruleIndex && this._actionIndex === obj._actionIndex; - } - }; - __decorate([ - Decorators_1.Override - ], LexerCustomAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerCustomAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerCustomAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerCustomAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerCustomAction.prototype, "equals", null); - exports.LexerCustomAction = LexerCustomAction; - }); - - // node_modules/antlr4ts/atn/LexerModeAction.js - var require_LexerModeAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerModeAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerModeAction = class { - constructor(mode) { - this._mode = mode; - } - get mode() { - return this._mode; - } - get actionType() { - return 2; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.mode(this._mode); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - hash = MurmurHash_1.MurmurHash.update(hash, this._mode); - return MurmurHash_1.MurmurHash.finish(hash, 2); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerModeAction)) { - return false; + get conflictInfo() { + return this._conflictInfo; } - return this._mode === obj._mode; - } - toString() { - return `mode(${this._mode})`; - } - }; - __decorate([ - Decorators_1.Override - ], LexerModeAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerModeAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerModeAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerModeAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerModeAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerModeAction.prototype, "toString", null); - exports.LexerModeAction = LexerModeAction; - }); - - // node_modules/antlr4ts/atn/LexerMoreAction.js - var require_LexerMoreAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerMoreAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerMoreAction = class { - constructor() { - } - get actionType() { - return 3; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.more(); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - return MurmurHash_1.MurmurHash.finish(hash, 1); - } - equals(obj) { - return obj === this; - } - toString() { - return "more"; - } - }; - __decorate([ - Decorators_1.Override - ], LexerMoreAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerMoreAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerMoreAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerMoreAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerMoreAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerMoreAction.prototype, "toString", null); - exports.LexerMoreAction = LexerMoreAction; - (function(LexerMoreAction2) { - LexerMoreAction2.INSTANCE = new LexerMoreAction2(); - })(LexerMoreAction = exports.LexerMoreAction || (exports.LexerMoreAction = {})); - }); - - // node_modules/antlr4ts/atn/LexerPopModeAction.js - var require_LexerPopModeAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerPopModeAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerPopModeAction = class { - constructor() { - } - get actionType() { - return 4; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.popMode(); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - return MurmurHash_1.MurmurHash.finish(hash, 1); - } - equals(obj) { - return obj === this; - } - toString() { - return "popMode"; - } - }; - __decorate([ - Decorators_1.Override - ], LexerPopModeAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerPopModeAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerPopModeAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerPopModeAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerPopModeAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerPopModeAction.prototype, "toString", null); - exports.LexerPopModeAction = LexerPopModeAction; - (function(LexerPopModeAction2) { - LexerPopModeAction2.INSTANCE = new LexerPopModeAction2(); - })(LexerPopModeAction = exports.LexerPopModeAction || (exports.LexerPopModeAction = {})); - }); - - // node_modules/antlr4ts/atn/LexerPushModeAction.js - var require_LexerPushModeAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerPushModeAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerPushModeAction = class { - constructor(mode) { - this._mode = mode; - } - get mode() { - return this._mode; - } - get actionType() { - return 5; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.pushMode(this._mode); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - hash = MurmurHash_1.MurmurHash.update(hash, this._mode); - return MurmurHash_1.MurmurHash.finish(hash, 2); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerPushModeAction)) { - return false; + set conflictInfo(conflictInfo) { + this.ensureWritable(); + this._conflictInfo = conflictInfo; } - return this._mode === obj._mode; - } - toString() { - return `pushMode(${this._mode})`; - } - }; - __decorate([ - Decorators_1.Override - ], LexerPushModeAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerPushModeAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerPushModeAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerPushModeAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerPushModeAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerPushModeAction.prototype, "toString", null); - exports.LexerPushModeAction = LexerPushModeAction; - }); - - // node_modules/antlr4ts/atn/LexerSkipAction.js - var require_LexerSkipAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerSkipAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerSkipAction = class { - constructor() { - } - get actionType() { - return 6; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.skip(); - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - return MurmurHash_1.MurmurHash.finish(hash, 1); - } - equals(obj) { - return obj === this; - } - toString() { - return "skip"; - } - }; - __decorate([ - Decorators_1.Override - ], LexerSkipAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerSkipAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerSkipAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerSkipAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerSkipAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerSkipAction.prototype, "toString", null); - exports.LexerSkipAction = LexerSkipAction; - (function(LexerSkipAction2) { - LexerSkipAction2.INSTANCE = new LexerSkipAction2(); - })(LexerSkipAction = exports.LexerSkipAction || (exports.LexerSkipAction = {})); - }); - - // node_modules/antlr4ts/atn/LexerTypeAction.js - var require_LexerTypeAction = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerTypeAction = void 0; - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var LexerTypeAction = class { - constructor(type) { - this._type = type; - } - get type() { - return this._type; - } - get actionType() { - return 7; - } - get isPositionDependent() { - return false; - } - execute(lexer) { - lexer.type = this._type; - } - hashCode() { - let hash = MurmurHash_1.MurmurHash.initialize(); - hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); - hash = MurmurHash_1.MurmurHash.update(hash, this._type); - return MurmurHash_1.MurmurHash.finish(hash, 2); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof LexerTypeAction)) { - return false; + get conflictingAlts() { + if (this._conflictInfo == null) { + return void 0; + } + return this._conflictInfo.conflictedAlts; } - return this._type === obj._type; - } - toString() { - return `type(${this._type})`; - } - }; - __decorate([ - Decorators_1.Override - ], LexerTypeAction.prototype, "actionType", null); - __decorate([ - Decorators_1.Override - ], LexerTypeAction.prototype, "isPositionDependent", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], LexerTypeAction.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], LexerTypeAction.prototype, "hashCode", null); - __decorate([ - Decorators_1.Override - ], LexerTypeAction.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], LexerTypeAction.prototype, "toString", null); - exports.LexerTypeAction = LexerTypeAction; - }); - - // node_modules/antlr4ts/atn/LoopEndState.js - var require_LoopEndState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LoopEndState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var LoopEndState = class extends ATNState_1.ATNState { - get stateType() { - return ATNStateType_1.ATNStateType.LOOP_END; - } - }; - __decorate([ - Decorators_1.Override - ], LoopEndState.prototype, "stateType", null); - exports.LoopEndState = LoopEndState; - }); - - // node_modules/antlr4ts/atn/ConflictInfo.js - var require_ConflictInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ConflictInfo = void 0; - var Decorators_1 = require_Decorators(); - var Utils3 = require_Utils(); - var ConflictInfo = class { - constructor(conflictedAlts, exact) { - this._conflictedAlts = conflictedAlts; - this.exact = exact; - } - get conflictedAlts() { - return this._conflictedAlts; - } - get isExact() { - return this.exact; - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof ConflictInfo)) { - return false; + get isExactConflict() { + if (this._conflictInfo == null) { + return false; + } + return this._conflictInfo.isExact; } - return this.isExact === obj.isExact && Utils3.equals(this.conflictedAlts, obj.conflictedAlts); - } - hashCode() { - return this.conflictedAlts.hashCode(); - } - }; - __decorate([ - Decorators_1.Override - ], ConflictInfo.prototype, "equals", null); - __decorate([ - Decorators_1.Override - ], ConflictInfo.prototype, "hashCode", null); - exports.ConflictInfo = ConflictInfo; - }); - - // node_modules/antlr4ts/tree/TerminalNode.js - var require_TerminalNode = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.TerminalNode = void 0; - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var TerminalNode = class { - constructor(symbol) { - this._symbol = symbol; - } - getChild(i) { - throw new RangeError("Terminal Node has no children."); - } - get symbol() { - return this._symbol; - } - get parent() { - return this._parent; - } - setParent(parent) { - this._parent = parent; - } - get payload() { - return this._symbol; - } - get sourceInterval() { - let tokenIndex = this._symbol.tokenIndex; - return new Interval_1.Interval(tokenIndex, tokenIndex); - } - get childCount() { - return 0; - } - accept(visitor) { - return visitor.visitTerminal(this); - } - get text() { - return this._symbol.text || ""; - } - toStringTree(parser) { - return this.toString(); - } - toString() { - if (this._symbol.type === Token_1.Token.EOF) { - return ""; - } - return this._symbol.text || ""; - } - }; - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "getChild", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "parent", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "setParent", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "payload", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "sourceInterval", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "childCount", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "accept", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "toStringTree", null); - __decorate([ - Decorators_1.Override - ], TerminalNode.prototype, "toString", null); - exports.TerminalNode = TerminalNode; - }); - - // node_modules/antlr4ts/tree/ErrorNode.js - var require_ErrorNode = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ErrorNode = void 0; - var Decorators_1 = require_Decorators(); - var TerminalNode_1 = require_TerminalNode(); - var ErrorNode2 = class extends TerminalNode_1.TerminalNode { - constructor(token) { - super(token); - } - accept(visitor) { - return visitor.visitErrorNode(this); - } - }; - __decorate([ - Decorators_1.Override - ], ErrorNode2.prototype, "accept", null); - exports.ErrorNode = ErrorNode2; - }); - - // node_modules/antlr4ts/tree/RuleNode.js - var require_RuleNode = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleNode = void 0; - var RuleNode = class { - }; - exports.RuleNode = RuleNode; - }); - - // node_modules/antlr4ts/tree/Trees.js - var require_Trees = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Trees = void 0; - var ATN_1 = require_ATN(); - var CommonToken_1 = require_CommonToken(); - var ErrorNode_1 = require_ErrorNode(); - var Decorators_1 = require_Decorators(); - var Parser_1 = require_Parser(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var RuleNode_1 = require_RuleNode(); - var TerminalNode_1 = require_TerminalNode(); - var Token_1 = require_Token(); - var Utils3 = require_Utils(); - var Trees = class { - static toStringTree(t, arg2) { - let ruleNames; - if (arg2 instanceof Parser_1.Parser) { - ruleNames = arg2.ruleNames; - } else { - ruleNames = arg2; + get dipsIntoOuterContext() { + return this._dipsIntoOuterContext; } - let s = Utils3.escapeWhitespace(this.getNodeText(t, ruleNames), false); - if (t.childCount === 0) { - return s; + get(index) { + return this.configs[index]; } - let buf = ""; - buf += "("; - s = Utils3.escapeWhitespace(this.getNodeText(t, ruleNames), false); - buf += s; - buf += " "; - for (let i = 0; i < t.childCount; i++) { - if (i > 0) { - buf += " "; + ensureWritable() { + if (this.isReadOnly) { + throw new Error("This ATNConfigSet is read only."); } - buf += this.toStringTree(t.getChild(i), ruleNames); } - buf += ")"; - return buf; - } - static getNodeText(t, arg2) { - let ruleNames; - if (arg2 instanceof Parser_1.Parser) { - ruleNames = arg2.ruleNames; - } else if (arg2) { - ruleNames = arg2; - } else { - let payload = t.payload; - if (typeof payload.text === "string") { - return payload.text; + }; + __decorate([ + Decorators_1.NotNull + ], ATNConfigSet2.prototype, "getRepresentedAlternatives", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "isEmpty", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "contains", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, Symbol.iterator, null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "toArray", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "containsAll", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "clear", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], ATNConfigSet2.prototype, "hashCode", null); + exports.ATNConfigSet = ATNConfigSet2; + } + }); + + // node_modules/antlr4ts/dfa/DFAState.js + var require_DFAState = __commonJS({ + "node_modules/antlr4ts/dfa/DFAState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DFAState = void 0; + var ATN_1 = require_ATN(); + var BitSet_1 = require_BitSet(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var PredictionContext_1 = require_PredictionContext(); + var assert = require_assert(); + var DFAState2 = class { + constructor(configs) { + this.stateNumber = -1; + this.configs = configs; + this.edges = new Map(); + this.contextEdges = new Map(); + } + get isContextSensitive() { + return !!this.contextSymbols; + } + isContextSymbol(symbol) { + if (!this.isContextSensitive) { + return false; } - return t.payload.toString(); + return this.contextSymbols.get(symbol); } - if (t instanceof RuleNode_1.RuleNode) { - let ruleContext = t.ruleContext; - let ruleIndex = ruleContext.ruleIndex; - let ruleName = ruleNames[ruleIndex]; - let altNumber = ruleContext.altNumber; - if (altNumber !== ATN_1.ATN.INVALID_ALT_NUMBER) { - return ruleName + ":" + altNumber; + setContextSymbol(symbol) { + assert(this.isContextSensitive); + this.contextSymbols.set(symbol); + } + setContextSensitive(atn) { + assert(!this.configs.isOutermostConfigSet); + if (this.isContextSensitive) { + return; + } + if (!this.contextSymbols) { + this.contextSymbols = new BitSet_1.BitSet(); } - return ruleName; - } else if (t instanceof ErrorNode_1.ErrorNode) { - return t.toString(); - } else if (t instanceof TerminalNode_1.TerminalNode) { - let symbol = t.symbol; - return symbol.text || ""; } - throw new TypeError("Unexpected node type"); - } - static getChildren(t) { - let kids = []; - for (let i = 0; i < t.childCount; i++) { - kids.push(t.getChild(i)); + get acceptStateInfo() { + return this._acceptStateInfo; } - return kids; - } - static getAncestors(t) { - let ancestors = []; - let p = t.parent; - while (p) { - ancestors.unshift(p); - p = p.parent; + set acceptStateInfo(acceptStateInfo) { + this._acceptStateInfo = acceptStateInfo; } - return ancestors; - } - static isAncestorOf(t, u) { - if (!t || !u || !t.parent) { - return false; + get isAcceptState() { + return !!this._acceptStateInfo; } - let p = u.parent; - while (p) { - if (t === p) { - return true; + get prediction() { + if (!this._acceptStateInfo) { + return ATN_1.ATN.INVALID_ALT_NUMBER; } - p = p.parent; + return this._acceptStateInfo.prediction; } - return false; - } - static findAllTokenNodes(t, ttype) { - return Trees.findAllNodes(t, ttype, true); - } - static findAllRuleNodes(t, ruleIndex) { - return Trees.findAllNodes(t, ruleIndex, false); - } - static findAllNodes(t, index, findTokens) { - let nodes = []; - Trees._findAllNodes(t, index, findTokens, nodes); - return nodes; - } - static _findAllNodes(t, index, findTokens, nodes) { - if (findTokens && t instanceof TerminalNode_1.TerminalNode) { - if (t.symbol.type === index) { - nodes.push(t); - } - } else if (!findTokens && t instanceof ParserRuleContext_1.ParserRuleContext) { - if (t.ruleIndex === index) { - nodes.push(t); + get lexerActionExecutor() { + if (!this._acceptStateInfo) { + return void 0; } + return this._acceptStateInfo.lexerActionExecutor; } - for (let i = 0; i < t.childCount; i++) { - Trees._findAllNodes(t.getChild(i), index, findTokens, nodes); + getTarget(symbol) { + return this.edges.get(symbol); } - } - static getDescendants(t) { - let nodes = []; - function recurse(e) { - nodes.push(e); - const n = e.childCount; - for (let i = 0; i < n; i++) { - recurse(e.getChild(i)); + setTarget(symbol, target) { + this.edges.set(symbol, target); + } + getEdgeMap() { + return this.edges; + } + getContextTarget(invokingState) { + if (invokingState === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + invokingState = -1; } + return this.contextEdges.get(invokingState); } - recurse(t); - return nodes; - } - static getRootOfSubtreeEnclosingRegion(t, startTokenIndex, stopTokenIndex) { - let n = t.childCount; - for (let i = 0; i < n; i++) { - let child = t.getChild(i); - let r = Trees.getRootOfSubtreeEnclosingRegion(child, startTokenIndex, stopTokenIndex); - if (r) { - return r; + setContextTarget(invokingState, target) { + if (!this.isContextSensitive) { + throw new Error("The state is not context sensitive."); + } + if (invokingState === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + invokingState = -1; } + this.contextEdges.set(invokingState, target); } - if (t instanceof ParserRuleContext_1.ParserRuleContext) { - let stopToken = t.stop; - if (startTokenIndex >= t.start.tokenIndex && (stopToken == null || stopTokenIndex <= stopToken.tokenIndex)) { - return t; + getContextEdgeMap() { + let map = new Map(this.contextEdges); + let existing = map.get(-1); + if (existing !== void 0) { + if (map.size === 1) { + let result = new Map(); + result.set(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY, existing); + return result; + } else { + map.delete(-1); + map.set(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY, existing); + } } + return map; } - return void 0; - } - static stripChildrenOutOfRange(t, root, startIndex, stopIndex) { - if (!t) { - return; + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(7); + hash = MurmurHash_1.MurmurHash.update(hash, this.configs.hashCode()); + hash = MurmurHash_1.MurmurHash.finish(hash, 1); + return hash; } - let count = t.childCount; - for (let i = 0; i < count; i++) { - let child = t.getChild(i); - let range = child.sourceInterval; - if (child instanceof ParserRuleContext_1.ParserRuleContext && (range.b < startIndex || range.a > stopIndex)) { - if (Trees.isAncestorOf(child, root)) { - let abbrev = new CommonToken_1.CommonToken(Token_1.Token.INVALID_TYPE, "..."); - t.children[i] = new TerminalNode_1.TerminalNode(abbrev); - } + equals(o) { + if (this === o) { + return true; } + if (!(o instanceof DFAState2)) { + return false; + } + let other = o; + let sameSet = this.configs.equals(other.configs); + return sameSet; } - } - static findNodeSuchThat(t, pred) { - if (pred(t)) { - return t; + toString() { + let buf = ""; + buf += this.stateNumber + ":" + this.configs; + if (this.isAcceptState) { + buf += "=>"; + if (this.predicates) { + buf += this.predicates; + } else { + buf += this.prediction; + } + } + return buf.toString(); } - let n = t.childCount; - for (let i = 0; i < n; i++) { - let u = Trees.findNodeSuchThat(t.getChild(i), pred); - if (u !== void 0) { - return u; - } - } - return void 0; - } - }; - __decorate([ - __param(0, Decorators_1.NotNull) - ], Trees, "toStringTree", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], Trees, "getAncestors", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], Trees, "getRootOfSubtreeEnclosingRegion", null); - exports.Trees = Trees; + }; + __decorate([ + Decorators_1.NotNull + ], DFAState2.prototype, "configs", void 0); + __decorate([ + Decorators_1.NotNull + ], DFAState2.prototype, "edges", void 0); + __decorate([ + Decorators_1.NotNull + ], DFAState2.prototype, "contextEdges", void 0); + __decorate([ + Decorators_1.Override + ], DFAState2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], DFAState2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], DFAState2.prototype, "toString", null); + exports.DFAState = DFAState2; + (function(DFAState3) { + let PredPrediction2 = class PredPrediction { + constructor(pred, alt) { + this.alt = alt; + this.pred = pred; + } + toString() { + return "(" + this.pred + ", " + this.alt + ")"; + } + }; + __decorate([ + Decorators_1.NotNull + ], PredPrediction2.prototype, "pred", void 0); + __decorate([ + Decorators_1.Override + ], PredPrediction2.prototype, "toString", null); + PredPrediction2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], PredPrediction2); + DFAState3.PredPrediction = PredPrediction2; + })(DFAState2 = exports.DFAState || (exports.DFAState = {})); + } }); - // node_modules/antlr4ts/RuleContext.js - var require_RuleContext = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleContext = void 0; - var ATN_1 = require_ATN(); - var Recognizer_1 = require_Recognizer(); - var RuleNode_1 = require_RuleNode(); - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var RuleContext = class extends RuleNode_1.RuleNode { - constructor(parent, invokingState) { - super(); - this._parent = parent; - this.invokingState = invokingState != null ? invokingState : -1; - } - static getChildContext(parent, invokingState) { - return new RuleContext(parent, invokingState); - } - depth() { - let n = 0; - let p = this; - while (p) { - p = p._parent; - n++; - } - return n; - } - get isEmpty() { - return this.invokingState === -1; - } - get sourceInterval() { - return Interval_1.Interval.INVALID; - } - get ruleContext() { - return this; - } - get parent() { - return this._parent; - } - setParent(parent) { - this._parent = parent; - } - get payload() { - return this; - } - get text() { - if (this.childCount === 0) { - return ""; - } - let builder = ""; - for (let i = 0; i < this.childCount; i++) { - builder += this.getChild(i).text; + // node_modules/antlr4ts/atn/ATNSimulator.js + var require_ATNSimulator = __commonJS({ + "node_modules/antlr4ts/atn/ATNSimulator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNSimulator = void 0; + var ATNConfigSet_1 = require_ATNConfigSet(); + var DFAState_1 = require_DFAState(); + var Decorators_1 = require_Decorators(); + var PredictionContext_1 = require_PredictionContext(); + var ATNSimulator2 = class ATNSimulator3 { + constructor(atn) { + this.atn = atn; + } + static get ERROR() { + if (!ATNSimulator3._ERROR) { + ATNSimulator3._ERROR = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); + ATNSimulator3._ERROR.stateNumber = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; + } + return ATNSimulator3._ERROR; + } + clearDFA() { + this.atn.clearDFA(); } - return builder.toString(); - } - get ruleIndex() { - return -1; - } - get altNumber() { - return ATN_1.ATN.INVALID_ALT_NUMBER; - } - set altNumber(altNumber) { - } - getChild(i) { - throw new RangeError("i must be greater than or equal to 0 and less than childCount"); - } - get childCount() { - return 0; - } - accept(visitor) { - return visitor.visitChildren(this); - } - toStringTree(recog) { - return Trees_1.Trees.toStringTree(this, recog); - } - toString(arg1, stop) { - const ruleNames = arg1 instanceof Recognizer_1.Recognizer ? arg1.ruleNames : arg1; - stop = stop || ParserRuleContext_1.ParserRuleContext.emptyContext(); - let buf = ""; - let p = this; - buf += "["; - while (p && p !== stop) { - if (!ruleNames) { - if (!p.isEmpty) { - buf += p.invokingState; - } - } else { - let ruleIndex = p.ruleIndex; - let ruleName = ruleIndex >= 0 && ruleIndex < ruleNames.length ? ruleNames[ruleIndex] : ruleIndex.toString(); - buf += ruleName; - } - if (p._parent && (ruleNames || !p._parent.isEmpty)) { - buf += " "; - } - p = p._parent; - } - buf += "]"; - return buf.toString(); - } - }; - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "sourceInterval", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "ruleContext", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "parent", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "setParent", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "payload", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "getChild", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "childCount", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "accept", null); - __decorate([ - Decorators_1.Override - ], RuleContext.prototype, "toStringTree", null); - exports.RuleContext = RuleContext; + }; + __decorate([ + Decorators_1.NotNull + ], ATNSimulator2.prototype, "atn", void 0); + __decorate([ + Decorators_1.NotNull + ], ATNSimulator2, "ERROR", null); + ATNSimulator2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], ATNSimulator2); + exports.ATNSimulator = ATNSimulator2; + (function(ATNSimulator3) { + const RULE_VARIANT_DELIMITER = "$"; + const RULE_LF_VARIANT_MARKER = "$lf$"; + const RULE_NOLF_VARIANT_MARKER = "$nolf$"; + })(ATNSimulator2 = exports.ATNSimulator || (exports.ATNSimulator = {})); + exports.ATNSimulator = ATNSimulator2; + } }); - // node_modules/antlr4ts/ParserRuleContext.js - var require_ParserRuleContext = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParserRuleContext = void 0; - var ErrorNode_1 = require_ErrorNode(); - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var RuleContext_1 = require_RuleContext(); - var TerminalNode_1 = require_TerminalNode(); - var ParserRuleContext2 = class extends RuleContext_1.RuleContext { - constructor(parent, invokingStateNumber) { - if (invokingStateNumber == null) { - super(); - } else { - super(parent, invokingStateNumber); + // node_modules/antlr4ts/ConsoleErrorListener.js + var require_ConsoleErrorListener = __commonJS({ + "node_modules/antlr4ts/ConsoleErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ConsoleErrorListener = void 0; + var ConsoleErrorListener2 = class { + syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { + console.error(`line ${line}:${charPositionInLine} ${msg}`); } - } - static emptyContext() { - return ParserRuleContext2.EMPTY; - } - copyFrom(ctx) { - this._parent = ctx._parent; - this.invokingState = ctx.invokingState; - this._start = ctx._start; - this._stop = ctx._stop; - if (ctx.children) { - this.children = []; - for (let child of ctx.children) { - if (child instanceof ErrorNode_1.ErrorNode) { - this.addChild(child); - } + }; + exports.ConsoleErrorListener = ConsoleErrorListener2; + ConsoleErrorListener2.INSTANCE = new ConsoleErrorListener2(); + } + }); + + // node_modules/antlr4ts/ProxyErrorListener.js + var require_ProxyErrorListener = __commonJS({ + "node_modules/antlr4ts/ProxyErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ProxyErrorListener = void 0; + var Decorators_1 = require_Decorators(); + var ProxyErrorListener2 = class { + constructor(delegates) { + this.delegates = delegates; + if (!delegates) { + throw new Error("Invalid delegates"); } } - } - enterRule(listener) { - } - exitRule(listener) { - } - addAnyChild(t) { - if (!this.children) { - this.children = [t]; - } else { - this.children.push(t); + getDelegates() { + return this.delegates; } - return t; - } - addChild(t) { - let result; - if (t instanceof TerminalNode_1.TerminalNode) { - t.setParent(this); - this.addAnyChild(t); - return; - } else if (t instanceof RuleContext_1.RuleContext) { - this.addAnyChild(t); - return; - } else { - t = new TerminalNode_1.TerminalNode(t); - this.addAnyChild(t); - t.setParent(this); - return t; + syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { + this.delegates.forEach((listener) => { + if (listener.syntaxError) { + listener.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); + } + }); } - } - addErrorNode(node) { - if (node instanceof ErrorNode_1.ErrorNode) { - const errorNode = node; - errorNode.setParent(this); - return this.addAnyChild(errorNode); - } else { - const badToken = node; - let t = new ErrorNode_1.ErrorNode(badToken); - this.addAnyChild(t); - t.setParent(this); - return t; + }; + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull), + __param(4, Decorators_1.NotNull) + ], ProxyErrorListener2.prototype, "syntaxError", null); + exports.ProxyErrorListener = ProxyErrorListener2; + } + }); + + // node_modules/antlr4ts/Recognizer.js + var require_Recognizer = __commonJS({ + "node_modules/antlr4ts/Recognizer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Recognizer = void 0; + var ConsoleErrorListener_1 = require_ConsoleErrorListener(); + var ProxyErrorListener_1 = require_ProxyErrorListener(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var Utils3 = require_Utils(); + var Recognizer2 = class { + constructor() { + this._listeners = [ConsoleErrorListener_1.ConsoleErrorListener.INSTANCE]; + this._stateNumber = -1; + } + getTokenTypeMap() { + let vocabulary = this.vocabulary; + let result = Recognizer2.tokenTypeMapCache.get(vocabulary); + if (result == null) { + let intermediateResult = new Map(); + for (let i = 0; i <= this.atn.maxTokenType; i++) { + let literalName = vocabulary.getLiteralName(i); + if (literalName != null) { + intermediateResult.set(literalName, i); + } + let symbolicName = vocabulary.getSymbolicName(i); + if (symbolicName != null) { + intermediateResult.set(symbolicName, i); + } + } + intermediateResult.set("EOF", Token_1.Token.EOF); + result = intermediateResult; + Recognizer2.tokenTypeMapCache.set(vocabulary, result); + } + return result; } - } - removeLastChild() { - if (this.children) { - this.children.pop(); + getRuleIndexMap() { + let ruleNames = this.ruleNames; + if (ruleNames == null) { + throw new Error("The current recognizer does not provide a list of rule names."); + } + let result = Recognizer2.ruleIndexMapCache.get(ruleNames); + if (result == null) { + result = Utils3.toMap(ruleNames); + Recognizer2.ruleIndexMapCache.set(ruleNames, result); + } + return result; } - } - get parent() { - let parent = super.parent; - if (parent === void 0 || parent instanceof ParserRuleContext2) { - return parent; + getTokenType(tokenName) { + let ttype = this.getTokenTypeMap().get(tokenName); + if (ttype != null) { + return ttype; + } + return Token_1.Token.INVALID_TYPE; } - throw new TypeError("Invalid parent type for ParserRuleContext"); - } - getChild(i, ctxType) { - if (!this.children || i < 0 || i >= this.children.length) { - throw new RangeError("index parameter must be between >= 0 and <= number of children."); + get serializedATN() { + throw new Error("there is no serialized ATN"); } - if (ctxType == null) { - return this.children[i]; + get atn() { + return this._interp.atn; } - let result = this.tryGetChild(i, ctxType); - if (result === void 0) { - throw new Error("The specified node does not exist"); + get interpreter() { + return this._interp; } - return result; - } - tryGetChild(i, ctxType) { - if (!this.children || i < 0 || i >= this.children.length) { - return void 0; + set interpreter(interpreter) { + this._interp = interpreter; } - let j = -1; - for (let o of this.children) { - if (o instanceof ctxType) { - j++; - if (j === i) { - return o; - } - } + get parseInfo() { + return Promise.resolve(void 0); } - return void 0; - } - getToken(ttype, i) { - let result = this.tryGetToken(ttype, i); - if (result === void 0) { - throw new Error("The specified token does not exist"); + getErrorHeader(e) { + let token = e.getOffendingToken(); + if (!token) { + return ""; + } + let line = token.line; + let charPositionInLine = token.charPositionInLine; + return "line " + line + ":" + charPositionInLine; } - return result; - } - tryGetToken(ttype, i) { - if (!this.children || i < 0 || i >= this.children.length) { - return void 0; + addErrorListener(listener) { + if (!listener) { + throw new TypeError("listener must not be null"); + } + this._listeners.push(listener); } - let j = -1; - for (let o of this.children) { - if (o instanceof TerminalNode_1.TerminalNode) { - let symbol = o.symbol; - if (symbol.type === ttype) { - j++; - if (j === i) { - return o; - } - } + removeErrorListener(listener) { + let position = this._listeners.indexOf(listener); + if (position !== -1) { + this._listeners.splice(position, 1); } } - return void 0; - } - getTokens(ttype) { - let tokens2 = []; - if (!this.children) { - return tokens2; + removeErrorListeners() { + this._listeners.length = 0; } - for (let o of this.children) { - if (o instanceof TerminalNode_1.TerminalNode) { - let symbol = o.symbol; - if (symbol.type === ttype) { - tokens2.push(o); - } - } + getErrorListeners() { + return this._listeners.slice(0); } - return tokens2; - } - get ruleContext() { - return this; - } - getRuleContext(i, ctxType) { - return this.getChild(i, ctxType); - } - tryGetRuleContext(i, ctxType) { - return this.tryGetChild(i, ctxType); - } - getRuleContexts(ctxType) { - let contexts = []; - if (!this.children) { - return contexts; + getErrorListenerDispatch() { + return new ProxyErrorListener_1.ProxyErrorListener(this.getErrorListeners()); } - for (let o of this.children) { - if (o instanceof ctxType) { - contexts.push(o); - } + sempred(_localctx, ruleIndex, actionIndex) { + return true; } - return contexts; - } - get childCount() { - return this.children ? this.children.length : 0; - } - get sourceInterval() { - if (!this._start) { - return Interval_1.Interval.INVALID; + precpred(localctx, precedence) { + return true; + } + action(_localctx, ruleIndex, actionIndex) { + } + get state() { + return this._stateNumber; } - if (!this._stop || this._stop.tokenIndex < this._start.tokenIndex) { - return Interval_1.Interval.of(this._start.tokenIndex, this._start.tokenIndex - 1); - } - return Interval_1.Interval.of(this._start.tokenIndex, this._stop.tokenIndex); - } - get start() { - return this._start; - } - get stop() { - return this._stop; - } - toInfoString(recognizer) { - let rules = recognizer.getRuleInvocationStack(this).reverse(); - return "ParserRuleContext" + rules + "{start=" + this._start + ", stop=" + this._stop + "}"; - } - }; - ParserRuleContext2.EMPTY = new ParserRuleContext2(); - __decorate([ - Decorators_1.Override - ], ParserRuleContext2.prototype, "parent", null); - __decorate([ - Decorators_1.Override - ], ParserRuleContext2.prototype, "childCount", null); - __decorate([ - Decorators_1.Override - ], ParserRuleContext2.prototype, "sourceInterval", null); - exports.ParserRuleContext = ParserRuleContext2; + set state(atnState) { + this._stateNumber = atnState; + } + }; + Recognizer2.EOF = -1; + Recognizer2.tokenTypeMapCache = new WeakMap(); + Recognizer2.ruleIndexMapCache = new WeakMap(); + __decorate([ + Decorators_1.SuppressWarnings("serial"), + Decorators_1.NotNull + ], Recognizer2.prototype, "_listeners", void 0); + __decorate([ + Decorators_1.NotNull + ], Recognizer2.prototype, "getTokenTypeMap", null); + __decorate([ + Decorators_1.NotNull + ], Recognizer2.prototype, "getRuleIndexMap", null); + __decorate([ + Decorators_1.NotNull + ], Recognizer2.prototype, "serializedATN", null); + __decorate([ + Decorators_1.NotNull + ], Recognizer2.prototype, "atn", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], Recognizer2.prototype, "interpreter", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], Recognizer2.prototype, "getErrorHeader", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], Recognizer2.prototype, "addErrorListener", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], Recognizer2.prototype, "removeErrorListener", null); + __decorate([ + Decorators_1.NotNull + ], Recognizer2.prototype, "getErrorListeners", null); + exports.Recognizer = Recognizer2; + } }); - // node_modules/antlr4ts/atn/PredictionMode.js - var require_PredictionMode = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PredictionMode = void 0; - var Array2DHashMap_1 = require_Array2DHashMap(); - var MurmurHash_1 = require_MurmurHash(); - var Decorators_1 = require_Decorators(); - var RuleStopState_1 = require_RuleStopState(); - var PredictionMode; - (function(PredictionMode2) { - PredictionMode2[PredictionMode2["SLL"] = 0] = "SLL"; - PredictionMode2[PredictionMode2["LL"] = 1] = "LL"; - PredictionMode2[PredictionMode2["LL_EXACT_AMBIG_DETECTION"] = 2] = "LL_EXACT_AMBIG_DETECTION"; - })(PredictionMode = exports.PredictionMode || (exports.PredictionMode = {})); - (function(PredictionMode2) { - class AltAndContextMap extends Array2DHashMap_1.Array2DHashMap { - constructor() { - super(AltAndContextConfigEqualityComparator.INSTANCE); - } - } - class AltAndContextConfigEqualityComparator { - AltAndContextConfigEqualityComparator() { + // node_modules/antlr4ts/VocabularyImpl.js + var require_VocabularyImpl = __commonJS({ + "node_modules/antlr4ts/VocabularyImpl.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.VocabularyImpl = void 0; + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var VocabularyImpl3 = class { + constructor(literalNames, symbolicNames, displayNames) { + this.literalNames = literalNames; + this.symbolicNames = symbolicNames; + this.displayNames = displayNames; + this._maxTokenType = Math.max(this.displayNames.length, Math.max(this.literalNames.length, this.symbolicNames.length)) - 1; + } + get maxTokenType() { + return this._maxTokenType; + } + getLiteralName(tokenType) { + if (tokenType >= 0 && tokenType < this.literalNames.length) { + return this.literalNames[tokenType]; + } + return void 0; } - hashCode(o) { - let hashCode = MurmurHash_1.MurmurHash.initialize(7); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, o.state.stateNumber); - hashCode = MurmurHash_1.MurmurHash.update(hashCode, o.context); - hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 2); - return hashCode; + getSymbolicName(tokenType) { + if (tokenType >= 0 && tokenType < this.symbolicNames.length) { + return this.symbolicNames[tokenType]; + } + if (tokenType === Token_1.Token.EOF) { + return "EOF"; + } + return void 0; } - equals(a, b) { - if (a === b) { - return true; + getDisplayName(tokenType) { + if (tokenType >= 0 && tokenType < this.displayNames.length) { + let displayName = this.displayNames[tokenType]; + if (displayName) { + return displayName; + } } - if (a == null || b == null) { - return false; + let literalName = this.getLiteralName(tokenType); + if (literalName) { + return literalName; } - return a.state.stateNumber === b.state.stateNumber && a.context.equals(b.context); + let symbolicName = this.getSymbolicName(tokenType); + if (symbolicName) { + return symbolicName; + } + return String(tokenType); } - } - AltAndContextConfigEqualityComparator.INSTANCE = new AltAndContextConfigEqualityComparator(); + }; + VocabularyImpl3.EMPTY_VOCABULARY = new VocabularyImpl3([], [], []); + __decorate([ + Decorators_1.NotNull + ], VocabularyImpl3.prototype, "literalNames", void 0); + __decorate([ + Decorators_1.NotNull + ], VocabularyImpl3.prototype, "symbolicNames", void 0); + __decorate([ + Decorators_1.NotNull + ], VocabularyImpl3.prototype, "displayNames", void 0); __decorate([ Decorators_1.Override - ], AltAndContextConfigEqualityComparator.prototype, "hashCode", null); + ], VocabularyImpl3.prototype, "maxTokenType", null); __decorate([ Decorators_1.Override - ], AltAndContextConfigEqualityComparator.prototype, "equals", null); - function hasConfigInRuleStopState(configs) { - for (let c of configs) { - if (c.state instanceof RuleStopState_1.RuleStopState) { - return true; - } - } - return false; - } - PredictionMode2.hasConfigInRuleStopState = hasConfigInRuleStopState; - function allConfigsInRuleStopStates(configs) { - for (let config of configs) { - if (!(config.state instanceof RuleStopState_1.RuleStopState)) { - return false; - } - } - return true; - } - PredictionMode2.allConfigsInRuleStopStates = allConfigsInRuleStopStates; - })(PredictionMode = exports.PredictionMode || (exports.PredictionMode = {})); - }); - - // node_modules/antlr4ts/atn/SimulatorState.js - var require_SimulatorState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.SimulatorState = void 0; - var Decorators_1 = require_Decorators(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var SimulatorState = class SimulatorState { - constructor(outerContext, s0, useContext, remainingOuterContext) { - this.outerContext = outerContext != null ? outerContext : ParserRuleContext_1.ParserRuleContext.emptyContext(); - this.s0 = s0; - this.useContext = useContext; - this.remainingOuterContext = remainingOuterContext; - } - }; - SimulatorState = __decorate([ - __param(1, Decorators_1.NotNull) - ], SimulatorState); - exports.SimulatorState = SimulatorState; + ], VocabularyImpl3.prototype, "getLiteralName", null); + __decorate([ + Decorators_1.Override + ], VocabularyImpl3.prototype, "getSymbolicName", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], VocabularyImpl3.prototype, "getDisplayName", null); + __decorate([ + Decorators_1.NotNull + ], VocabularyImpl3, "EMPTY_VOCABULARY", void 0); + exports.VocabularyImpl = VocabularyImpl3; + } }); - // node_modules/antlr4ts/atn/ParserATNSimulator.js - var require_ParserATNSimulator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParserATNSimulator = void 0; - var AcceptStateInfo_1 = require_AcceptStateInfo(); - var ActionTransition_1 = require_ActionTransition(); - var Array2DHashSet_1 = require_Array2DHashSet(); - var Arrays_1 = require_Arrays(); - var ATN_1 = require_ATN(); - var ATNConfig_1 = require_ATNConfig(); - var ATNConfigSet_1 = require_ATNConfigSet(); - var ATNSimulator_1 = require_ATNSimulator(); - var ATNStateType_1 = require_ATNStateType(); - var AtomTransition_1 = require_AtomTransition(); - var BitSet_1 = require_BitSet(); - var ConflictInfo_1 = require_ConflictInfo(); - var DecisionState_1 = require_DecisionState(); - var DFAState_1 = require_DFAState(); - var IntegerList_1 = require_IntegerList(); - var Interval_1 = require_Interval(); - var IntStream_1 = require_IntStream(); - var Decorators_1 = require_Decorators(); - var NotSetTransition_1 = require_NotSetTransition(); - var NoViableAltException_1 = require_NoViableAltException(); - var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var PredictionContext_1 = require_PredictionContext(); - var PredictionContextCache_1 = require_PredictionContextCache(); - var PredictionMode_1 = require_PredictionMode(); - var RuleStopState_1 = require_RuleStopState(); - var RuleTransition_1 = require_RuleTransition(); - var SemanticContext_1 = require_SemanticContext(); - var SetTransition_1 = require_SetTransition(); - var SimulatorState_1 = require_SimulatorState(); - var Token_1 = require_Token(); - var VocabularyImpl_1 = require_VocabularyImpl(); - var assert = require_assert(); - var MAX_SHORT_VALUE = 65535; - var MIN_INTEGER_VALUE = -(1 << 31 >>> 0); - var ParserATNSimulator2 = class ParserATNSimulator3 extends ATNSimulator_1.ATNSimulator { - constructor(atn, parser) { - super(atn); - this.predictionMode = PredictionMode_1.PredictionMode.LL; - this.force_global_context = false; - this.always_try_local_context = true; - this.enable_global_context_dfa = false; - this.optimize_unique_closure = true; - this.optimize_ll1 = true; - this.optimize_tail_calls = true; - this.tail_call_preserves_sll = true; - this.treat_sllk1_conflict_as_ambiguity = false; - this.reportAmbiguities = false; - this.userWantsCtxSensitive = true; - this._parser = parser; - } - getPredictionMode() { - return this.predictionMode; - } - setPredictionMode(predictionMode) { - this.predictionMode = predictionMode; - } - reset() { - } - adaptivePredict(input, decision, outerContext, useContext) { - if (useContext === void 0) { - useContext = false; - } - let dfa = this.atn.decisionToDFA[decision]; - assert(dfa != null); - if (this.optimize_ll1 && !dfa.isPrecedenceDfa && !dfa.isEmpty) { - let ll_1 = input.LA(1); - if (ll_1 >= 0 && ll_1 <= 65535) { - let key = (decision << 16 >>> 0) + ll_1; - let alt = this.atn.LL1Table.get(key); - if (alt != null) { - return alt; + // node_modules/antlr4ts/dfa/DFASerializer.js + var require_DFASerializer = __commonJS({ + "node_modules/antlr4ts/dfa/DFASerializer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DFASerializer = void 0; + var ATNSimulator_1 = require_ATNSimulator(); + var Decorators_1 = require_Decorators(); + var PredictionContext_1 = require_PredictionContext(); + var Recognizer_1 = require_Recognizer(); + var VocabularyImpl_1 = require_VocabularyImpl(); + var DFASerializer2 = class { + constructor(dfa, vocabulary, ruleNames, atn) { + if (vocabulary instanceof Recognizer_1.Recognizer) { + ruleNames = vocabulary.ruleNames; + atn = vocabulary.atn; + vocabulary = vocabulary.vocabulary; + } else if (!vocabulary) { + vocabulary = VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; + } + this.dfa = dfa; + this.vocabulary = vocabulary; + this.ruleNames = ruleNames; + this.atn = atn; + } + toString() { + if (!this.dfa.s0) { + return ""; + } + let buf = ""; + if (this.dfa.states) { + let states = new Array(...this.dfa.states.toArray()); + states.sort((o1, o2) => o1.stateNumber - o2.stateNumber); + for (let s of states) { + let edges = s.getEdgeMap(); + let edgeKeys = [...edges.keys()].sort((a, b) => a - b); + let contextEdges = s.getContextEdgeMap(); + let contextEdgeKeys = [...contextEdges.keys()].sort((a, b) => a - b); + for (let entry of edgeKeys) { + let value = edges.get(entry); + if ((value == null || value === ATNSimulator_1.ATNSimulator.ERROR) && !s.isContextSymbol(entry)) { + continue; + } + let contextSymbol = false; + buf += this.getStateString(s) + "-" + this.getEdgeLabel(entry) + "->"; + if (s.isContextSymbol(entry)) { + buf += "!"; + contextSymbol = true; + } + let t = value; + if (t && t.stateNumber !== ATNSimulator_1.ATNSimulator.ERROR.stateNumber) { + buf += this.getStateString(t) + "\n"; + } else if (contextSymbol) { + buf += "ctx\n"; + } + } + if (s.isContextSensitive) { + for (let entry of contextEdgeKeys) { + buf += this.getStateString(s) + "-" + this.getContextLabel(entry) + "->" + this.getStateString(contextEdges.get(entry)) + "\n"; + } + } } } + let output = buf; + if (output.length === 0) { + return ""; + } + return output; } - this.dfa = dfa; - if (this.force_global_context) { - useContext = true; - } else if (!this.always_try_local_context) { - useContext = useContext || dfa.isContextSensitive; - } - this.userWantsCtxSensitive = useContext || this.predictionMode !== PredictionMode_1.PredictionMode.SLL && outerContext != null && !this.atn.decisionToState[decision].sll; - if (outerContext == null) { - outerContext = ParserRuleContext_1.ParserRuleContext.emptyContext(); - } - let state; - if (!dfa.isEmpty) { - state = this.getStartState(dfa, input, outerContext, useContext); - } - if (state == null) { - if (outerContext == null) { - outerContext = ParserRuleContext_1.ParserRuleContext.emptyContext(); + getContextLabel(i) { + if (i === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + return "ctx:EMPTY_FULL"; + } else if (i === PredictionContext_1.PredictionContext.EMPTY_LOCAL_STATE_KEY) { + return "ctx:EMPTY_LOCAL"; } - if (ParserATNSimulator3.debug) { - console.log("ATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this._parser)); + if (this.atn && i > 0 && i <= this.atn.states.length) { + let state = this.atn.states[i]; + let ruleIndex = state.ruleIndex; + if (this.ruleNames && ruleIndex >= 0 && ruleIndex < this.ruleNames.length) { + return "ctx:" + String(i) + "(" + this.ruleNames[ruleIndex] + ")"; + } } - state = this.computeStartState(dfa, outerContext, useContext); + return "ctx:" + String(i); } - let m = input.mark(); - let index = input.index; - try { - let alt = this.execDFA(dfa, input, index, state); - if (ParserATNSimulator3.debug) { - console.log("DFA after predictATN: " + dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); - } - return alt; - } finally { - this.dfa = void 0; - input.seek(index); - input.release(m); + getEdgeLabel(i) { + return this.vocabulary.getDisplayName(i); } - } - getStartState(dfa, input, outerContext, useContext) { - if (!useContext) { - if (dfa.isPrecedenceDfa) { - let state = dfa.getPrecedenceStartState(this._parser.precedence, false); - if (state == null) { - return void 0; + getStateString(s) { + if (s === ATNSimulator_1.ATNSimulator.ERROR) { + return "ERROR"; + } + let n = s.stateNumber; + let stateStr = "s" + n; + if (s.isAcceptState) { + if (s.predicates) { + stateStr = ":s" + n + "=>" + s.predicates; + } else { + stateStr = ":s" + n + "=>" + s.prediction; } - return new SimulatorState_1.SimulatorState(outerContext, state, false, outerContext); - } else { - if (dfa.s0 == null) { - return void 0; + } + if (s.isContextSensitive) { + stateStr += "*"; + for (let config of s.configs) { + if (config.reachesIntoOuterContext) { + stateStr += "*"; + break; + } } - return new SimulatorState_1.SimulatorState(outerContext, dfa.s0, false, outerContext); } + return stateStr; } - if (!this.enable_global_context_dfa) { - return void 0; + }; + __decorate([ + Decorators_1.NotNull + ], DFASerializer2.prototype, "dfa", void 0); + __decorate([ + Decorators_1.NotNull + ], DFASerializer2.prototype, "vocabulary", void 0); + __decorate([ + Decorators_1.Override + ], DFASerializer2.prototype, "toString", null); + exports.DFASerializer = DFASerializer2; + } + }); + + // node_modules/antlr4ts/dfa/LexerDFASerializer.js + var require_LexerDFASerializer = __commonJS({ + "node_modules/antlr4ts/dfa/LexerDFASerializer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerDFASerializer = void 0; + var DFASerializer_1 = require_DFASerializer(); + var Decorators_1 = require_Decorators(); + var VocabularyImpl_1 = require_VocabularyImpl(); + var LexerDFASerializer2 = class LexerDFASerializer extends DFASerializer_1.DFASerializer { + constructor(dfa) { + super(dfa, VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY); + } + getEdgeLabel(i) { + return "'" + String.fromCodePoint(i) + "'"; } - let remainingContext = outerContext; - assert(outerContext != null); - let s0; - if (dfa.isPrecedenceDfa) { - s0 = dfa.getPrecedenceStartState(this._parser.precedence, true); - } else { - s0 = dfa.s0full; + }; + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], LexerDFASerializer2.prototype, "getEdgeLabel", null); + LexerDFASerializer2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerDFASerializer2); + exports.LexerDFASerializer = LexerDFASerializer2; + } + }); + + // node_modules/antlr4ts/atn/StarLoopEntryState.js + var require_StarLoopEntryState = __commonJS({ + "node_modules/antlr4ts/atn/StarLoopEntryState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.StarLoopEntryState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var BitSet_1 = require_BitSet(); + var DecisionState_1 = require_DecisionState(); + var Decorators_1 = require_Decorators(); + var StarLoopEntryState2 = class extends DecisionState_1.DecisionState { + constructor() { + super(...arguments); + this.precedenceRuleDecision = false; + this.precedenceLoopbackStates = new BitSet_1.BitSet(); } - while (remainingContext != null && s0 != null && s0.isContextSensitive) { - remainingContext = this.skipTailCalls(remainingContext); - s0 = s0.getContextTarget(this.getReturnState(remainingContext)); - if (remainingContext.isEmpty) { - assert(s0 == null || !s0.isContextSensitive); + get stateType() { + return ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY; + } + }; + __decorate([ + Decorators_1.Override + ], StarLoopEntryState2.prototype, "stateType", null); + exports.StarLoopEntryState = StarLoopEntryState2; + } + }); + + // node_modules/antlr4ts/dfa/DFA.js + var require_DFA = __commonJS({ + "node_modules/antlr4ts/dfa/DFA.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DFA = void 0; + var Array2DHashSet_1 = require_Array2DHashSet(); + var ATNConfigSet_1 = require_ATNConfigSet(); + var DFASerializer_1 = require_DFASerializer(); + var DFAState_1 = require_DFAState(); + var LexerDFASerializer_1 = require_LexerDFASerializer(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var StarLoopEntryState_1 = require_StarLoopEntryState(); + var VocabularyImpl_1 = require_VocabularyImpl(); + var DFA2 = class DFA { + constructor(atnStartState, decision = 0) { + this.states = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + this.nextStateNumber = 0; + if (!atnStartState.atn) { + throw new Error("The ATNState must be associated with an ATN"); + } + this.atnStartState = atnStartState; + this.atn = atnStartState.atn; + this.decision = decision; + let isPrecedenceDfa = false; + if (atnStartState instanceof StarLoopEntryState_1.StarLoopEntryState) { + if (atnStartState.precedenceRuleDecision) { + isPrecedenceDfa = true; + this.s0 = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); + this.s0full = new DFAState_1.DFAState(new ATNConfigSet_1.ATNConfigSet()); + } + } + this.precedenceDfa = isPrecedenceDfa; + } + get isPrecedenceDfa() { + return this.precedenceDfa; + } + getPrecedenceStartState(precedence, fullContext) { + if (!this.isPrecedenceDfa) { + throw new Error("Only precedence DFAs may contain a precedence start state."); + } + if (fullContext) { + return this.s0full.getTarget(precedence); } else { - remainingContext = remainingContext.parent; + return this.s0.getTarget(precedence); } } - if (s0 == null) { - return void 0; - } - return new SimulatorState_1.SimulatorState(outerContext, s0, useContext, remainingContext); - } - execDFA(dfa, input, startIndex, state) { - let outerContext = state.outerContext; - if (ParserATNSimulator3.dfa_debug) { - console.log("DFA decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this._parser)); - } - if (ParserATNSimulator3.dfa_debug) { - console.log(dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); - } - let s = state.s0; - let t = input.LA(1); - let remainingOuterContext = state.remainingOuterContext; - while (true) { - if (ParserATNSimulator3.dfa_debug) { - console.log("DFA state " + s.stateNumber + " LA(1)==" + this.getLookaheadName(input)); - } - if (state.useContext) { - while (s.isContextSymbol(t)) { - let next; - if (remainingOuterContext != null) { - remainingOuterContext = this.skipTailCalls(remainingOuterContext); - next = s.getContextTarget(this.getReturnState(remainingOuterContext)); - } - if (next == null) { - let initialState = new SimulatorState_1.SimulatorState(state.outerContext, s, state.useContext, remainingOuterContext); - return this.execATN(dfa, input, startIndex, initialState); - } - assert(remainingOuterContext != null); - remainingOuterContext = remainingOuterContext.parent; - s = next; - } + setPrecedenceStartState(precedence, fullContext, startState) { + if (!this.isPrecedenceDfa) { + throw new Error("Only precedence DFAs may contain a precedence start state."); } - if (this.isAcceptState(s, state.useContext)) { - if (s.predicates != null) { - if (ParserATNSimulator3.dfa_debug) { - console.log("accept " + s); - } - } else { - if (ParserATNSimulator3.dfa_debug) { - console.log("accept; predict " + s.prediction + " in state " + s.stateNumber); - } - } - break; + if (precedence < 0) { + return; } - assert(!this.isAcceptState(s, state.useContext)); - let target = this.getExistingTargetState(s, t); - if (target == null) { - if (ParserATNSimulator3.dfa_debug && t >= 0) { - console.log("no edge for " + this._parser.vocabulary.getDisplayName(t)); - } - let alt; - if (ParserATNSimulator3.dfa_debug) { - let interval = Interval_1.Interval.of(startIndex, this._parser.inputStream.index); - console.log("ATN exec upon " + this._parser.inputStream.getText(interval) + " at DFA state " + s.stateNumber); - } - let initialState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); - alt = this.execATN(dfa, input, startIndex, initialState); - if (ParserATNSimulator3.dfa_debug) { - console.log("back from DFA update, alt=" + alt + ", dfa=\n" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); - } - if (ParserATNSimulator3.dfa_debug) { - console.log("DFA decision " + dfa.decision + " predicts " + alt); - } - return alt; - } else if (target === ATNSimulator_1.ATNSimulator.ERROR) { - let errorState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); - return this.handleNoViableAlt(input, startIndex, errorState); + if (fullContext) { + this.s0full.setTarget(precedence, startState); + } else { + this.s0.setTarget(precedence, startState); } - s = target; - if (!this.isAcceptState(s, state.useContext) && t !== IntStream_1.IntStream.EOF) { - input.consume(); - t = input.LA(1); + } + get isEmpty() { + if (this.isPrecedenceDfa) { + return this.s0.getEdgeMap().size === 0 && this.s0full.getEdgeMap().size === 0; } + return this.s0 == null && this.s0full == null; } - if (!state.useContext && s.configs.conflictInfo != null) { - if (dfa.atnStartState instanceof DecisionState_1.DecisionState) { - if (!this.userWantsCtxSensitive || !s.configs.dipsIntoOuterContext && s.configs.isExactConflict || this.treat_sllk1_conflict_as_ambiguity && input.index === startIndex) { - } else { - assert(!state.useContext); - let conflictingAlts; - let predicates2 = s.predicates; - if (predicates2 != null) { - let conflictIndex = input.index; - if (conflictIndex !== startIndex) { - input.seek(startIndex); - } - conflictingAlts = this.evalSemanticContext(predicates2, outerContext, true); - if (conflictingAlts.cardinality() === 1) { - return conflictingAlts.nextSetBit(0); - } - if (conflictIndex !== startIndex) { - input.seek(conflictIndex); - } - } - if (this.reportAmbiguities) { - let conflictState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); - this.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, input.index); - } - input.seek(startIndex); - return this.adaptivePredict(input, dfa.decision, outerContext, true); - } + get isContextSensitive() { + if (this.isPrecedenceDfa) { + return this.s0full.getEdgeMap().size > 0; } + return this.s0full != null; } - let predicates = s.predicates; - if (predicates != null) { - let stopIndex = input.index; - if (startIndex !== stopIndex) { - input.seek(startIndex); + addState(state) { + state.stateNumber = this.nextStateNumber++; + return this.states.getOrAdd(state); + } + toString(vocabulary, ruleNames) { + if (!vocabulary) { + vocabulary = VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; } - let alts = this.evalSemanticContext(predicates, outerContext, this.reportAmbiguities && this.predictionMode === PredictionMode_1.PredictionMode.LL_EXACT_AMBIG_DETECTION); - switch (alts.cardinality()) { - case 0: - throw this.noViableAlt(input, outerContext, s.configs, startIndex); - case 1: - return alts.nextSetBit(0); - default: - if (startIndex !== stopIndex) { - input.seek(stopIndex); - } - this.reportAmbiguity(dfa, s, startIndex, stopIndex, s.configs.isExactConflict, alts, s.configs); - return alts.nextSetBit(0); + if (!this.s0) { + return ""; } + let serializer; + if (ruleNames) { + serializer = new DFASerializer_1.DFASerializer(this, vocabulary, ruleNames, this.atnStartState.atn); + } else { + serializer = new DFASerializer_1.DFASerializer(this, vocabulary); + } + return serializer.toString(); } - if (ParserATNSimulator3.dfa_debug) { - console.log("DFA decision " + dfa.decision + " predicts " + s.prediction); - } - return s.prediction; - } - isAcceptState(state, useContext) { - if (!state.isAcceptState) { - return false; + toLexerString() { + if (!this.s0) { + return ""; + } + let serializer = new LexerDFASerializer_1.LexerDFASerializer(this); + return serializer.toString(); + } + }; + __decorate([ + Decorators_1.NotNull + ], DFA2.prototype, "states", void 0); + __decorate([ + Decorators_1.NotNull + ], DFA2.prototype, "atnStartState", void 0); + __decorate([ + Decorators_1.NotNull + ], DFA2.prototype, "atn", void 0); + DFA2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], DFA2); + exports.DFA = DFA2; + } + }); + + // node_modules/antlr4ts/atn/BasicState.js + var require_BasicState = __commonJS({ + "node_modules/antlr4ts/atn/BasicState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BasicState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var BasicState2 = class extends ATNState_1.ATNState { + get stateType() { + return ATNStateType_1.ATNStateType.BASIC; + } + }; + __decorate([ + Decorators_1.Override + ], BasicState2.prototype, "stateType", null); + exports.BasicState = BasicState2; + } + }); + + // node_modules/antlr4ts/atn/InvalidState.js + var require_InvalidState = __commonJS({ + "node_modules/antlr4ts/atn/InvalidState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.InvalidState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var BasicState_1 = require_BasicState(); + var Decorators_1 = require_Decorators(); + var InvalidState = class extends BasicState_1.BasicState { + get stateType() { + return ATNStateType_1.ATNStateType.INVALID_TYPE; + } + }; + __decorate([ + Decorators_1.Override + ], InvalidState.prototype, "stateType", null); + exports.InvalidState = InvalidState; + } + }); + + // node_modules/antlr4ts/atn/SetTransition.js + var require_SetTransition = __commonJS({ + "node_modules/antlr4ts/atn/SetTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.SetTransition = void 0; + var IntervalSet_1 = require_IntervalSet(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var Transition_1 = require_Transition(); + var SetTransition2 = class SetTransition extends Transition_1.Transition { + constructor(target, set) { + super(target); + if (set == null) { + set = IntervalSet_1.IntervalSet.of(Token_1.Token.INVALID_TYPE); + } + this.set = set; + } + get serializationType() { + return 7; + } + get label() { + return this.set; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return this.set.contains(symbol); + } + toString() { + return this.set.toString(); + } + }; + __decorate([ + Decorators_1.NotNull + ], SetTransition2.prototype, "set", void 0); + __decorate([ + Decorators_1.Override + ], SetTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], SetTransition2.prototype, "label", null); + __decorate([ + Decorators_1.Override + ], SetTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], SetTransition2.prototype, "toString", null); + SetTransition2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.Nullable) + ], SetTransition2); + exports.SetTransition = SetTransition2; + } + }); + + // node_modules/antlr4ts/atn/NotSetTransition.js + var require_NotSetTransition = __commonJS({ + "node_modules/antlr4ts/atn/NotSetTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.NotSetTransition = void 0; + var Decorators_1 = require_Decorators(); + var SetTransition_1 = require_SetTransition(); + var NotSetTransition2 = class NotSetTransition extends SetTransition_1.SetTransition { + constructor(target, set) { + super(target, set); } - if (state.configs.conflictingAlts == null) { + get serializationType() { + return 8; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= minVocabSymbol && symbol <= maxVocabSymbol && !super.matches(symbol, minVocabSymbol, maxVocabSymbol); + } + toString() { + return "~" + super.toString(); + } + }; + __decorate([ + Decorators_1.Override + ], NotSetTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], NotSetTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override + ], NotSetTransition2.prototype, "toString", null); + NotSetTransition2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.Nullable) + ], NotSetTransition2); + exports.NotSetTransition = NotSetTransition2; + } + }); + + // node_modules/antlr4ts/atn/RuleStopState.js + var require_RuleStopState = __commonJS({ + "node_modules/antlr4ts/atn/RuleStopState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleStopState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var RuleStopState2 = class extends ATNState_1.ATNState { + get nonStopStateNumber() { + return -1; + } + get stateType() { + return ATNStateType_1.ATNStateType.RULE_STOP; + } + }; + __decorate([ + Decorators_1.Override + ], RuleStopState2.prototype, "nonStopStateNumber", null); + __decorate([ + Decorators_1.Override + ], RuleStopState2.prototype, "stateType", null); + exports.RuleStopState = RuleStopState2; + } + }); + + // node_modules/antlr4ts/atn/RuleTransition.js + var require_RuleTransition = __commonJS({ + "node_modules/antlr4ts/atn/RuleTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleTransition = void 0; + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var RuleTransition2 = class RuleTransition extends Transition_1.Transition { + constructor(ruleStart, ruleIndex, precedence, followState) { + super(ruleStart); + this.tailCall = false; + this.optimizedTailCall = false; + this.ruleIndex = ruleIndex; + this.precedence = precedence; + this.followState = followState; + } + get serializationType() { + return 3; + } + get isEpsilon() { return true; } - if (useContext && this.predictionMode === PredictionMode_1.PredictionMode.LL_EXACT_AMBIG_DETECTION) { - return state.configs.isExactConflict; + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - return true; - } - execATN(dfa, input, startIndex, initialState) { - if (ParserATNSimulator3.debug) { - console.log("execATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input)); - } - let outerContext = initialState.outerContext; - let useContext = initialState.useContext; - let t = input.LA(1); - let previous = initialState; - let contextCache = new PredictionContextCache_1.PredictionContextCache(); - while (true) { - let nextState = this.computeReachSet(dfa, previous, t, contextCache); - if (nextState == null) { - this.setDFAEdge(previous.s0, input.LA(1), ATNSimulator_1.ATNSimulator.ERROR); - return this.handleNoViableAlt(input, startIndex, previous); - } - let D = nextState.s0; - assert(D.isAcceptState || D.prediction === ATN_1.ATN.INVALID_ALT_NUMBER); - assert(D.isAcceptState || D.configs.conflictInfo == null); - if (this.isAcceptState(D, useContext)) { - let conflictingAlts = D.configs.conflictingAlts; - let predictedAlt = conflictingAlts == null ? D.prediction : ATN_1.ATN.INVALID_ALT_NUMBER; - if (predictedAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { - if (this.optimize_ll1 && input.index === startIndex && !dfa.isPrecedenceDfa && nextState.outerContext === nextState.remainingOuterContext && dfa.decision >= 0 && !D.configs.hasSemanticContext) { - if (t >= 0 && t <= MAX_SHORT_VALUE) { - let key = (dfa.decision << 16 >>> 0) + t; - this.atn.LL1Table.set(key, predictedAlt); - } - } - if (useContext && this.always_try_local_context) { - this.reportContextSensitivity(dfa, predictedAlt, nextState, startIndex, input.index); + }; + __decorate([ + Decorators_1.NotNull + ], RuleTransition2.prototype, "followState", void 0); + __decorate([ + Decorators_1.Override + ], RuleTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], RuleTransition2.prototype, "isEpsilon", null); + __decorate([ + Decorators_1.Override + ], RuleTransition2.prototype, "matches", null); + RuleTransition2 = __decorate([ + __param(0, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], RuleTransition2); + exports.RuleTransition = RuleTransition2; + } + }); + + // node_modules/antlr4ts/atn/WildcardTransition.js + var require_WildcardTransition = __commonJS({ + "node_modules/antlr4ts/atn/WildcardTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.WildcardTransition = void 0; + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var WildcardTransition2 = class WildcardTransition extends Transition_1.Transition { + constructor(target) { + super(target); + } + get serializationType() { + return 9; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= minVocabSymbol && symbol <= maxVocabSymbol; + } + toString() { + return "."; + } + }; + __decorate([ + Decorators_1.Override + ], WildcardTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], WildcardTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], WildcardTransition2.prototype, "toString", null); + WildcardTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], WildcardTransition2); + exports.WildcardTransition = WildcardTransition2; + } + }); + + // node_modules/antlr4ts/atn/LL1Analyzer.js + var require_LL1Analyzer = __commonJS({ + "node_modules/antlr4ts/atn/LL1Analyzer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LL1Analyzer = void 0; + var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); + var Array2DHashSet_1 = require_Array2DHashSet(); + var ATNConfig_1 = require_ATNConfig(); + var BitSet_1 = require_BitSet(); + var IntervalSet_1 = require_IntervalSet(); + var Decorators_1 = require_Decorators(); + var NotSetTransition_1 = require_NotSetTransition(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var PredictionContext_1 = require_PredictionContext(); + var RuleStopState_1 = require_RuleStopState(); + var RuleTransition_1 = require_RuleTransition(); + var Token_1 = require_Token(); + var WildcardTransition_1 = require_WildcardTransition(); + var LL1Analyzer2 = class LL1Analyzer3 { + constructor(atn) { + this.atn = atn; + } + getDecisionLookahead(s) { + if (s == null) { + return void 0; + } + let look = new Array(s.numberOfTransitions); + for (let alt = 0; alt < s.numberOfTransitions; alt++) { + let current = new IntervalSet_1.IntervalSet(); + look[alt] = current; + let lookBusy = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + let seeThruPreds = false; + this._LOOK(s.transition(alt).target, void 0, PredictionContext_1.PredictionContext.EMPTY_LOCAL, current, lookBusy, new BitSet_1.BitSet(), seeThruPreds, false); + if (current.size === 0 || current.contains(LL1Analyzer3.HIT_PRED)) { + current = void 0; + look[alt] = current; + } + } + return look; + } + LOOK(s, ctx, stopState) { + if (stopState === void 0) { + if (s.atn == null) { + throw new Error("Illegal state"); + } + stopState = s.atn.ruleToStopState[s.ruleIndex]; + } else if (stopState === null) { + stopState = void 0; + } + let r = new IntervalSet_1.IntervalSet(); + let seeThruPreds = true; + let addEOF = true; + this._LOOK(s, stopState, ctx, r, new Array2DHashSet_1.Array2DHashSet(), new BitSet_1.BitSet(), seeThruPreds, addEOF); + return r; + } + _LOOK(s, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) { + let c = ATNConfig_1.ATNConfig.create(s, 0, ctx); + if (!lookBusy.add(c)) { + return; + } + if (s === stopState) { + if (PredictionContext_1.PredictionContext.isEmptyLocal(ctx)) { + look.add(Token_1.Token.EPSILON); + return; + } else if (ctx.isEmpty) { + if (addEOF) { + look.add(Token_1.Token.EOF); } + return; } - predictedAlt = D.prediction; - let attemptFullContext = conflictingAlts != null && this.userWantsCtxSensitive; - if (attemptFullContext) { - attemptFullContext = !useContext && (D.configs.dipsIntoOuterContext || !D.configs.isExactConflict) && (!this.treat_sllk1_conflict_as_ambiguity || input.index !== startIndex); - } - if (D.configs.hasSemanticContext) { - let predPredictions = D.predicates; - if (predPredictions != null) { - let conflictIndex = input.index; - if (conflictIndex !== startIndex) { - input.seek(startIndex); - } - conflictingAlts = this.evalSemanticContext(predPredictions, outerContext, attemptFullContext || this.reportAmbiguities); - switch (conflictingAlts.cardinality()) { - case 0: - throw this.noViableAlt(input, outerContext, D.configs, startIndex); - case 1: - return conflictingAlts.nextSetBit(0); - default: - break; - } - if (conflictIndex !== startIndex) { - input.seek(conflictIndex); - } + } + if (s instanceof RuleStopState_1.RuleStopState) { + if (ctx.isEmpty && !PredictionContext_1.PredictionContext.isEmptyLocal(ctx)) { + if (addEOF) { + look.add(Token_1.Token.EOF); } + return; } - if (!attemptFullContext) { - if (conflictingAlts != null) { - if (this.reportAmbiguities && conflictingAlts.cardinality() > 1) { - this.reportAmbiguity(dfa, D, startIndex, input.index, D.configs.isExactConflict, conflictingAlts, D.configs); + let removed = calledRuleStack.get(s.ruleIndex); + try { + calledRuleStack.clear(s.ruleIndex); + for (let i = 0; i < ctx.size; i++) { + if (ctx.getReturnState(i) === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + continue; } - predictedAlt = conflictingAlts.nextSetBit(0); - } - return predictedAlt; - } else { - assert(!useContext); - assert(this.isAcceptState(D, false)); - if (ParserATNSimulator3.debug) { - console.log("RETRY with outerContext=" + outerContext); + let returnState = this.atn.states[ctx.getReturnState(i)]; + this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF); } - let fullContextState = this.computeStartState(dfa, outerContext, true); - if (this.reportAmbiguities) { - this.reportAttemptingFullContext(dfa, conflictingAlts, nextState, startIndex, input.index); + } finally { + if (removed) { + calledRuleStack.set(s.ruleIndex); } - input.seek(startIndex); - return this.execATN(dfa, input, startIndex, fullContextState); - } - } - previous = nextState; - if (t !== IntStream_1.IntStream.EOF) { - input.consume(); - t = input.LA(1); - } - } - } - handleNoViableAlt(input, startIndex, previous) { - if (previous.s0 != null) { - let alts = new BitSet_1.BitSet(); - let maxAlt = 0; - for (let config of previous.s0.configs) { - if (config.reachesIntoOuterContext || config.state instanceof RuleStopState_1.RuleStopState) { - alts.set(config.alt); - maxAlt = Math.max(maxAlt, config.alt); } } - switch (alts.cardinality()) { - case 0: - break; - case 1: - return alts.nextSetBit(0); - default: - if (!previous.s0.configs.hasSemanticContext) { - return alts.nextSetBit(0); + let n = s.numberOfTransitions; + for (let i = 0; i < n; i++) { + let t = s.transition(i); + if (t instanceof RuleTransition_1.RuleTransition) { + if (calledRuleStack.get(t.ruleIndex)) { + continue; } - let filteredConfigs = new ATNConfigSet_1.ATNConfigSet(); - for (let config of previous.s0.configs) { - if (config.reachesIntoOuterContext || config.state instanceof RuleStopState_1.RuleStopState) { - filteredConfigs.add(config); - } + let newContext = ctx.getChild(t.followState.stateNumber); + try { + calledRuleStack.set(t.ruleIndex); + this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } finally { + calledRuleStack.clear(t.ruleIndex); } - let altToPred = this.getPredsForAmbigAlts(alts, filteredConfigs, maxAlt); - if (altToPred != null) { - let predicates = this.getPredicatePredictions(alts, altToPred); - if (predicates != null) { - let stopIndex = input.index; - try { - input.seek(startIndex); - let filteredAlts = this.evalSemanticContext(predicates, previous.outerContext, false); - if (!filteredAlts.isEmpty) { - return filteredAlts.nextSetBit(0); - } - } finally { - input.seek(stopIndex); - } + } else if (t instanceof AbstractPredicateTransition_1.AbstractPredicateTransition) { + if (seeThruPreds) { + this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } else { + look.add(LL1Analyzer3.HIT_PRED); + } + } else if (t.isEpsilon) { + this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } else if (t instanceof WildcardTransition_1.WildcardTransition) { + look.addAll(IntervalSet_1.IntervalSet.of(Token_1.Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType)); + } else { + let set = t.label; + if (set != null) { + if (t instanceof NotSetTransition_1.NotSetTransition) { + set = set.complement(IntervalSet_1.IntervalSet.of(Token_1.Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType)); } + look.addAll(set); } - return alts.nextSetBit(0); + } } } - throw this.noViableAlt(input, previous.outerContext, previous.s0.configs, startIndex); - } - computeReachSet(dfa, previous, t, contextCache) { - let useContext = previous.useContext; - let remainingGlobalContext = previous.remainingOuterContext; - let s = previous.s0; - if (useContext) { - while (s.isContextSymbol(t)) { - let next; - if (remainingGlobalContext != null) { - remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); - next = s.getContextTarget(this.getReturnState(remainingGlobalContext)); - } - if (next == null) { - break; + }; + LL1Analyzer2.HIT_PRED = Token_1.Token.INVALID_TYPE; + __decorate([ + Decorators_1.NotNull + ], LL1Analyzer2.prototype, "atn", void 0); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], LL1Analyzer2.prototype, "LOOK", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull), + __param(4, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull) + ], LL1Analyzer2.prototype, "_LOOK", null); + LL1Analyzer2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], LL1Analyzer2); + exports.LL1Analyzer = LL1Analyzer2; + } + }); + + // node_modules/antlr4ts/atn/ATN.js + var require_ATN = __commonJS({ + "node_modules/antlr4ts/atn/ATN.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATN = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var DFA_1 = require_DFA(); + var IntervalSet_1 = require_IntervalSet(); + var InvalidState_1 = require_InvalidState(); + var LL1Analyzer_1 = require_LL1Analyzer(); + var Decorators_1 = require_Decorators(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var PredictionContext_1 = require_PredictionContext(); + var Token_1 = require_Token(); + var assert = require_assert(); + var ATN3 = class ATN { + constructor(grammarType, maxTokenType) { + this.states = []; + this.decisionToState = []; + this.modeNameToStartState = new Map(); + this.modeToStartState = []; + this.contextCache = new Array2DHashMap_1.Array2DHashMap(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + this.decisionToDFA = []; + this.modeToDFA = []; + this.LL1Table = new Map(); + this.grammarType = grammarType; + this.maxTokenType = maxTokenType; + } + clearDFA() { + this.decisionToDFA = new Array(this.decisionToState.length); + for (let i = 0; i < this.decisionToDFA.length; i++) { + this.decisionToDFA[i] = new DFA_1.DFA(this.decisionToState[i], i); + } + this.modeToDFA = new Array(this.modeToStartState.length); + for (let i = 0; i < this.modeToDFA.length; i++) { + this.modeToDFA[i] = new DFA_1.DFA(this.modeToStartState[i]); + } + this.contextCache.clear(); + this.LL1Table.clear(); + } + get contextCacheSize() { + return this.contextCache.size; + } + getCachedContext(context) { + return PredictionContext_1.PredictionContext.getCachedContext(context, this.contextCache, new PredictionContext_1.PredictionContext.IdentityHashMap()); + } + getDecisionToDFA() { + assert(this.decisionToDFA != null && this.decisionToDFA.length === this.decisionToState.length); + return this.decisionToDFA; + } + nextTokens(s, ctx) { + if (ctx) { + let anal = new LL1Analyzer_1.LL1Analyzer(this); + let next = anal.LOOK(s, ctx); + return next; + } else { + if (s.nextTokenWithinRule) { + return s.nextTokenWithinRule; } - assert(remainingGlobalContext != null); - remainingGlobalContext = remainingGlobalContext.parent; - s = next; + s.nextTokenWithinRule = this.nextTokens(s, PredictionContext_1.PredictionContext.EMPTY_LOCAL); + s.nextTokenWithinRule.setReadonly(true); + return s.nextTokenWithinRule; } } - assert(!this.isAcceptState(s, useContext)); - if (this.isAcceptState(s, useContext)) { - return new SimulatorState_1.SimulatorState(previous.outerContext, s, useContext, remainingGlobalContext); - } - let s0 = s; - let target = this.getExistingTargetState(s0, t); - if (target == null) { - let result = this.computeTargetState(dfa, s0, remainingGlobalContext, t, useContext, contextCache); - target = result[0]; - remainingGlobalContext = result[1]; - } - if (target === ATNSimulator_1.ATNSimulator.ERROR) { + addState(state) { + state.atn = this; + state.stateNumber = this.states.length; + this.states.push(state); + } + removeState(state) { + let invalidState = new InvalidState_1.InvalidState(); + invalidState.atn = this; + invalidState.stateNumber = state.stateNumber; + this.states[state.stateNumber] = invalidState; + } + defineMode(name, s) { + this.modeNameToStartState.set(name, s); + this.modeToStartState.push(s); + this.modeToDFA.push(new DFA_1.DFA(s)); + this.defineDecisionState(s); + } + defineDecisionState(s) { + this.decisionToState.push(s); + s.decision = this.decisionToState.length - 1; + this.decisionToDFA.push(new DFA_1.DFA(s, s.decision)); + return s.decision; + } + getDecisionState(decision) { + if (this.decisionToState.length > 0) { + return this.decisionToState[decision]; + } return void 0; } - assert(!useContext || !target.configs.dipsIntoOuterContext); - return new SimulatorState_1.SimulatorState(previous.outerContext, target, useContext, remainingGlobalContext); - } - getExistingTargetState(s, t) { - return s.getTarget(t); - } - computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache) { - let closureConfigs = s.configs.toArray(); - let contextElements; - let reach = new ATNConfigSet_1.ATNConfigSet(); - let stepIntoGlobal; - do { - let hasMoreContext = !useContext || remainingGlobalContext != null; - if (!hasMoreContext) { - reach.isOutermostConfigSet = true; - } - let reachIntermediate = new ATNConfigSet_1.ATNConfigSet(); - let skippedStopStates; - for (let c of closureConfigs) { - if (ParserATNSimulator3.debug) { - console.log("testing " + this.getTokenName(t) + " at " + c.toString()); - } - if (c.state instanceof RuleStopState_1.RuleStopState) { - assert(c.context.isEmpty); - if (useContext && !c.reachesIntoOuterContext || t === IntStream_1.IntStream.EOF) { - if (skippedStopStates == null) { - skippedStopStates = []; - } - skippedStopStates.push(c); - } - continue; - } - let n = c.state.numberOfOptimizedTransitions; - for (let ti = 0; ti < n; ti++) { - let trans = c.state.getOptimizedTransition(ti); - let target = this.getReachableTarget(c, trans, t); - if (target != null) { - reachIntermediate.add(c.transform(target, false), contextCache); - } - } - } - if (this.optimize_unique_closure && skippedStopStates == null && t !== Token_1.Token.EOF && reachIntermediate.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { - reachIntermediate.isOutermostConfigSet = reach.isOutermostConfigSet; - reach = reachIntermediate; - break; + get numberOfDecisions() { + return this.decisionToState.length; + } + getExpectedTokens(stateNumber, context) { + if (stateNumber < 0 || stateNumber >= this.states.length) { + throw new RangeError("Invalid state number."); } - let collectPredicates = false; - let treatEofAsEpsilon = t === Token_1.Token.EOF; - this.closure(reachIntermediate, reach, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon); - stepIntoGlobal = reach.dipsIntoOuterContext; - if (t === IntStream_1.IntStream.EOF) { - reach = this.removeAllConfigsNotInRuleStopState(reach, contextCache); + let ctx = context; + let s = this.states[stateNumber]; + let following = this.nextTokens(s); + if (!following.contains(Token_1.Token.EPSILON)) { + return following; } - if (skippedStopStates != null && (!useContext || !PredictionMode_1.PredictionMode.hasConfigInRuleStopState(reach))) { - assert(skippedStopStates.length > 0); - for (let c of skippedStopStates) { - reach.add(c, contextCache); - } + let expected = new IntervalSet_1.IntervalSet(); + expected.addAll(following); + expected.remove(Token_1.Token.EPSILON); + while (ctx != null && ctx.invokingState >= 0 && following.contains(Token_1.Token.EPSILON)) { + let invokingState = this.states[ctx.invokingState]; + let rt = invokingState.transition(0); + following = this.nextTokens(rt.followState); + expected.addAll(following); + expected.remove(Token_1.Token.EPSILON); + ctx = ctx._parent; } - if (useContext && stepIntoGlobal) { - reach.clear(); - remainingGlobalContext = remainingGlobalContext; - remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); - let nextContextElement = this.getReturnState(remainingGlobalContext); - if (contextElements == null) { - contextElements = new IntegerList_1.IntegerList(); - } - if (remainingGlobalContext.isEmpty) { - remainingGlobalContext = void 0; - } else { - remainingGlobalContext = remainingGlobalContext.parent; - } - contextElements.add(nextContextElement); - if (nextContextElement !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - for (let i = 0; i < closureConfigs.length; i++) { - closureConfigs[i] = closureConfigs[i].appendContext(nextContextElement, contextCache); - } - } + if (following.contains(Token_1.Token.EPSILON)) { + expected.add(Token_1.Token.EOF); } - } while (useContext && stepIntoGlobal); - if (reach.isEmpty) { - this.setDFAEdge(s, t, ATNSimulator_1.ATNSimulator.ERROR); - return [ATNSimulator_1.ATNSimulator.ERROR, remainingGlobalContext]; + return expected; } - let result = this.addDFAEdge(dfa, s, t, contextElements, reach, contextCache); - return [result, remainingGlobalContext]; - } - removeAllConfigsNotInRuleStopState(configs, contextCache) { - if (PredictionMode_1.PredictionMode.allConfigsInRuleStopStates(configs)) { - return configs; + }; + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "states", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "decisionToState", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "modeNameToStartState", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "modeToStartState", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "decisionToDFA", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "modeToDFA", void 0); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "nextTokens", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ATN3.prototype, "removeState", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ATN3.prototype, "defineMode", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ATN3.prototype, "defineDecisionState", null); + __decorate([ + Decorators_1.NotNull + ], ATN3.prototype, "getExpectedTokens", null); + ATN3 = __decorate([ + __param(0, Decorators_1.NotNull) + ], ATN3); + exports.ATN = ATN3; + (function(ATN4) { + ATN4.INVALID_ALT_NUMBER = 0; + })(ATN3 = exports.ATN || (exports.ATN = {})); + exports.ATN = ATN3; + } + }); + + // node_modules/antlr4ts/atn/LexerIndexedCustomAction.js + var require_LexerIndexedCustomAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerIndexedCustomAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerIndexedCustomAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerIndexedCustomAction2 = class LexerIndexedCustomAction3 { + constructor(offset, action) { + this._offset = offset; + this._action = action; } - let result = new ATNConfigSet_1.ATNConfigSet(); - for (let config of configs) { - if (!(config.state instanceof RuleStopState_1.RuleStopState)) { - continue; - } - result.add(config, contextCache); + get offset() { + return this._offset; } - return result; - } - computeStartState(dfa, globalContext, useContext) { - let s0 = dfa.isPrecedenceDfa ? dfa.getPrecedenceStartState(this._parser.precedence, useContext) : useContext ? dfa.s0full : dfa.s0; - if (s0 != null) { - if (!useContext) { - return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, globalContext); + get action() { + return this._action; + } + get actionType() { + return this._action.actionType; + } + get isPositionDependent() { + return true; + } + execute(lexer) { + this._action.execute(lexer); + } + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this._offset); + hash = MurmurHash_1.MurmurHash.update(hash, this._action); + return MurmurHash_1.MurmurHash.finish(hash, 2); + } + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerIndexedCustomAction3)) { + return false; } - s0.setContextSensitive(this.atn); + return this._offset === obj._offset && this._action.equals(obj._action); } - let decision = dfa.decision; - let p = dfa.atnStartState; - let previousContext = 0; - let remainingGlobalContext = globalContext; - let initialContext = useContext ? PredictionContext_1.PredictionContext.EMPTY_FULL : PredictionContext_1.PredictionContext.EMPTY_LOCAL; - let contextCache = new PredictionContextCache_1.PredictionContextCache(); - if (useContext) { - if (!this.enable_global_context_dfa) { - while (remainingGlobalContext != null) { - if (remainingGlobalContext.isEmpty) { - previousContext = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; - remainingGlobalContext = void 0; - } else { - previousContext = this.getReturnState(remainingGlobalContext); - initialContext = initialContext.appendSingleContext(previousContext, contextCache); - remainingGlobalContext = remainingGlobalContext.parent; + }; + __decorate([ + Decorators_1.NotNull + ], LexerIndexedCustomAction2.prototype, "action", null); + __decorate([ + Decorators_1.Override + ], LexerIndexedCustomAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerIndexedCustomAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override + ], LexerIndexedCustomAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerIndexedCustomAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerIndexedCustomAction2.prototype, "equals", null); + LexerIndexedCustomAction2 = __decorate([ + __param(1, Decorators_1.NotNull) + ], LexerIndexedCustomAction2); + exports.LexerIndexedCustomAction = LexerIndexedCustomAction2; + } + }); + + // node_modules/antlr4ts/atn/LexerActionExecutor.js + var require_LexerActionExecutor = __commonJS({ + "node_modules/antlr4ts/atn/LexerActionExecutor.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerActionExecutor = void 0; + var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); + var LexerIndexedCustomAction_1 = require_LexerIndexedCustomAction(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerActionExecutor2 = class LexerActionExecutor3 { + constructor(lexerActions) { + this._lexerActions = lexerActions; + let hash = MurmurHash_1.MurmurHash.initialize(); + for (let lexerAction of lexerActions) { + hash = MurmurHash_1.MurmurHash.update(hash, lexerAction); + } + this.cachedHashCode = MurmurHash_1.MurmurHash.finish(hash, lexerActions.length); + } + static append(lexerActionExecutor, lexerAction) { + if (!lexerActionExecutor) { + return new LexerActionExecutor3([lexerAction]); + } + let lexerActions = lexerActionExecutor._lexerActions.slice(0); + lexerActions.push(lexerAction); + return new LexerActionExecutor3(lexerActions); + } + fixOffsetBeforeMatch(offset) { + let updatedLexerActions; + for (let i = 0; i < this._lexerActions.length; i++) { + if (this._lexerActions[i].isPositionDependent && !(this._lexerActions[i] instanceof LexerIndexedCustomAction_1.LexerIndexedCustomAction)) { + if (!updatedLexerActions) { + updatedLexerActions = this._lexerActions.slice(0); } + updatedLexerActions[i] = new LexerIndexedCustomAction_1.LexerIndexedCustomAction(offset, this._lexerActions[i]); } } - while (s0 != null && s0.isContextSensitive && remainingGlobalContext != null) { - let next; - remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); - if (remainingGlobalContext.isEmpty) { - next = s0.getContextTarget(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY); - previousContext = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; - remainingGlobalContext = void 0; - } else { - previousContext = this.getReturnState(remainingGlobalContext); - next = s0.getContextTarget(previousContext); - initialContext = initialContext.appendSingleContext(previousContext, contextCache); - remainingGlobalContext = remainingGlobalContext.parent; - } - if (next == null) { - break; - } - s0 = next; + if (!updatedLexerActions) { + return this; } + return new LexerActionExecutor3(updatedLexerActions); } - if (s0 != null && !s0.isContextSensitive) { - return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, remainingGlobalContext); + get lexerActions() { + return this._lexerActions; } - let configs = new ATNConfigSet_1.ATNConfigSet(); - while (true) { - let reachIntermediate = new ATNConfigSet_1.ATNConfigSet(); - let n = p.numberOfTransitions; - for (let ti = 0; ti < n; ti++) { - let target = p.transition(ti).target; - reachIntermediate.add(ATNConfig_1.ATNConfig.create(target, ti + 1, initialContext)); - } - let hasMoreContext = remainingGlobalContext != null; - if (!hasMoreContext) { - configs.isOutermostConfigSet = true; - } - let collectPredicates = true; - this.closure(reachIntermediate, configs, collectPredicates, hasMoreContext, contextCache, false); - let stepIntoGlobal = configs.dipsIntoOuterContext; - let next; - if (useContext && !this.enable_global_context_dfa) { - s0 = this.addDFAState(dfa, configs, contextCache); - break; - } else if (s0 == null) { - if (!dfa.isPrecedenceDfa) { - next = this.addDFAState(dfa, configs, contextCache); - if (useContext) { - if (!dfa.s0full) { - dfa.s0full = next; - } else { - next = dfa.s0full; - } - } else { - if (!dfa.s0) { - dfa.s0 = next; - } else { - next = dfa.s0; - } + execute(lexer, input, startIndex) { + let requiresSeek = false; + let stopIndex = input.index; + try { + for (let lexerAction of this._lexerActions) { + if (lexerAction instanceof LexerIndexedCustomAction_1.LexerIndexedCustomAction) { + let offset = lexerAction.offset; + input.seek(startIndex + offset); + lexerAction = lexerAction.action; + requiresSeek = startIndex + offset !== stopIndex; + } else if (lexerAction.isPositionDependent) { + input.seek(stopIndex); + requiresSeek = false; } - } else { - configs = this.applyPrecedenceFilter(configs, globalContext, contextCache); - next = this.addDFAState(dfa, configs, contextCache); - dfa.setPrecedenceStartState(this._parser.precedence, useContext, next); + lexerAction.execute(lexer); } - } else { - if (dfa.isPrecedenceDfa) { - configs = this.applyPrecedenceFilter(configs, globalContext, contextCache); + } finally { + if (requiresSeek) { + input.seek(stopIndex); } - next = this.addDFAState(dfa, configs, contextCache); - s0.setContextTarget(previousContext, next); - } - s0 = next; - if (!useContext || !stepIntoGlobal) { - break; - } - next.setContextSensitive(this.atn); - remainingGlobalContext = remainingGlobalContext; - configs.clear(); - remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); - let nextContextElement = this.getReturnState(remainingGlobalContext); - if (remainingGlobalContext.isEmpty) { - remainingGlobalContext = void 0; - } else { - remainingGlobalContext = remainingGlobalContext.parent; - } - if (nextContextElement !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - initialContext = initialContext.appendSingleContext(nextContextElement, contextCache); } - previousContext = nextContextElement; } - return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, remainingGlobalContext); - } - applyPrecedenceFilter(configs, globalContext, contextCache) { - let statesFromAlt1 = new Map(); - let configSet = new ATNConfigSet_1.ATNConfigSet(); - for (let config of configs) { - if (config.alt !== 1) { - continue; - } - let updatedContext = config.semanticContext.evalPrecedence(this._parser, globalContext); - if (updatedContext == null) { - continue; - } - statesFromAlt1.set(config.state.stateNumber, config.context); - if (updatedContext !== config.semanticContext) { - configSet.add(config.transform(config.state, false, updatedContext), contextCache); - } else { - configSet.add(config, contextCache); - } + hashCode() { + return this.cachedHashCode; } - for (let config of configs) { - if (config.alt === 1) { - continue; - } - if (!config.isPrecedenceFilterSuppressed) { - let context = statesFromAlt1.get(config.state.stateNumber); - if (context != null && context.equals(config.context)) { - continue; - } + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerActionExecutor3)) { + return false; } - configSet.add(config, contextCache); - } - return configSet; - } - getReachableTarget(source, trans, ttype) { - if (trans.matches(ttype, 0, this.atn.maxTokenType)) { - return trans.target; - } - return void 0; - } - predicateDFAState(D, configs, nalts) { - let conflictingAlts = this.getConflictingAltsFromConfigSet(configs); - if (!conflictingAlts) { - throw new Error("This unhandled scenario is intended to be unreachable, but I'm currently not sure of why we know that's the case."); + return this.cachedHashCode === obj.cachedHashCode && ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this._lexerActions, obj._lexerActions); } - if (ParserATNSimulator3.debug) { - console.log("predicateDFAState " + D); + }; + __decorate([ + Decorators_1.NotNull + ], LexerActionExecutor2.prototype, "_lexerActions", void 0); + __decorate([ + Decorators_1.NotNull + ], LexerActionExecutor2.prototype, "lexerActions", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerActionExecutor2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerActionExecutor2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerActionExecutor2.prototype, "equals", null); + __decorate([ + Decorators_1.NotNull, + __param(1, Decorators_1.NotNull) + ], LexerActionExecutor2, "append", null); + LexerActionExecutor2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerActionExecutor2); + exports.LexerActionExecutor = LexerActionExecutor2; + } + }); + + // node_modules/antlr4ts/LexerNoViableAltException.js + var require_LexerNoViableAltException = __commonJS({ + "node_modules/antlr4ts/LexerNoViableAltException.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerNoViableAltException = void 0; + var RecognitionException_1 = require_RecognitionException(); + var Decorators_1 = require_Decorators(); + var Interval_1 = require_Interval(); + var Utils3 = require_Utils(); + var LexerNoViableAltException2 = class LexerNoViableAltException extends RecognitionException_1.RecognitionException { + constructor(lexer, input, startIndex, deadEndConfigs) { + super(lexer, input); + this._startIndex = startIndex; + this._deadEndConfigs = deadEndConfigs; + } + get startIndex() { + return this._startIndex; + } + get deadEndConfigs() { + return this._deadEndConfigs; + } + get inputStream() { + return super.inputStream; } - let altToPred = this.getPredsForAmbigAlts(conflictingAlts, configs, nalts); - let predPredictions; - if (altToPred != null) { - predPredictions = this.getPredicatePredictions(conflictingAlts, altToPred); - D.predicates = predPredictions; + toString() { + let symbol = ""; + if (this._startIndex >= 0 && this._startIndex < this.inputStream.size) { + symbol = this.inputStream.getText(Interval_1.Interval.of(this._startIndex, this._startIndex)); + symbol = Utils3.escapeWhitespace(symbol, false); + } + return `LexerNoViableAltException('${symbol}')`; } - return predPredictions; - } - getPredsForAmbigAlts(ambigAlts, configs, nalts) { - let altToPred = new Array(nalts + 1); - let n = altToPred.length; - for (let c of configs) { - if (ambigAlts.get(c.alt)) { - altToPred[c.alt] = SemanticContext_1.SemanticContext.or(altToPred[c.alt], c.semanticContext); + }; + __decorate([ + Decorators_1.Override + ], LexerNoViableAltException2.prototype, "inputStream", null); + __decorate([ + Decorators_1.Override + ], LexerNoViableAltException2.prototype, "toString", null); + LexerNoViableAltException2 = __decorate([ + __param(1, Decorators_1.NotNull) + ], LexerNoViableAltException2); + exports.LexerNoViableAltException = LexerNoViableAltException2; + } + }); + + // node_modules/antlr4ts/atn/OrderedATNConfigSet.js + var require_OrderedATNConfigSet = __commonJS({ + "node_modules/antlr4ts/atn/OrderedATNConfigSet.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.OrderedATNConfigSet = void 0; + var ATNConfigSet_1 = require_ATNConfigSet(); + var Decorators_1 = require_Decorators(); + var OrderedATNConfigSet2 = class extends ATNConfigSet_1.ATNConfigSet { + constructor(set, readonly) { + if (set != null && readonly != null) { + super(set, readonly); + } else { + super(); } } - let nPredAlts = 0; - for (let i = 0; i < n; i++) { - if (altToPred[i] == null) { - altToPred[i] = SemanticContext_1.SemanticContext.NONE; - } else if (altToPred[i] !== SemanticContext_1.SemanticContext.NONE) { - nPredAlts++; + clone(readonly) { + let copy = new OrderedATNConfigSet2(this, readonly); + if (!readonly && this.isReadOnly) { + copy.addAll(this); } + return copy; } - let result = altToPred; - if (nPredAlts === 0) { - result = void 0; + getKey(e) { + return {state: 0, alt: e.hashCode()}; } - if (ParserATNSimulator3.debug) { - console.log("getPredsForAmbigAlts result " + (result ? Arrays_1.Arrays.toString(result) : "undefined")); + canMerge(left, leftKey, right) { + return left.equals(right); } - return result; - } - getPredicatePredictions(ambigAlts, altToPred) { - let pairs = []; - let containsPredicate = false; - for (let i = 1; i < altToPred.length; i++) { - let pred = altToPred[i]; - assert(pred != null); - if (ambigAlts != null && ambigAlts.get(i) && pred === SemanticContext_1.SemanticContext.NONE) { - pairs.push(new DFAState_1.DFAState.PredPrediction(pred, i)); - } else if (pred !== SemanticContext_1.SemanticContext.NONE) { - containsPredicate = true; - pairs.push(new DFAState_1.DFAState.PredPrediction(pred, i)); + }; + __decorate([ + Decorators_1.Override + ], OrderedATNConfigSet2.prototype, "clone", null); + __decorate([ + Decorators_1.Override + ], OrderedATNConfigSet2.prototype, "getKey", null); + __decorate([ + Decorators_1.Override + ], OrderedATNConfigSet2.prototype, "canMerge", null); + exports.OrderedATNConfigSet = OrderedATNConfigSet2; + } + }); + + // node_modules/antlr4ts/atn/LexerATNSimulator.js + var require_LexerATNSimulator = __commonJS({ + "node_modules/antlr4ts/atn/LexerATNSimulator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerATNSimulator = void 0; + var AcceptStateInfo_1 = require_AcceptStateInfo(); + var ATN_1 = require_ATN(); + var ATNConfig_1 = require_ATNConfig(); + var ATNConfigSet_1 = require_ATNConfigSet(); + var ATNSimulator_1 = require_ATNSimulator(); + var DFAState_1 = require_DFAState(); + var Interval_1 = require_Interval(); + var IntStream_1 = require_IntStream(); + var Lexer_1 = require_Lexer(); + var LexerActionExecutor_1 = require_LexerActionExecutor(); + var LexerNoViableAltException_1 = require_LexerNoViableAltException(); + var Decorators_1 = require_Decorators(); + var OrderedATNConfigSet_1 = require_OrderedATNConfigSet(); + var PredictionContext_1 = require_PredictionContext(); + var RuleStopState_1 = require_RuleStopState(); + var Token_1 = require_Token(); + var assert = require_assert(); + var LexerATNSimulator3 = class LexerATNSimulator4 extends ATNSimulator_1.ATNSimulator { + constructor(atn, recog) { + super(atn); + this.optimize_tail_calls = true; + this.startIndex = -1; + this._line = 1; + this._charPositionInLine = 0; + this.mode = Lexer_1.Lexer.DEFAULT_MODE; + this.prevAccept = new LexerATNSimulator4.SimState(); + this.recog = recog; + } + copyState(simulator) { + this._charPositionInLine = simulator.charPositionInLine; + this._line = simulator._line; + this.mode = simulator.mode; + this.startIndex = simulator.startIndex; + } + match(input, mode) { + this.mode = mode; + let mark = input.mark(); + try { + this.startIndex = input.index; + this.prevAccept.reset(); + let s0 = this.atn.modeToDFA[mode].s0; + if (s0 == null) { + return this.matchATN(input); + } else { + return this.execATN(input, s0); + } + } finally { + input.release(mark); } } - if (!containsPredicate) { - return void 0; + reset() { + this.prevAccept.reset(); + this.startIndex = -1; + this._line = 1; + this._charPositionInLine = 0; + this.mode = Lexer_1.Lexer.DEFAULT_MODE; } - return pairs; - } - evalSemanticContext(predPredictions, outerContext, complete) { - let predictions = new BitSet_1.BitSet(); - for (let pair of predPredictions) { - if (pair.pred === SemanticContext_1.SemanticContext.NONE) { - predictions.set(pair.alt); - if (!complete) { - break; - } - continue; + matchATN(input) { + let startState = this.atn.modeToStartState[this.mode]; + if (LexerATNSimulator4.debug) { + console.log(`matchATN mode ${this.mode} start: ${startState}`); } - let evaluatedResult = this.evalSemanticContextImpl(pair.pred, outerContext, pair.alt); - if (ParserATNSimulator3.debug || ParserATNSimulator3.dfa_debug) { - console.log("eval pred " + pair + "=" + evaluatedResult); + let old_mode = this.mode; + let s0_closure = this.computeStartState(input, startState); + let suppressEdge = s0_closure.hasSemanticContext; + if (suppressEdge) { + s0_closure.hasSemanticContext = false; } - if (evaluatedResult) { - if (ParserATNSimulator3.debug || ParserATNSimulator3.dfa_debug) { - console.log("PREDICT " + pair.alt); - } - predictions.set(pair.alt); - if (!complete) { - break; + let next = this.addDFAState(s0_closure); + if (!suppressEdge) { + let dfa = this.atn.modeToDFA[this.mode]; + if (!dfa.s0) { + dfa.s0 = next; + } else { + next = dfa.s0; } } - } - return predictions; - } - evalSemanticContextImpl(pred, parserCallStack, alt) { - return pred.eval(this._parser, parserCallStack); - } - closure(sourceConfigs, configs, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon) { - if (contextCache == null) { - contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED; - } - let currentConfigs = sourceConfigs; - let closureBusy = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); - while (currentConfigs.size > 0) { - let intermediate = new ATNConfigSet_1.ATNConfigSet(); - for (let config of currentConfigs) { - this.closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContext, contextCache, 0, treatEofAsEpsilon); + let predict = this.execATN(input, next); + if (LexerATNSimulator4.debug) { + console.log(`DFA after matchATN: ${this.atn.modeToDFA[old_mode].toLexerString()}`); } - currentConfigs = intermediate; - } - } - closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth, treatEofAsEpsilon) { - if (ParserATNSimulator3.debug) { - console.log("closure(" + config.toString(this._parser, true) + ")"); + return predict; } - if (config.state instanceof RuleStopState_1.RuleStopState) { - if (!config.context.isEmpty) { - let hasEmpty = config.context.hasEmpty; - let nonEmptySize = config.context.size - (hasEmpty ? 1 : 0); - for (let i = 0; i < nonEmptySize; i++) { - let newContext = config.context.getParent(i); - let returnState = this.atn.states[config.context.getReturnState(i)]; - let c = ATNConfig_1.ATNConfig.create(returnState, config.alt, newContext, config.semanticContext); - c.outerContextDepth = config.outerContextDepth; - c.isPrecedenceFilterSuppressed = config.isPrecedenceFilterSuppressed; - assert(depth > MIN_INTEGER_VALUE); - this.closureImpl(c, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth - 1, treatEofAsEpsilon); + execATN(input, ds0) { + if (LexerATNSimulator4.debug) { + console.log(`start state closure=${ds0.configs}`); + } + if (ds0.isAcceptState) { + this.captureSimState(this.prevAccept, input, ds0); + } + let t = input.LA(1); + let s = ds0; + while (true) { + if (LexerATNSimulator4.debug) { + console.log(`execATN loop starting closure: ${s.configs}`); } - if (!hasEmpty || !hasMoreContexts) { - return; + let target = this.getExistingTargetState(s, t); + if (target == null) { + target = this.computeTargetState(input, s, t); } - config = config.transform(config.state, false, PredictionContext_1.PredictionContext.EMPTY_LOCAL); - } else if (!hasMoreContexts) { - configs.add(config, contextCache); - return; - } else { - if (ParserATNSimulator3.debug) { - console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); + if (target === ATNSimulator_1.ATNSimulator.ERROR) { + break; } - if (config.context === PredictionContext_1.PredictionContext.EMPTY_FULL) { - config = config.transform(config.state, false, PredictionContext_1.PredictionContext.EMPTY_LOCAL); - } else if (!config.reachesIntoOuterContext && PredictionContext_1.PredictionContext.isEmptyLocal(config.context)) { - configs.add(config, contextCache); + if (t !== IntStream_1.IntStream.EOF) { + this.consume(input); + } + if (target.isAcceptState) { + this.captureSimState(this.prevAccept, input, target); + if (t === IntStream_1.IntStream.EOF) { + break; + } } + t = input.LA(1); + s = target; } + return this.failOrAccept(this.prevAccept, input, s.configs, t); } - let p = config.state; - if (!p.onlyHasEpsilonTransitions) { - configs.add(config, contextCache); - if (ParserATNSimulator3.debug) { - console.log("added config " + configs); + getExistingTargetState(s, t) { + let target = s.getTarget(t); + if (LexerATNSimulator4.debug && target != null) { + console.log("reuse state " + s.stateNumber + " edge to " + target.stateNumber); } + return target; } - for (let i = 0; i < p.numberOfOptimizedTransitions; i++) { - if (i === 0 && p.stateType === ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY && p.precedenceRuleDecision && !config.context.hasEmpty) { - let precedenceDecision = p; - let suppress = true; - for (let j = 0; j < config.context.size; j++) { - if (!precedenceDecision.precedenceLoopbackStates.get(config.context.getReturnState(j))) { - suppress = false; - break; - } + computeTargetState(input, s, t) { + let reach = new OrderedATNConfigSet_1.OrderedATNConfigSet(); + this.getReachableConfigSet(input, s.configs, reach, t); + if (reach.isEmpty) { + if (!reach.hasSemanticContext) { + this.addDFAEdge(s, t, ATNSimulator_1.ATNSimulator.ERROR); } - if (suppress) { - continue; + return ATNSimulator_1.ATNSimulator.ERROR; + } + return this.addDFAEdge(s, t, reach); + } + failOrAccept(prevAccept, input, reach, t) { + if (prevAccept.dfaState != null) { + let lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor; + this.accept(input, lexerActionExecutor, this.startIndex, prevAccept.index, prevAccept.line, prevAccept.charPos); + return prevAccept.dfaState.prediction; + } else { + if (t === IntStream_1.IntStream.EOF && input.index === this.startIndex) { + return Token_1.Token.EOF; } + throw new LexerNoViableAltException_1.LexerNoViableAltException(this.recog, input, this.startIndex, reach); } - let t = p.getOptimizedTransition(i); - let continueCollecting = !(t instanceof ActionTransition_1.ActionTransition) && collectPredicates; - let c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, contextCache, treatEofAsEpsilon); - if (c != null) { - if (t instanceof RuleTransition_1.RuleTransition) { - if (intermediate != null && !collectPredicates) { - intermediate.add(c, contextCache); - continue; - } + } + getReachableConfigSet(input, closure, reach, t) { + let skipAlt = ATN_1.ATN.INVALID_ALT_NUMBER; + for (let c of closure) { + let currentAltReachedAcceptState = c.alt === skipAlt; + if (currentAltReachedAcceptState && c.hasPassedThroughNonGreedyDecision) { + continue; } - let newDepth = depth; - if (config.state instanceof RuleStopState_1.RuleStopState) { - if (this.dfa != null && this.dfa.isPrecedenceDfa) { - let outermostPrecedenceReturn = t.outermostPrecedenceReturn; - if (outermostPrecedenceReturn === this.dfa.atnStartState.ruleIndex) { - c.isPrecedenceFilterSuppressed = true; - } - } - c.outerContextDepth = c.outerContextDepth + 1; - if (!closureBusy.add(c)) { - continue; - } - assert(newDepth > MIN_INTEGER_VALUE); - newDepth--; - if (ParserATNSimulator3.debug) { - console.log("dips into outer ctx: " + c); - } - } else if (t instanceof RuleTransition_1.RuleTransition) { - if (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext_1.PredictionContext.isEmptyLocal(config.context))) { - assert(c.context === config.context); - if (newDepth === 0) { - newDepth--; - if (!this.tail_call_preserves_sll && PredictionContext_1.PredictionContext.isEmptyLocal(config.context)) { - c.outerContextDepth = c.outerContextDepth + 1; - } + if (LexerATNSimulator4.debug) { + console.log(`testing ${this.getTokenName(t)} at ${c.toString(this.recog, true)}`); + } + let n = c.state.numberOfOptimizedTransitions; + for (let ti = 0; ti < n; ti++) { + let trans = c.state.getOptimizedTransition(ti); + let target = this.getReachableTarget(trans, t); + if (target != null) { + let lexerActionExecutor = c.lexerActionExecutor; + let config; + if (lexerActionExecutor != null) { + lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex); + config = c.transform(target, true, lexerActionExecutor); + } else { + assert(c.lexerActionExecutor == null); + config = c.transform(target, true); } - } else { - if (newDepth >= 0) { - newDepth++; + let treatEofAsEpsilon = t === IntStream_1.IntStream.EOF; + if (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) { + skipAlt = c.alt; + break; } } - } else { - if (!t.isEpsilon && !closureBusy.add(c)) { - continue; - } } - this.closureImpl(c, configs, intermediate, closureBusy, continueCollecting, hasMoreContexts, contextCache, newDepth, treatEofAsEpsilon); } } - } - getRuleName(index) { - if (this._parser != null && index >= 0) { - return this._parser.ruleNames[index]; + accept(input, lexerActionExecutor, startIndex, index, line, charPos) { + if (LexerATNSimulator4.debug) { + console.log(`ACTION ${lexerActionExecutor}`); + } + input.seek(index); + this._line = line; + this._charPositionInLine = charPos; + if (lexerActionExecutor != null && this.recog != null) { + lexerActionExecutor.execute(this.recog, input, startIndex); + } } - return ""; - } - getEpsilonTarget(config, t, collectPredicates, inContext, contextCache, treatEofAsEpsilon) { - switch (t.serializationType) { - case 3: - return this.ruleTransition(config, t, contextCache); - case 10: - return this.precedenceTransition(config, t, collectPredicates, inContext); - case 4: - return this.predTransition(config, t, collectPredicates, inContext); - case 6: - return this.actionTransition(config, t); - case 1: - return config.transform(t.target, false); - case 5: - case 2: - case 7: - if (treatEofAsEpsilon) { - if (t.matches(Token_1.Token.EOF, 0, 1)) { - return config.transform(t.target, false); - } - } - return void 0; - default: - return void 0; - } - } - actionTransition(config, t) { - if (ParserATNSimulator3.debug) { - console.log("ACTION edge " + t.ruleIndex + ":" + t.actionIndex); - } - return config.transform(t.target, false); - } - precedenceTransition(config, pt, collectPredicates, inContext) { - if (ParserATNSimulator3.debug) { - console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.precedence + ">=_p, ctx dependent=true"); - if (this._parser != null) { - console.log("context surrounding pred is " + this._parser.getRuleInvocationStack()); - } - } - let c; - if (collectPredicates && inContext) { - let newSemCtx = SemanticContext_1.SemanticContext.and(config.semanticContext, pt.predicate); - c = config.transform(pt.target, false, newSemCtx); - } else { - c = config.transform(pt.target, false); - } - if (ParserATNSimulator3.debug) { - console.log("config from pred transition=" + c); - } - return c; - } - predTransition(config, pt, collectPredicates, inContext) { - if (ParserATNSimulator3.debug) { - console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.ruleIndex + ":" + pt.predIndex + ", ctx dependent=" + pt.isCtxDependent); - if (this._parser != null) { - console.log("context surrounding pred is " + this._parser.getRuleInvocationStack()); + getReachableTarget(trans, t) { + if (trans.matches(t, Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE)) { + return trans.target; } - } - let c; - if (collectPredicates && (!pt.isCtxDependent || pt.isCtxDependent && inContext)) { - let newSemCtx = SemanticContext_1.SemanticContext.and(config.semanticContext, pt.predicate); - c = config.transform(pt.target, false, newSemCtx); - } else { - c = config.transform(pt.target, false); - } - if (ParserATNSimulator3.debug) { - console.log("config from pred transition=" + c); - } - return c; - } - ruleTransition(config, t, contextCache) { - if (ParserATNSimulator3.debug) { - console.log("CALL rule " + this.getRuleName(t.target.ruleIndex) + ", ctx=" + config.context); - } - let returnState = t.followState; - let newContext; - if (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext_1.PredictionContext.isEmptyLocal(config.context))) { - newContext = config.context; - } else if (contextCache != null) { - newContext = contextCache.getChild(config.context, returnState.stateNumber); - } else { - newContext = config.context.getChild(returnState.stateNumber); - } - return config.transform(t.target, false, newContext); - } - isConflicted(configset, contextCache) { - if (configset.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER || configset.size <= 1) { return void 0; } - let configs = configset.toArray(); - configs.sort(ParserATNSimulator3.STATE_ALT_SORT_COMPARATOR); - let exact = !configset.dipsIntoOuterContext; - let alts = new BitSet_1.BitSet(); - let minAlt = configs[0].alt; - alts.set(minAlt); - let currentState = configs[0].state.nonStopStateNumber; - for (let config of configs) { - let stateNumber = config.state.nonStopStateNumber; - if (stateNumber !== currentState) { - if (config.alt !== minAlt) { - return void 0; - } - currentState = stateNumber; + computeStartState(input, p) { + let initialContext = PredictionContext_1.PredictionContext.EMPTY_FULL; + let configs = new OrderedATNConfigSet_1.OrderedATNConfigSet(); + for (let i = 0; i < p.numberOfTransitions; i++) { + let target = p.transition(i).target; + let c = ATNConfig_1.ATNConfig.create(target, i + 1, initialContext); + this.closure(input, c, configs, false, false, false); } + return configs; } - let representedAlts; - if (exact) { - currentState = configs[0].state.nonStopStateNumber; - representedAlts = new BitSet_1.BitSet(); - let maxAlt = minAlt; - for (let config of configs) { - if (config.state.nonStopStateNumber !== currentState) { - break; - } - let alt = config.alt; - representedAlts.set(alt); - maxAlt = alt; + closure(input, config, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon) { + if (LexerATNSimulator4.debug) { + console.log("closure(" + config.toString(this.recog, true) + ")"); } - currentState = configs[0].state.nonStopStateNumber; - let currentAlt = minAlt; - for (let config of configs) { - let stateNumber = config.state.nonStopStateNumber; - let alt = config.alt; - if (stateNumber !== currentState) { - if (currentAlt !== maxAlt) { - exact = false; - break; + if (config.state instanceof RuleStopState_1.RuleStopState) { + if (LexerATNSimulator4.debug) { + if (this.recog != null) { + console.log(`closure at ${this.recog.ruleNames[config.state.ruleIndex]} rule stop ${config}`); + } else { + console.log(`closure at rule stop ${config}`); } - currentState = stateNumber; - currentAlt = minAlt; - } else if (alt !== currentAlt) { - if (alt !== representedAlts.nextSetBit(currentAlt + 1)) { - exact = false; - break; + } + let context = config.context; + if (context.isEmpty) { + configs.add(config); + return true; + } else if (context.hasEmpty) { + configs.add(config.transform(config.state, true, PredictionContext_1.PredictionContext.EMPTY_FULL)); + currentAltReachedAcceptState = true; + } + for (let i = 0; i < context.size; i++) { + let returnStateNumber = context.getReturnState(i); + if (returnStateNumber === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + continue; } - currentAlt = alt; + let newContext = context.getParent(i); + let returnState = this.atn.states[returnStateNumber]; + let c = config.transform(returnState, false, newContext); + currentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); } + return currentAltReachedAcceptState; } - } - currentState = configs[0].state.nonStopStateNumber; - let firstIndexCurrentState = 0; - let lastIndexCurrentStateMinAlt = 0; - let joinedCheckContext = configs[0].context; - for (let i = 1; i < configs.length; i++) { - let config = configs[i]; - if (config.alt !== minAlt) { - break; + if (!config.state.onlyHasEpsilonTransitions) { + if (!currentAltReachedAcceptState || !config.hasPassedThroughNonGreedyDecision) { + configs.add(config); + } } - if (config.state.nonStopStateNumber !== currentState) { - break; + let p = config.state; + for (let i = 0; i < p.numberOfOptimizedTransitions; i++) { + let t = p.getOptimizedTransition(i); + let c = this.getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon); + if (c != null) { + currentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + } } - lastIndexCurrentStateMinAlt = i; - joinedCheckContext = contextCache.join(joinedCheckContext, configs[i].context); + return currentAltReachedAcceptState; } - for (let i = lastIndexCurrentStateMinAlt + 1; i < configs.length; i++) { - let config = configs[i]; - let state = config.state; - alts.set(config.alt); - if (state.nonStopStateNumber !== currentState) { - currentState = state.nonStopStateNumber; - firstIndexCurrentState = i; - lastIndexCurrentStateMinAlt = i; - joinedCheckContext = config.context; - for (let j = firstIndexCurrentState + 1; j < configs.length; j++) { - let config2 = configs[j]; - if (config2.alt !== minAlt) { - break; + getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon) { + let c; + switch (t.serializationType) { + case 3: + let ruleTransition = t; + if (this.optimize_tail_calls && ruleTransition.optimizedTailCall && !config.context.hasEmpty) { + c = config.transform(t.target, true); + } else { + let newContext = config.context.getChild(ruleTransition.followState.stateNumber); + c = config.transform(t.target, true, newContext); } - if (config2.state.nonStopStateNumber !== currentState) { + break; + case 10: + throw new Error("Precedence predicates are not supported in lexers."); + case 4: + let pt = t; + if (LexerATNSimulator4.debug) { + console.log("EVAL rule " + pt.ruleIndex + ":" + pt.predIndex); + } + configs.hasSemanticContext = true; + if (this.evaluatePredicate(input, pt.ruleIndex, pt.predIndex, speculative)) { + c = config.transform(t.target, true); + } else { + c = void 0; + } + break; + case 6: + if (config.context.hasEmpty) { + let lexerActionExecutor = LexerActionExecutor_1.LexerActionExecutor.append(config.lexerActionExecutor, this.atn.lexerActions[t.actionIndex]); + c = config.transform(t.target, true, lexerActionExecutor); + break; + } else { + c = config.transform(t.target, true); break; } - lastIndexCurrentStateMinAlt = j; - joinedCheckContext = contextCache.join(joinedCheckContext, config2.context); - } - i = lastIndexCurrentStateMinAlt; - continue; - } - let joinedCheckContext2 = config.context; - let currentAlt = config.alt; - let lastIndexCurrentStateCurrentAlt = i; - for (let j = lastIndexCurrentStateCurrentAlt + 1; j < configs.length; j++) { - let config2 = configs[j]; - if (config2.alt !== currentAlt) { + case 1: + c = config.transform(t.target, true); + break; + case 5: + case 2: + case 7: + if (treatEofAsEpsilon) { + if (t.matches(IntStream_1.IntStream.EOF, Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE)) { + c = config.transform(t.target, false); + break; + } + } + c = void 0; + break; + default: + c = void 0; break; + } + return c; + } + evaluatePredicate(input, ruleIndex, predIndex, speculative) { + if (this.recog == null) { + return true; + } + if (!speculative) { + return this.recog.sempred(void 0, ruleIndex, predIndex); + } + let savedCharPositionInLine = this._charPositionInLine; + let savedLine = this._line; + let index = input.index; + let marker = input.mark(); + try { + this.consume(input); + return this.recog.sempred(void 0, ruleIndex, predIndex); + } finally { + this._charPositionInLine = savedCharPositionInLine; + this._line = savedLine; + input.seek(index); + input.release(marker); + } + } + captureSimState(settings, input, dfaState) { + settings.index = input.index; + settings.line = this._line; + settings.charPos = this._charPositionInLine; + settings.dfaState = dfaState; + } + addDFAEdge(p, t, q) { + if (q instanceof ATNConfigSet_1.ATNConfigSet) { + let suppressEdge = q.hasSemanticContext; + if (suppressEdge) { + q.hasSemanticContext = false; + } + let to = this.addDFAState(q); + if (suppressEdge) { + return to; + } + this.addDFAEdge(p, t, to); + return to; + } else { + if (LexerATNSimulator4.debug) { + console.log("EDGE " + p + " -> " + q + " upon " + String.fromCharCode(t)); + } + if (p != null) { + p.setTarget(t, q); } - if (config2.state.nonStopStateNumber !== currentState) { + } + } + addDFAState(configs) { + assert(!configs.hasSemanticContext); + let proposed = new DFAState_1.DFAState(configs); + let existing = this.atn.modeToDFA[this.mode].states.get(proposed); + if (existing != null) { + return existing; + } + configs.optimizeConfigs(this); + let newState = new DFAState_1.DFAState(configs.clone(true)); + let firstConfigWithRuleStopState; + for (let c of configs) { + if (c.state instanceof RuleStopState_1.RuleStopState) { + firstConfigWithRuleStopState = c; break; } - lastIndexCurrentStateCurrentAlt = j; - joinedCheckContext2 = contextCache.join(joinedCheckContext2, config2.context); } - i = lastIndexCurrentStateCurrentAlt; - let check = contextCache.join(joinedCheckContext, joinedCheckContext2); - if (!joinedCheckContext.equals(check)) { - return void 0; + if (firstConfigWithRuleStopState != null) { + let prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex]; + let lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor; + newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(prediction, lexerActionExecutor); } - exact = exact && joinedCheckContext.equals(joinedCheckContext2); + return this.atn.modeToDFA[this.mode].addState(newState); } - return new ConflictInfo_1.ConflictInfo(alts, exact); - } - getConflictingAltsFromConfigSet(configs) { - let conflictingAlts = configs.conflictingAlts; - if (conflictingAlts == null && configs.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { - conflictingAlts = new BitSet_1.BitSet(); - conflictingAlts.set(configs.uniqueAlt); + getDFA(mode) { + return this.atn.modeToDFA[mode]; } - return conflictingAlts; - } - getTokenName(t) { - if (t === Token_1.Token.EOF) { - return "EOF"; + getText(input) { + return input.getText(Interval_1.Interval.of(this.startIndex, input.index - 1)); } - let vocabulary = this._parser != null ? this._parser.vocabulary : VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; - let displayName = vocabulary.getDisplayName(t); - if (displayName === String(t)) { - return displayName; + get line() { + return this._line; } - return displayName + "<" + t + ">"; - } - getLookaheadName(input) { - return this.getTokenName(input.LA(1)); - } - dumpDeadEndConfigs(nvae) { - console.log("dead end configs: "); - let deadEndConfigs = nvae.deadEndConfigs; - if (!deadEndConfigs) { - return; + set line(line) { + this._line = line; } - for (let c of deadEndConfigs) { - let trans = "no edges"; - if (c.state.numberOfOptimizedTransitions > 0) { - let t = c.state.getOptimizedTransition(0); - if (t instanceof AtomTransition_1.AtomTransition) { - trans = "Atom " + this.getTokenName(t._label); - } else if (t instanceof SetTransition_1.SetTransition) { - let not = t instanceof NotSetTransition_1.NotSetTransition; - trans = (not ? "~" : "") + "Set " + t.set.toString(); - } - } - console.log(c.toString(this._parser, true) + ":" + trans); + get charPositionInLine() { + return this._charPositionInLine; } - } - noViableAlt(input, outerContext, configs, startIndex) { - return new NoViableAltException_1.NoViableAltException(this._parser, input, input.get(startIndex), input.LT(1), configs, outerContext); - } - getUniqueAlt(configs) { - let alt = ATN_1.ATN.INVALID_ALT_NUMBER; - for (let c of configs) { - if (alt === ATN_1.ATN.INVALID_ALT_NUMBER) { - alt = c.alt; - } else if (c.alt !== alt) { - return ATN_1.ATN.INVALID_ALT_NUMBER; + set charPositionInLine(charPositionInLine) { + this._charPositionInLine = charPositionInLine; + } + consume(input) { + let curChar = input.LA(1); + if (curChar === "\n".charCodeAt(0)) { + this._line++; + this._charPositionInLine = 0; + } else { + this._charPositionInLine++; } + input.consume(); } - return alt; - } - configWithAltAtStopState(configs, alt) { - for (let c of configs) { - if (c.alt === alt) { - if (c.state instanceof RuleStopState_1.RuleStopState) { - return true; - } + getTokenName(t) { + if (t === -1) { + return "EOF"; } + return "'" + String.fromCharCode(t) + "'"; } - return false; - } - addDFAEdge(dfa, fromState, t, contextTransitions, toConfigs, contextCache) { - assert(contextTransitions == null || contextTransitions.isEmpty || dfa.isContextSensitive); - let from = fromState; - let to = this.addDFAState(dfa, toConfigs, contextCache); - if (contextTransitions != null) { - for (let context of contextTransitions.toArray()) { - if (context === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - if (from.configs.isOutermostConfigSet) { - continue; + }; + __decorate([ + Decorators_1.NotNull + ], LexerATNSimulator3.prototype, "prevAccept", void 0); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "copyState", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "match", null); + __decorate([ + Decorators_1.Override + ], LexerATNSimulator3.prototype, "reset", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "matchATN", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "execATN", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "getExistingTargetState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "computeTargetState", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "getReachableConfigSet", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "accept", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "computeStartState", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "closure", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "getEpsilonTarget", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "evaluatePredicate", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "captureSimState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "addDFAState", null); + __decorate([ + Decorators_1.NotNull + ], LexerATNSimulator3.prototype, "getDFA", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "getText", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3.prototype, "consume", null); + __decorate([ + Decorators_1.NotNull + ], LexerATNSimulator3.prototype, "getTokenName", null); + LexerATNSimulator3 = __decorate([ + __param(0, Decorators_1.NotNull) + ], LexerATNSimulator3); + exports.LexerATNSimulator = LexerATNSimulator3; + (function(LexerATNSimulator4) { + LexerATNSimulator4.debug = false; + LexerATNSimulator4.dfa_debug = false; + class SimState2 { + constructor() { + this.index = -1; + this.line = 0; + this.charPos = -1; + } + reset() { + this.index = -1; + this.line = 0; + this.charPos = -1; + this.dfaState = void 0; + } + } + LexerATNSimulator4.SimState = SimState2; + })(LexerATNSimulator3 = exports.LexerATNSimulator || (exports.LexerATNSimulator = {})); + exports.LexerATNSimulator = LexerATNSimulator3; + } + }); + + // node_modules/antlr4ts/Lexer.js + var require_Lexer = __commonJS({ + "node_modules/antlr4ts/Lexer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Lexer = void 0; + var CommonTokenFactory_1 = require_CommonTokenFactory(); + var IntegerStack_1 = require_IntegerStack(); + var Interval_1 = require_Interval(); + var IntStream_1 = require_IntStream(); + var LexerATNSimulator_1 = require_LexerATNSimulator(); + var LexerNoViableAltException_1 = require_LexerNoViableAltException(); + var Decorators_1 = require_Decorators(); + var Recognizer_1 = require_Recognizer(); + var Token_1 = require_Token(); + var Lexer3 = class extends Recognizer_1.Recognizer { + constructor(input) { + super(); + this._factory = CommonTokenFactory_1.CommonTokenFactory.DEFAULT; + this._tokenStartCharIndex = -1; + this._tokenStartLine = 0; + this._tokenStartCharPositionInLine = 0; + this._hitEOF = false; + this._channel = 0; + this._type = 0; + this._modeStack = new IntegerStack_1.IntegerStack(); + this._mode = Lexer3.DEFAULT_MODE; + this._input = input; + this._tokenFactorySourcePair = {source: this, stream: input}; + } + static get DEFAULT_TOKEN_CHANNEL() { + return Token_1.Token.DEFAULT_CHANNEL; + } + static get HIDDEN() { + return Token_1.Token.HIDDEN_CHANNEL; + } + reset(resetInput) { + if (resetInput === void 0 || resetInput) { + this._input.seek(0); + } + this._token = void 0; + this._type = Token_1.Token.INVALID_TYPE; + this._channel = Token_1.Token.DEFAULT_CHANNEL; + this._tokenStartCharIndex = -1; + this._tokenStartCharPositionInLine = -1; + this._tokenStartLine = -1; + this._text = void 0; + this._hitEOF = false; + this._mode = Lexer3.DEFAULT_MODE; + this._modeStack.clear(); + this.interpreter.reset(); + } + nextToken() { + if (this._input == null) { + throw new Error("nextToken requires a non-null input stream."); + } + let tokenStartMarker = this._input.mark(); + try { + outer: + while (true) { + if (this._hitEOF) { + return this.emitEOF(); + } + this._token = void 0; + this._channel = Token_1.Token.DEFAULT_CHANNEL; + this._tokenStartCharIndex = this._input.index; + this._tokenStartCharPositionInLine = this.interpreter.charPositionInLine; + this._tokenStartLine = this.interpreter.line; + this._text = void 0; + do { + this._type = Token_1.Token.INVALID_TYPE; + let ttype; + try { + ttype = this.interpreter.match(this._input, this._mode); + } catch (e) { + if (e instanceof LexerNoViableAltException_1.LexerNoViableAltException) { + this.notifyListeners(e); + this.recover(e); + ttype = Lexer3.SKIP; + } else { + throw e; + } + } + if (this._input.LA(1) === IntStream_1.IntStream.EOF) { + this._hitEOF = true; + } + if (this._type === Token_1.Token.INVALID_TYPE) { + this._type = ttype; + } + if (this._type === Lexer3.SKIP) { + continue outer; + } + } while (this._type === Lexer3.MORE); + if (this._token == null) { + return this.emit(); + } + return this._token; } - } - from.setContextSensitive(this.atn); - from.setContextSymbol(t); - let next = from.getContextTarget(context); - if (next != null) { - from = next; - continue; - } - next = this.addDFAContextState(dfa, from.configs, context, contextCache); - assert(context !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY || next.configs.isOutermostConfigSet); - from.setContextTarget(context, next); - from = next; + } finally { + this._input.release(tokenStartMarker); } } - if (ParserATNSimulator3.debug) { - console.log("EDGE " + from + " -> " + to + " upon " + this.getTokenName(t)); + skip() { + this._type = Lexer3.SKIP; } - this.setDFAEdge(from, t, to); - if (ParserATNSimulator3.debug) { - console.log("DFA=\n" + dfa.toString(this._parser != null ? this._parser.vocabulary : VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY, this._parser != null ? this._parser.ruleNames : void 0)); + more() { + this._type = Lexer3.MORE; } - return to; - } - setDFAEdge(p, t, q) { - if (p != null) { - p.setTarget(t, q); + mode(m) { + this._mode = m; } - } - addDFAContextState(dfa, configs, returnContext, contextCache) { - if (returnContext !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { - let contextConfigs = new ATNConfigSet_1.ATNConfigSet(); - for (let config of configs) { - contextConfigs.add(config.appendContext(returnContext, contextCache)); + pushMode(m) { + if (LexerATNSimulator_1.LexerATNSimulator.debug) { + console.log("pushMode " + m); } - return this.addDFAState(dfa, contextConfigs, contextCache); - } else { - assert(!configs.isOutermostConfigSet, "Shouldn't be adding a duplicate edge."); - configs = configs.clone(true); - configs.isOutermostConfigSet = true; - return this.addDFAState(dfa, configs, contextCache); + this._modeStack.push(this._mode); + this.mode(m); } - } - addDFAState(dfa, configs, contextCache) { - let enableDfa = this.enable_global_context_dfa || !configs.isOutermostConfigSet; - if (enableDfa) { - if (!configs.isReadOnly) { - configs.optimizeConfigs(this); + popMode() { + if (this._modeStack.isEmpty) { + throw new Error("EmptyStackException"); } - let proposed = this.createDFAState(dfa, configs); - let existing = dfa.states.get(proposed); - if (existing != null) { - return existing; + if (LexerATNSimulator_1.LexerATNSimulator.debug) { + console.log("popMode back to " + this._modeStack.peek()); } + this.mode(this._modeStack.pop()); + return this._mode; } - if (!configs.isReadOnly) { - if (configs.conflictInfo == null) { - configs.conflictInfo = this.isConflicted(configs, contextCache); - } + get tokenFactory() { + return this._factory; } - let newState = this.createDFAState(dfa, configs.clone(true)); - let decisionState = this.atn.getDecisionState(dfa.decision); - let predictedAlt = this.getUniqueAlt(configs); - if (predictedAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { - newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(predictedAlt); - } else if (configs.conflictingAlts != null) { - let conflictingAlts = configs.conflictingAlts; - if (conflictingAlts) { - newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(conflictingAlts.nextSetBit(0)); + set tokenFactory(factory) { + this._factory = factory; + } + get inputStream() { + return this._input; + } + set inputStream(input) { + this.reset(false); + this._input = input; + this._tokenFactorySourcePair = {source: this, stream: this._input}; + } + get sourceName() { + return this._input.sourceName; + } + emit(token) { + if (!token) { + token = this._factory.create(this._tokenFactorySourcePair, this._type, this._text, this._channel, this._tokenStartCharIndex, this.charIndex - 1, this._tokenStartLine, this._tokenStartCharPositionInLine); } + this._token = token; + return token; } - if (newState.isAcceptState && configs.hasSemanticContext) { - this.predicateDFAState(newState, configs, decisionState.numberOfTransitions); + emitEOF() { + let cpos = this.charPositionInLine; + let line = this.line; + let eof = this._factory.create(this._tokenFactorySourcePair, Token_1.Token.EOF, void 0, Token_1.Token.DEFAULT_CHANNEL, this._input.index, this._input.index - 1, line, cpos); + this.emit(eof); + return eof; } - if (!enableDfa) { - return newState; + get line() { + return this.interpreter.line; } - let added = dfa.addState(newState); - if (ParserATNSimulator3.debug && added === newState) { - console.log("adding new DFA state: " + newState); + set line(line) { + this.interpreter.line = line; } - return added; - } - createDFAState(dfa, configs) { - return new DFAState_1.DFAState(configs); - } - reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex) { - if (ParserATNSimulator3.debug || ParserATNSimulator3.retry_debug) { - let interval = Interval_1.Interval.of(startIndex, stopIndex); - console.log("reportAttemptingFullContext decision=" + dfa.decision + ":" + conflictState.s0.configs + ", input=" + this._parser.inputStream.getText(interval)); + get charPositionInLine() { + return this.interpreter.charPositionInLine; } - if (this._parser != null) { - let listener = this._parser.getErrorListenerDispatch(); - if (listener.reportAttemptingFullContext) { - listener.reportAttemptingFullContext(this._parser, dfa, startIndex, stopIndex, conflictingAlts, conflictState); - } + set charPositionInLine(charPositionInLine) { + this.interpreter.charPositionInLine = charPositionInLine; } - } - reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex) { - if (ParserATNSimulator3.debug || ParserATNSimulator3.retry_debug) { - let interval = Interval_1.Interval.of(startIndex, stopIndex); - console.log("reportContextSensitivity decision=" + dfa.decision + ":" + acceptState.s0.configs + ", input=" + this._parser.inputStream.getText(interval)); + get charIndex() { + return this._input.index; } - if (this._parser != null) { - let listener = this._parser.getErrorListenerDispatch(); - if (listener.reportContextSensitivity) { - listener.reportContextSensitivity(this._parser, dfa, startIndex, stopIndex, prediction, acceptState); + get text() { + if (this._text != null) { + return this._text; } + return this.interpreter.getText(this._input); } - } - reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { - if (ParserATNSimulator3.debug || ParserATNSimulator3.retry_debug) { - let interval = Interval_1.Interval.of(startIndex, stopIndex); - console.log("reportAmbiguity " + ambigAlts + ":" + configs + ", input=" + this._parser.inputStream.getText(interval)); + set text(text) { + this._text = text; + } + get token() { + return this._token; + } + set token(_token) { + this._token = _token; + } + set type(ttype) { + this._type = ttype; + } + get type() { + return this._type; } - if (this._parser != null) { - let listener = this._parser.getErrorListenerDispatch(); - if (listener.reportAmbiguity) { - listener.reportAmbiguity(this._parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + set channel(channel) { + this._channel = channel; + } + get channel() { + return this._channel; + } + getAllTokens() { + let tokens2 = []; + let t = this.nextToken(); + while (t.type !== Token_1.Token.EOF) { + tokens2.push(t); + t = this.nextToken(); } + return tokens2; } - } - getReturnState(context) { - if (context.isEmpty) { - return PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; + notifyListeners(e) { + let text = this._input.getText(Interval_1.Interval.of(this._tokenStartCharIndex, this._input.index)); + let msg = "token recognition error at: '" + this.getErrorDisplay(text) + "'"; + let listener = this.getErrorListenerDispatch(); + if (listener.syntaxError) { + listener.syntaxError(this, void 0, this._tokenStartLine, this._tokenStartCharPositionInLine, msg, e); + } } - let state = this.atn.states[context.invokingState]; - let transition = state.transition(0); - return transition.followState.stateNumber; - } - skipTailCalls(context) { - if (!this.optimize_tail_calls) { - return context; + getErrorDisplay(s) { + if (typeof s === "number") { + switch (s) { + case Token_1.Token.EOF: + return ""; + case 10: + return "\\n"; + case 9: + return "\\t"; + case 13: + return "\\r"; + } + return String.fromCharCode(s); + } + return s.replace(/\n/g, "\\n").replace(/\t/g, "\\t").replace(/\r/g, "\\r"); } - while (!context.isEmpty) { - let state = this.atn.states[context.invokingState]; - assert(state.numberOfTransitions === 1 && state.transition(0).serializationType === 3); - let transition = state.transition(0); - if (!transition.tailCall) { - break; + getCharErrorDisplay(c) { + let s = this.getErrorDisplay(c); + return "'" + s + "'"; + } + recover(re) { + if (re instanceof LexerNoViableAltException_1.LexerNoViableAltException) { + if (this._input.LA(1) !== IntStream_1.IntStream.EOF) { + this.interpreter.consume(this._input); + } + } else { + this._input.consume(); } - context = context.parent; } - return context; - } - get parser() { - return this._parser; - } - }; - ParserATNSimulator2.debug = false; - ParserATNSimulator2.dfa_debug = false; - ParserATNSimulator2.retry_debug = false; - ParserATNSimulator2.STATE_ALT_SORT_COMPARATOR = (o1, o2) => { - let diff = o1.state.nonStopStateNumber - o2.state.nonStopStateNumber; - if (diff !== 0) { - return diff; - } - diff = o1.alt - o2.alt; - if (diff !== 0) { - return diff; - } - return 0; - }; - __decorate([ - Decorators_1.NotNull - ], ParserATNSimulator2.prototype, "predictionMode", void 0); - __decorate([ - Decorators_1.NotNull - ], ParserATNSimulator2.prototype, "getPredictionMode", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "setPredictionMode", null); - __decorate([ - Decorators_1.Override - ], ParserATNSimulator2.prototype, "reset", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "adaptivePredict", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getStartState", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "execDFA", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "execATN", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "handleNoViableAlt", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getExistingTargetState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "computeTargetState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "removeAllConfigsNotInRuleStopState", null); - __decorate([ - Decorators_1.NotNull - ], ParserATNSimulator2.prototype, "computeStartState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "applyPrecedenceFilter", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getReachableTarget", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getPredsForAmbigAlts", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "evalSemanticContext", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "evalSemanticContextImpl", null); - __decorate([ - __param(1, Decorators_1.NotNull), - __param(4, Decorators_1.Nullable) - ], ParserATNSimulator2.prototype, "closure", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.Nullable), - __param(3, Decorators_1.NotNull), - __param(6, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "closureImpl", null); - __decorate([ - Decorators_1.NotNull - ], ParserATNSimulator2.prototype, "getRuleName", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getEpsilonTarget", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "actionTransition", null); - __decorate([ - Decorators_1.Nullable, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "precedenceTransition", null); - __decorate([ - Decorators_1.Nullable, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "predTransition", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.Nullable) - ], ParserATNSimulator2.prototype, "ruleTransition", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "isConflicted", null); - __decorate([ - Decorators_1.NotNull - ], ParserATNSimulator2.prototype, "getTokenName", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "dumpDeadEndConfigs", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "noViableAlt", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "getUniqueAlt", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "configWithAltAtStopState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(4, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "addDFAEdge", null); - __decorate([ - __param(0, Decorators_1.Nullable), - __param(2, Decorators_1.Nullable) - ], ParserATNSimulator2.prototype, "setDFAEdge", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "addDFAContextState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "addDFAState", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "createDFAState", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "reportAttemptingFullContext", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "reportContextSensitivity", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull), - __param(6, Decorators_1.NotNull) - ], ParserATNSimulator2.prototype, "reportAmbiguity", null); - ParserATNSimulator2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], ParserATNSimulator2); - exports.ParserATNSimulator = ParserATNSimulator2; - }); - - // node_modules/antlr4ts/atn/PlusBlockStartState.js - var require_PlusBlockStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PlusBlockStartState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var BlockStartState_1 = require_BlockStartState(); - var Decorators_1 = require_Decorators(); - var PlusBlockStartState = class extends BlockStartState_1.BlockStartState { - get stateType() { - return ATNStateType_1.ATNStateType.PLUS_BLOCK_START; - } - }; - __decorate([ - Decorators_1.Override - ], PlusBlockStartState.prototype, "stateType", null); - exports.PlusBlockStartState = PlusBlockStartState; - }); - - // node_modules/antlr4ts/atn/PlusLoopbackState.js - var require_PlusLoopbackState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PlusLoopbackState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var DecisionState_1 = require_DecisionState(); - var Decorators_1 = require_Decorators(); - var PlusLoopbackState = class extends DecisionState_1.DecisionState { - get stateType() { - return ATNStateType_1.ATNStateType.PLUS_LOOP_BACK; - } - }; - __decorate([ - Decorators_1.Override - ], PlusLoopbackState.prototype, "stateType", null); - exports.PlusLoopbackState = PlusLoopbackState; - }); - - // node_modules/antlr4ts/atn/PrecedencePredicateTransition.js - var require_PrecedencePredicateTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PrecedencePredicateTransition = void 0; - var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); - var Decorators_1 = require_Decorators(); - var SemanticContext_1 = require_SemanticContext(); - var PrecedencePredicateTransition = class PrecedencePredicateTransition extends AbstractPredicateTransition_1.AbstractPredicateTransition { - constructor(target, precedence) { - super(target); - this.precedence = precedence; - } - get serializationType() { - return 10; - } - get isEpsilon() { - return true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - get predicate() { - return new SemanticContext_1.SemanticContext.PrecedencePredicate(this.precedence); - } - toString() { - return this.precedence + " >= _p"; - } - }; - __decorate([ - Decorators_1.Override - ], PrecedencePredicateTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override - ], PrecedencePredicateTransition.prototype, "isEpsilon", null); - __decorate([ - Decorators_1.Override - ], PrecedencePredicateTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override - ], PrecedencePredicateTransition.prototype, "toString", null); - PrecedencePredicateTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], PrecedencePredicateTransition); - exports.PrecedencePredicateTransition = PrecedencePredicateTransition; - }); - - // node_modules/antlr4ts/atn/RangeTransition.js - var require_RangeTransition = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RangeTransition = void 0; - var IntervalSet_1 = require_IntervalSet(); - var Decorators_1 = require_Decorators(); - var Transition_1 = require_Transition(); - var RangeTransition = class RangeTransition extends Transition_1.Transition { - constructor(target, from, to) { - super(target); - this.from = from; - this.to = to; - } - get serializationType() { - return 2; - } - get label() { - return IntervalSet_1.IntervalSet.of(this.from, this.to); - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= this.from && symbol <= this.to; - } - toString() { - return "'" + String.fromCodePoint(this.from) + "'..'" + String.fromCodePoint(this.to) + "'"; - } - }; - __decorate([ - Decorators_1.Override - ], RangeTransition.prototype, "serializationType", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], RangeTransition.prototype, "label", null); - __decorate([ - Decorators_1.Override - ], RangeTransition.prototype, "matches", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull - ], RangeTransition.prototype, "toString", null); - RangeTransition = __decorate([ - __param(0, Decorators_1.NotNull) - ], RangeTransition); - exports.RangeTransition = RangeTransition; - }); - - // node_modules/antlr4ts/atn/RuleStartState.js - var require_RuleStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleStartState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var RuleStartState = class extends ATNState_1.ATNState { - constructor() { - super(...arguments); - this.isPrecedenceRule = false; - this.leftFactored = false; - } - get stateType() { - return ATNStateType_1.ATNStateType.RULE_START; - } - }; - __decorate([ - Decorators_1.Override - ], RuleStartState.prototype, "stateType", null); - exports.RuleStartState = RuleStartState; - }); - - // node_modules/antlr4ts/atn/StarBlockStartState.js - var require_StarBlockStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.StarBlockStartState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var BlockStartState_1 = require_BlockStartState(); - var Decorators_1 = require_Decorators(); - var StarBlockStartState = class extends BlockStartState_1.BlockStartState { - get stateType() { - return ATNStateType_1.ATNStateType.STAR_BLOCK_START; - } - }; - __decorate([ - Decorators_1.Override - ], StarBlockStartState.prototype, "stateType", null); - exports.StarBlockStartState = StarBlockStartState; - }); - - // node_modules/antlr4ts/atn/StarLoopbackState.js - var require_StarLoopbackState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.StarLoopbackState = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var Decorators_1 = require_Decorators(); - var StarLoopbackState = class extends ATNState_1.ATNState { - get loopEntryState() { - return this.transition(0).target; - } - get stateType() { - return ATNStateType_1.ATNStateType.STAR_LOOP_BACK; - } - }; - __decorate([ - Decorators_1.Override - ], StarLoopbackState.prototype, "stateType", null); - exports.StarLoopbackState = StarLoopbackState; - }); - - // node_modules/antlr4ts/atn/TokensStartState.js - var require_TokensStartState = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.TokensStartState = void 0; - var ATNStateType_1 = require_ATNStateType(); - var DecisionState_1 = require_DecisionState(); - var Decorators_1 = require_Decorators(); - var TokensStartState = class extends DecisionState_1.DecisionState { - get stateType() { - return ATNStateType_1.ATNStateType.TOKEN_START; - } - }; - __decorate([ - Decorators_1.Override - ], TokensStartState.prototype, "stateType", null); - exports.TokensStartState = TokensStartState; - }); - - // node_modules/antlr4ts/misc/UUID.js - var require_UUID = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.UUID = void 0; - var MurmurHash_1 = require_MurmurHash(); - var UUID = class { - constructor(mostSigBits, moreSigBits, lessSigBits, leastSigBits) { - this.data = new Uint32Array(4); - this.data[0] = mostSigBits; - this.data[1] = moreSigBits; - this.data[2] = lessSigBits; - this.data[3] = leastSigBits; - } - static fromString(data) { - if (!/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/.test(data)) { - throw new Error("Incorrectly formatted UUID"); - } - let segments = data.split("-"); - let mostSigBits = parseInt(segments[0], 16); - let moreSigBits = (parseInt(segments[1], 16) << 16 >>> 0) + parseInt(segments[2], 16); - let lessSigBits = (parseInt(segments[3], 16) << 16 >>> 0) + parseInt(segments[4].substr(0, 4), 16); - let leastSigBits = parseInt(segments[4].substr(-8), 16); - return new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits); - } - hashCode() { - return MurmurHash_1.MurmurHash.hashCode([this.data[0], this.data[1], this.data[2], this.data[3]]); - } - equals(obj) { - if (obj === this) { - return true; - } else if (!(obj instanceof UUID)) { - return false; - } - return this.data[0] === obj.data[0] && this.data[1] === obj.data[1] && this.data[2] === obj.data[2] && this.data[3] === obj.data[3]; - } - toString() { - return ("00000000" + this.data[0].toString(16)).substr(-8) + "-" + ("0000" + (this.data[1] >>> 16).toString(16)).substr(-4) + "-" + ("0000" + this.data[1].toString(16)).substr(-4) + "-" + ("0000" + (this.data[2] >>> 16).toString(16)).substr(-4) + "-" + ("0000" + this.data[2].toString(16)).substr(-4) + ("00000000" + this.data[3].toString(16)).substr(-8); - } - }; - exports.UUID = UUID; + }; + Lexer3.DEFAULT_MODE = 0; + Lexer3.MORE = -2; + Lexer3.SKIP = -3; + Lexer3.MIN_CHAR_VALUE = 0; + Lexer3.MAX_CHAR_VALUE = 1114111; + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "nextToken", null); + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "tokenFactory", null); + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "inputStream", null); + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "sourceName", null); + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "line", null); + __decorate([ + Decorators_1.Override + ], Lexer3.prototype, "charPositionInLine", null); + exports.Lexer = Lexer3; + } }); - // node_modules/antlr4ts/atn/ATNDeserializer.js - var require_ATNDeserializer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ATNDeserializer = void 0; - var ActionTransition_1 = require_ActionTransition(); - var Array2DHashSet_1 = require_Array2DHashSet(); - var ATN_1 = require_ATN(); - var ATNDeserializationOptions_1 = require_ATNDeserializationOptions(); - var ATNStateType_1 = require_ATNStateType(); - var AtomTransition_1 = require_AtomTransition(); - var BasicBlockStartState_1 = require_BasicBlockStartState(); - var BasicState_1 = require_BasicState(); - var BitSet_1 = require_BitSet(); - var BlockEndState_1 = require_BlockEndState(); - var BlockStartState_1 = require_BlockStartState(); - var DecisionState_1 = require_DecisionState(); - var DFA_1 = require_DFA(); - var EpsilonTransition_1 = require_EpsilonTransition(); - var IntervalSet_1 = require_IntervalSet(); - var InvalidState_1 = require_InvalidState(); - var LexerChannelAction_1 = require_LexerChannelAction(); - var LexerCustomAction_1 = require_LexerCustomAction(); - var LexerModeAction_1 = require_LexerModeAction(); - var LexerMoreAction_1 = require_LexerMoreAction(); - var LexerPopModeAction_1 = require_LexerPopModeAction(); - var LexerPushModeAction_1 = require_LexerPushModeAction(); - var LexerSkipAction_1 = require_LexerSkipAction(); - var LexerTypeAction_1 = require_LexerTypeAction(); - var LoopEndState_1 = require_LoopEndState(); - var Decorators_1 = require_Decorators(); - var NotSetTransition_1 = require_NotSetTransition(); - var ParserATNSimulator_1 = require_ParserATNSimulator(); - var PlusBlockStartState_1 = require_PlusBlockStartState(); - var PlusLoopbackState_1 = require_PlusLoopbackState(); - var PrecedencePredicateTransition_1 = require_PrecedencePredicateTransition(); - var PredicateTransition_1 = require_PredicateTransition(); - var RangeTransition_1 = require_RangeTransition(); - var RuleStartState_1 = require_RuleStartState(); - var RuleStopState_1 = require_RuleStopState(); - var RuleTransition_1 = require_RuleTransition(); - var SetTransition_1 = require_SetTransition(); - var StarBlockStartState_1 = require_StarBlockStartState(); - var StarLoopbackState_1 = require_StarLoopbackState(); - var StarLoopEntryState_1 = require_StarLoopEntryState(); - var Token_1 = require_Token(); - var TokensStartState_1 = require_TokensStartState(); - var UUID_1 = require_UUID(); - var WildcardTransition_1 = require_WildcardTransition(); - var UnicodeDeserializingMode; - (function(UnicodeDeserializingMode2) { - UnicodeDeserializingMode2[UnicodeDeserializingMode2["UNICODE_BMP"] = 0] = "UNICODE_BMP"; - UnicodeDeserializingMode2[UnicodeDeserializingMode2["UNICODE_SMP"] = 1] = "UNICODE_SMP"; - })(UnicodeDeserializingMode || (UnicodeDeserializingMode = {})); - var ATNDeserializer3 = class { - constructor(deserializationOptions) { - if (deserializationOptions === void 0) { - deserializationOptions = ATNDeserializationOptions_1.ATNDeserializationOptions.defaultOptions; - } - this.deserializationOptions = deserializationOptions; - } - static get SERIALIZED_VERSION() { - return 3; - } - static isFeatureSupported(feature, actualUuid) { - let featureIndex = ATNDeserializer3.SUPPORTED_UUIDS.findIndex((e) => e.equals(feature)); - if (featureIndex < 0) { - return false; + // node_modules/antlr4ts/misc/IntervalSet.js + var require_IntervalSet = __commonJS({ + "node_modules/antlr4ts/misc/IntervalSet.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.IntervalSet = void 0; + var ArrayEqualityComparator_1 = require_ArrayEqualityComparator(); + var IntegerList_1 = require_IntegerList(); + var Interval_1 = require_Interval(); + var Lexer_1 = require_Lexer(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var IntervalSet2 = class { + constructor(intervals) { + this.readonly = false; + if (intervals != null) { + this._intervals = intervals.slice(0); + } else { + this._intervals = []; + } } - return ATNDeserializer3.SUPPORTED_UUIDS.findIndex((e) => e.equals(actualUuid)) >= featureIndex; - } - static getUnicodeDeserializer(mode) { - if (mode === 0) { - return { - readUnicode: (data, p) => { - return ATNDeserializer3.toInt(data[p]); - }, - size: 1 - }; - } else { - return { - readUnicode: (data, p) => { - return ATNDeserializer3.toInt32(data, p); - }, - size: 2 - }; + static get COMPLETE_CHAR_SET() { + if (IntervalSet2._COMPLETE_CHAR_SET === void 0) { + IntervalSet2._COMPLETE_CHAR_SET = IntervalSet2.of(Lexer_1.Lexer.MIN_CHAR_VALUE, Lexer_1.Lexer.MAX_CHAR_VALUE); + IntervalSet2._COMPLETE_CHAR_SET.setReadonly(true); + } + return IntervalSet2._COMPLETE_CHAR_SET; } - } - deserialize(data) { - data = data.slice(0); - for (let i = 1; i < data.length; i++) { - data[i] = data[i] - 2 & 65535; - } - let p = 0; - let version = ATNDeserializer3.toInt(data[p++]); - if (version !== ATNDeserializer3.SERIALIZED_VERSION) { - let reason = `Could not deserialize ATN with version ${version} (expected ${ATNDeserializer3.SERIALIZED_VERSION}).`; - throw new Error(reason); - } - let uuid = ATNDeserializer3.toUUID(data, p); - p += 8; - if (ATNDeserializer3.SUPPORTED_UUIDS.findIndex((e) => e.equals(uuid)) < 0) { - let reason = `Could not deserialize ATN with UUID ${uuid} (expected ${ATNDeserializer3.SERIALIZED_UUID} or a legacy UUID).`; - throw new Error(reason); - } - let supportsLexerActions = ATNDeserializer3.isFeatureSupported(ATNDeserializer3.ADDED_LEXER_ACTIONS, uuid); - let grammarType = ATNDeserializer3.toInt(data[p++]); - let maxTokenType = ATNDeserializer3.toInt(data[p++]); - let atn = new ATN_1.ATN(grammarType, maxTokenType); - let loopBackStateNumbers = []; - let endStateNumbers = []; - let nstates = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < nstates; i++) { - let stype = ATNDeserializer3.toInt(data[p++]); - if (stype === ATNStateType_1.ATNStateType.INVALID_TYPE) { - atn.addState(new InvalidState_1.InvalidState()); - continue; + static get EMPTY_SET() { + if (IntervalSet2._EMPTY_SET == null) { + IntervalSet2._EMPTY_SET = new IntervalSet2(); + IntervalSet2._EMPTY_SET.setReadonly(true); } - let ruleIndex = ATNDeserializer3.toInt(data[p++]); - if (ruleIndex === 65535) { - ruleIndex = -1; - } - let s = this.stateFactory(stype, ruleIndex); - if (stype === ATNStateType_1.ATNStateType.LOOP_END) { - let loopBackStateNumber = ATNDeserializer3.toInt(data[p++]); - loopBackStateNumbers.push([s, loopBackStateNumber]); - } else if (s instanceof BlockStartState_1.BlockStartState) { - let endStateNumber = ATNDeserializer3.toInt(data[p++]); - endStateNumbers.push([s, endStateNumber]); - } - atn.addState(s); - } - for (let pair of loopBackStateNumbers) { - pair[0].loopBackState = atn.states[pair[1]]; - } - for (let pair of endStateNumbers) { - pair[0].endState = atn.states[pair[1]]; - } - let numNonGreedyStates = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < numNonGreedyStates; i++) { - let stateNumber = ATNDeserializer3.toInt(data[p++]); - atn.states[stateNumber].nonGreedy = true; - } - let numSllDecisions = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < numSllDecisions; i++) { - let stateNumber = ATNDeserializer3.toInt(data[p++]); - atn.states[stateNumber].sll = true; - } - let numPrecedenceStates = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < numPrecedenceStates; i++) { - let stateNumber = ATNDeserializer3.toInt(data[p++]); - atn.states[stateNumber].isPrecedenceRule = true; - } - let nrules = ATNDeserializer3.toInt(data[p++]); - if (atn.grammarType === 0) { - atn.ruleToTokenType = new Int32Array(nrules); - } - atn.ruleToStartState = new Array(nrules); - for (let i = 0; i < nrules; i++) { - let s = ATNDeserializer3.toInt(data[p++]); - let startState = atn.states[s]; - startState.leftFactored = ATNDeserializer3.toInt(data[p++]) !== 0; - atn.ruleToStartState[i] = startState; - if (atn.grammarType === 0) { - let tokenType = ATNDeserializer3.toInt(data[p++]); - if (tokenType === 65535) { - tokenType = Token_1.Token.EOF; - } - atn.ruleToTokenType[i] = tokenType; - if (!ATNDeserializer3.isFeatureSupported(ATNDeserializer3.ADDED_LEXER_ACTIONS, uuid)) { - let actionIndexIgnored = ATNDeserializer3.toInt(data[p++]); - if (actionIndexIgnored === 65535) { - actionIndexIgnored = -1; - } - } + return IntervalSet2._EMPTY_SET; + } + static of(a, b = a) { + let s = new IntervalSet2(); + s.add(a, b); + return s; + } + clear() { + if (this.readonly) { + throw new Error("can't alter readonly IntervalSet"); } + this._intervals.length = 0; } - atn.ruleToStopState = new Array(nrules); - for (let state of atn.states) { - if (!(state instanceof RuleStopState_1.RuleStopState)) { - continue; + add(a, b = a) { + this.addRange(Interval_1.Interval.of(a, b)); + } + addRange(addition) { + if (this.readonly) { + throw new Error("can't alter readonly IntervalSet"); } - atn.ruleToStopState[state.ruleIndex] = state; - atn.ruleToStartState[state.ruleIndex].stopState = state; - } - let nmodes = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < nmodes; i++) { - let s = ATNDeserializer3.toInt(data[p++]); - atn.modeToStartState.push(atn.states[s]); - } - atn.modeToDFA = new Array(nmodes); - for (let i = 0; i < nmodes; i++) { - atn.modeToDFA[i] = new DFA_1.DFA(atn.modeToStartState[i]); - } - let sets = []; - p = this.deserializeSets(data, p, sets, ATNDeserializer3.getUnicodeDeserializer(0)); - if (ATNDeserializer3.isFeatureSupported(ATNDeserializer3.ADDED_UNICODE_SMP, uuid)) { - p = this.deserializeSets(data, p, sets, ATNDeserializer3.getUnicodeDeserializer(1)); - } - let nedges = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < nedges; i++) { - let src = ATNDeserializer3.toInt(data[p]); - let trg = ATNDeserializer3.toInt(data[p + 1]); - let ttype = ATNDeserializer3.toInt(data[p + 2]); - let arg1 = ATNDeserializer3.toInt(data[p + 3]); - let arg2 = ATNDeserializer3.toInt(data[p + 4]); - let arg3 = ATNDeserializer3.toInt(data[p + 5]); - let trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets); - let srcState = atn.states[src]; - srcState.addTransition(trans); - p += 6; - } - let returnTransitionsSet = new Array2DHashSet_1.Array2DHashSet({ - hashCode: (o) => o.stopState ^ o.returnState ^ o.outermostPrecedenceReturn, - equals: (a, b) => { - return a.stopState === b.stopState && a.returnState === b.returnState && a.outermostPrecedenceReturn === b.outermostPrecedenceReturn; + if (addition.b < addition.a) { + return; } - }); - let returnTransitions = []; - for (let state of atn.states) { - let returningToLeftFactored = state.ruleIndex >= 0 && atn.ruleToStartState[state.ruleIndex].leftFactored; - for (let i = 0; i < state.numberOfTransitions; i++) { - let t = state.transition(i); - if (!(t instanceof RuleTransition_1.RuleTransition)) { - continue; - } - let ruleTransition = t; - let returningFromLeftFactored = atn.ruleToStartState[ruleTransition.target.ruleIndex].leftFactored; - if (!returningFromLeftFactored && returningToLeftFactored) { - continue; + for (let i = 0; i < this._intervals.length; i++) { + let r = this._intervals[i]; + if (addition.equals(r)) { + return; } - let outermostPrecedenceReturn = -1; - if (atn.ruleToStartState[ruleTransition.target.ruleIndex].isPrecedenceRule) { - if (ruleTransition.precedence === 0) { - outermostPrecedenceReturn = ruleTransition.target.ruleIndex; + if (addition.adjacent(r) || !addition.disjoint(r)) { + let bigger = addition.union(r); + this._intervals[i] = bigger; + while (i < this._intervals.length - 1) { + i++; + let next = this._intervals[i]; + if (!bigger.adjacent(next) && bigger.disjoint(next)) { + break; + } + this._intervals.splice(i, 1); + i--; + this._intervals[i] = bigger.union(next); } + return; } - let current = {stopState: ruleTransition.target.ruleIndex, returnState: ruleTransition.followState.stateNumber, outermostPrecedenceReturn}; - if (returnTransitionsSet.add(current)) { - returnTransitions.push(current); + if (addition.startsBeforeDisjoint(r)) { + this._intervals.splice(i, 0, addition); + return; } } + this._intervals.push(addition); } - for (let returnTransition of returnTransitions) { - let transition = new EpsilonTransition_1.EpsilonTransition(atn.states[returnTransition.returnState], returnTransition.outermostPrecedenceReturn); - atn.ruleToStopState[returnTransition.stopState].addTransition(transition); + static or(sets) { + let r = new IntervalSet2(); + for (let s of sets) { + r.addAll(s); + } + return r; } - for (let state of atn.states) { - if (state instanceof BlockStartState_1.BlockStartState) { - if (state.endState === void 0) { - throw new Error("IllegalStateException"); - } - if (state.endState.startState !== void 0) { - throw new Error("IllegalStateException"); - } - state.endState.startState = state; + addAll(set) { + if (set == null) { + return this; } - if (state instanceof PlusLoopbackState_1.PlusLoopbackState) { - let loopbackState = state; - for (let i = 0; i < loopbackState.numberOfTransitions; i++) { - let target = loopbackState.transition(i).target; - if (target instanceof PlusBlockStartState_1.PlusBlockStartState) { - target.loopBackState = loopbackState; - } + if (set instanceof IntervalSet2) { + let other = set; + let n = other._intervals.length; + for (let i = 0; i < n; i++) { + let I = other._intervals[i]; + this.add(I.a, I.b); } - } else if (state instanceof StarLoopbackState_1.StarLoopbackState) { - let loopbackState = state; - for (let i = 0; i < loopbackState.numberOfTransitions; i++) { - let target = loopbackState.transition(i).target; - if (target instanceof StarLoopEntryState_1.StarLoopEntryState) { - target.loopBackState = loopbackState; - } + } else { + for (let value of set.toArray()) { + this.add(value); } } + return this; } - let ndecisions = ATNDeserializer3.toInt(data[p++]); - for (let i = 1; i <= ndecisions; i++) { - let s = ATNDeserializer3.toInt(data[p++]); - let decState = atn.states[s]; - atn.decisionToState.push(decState); - decState.decision = i - 1; + complementRange(minElement, maxElement) { + return this.complement(IntervalSet2.of(minElement, maxElement)); } - if (atn.grammarType === 0) { - if (supportsLexerActions) { - atn.lexerActions = new Array(ATNDeserializer3.toInt(data[p++])); - for (let i = 0; i < atn.lexerActions.length; i++) { - let actionType = ATNDeserializer3.toInt(data[p++]); - let data1 = ATNDeserializer3.toInt(data[p++]); - if (data1 === 65535) { - data1 = -1; - } - let data2 = ATNDeserializer3.toInt(data[p++]); - if (data2 === 65535) { - data2 = -1; - } - let lexerAction = this.lexerActionFactory(actionType, data1, data2); - atn.lexerActions[i] = lexerAction; - } + complement(vocabulary) { + if (vocabulary.isNil) { + return IntervalSet2.EMPTY_SET; + } + let vocabularyIS; + if (vocabulary instanceof IntervalSet2) { + vocabularyIS = vocabulary; } else { - let legacyLexerActions = []; - for (let state of atn.states) { - for (let i = 0; i < state.numberOfTransitions; i++) { - let transition = state.transition(i); - if (!(transition instanceof ActionTransition_1.ActionTransition)) { - continue; - } - let ruleIndex = transition.ruleIndex; - let actionIndex = transition.actionIndex; - let lexerAction = new LexerCustomAction_1.LexerCustomAction(ruleIndex, actionIndex); - state.setTransition(i, new ActionTransition_1.ActionTransition(transition.target, ruleIndex, legacyLexerActions.length, false)); - legacyLexerActions.push(lexerAction); - } - } - atn.lexerActions = legacyLexerActions; + vocabularyIS = new IntervalSet2(); + vocabularyIS.addAll(vocabulary); } + return vocabularyIS.subtract(this); } - this.markPrecedenceDecisions(atn); - atn.decisionToDFA = new Array(ndecisions); - for (let i = 0; i < ndecisions; i++) { - atn.decisionToDFA[i] = new DFA_1.DFA(atn.decisionToState[i], i); - } - if (this.deserializationOptions.isVerifyATN) { - this.verifyATN(atn); + subtract(a) { + if (a == null || a.isNil) { + return new IntervalSet2(this._intervals); + } + if (a instanceof IntervalSet2) { + return IntervalSet2.subtract(this, a); + } + let other = new IntervalSet2(); + other.addAll(a); + return IntervalSet2.subtract(this, other); } - if (this.deserializationOptions.isGenerateRuleBypassTransitions && atn.grammarType === 1) { - atn.ruleToTokenType = new Int32Array(atn.ruleToStartState.length); - for (let i = 0; i < atn.ruleToStartState.length; i++) { - atn.ruleToTokenType[i] = atn.maxTokenType + i + 1; + static subtract(left, right) { + if (left.isNil) { + return new IntervalSet2(); } - for (let i = 0; i < atn.ruleToStartState.length; i++) { - let bypassStart = new BasicBlockStartState_1.BasicBlockStartState(); - bypassStart.ruleIndex = i; - atn.addState(bypassStart); - let bypassStop = new BlockEndState_1.BlockEndState(); - bypassStop.ruleIndex = i; - atn.addState(bypassStop); - bypassStart.endState = bypassStop; - atn.defineDecisionState(bypassStart); - bypassStop.startState = bypassStart; - let endState; - let excludeTransition; - if (atn.ruleToStartState[i].isPrecedenceRule) { - endState = void 0; - for (let state of atn.states) { - if (state.ruleIndex !== i) { - continue; - } - if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { - continue; - } - let maybeLoopEndState = state.transition(state.numberOfTransitions - 1).target; - if (!(maybeLoopEndState instanceof LoopEndState_1.LoopEndState)) { - continue; - } - if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState_1.RuleStopState) { - endState = state; - break; - } - } - if (!endState) { - throw new Error("Couldn't identify final state of the precedence rule prefix section."); + let result = new IntervalSet2(left._intervals); + if (right.isNil) { + return result; + } + let resultI = 0; + let rightI = 0; + while (resultI < result._intervals.length && rightI < right._intervals.length) { + let resultInterval = result._intervals[resultI]; + let rightInterval = right._intervals[rightI]; + if (rightInterval.b < resultInterval.a) { + rightI++; + continue; + } + if (rightInterval.a > resultInterval.b) { + resultI++; + continue; + } + let beforeCurrent; + let afterCurrent; + if (rightInterval.a > resultInterval.a) { + beforeCurrent = new Interval_1.Interval(resultInterval.a, rightInterval.a - 1); + } + if (rightInterval.b < resultInterval.b) { + afterCurrent = new Interval_1.Interval(rightInterval.b + 1, resultInterval.b); + } + if (beforeCurrent) { + if (afterCurrent) { + result._intervals[resultI] = beforeCurrent; + result._intervals.splice(resultI + 1, 0, afterCurrent); + resultI++; + rightI++; + continue; + } else { + result._intervals[resultI] = beforeCurrent; + resultI++; + continue; } - excludeTransition = endState.loopBackState.transition(0); } else { - endState = atn.ruleToStopState[i]; - } - for (let state of atn.states) { - for (let i2 = 0; i2 < state.numberOfTransitions; i2++) { - let transition = state.transition(i2); - if (transition === excludeTransition) { - continue; - } - if (transition.target === endState) { - transition.target = bypassStop; - } + if (afterCurrent) { + result._intervals[resultI] = afterCurrent; + rightI++; + continue; + } else { + result._intervals.splice(resultI, 1); + continue; } } - while (atn.ruleToStartState[i].numberOfTransitions > 0) { - let transition = atn.ruleToStartState[i].removeTransition(atn.ruleToStartState[i].numberOfTransitions - 1); - bypassStart.addTransition(transition); - } - atn.ruleToStartState[i].addTransition(new EpsilonTransition_1.EpsilonTransition(bypassStart)); - bypassStop.addTransition(new EpsilonTransition_1.EpsilonTransition(endState)); - let matchState = new BasicState_1.BasicState(); - atn.addState(matchState); - matchState.addTransition(new AtomTransition_1.AtomTransition(bypassStop, atn.ruleToTokenType[i])); - bypassStart.addTransition(new EpsilonTransition_1.EpsilonTransition(matchState)); - } - if (this.deserializationOptions.isVerifyATN) { - this.verifyATN(atn); } + return result; } - if (this.deserializationOptions.isOptimize) { - while (true) { - let optimizationCount = 0; - optimizationCount += ATNDeserializer3.inlineSetRules(atn); - optimizationCount += ATNDeserializer3.combineChainedEpsilons(atn); - let preserveOrder = atn.grammarType === 0; - optimizationCount += ATNDeserializer3.optimizeSets(atn, preserveOrder); - if (optimizationCount === 0) { - break; + or(a) { + let o = new IntervalSet2(); + o.addAll(this); + o.addAll(a); + return o; + } + and(other) { + if (other.isNil) { + return new IntervalSet2(); + } + let myIntervals = this._intervals; + let theirIntervals = other._intervals; + let intersection; + let mySize = myIntervals.length; + let theirSize = theirIntervals.length; + let i = 0; + let j = 0; + while (i < mySize && j < theirSize) { + let mine = myIntervals[i]; + let theirs = theirIntervals[j]; + if (mine.startsBeforeDisjoint(theirs)) { + i++; + } else if (theirs.startsBeforeDisjoint(mine)) { + j++; + } else if (mine.properlyContains(theirs)) { + if (!intersection) { + intersection = new IntervalSet2(); + } + intersection.addRange(mine.intersection(theirs)); + j++; + } else if (theirs.properlyContains(mine)) { + if (!intersection) { + intersection = new IntervalSet2(); + } + intersection.addRange(mine.intersection(theirs)); + i++; + } else if (!mine.disjoint(theirs)) { + if (!intersection) { + intersection = new IntervalSet2(); + } + intersection.addRange(mine.intersection(theirs)); + if (mine.startsAfterNonDisjoint(theirs)) { + j++; + } else if (theirs.startsAfterNonDisjoint(mine)) { + i++; + } } } - if (this.deserializationOptions.isVerifyATN) { - this.verifyATN(atn); + if (!intersection) { + return new IntervalSet2(); + } + return intersection; + } + contains(el) { + let n = this._intervals.length; + let l = 0; + let r = n - 1; + while (l <= r) { + let m = l + r >> 1; + let I = this._intervals[m]; + let a = I.a; + let b = I.b; + if (b < el) { + l = m + 1; + } else if (a > el) { + r = m - 1; + } else { + return true; + } } + return false; } - ATNDeserializer3.identifyTailCalls(atn); - return atn; - } - deserializeSets(data, p, sets, unicodeDeserializer) { - let nsets = ATNDeserializer3.toInt(data[p++]); - for (let i = 0; i < nsets; i++) { - let nintervals = ATNDeserializer3.toInt(data[p]); - p++; - let set = new IntervalSet_1.IntervalSet(); - sets.push(set); - let containsEof = ATNDeserializer3.toInt(data[p++]) !== 0; - if (containsEof) { - set.add(-1); - } - for (let j = 0; j < nintervals; j++) { - let a = unicodeDeserializer.readUnicode(data, p); - p += unicodeDeserializer.size; - let b = unicodeDeserializer.readUnicode(data, p); - p += unicodeDeserializer.size; - set.add(a, b); + get isNil() { + return this._intervals == null || this._intervals.length === 0; + } + get maxElement() { + if (this.isNil) { + throw new RangeError("set is empty"); } + let last = this._intervals[this._intervals.length - 1]; + return last.b; } - return p; - } - markPrecedenceDecisions(atn) { - let rulePrecedenceDecisions = new Map(); - for (let state of atn.states) { - if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { - continue; + get minElement() { + if (this.isNil) { + throw new RangeError("set is empty"); } - if (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) { - let maybeLoopEndState = state.transition(state.numberOfTransitions - 1).target; - if (maybeLoopEndState instanceof LoopEndState_1.LoopEndState) { - if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState_1.RuleStopState) { - rulePrecedenceDecisions.set(state.ruleIndex, state); - state.precedenceRuleDecision = true; - state.precedenceLoopbackStates = new BitSet_1.BitSet(atn.states.length); - } - } + return this._intervals[0].a; + } + get intervals() { + return this._intervals; + } + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + for (let I of this._intervals) { + hash = MurmurHash_1.MurmurHash.update(hash, I.a); + hash = MurmurHash_1.MurmurHash.update(hash, I.b); } + hash = MurmurHash_1.MurmurHash.finish(hash, this._intervals.length * 2); + return hash; } - for (let precedenceDecision of rulePrecedenceDecisions) { - for (let transition of atn.ruleToStopState[precedenceDecision[0]].getTransitions()) { - if (transition.serializationType !== 1) { - continue; - } - let epsilonTransition = transition; - if (epsilonTransition.outermostPrecedenceReturn !== -1) { - continue; - } - precedenceDecision[1].precedenceLoopbackStates.set(transition.target.stateNumber); + equals(o) { + if (o == null || !(o instanceof IntervalSet2)) { + return false; } + return ArrayEqualityComparator_1.ArrayEqualityComparator.INSTANCE.equals(this._intervals, o._intervals); } - } - verifyATN(atn) { - for (let state of atn.states) { - this.checkCondition(state !== void 0, "ATN states should not be undefined."); - if (state.stateType === ATNStateType_1.ATNStateType.INVALID_TYPE) { - continue; + toString(elemAreChar = false) { + let buf = ""; + if (this._intervals == null || this._intervals.length === 0) { + return "{}"; + } + if (this.size > 1) { + buf += "{"; } - this.checkCondition(state.onlyHasEpsilonTransitions || state.numberOfTransitions <= 1); - if (state instanceof PlusBlockStartState_1.PlusBlockStartState) { - this.checkCondition(state.loopBackState !== void 0); - } - if (state instanceof StarLoopEntryState_1.StarLoopEntryState) { - let starLoopEntryState = state; - this.checkCondition(starLoopEntryState.loopBackState !== void 0); - this.checkCondition(starLoopEntryState.numberOfTransitions === 2); - if (starLoopEntryState.transition(0).target instanceof StarBlockStartState_1.StarBlockStartState) { - this.checkCondition(starLoopEntryState.transition(1).target instanceof LoopEndState_1.LoopEndState); - this.checkCondition(!starLoopEntryState.nonGreedy); - } else if (starLoopEntryState.transition(0).target instanceof LoopEndState_1.LoopEndState) { - this.checkCondition(starLoopEntryState.transition(1).target instanceof StarBlockStartState_1.StarBlockStartState); - this.checkCondition(starLoopEntryState.nonGreedy); + let first = true; + for (let I of this._intervals) { + if (first) { + first = false; + } else { + buf += ", "; + } + let a = I.a; + let b = I.b; + if (a === b) { + if (a === Token_1.Token.EOF) { + buf += ""; + } else if (elemAreChar) { + buf += "'" + String.fromCodePoint(a) + "'"; + } else { + buf += a; + } } else { - throw new Error("IllegalStateException"); + if (elemAreChar) { + buf += "'" + String.fromCodePoint(a) + "'..'" + String.fromCodePoint(b) + "'"; + } else { + buf += a + ".." + b; + } } } - if (state instanceof StarLoopbackState_1.StarLoopbackState) { - this.checkCondition(state.numberOfTransitions === 1); - this.checkCondition(state.transition(0).target instanceof StarLoopEntryState_1.StarLoopEntryState); + if (this.size > 1) { + buf += "}"; } - if (state instanceof LoopEndState_1.LoopEndState) { - this.checkCondition(state.loopBackState !== void 0); + return buf; + } + toStringVocabulary(vocabulary) { + if (this._intervals == null || this._intervals.length === 0) { + return "{}"; } - if (state instanceof RuleStartState_1.RuleStartState) { - this.checkCondition(state.stopState !== void 0); + let buf = ""; + if (this.size > 1) { + buf += "{"; } - if (state instanceof BlockStartState_1.BlockStartState) { - this.checkCondition(state.endState !== void 0); + let first = true; + for (let I of this._intervals) { + if (first) { + first = false; + } else { + buf += ", "; + } + let a = I.a; + let b = I.b; + if (a === b) { + buf += this.elementName(vocabulary, a); + } else { + for (let i = a; i <= b; i++) { + if (i > a) { + buf += ", "; + } + buf += this.elementName(vocabulary, i); + } + } } - if (state instanceof BlockEndState_1.BlockEndState) { - this.checkCondition(state.startState !== void 0); + if (this.size > 1) { + buf += "}"; } - if (state instanceof DecisionState_1.DecisionState) { - let decisionState = state; - this.checkCondition(decisionState.numberOfTransitions <= 1 || decisionState.decision >= 0); + return buf; + } + elementName(vocabulary, a) { + if (a === Token_1.Token.EOF) { + return ""; + } else if (a === Token_1.Token.EPSILON) { + return ""; } else { - this.checkCondition(state.numberOfTransitions <= 1 || state instanceof RuleStopState_1.RuleStopState); + return vocabulary.getDisplayName(a); } } - } - checkCondition(condition, message) { - if (!condition) { - throw new Error("IllegalStateException: " + message); - } - } - static inlineSetRules(atn) { - let inlinedCalls = 0; - let ruleToInlineTransition = new Array(atn.ruleToStartState.length); - for (let i = 0; i < atn.ruleToStartState.length; i++) { - let startState = atn.ruleToStartState[i]; - let middleState = startState; - while (middleState.onlyHasEpsilonTransitions && middleState.numberOfOptimizedTransitions === 1 && middleState.getOptimizedTransition(0).serializationType === 1) { - middleState = middleState.getOptimizedTransition(0).target; - } - if (middleState.numberOfOptimizedTransitions !== 1) { - continue; + get size() { + let n = 0; + let numIntervals = this._intervals.length; + if (numIntervals === 1) { + let firstInterval = this._intervals[0]; + return firstInterval.b - firstInterval.a + 1; } - let matchTransition = middleState.getOptimizedTransition(0); - let matchTarget = matchTransition.target; - if (matchTransition.isEpsilon || !matchTarget.onlyHasEpsilonTransitions || matchTarget.numberOfOptimizedTransitions !== 1 || !(matchTarget.getOptimizedTransition(0).target instanceof RuleStopState_1.RuleStopState)) { - continue; + for (let i = 0; i < numIntervals; i++) { + let I = this._intervals[i]; + n += I.b - I.a + 1; } - switch (matchTransition.serializationType) { - case 5: - case 2: - case 7: - ruleToInlineTransition[i] = matchTransition; - break; - case 8: - case 9: - continue; - default: - continue; + return n; + } + toIntegerList() { + let values = new IntegerList_1.IntegerList(this.size); + let n = this._intervals.length; + for (let i = 0; i < n; i++) { + let I = this._intervals[i]; + let a = I.a; + let b = I.b; + for (let v = a; v <= b; v++) { + values.add(v); + } } + return values; } - for (let state of atn.states) { - if (state.ruleIndex < 0) { - continue; + toSet() { + let s = new Set(); + for (let I of this._intervals) { + let a = I.a; + let b = I.b; + for (let v = a; v <= b; v++) { + s.add(v); + } } - let optimizedTransitions; - for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { - let transition = state.getOptimizedTransition(i); - if (!(transition instanceof RuleTransition_1.RuleTransition)) { - if (optimizedTransitions !== void 0) { - optimizedTransitions.push(transition); - } - continue; + return s; + } + toArray() { + let values = new Array(); + let n = this._intervals.length; + for (let i = 0; i < n; i++) { + let I = this._intervals[i]; + let a = I.a; + let b = I.b; + for (let v = a; v <= b; v++) { + values.push(v); } - let ruleTransition = transition; - let effective = ruleToInlineTransition[ruleTransition.target.ruleIndex]; - if (effective === void 0) { - if (optimizedTransitions !== void 0) { - optimizedTransitions.push(transition); - } - continue; + } + return values; + } + remove(el) { + if (this.readonly) { + throw new Error("can't alter readonly IntervalSet"); + } + let n = this._intervals.length; + for (let i = 0; i < n; i++) { + let I = this._intervals[i]; + let a = I.a; + let b = I.b; + if (el < a) { + break; } - if (optimizedTransitions === void 0) { - optimizedTransitions = []; - for (let j = 0; j < i; j++) { - optimizedTransitions.push(state.getOptimizedTransition(i)); - } + if (el === a && el === b) { + this._intervals.splice(i, 1); + break; } - inlinedCalls++; - let target = ruleTransition.followState; - let intermediateState = new BasicState_1.BasicState(); - intermediateState.setRuleIndex(target.ruleIndex); - atn.addState(intermediateState); - optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(intermediateState)); - switch (effective.serializationType) { - case 5: - intermediateState.addTransition(new AtomTransition_1.AtomTransition(target, effective._label)); - break; - case 2: - intermediateState.addTransition(new RangeTransition_1.RangeTransition(target, effective.from, effective.to)); - break; - case 7: - intermediateState.addTransition(new SetTransition_1.SetTransition(target, effective.label)); - break; - default: - throw new Error("UnsupportedOperationException"); + if (el === a) { + this._intervals[i] = Interval_1.Interval.of(I.a + 1, I.b); + break; } - } - if (optimizedTransitions !== void 0) { - if (state.isOptimized) { - while (state.numberOfOptimizedTransitions > 0) { - state.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1); - } + if (el === b) { + this._intervals[i] = Interval_1.Interval.of(I.a, I.b - 1); + break; } - for (let transition of optimizedTransitions) { - state.addOptimizedTransition(transition); + if (el > a && el < b) { + let oldb = I.b; + this._intervals[i] = Interval_1.Interval.of(I.a, el - 1); + this.add(el + 1, oldb); } } } - if (ParserATNSimulator_1.ParserATNSimulator.debug) { - console.log("ATN runtime optimizer removed " + inlinedCalls + " rule invocations by inlining sets."); + get isReadonly() { + return this.readonly; } - return inlinedCalls; - } - static combineChainedEpsilons(atn) { - let removedEdges = 0; - for (let state of atn.states) { - if (!state.onlyHasEpsilonTransitions || state instanceof RuleStopState_1.RuleStopState) { - continue; - } - let optimizedTransitions; - nextTransition: - for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { - let transition = state.getOptimizedTransition(i); - let intermediate = transition.target; - if (transition.serializationType !== 1 || transition.outermostPrecedenceReturn !== -1 || intermediate.stateType !== ATNStateType_1.ATNStateType.BASIC || !intermediate.onlyHasEpsilonTransitions) { - if (optimizedTransitions !== void 0) { - optimizedTransitions.push(transition); - } - continue nextTransition; - } - for (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) { - if (intermediate.getOptimizedTransition(j).serializationType !== 1 || intermediate.getOptimizedTransition(j).outermostPrecedenceReturn !== -1) { - if (optimizedTransitions !== void 0) { - optimizedTransitions.push(transition); - } - continue nextTransition; - } - } - removedEdges++; - if (optimizedTransitions === void 0) { - optimizedTransitions = []; - for (let j = 0; j < i; j++) { - optimizedTransitions.push(state.getOptimizedTransition(j)); - } - } - for (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) { - let target = intermediate.getOptimizedTransition(j).target; - optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(target)); - } - } - if (optimizedTransitions !== void 0) { - if (state.isOptimized) { - while (state.numberOfOptimizedTransitions > 0) { - state.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1); - } - } - for (let transition of optimizedTransitions) { - state.addOptimizedTransition(transition); - } + setReadonly(readonly) { + if (this.readonly && !readonly) { + throw new Error("can't alter readonly IntervalSet"); } + this.readonly = readonly; } - if (ParserATNSimulator_1.ParserATNSimulator.debug) { - console.log("ATN runtime optimizer removed " + removedEdges + " transitions by combining chained epsilon transitions."); - } - return removedEdges; - } - static optimizeSets(atn, preserveOrder) { - if (preserveOrder) { - return 0; - } - let removedPaths = 0; - let decisions = atn.decisionToState; - for (let decision of decisions) { - let setTransitions = new IntervalSet_1.IntervalSet(); - for (let i = 0; i < decision.numberOfOptimizedTransitions; i++) { - let epsTransition = decision.getOptimizedTransition(i); - if (!(epsTransition instanceof EpsilonTransition_1.EpsilonTransition)) { - continue; - } - if (epsTransition.target.numberOfOptimizedTransitions !== 1) { - continue; - } - let transition = epsTransition.target.getOptimizedTransition(0); - if (!(transition.target instanceof BlockEndState_1.BlockEndState)) { - continue; - } - if (transition instanceof NotSetTransition_1.NotSetTransition) { - continue; - } - if (transition instanceof AtomTransition_1.AtomTransition || transition instanceof RangeTransition_1.RangeTransition || transition instanceof SetTransition_1.SetTransition) { - setTransitions.add(i); - } - } - if (setTransitions.size <= 1) { - continue; - } - let optimizedTransitions = []; - for (let i = 0; i < decision.numberOfOptimizedTransitions; i++) { - if (!setTransitions.contains(i)) { - optimizedTransitions.push(decision.getOptimizedTransition(i)); - } - } - let blockEndState = decision.getOptimizedTransition(setTransitions.minElement).target.getOptimizedTransition(0).target; - let matchSet = new IntervalSet_1.IntervalSet(); - for (let interval of setTransitions.intervals) { - for (let j = interval.a; j <= interval.b; j++) { - let matchTransition = decision.getOptimizedTransition(j).target.getOptimizedTransition(0); - if (matchTransition instanceof NotSetTransition_1.NotSetTransition) { - throw new Error("Not yet implemented."); - } else { - matchSet.addAll(matchTransition.label); - } - } - } - let newTransition; - if (matchSet.intervals.length === 1) { - if (matchSet.size === 1) { - newTransition = new AtomTransition_1.AtomTransition(blockEndState, matchSet.minElement); - } else { - let matchInterval = matchSet.intervals[0]; - newTransition = new RangeTransition_1.RangeTransition(blockEndState, matchInterval.a, matchInterval.b); - } + }; + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "addAll", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "complement", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "subtract", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "or", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "and", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "contains", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "isNil", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "equals", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], IntervalSet2.prototype, "toStringVocabulary", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], IntervalSet2.prototype, "elementName", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], IntervalSet2.prototype, "remove", null); + __decorate([ + Decorators_1.NotNull + ], IntervalSet2, "of", null); + __decorate([ + Decorators_1.NotNull + ], IntervalSet2, "subtract", null); + exports.IntervalSet = IntervalSet2; + } + }); + + // node_modules/antlr4ts/atn/ATNDeserializationOptions.js + var require_ATNDeserializationOptions = __commonJS({ + "node_modules/antlr4ts/atn/ATNDeserializationOptions.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNDeserializationOptions = void 0; + var Decorators_1 = require_Decorators(); + var ATNDeserializationOptions2 = class { + constructor(options) { + this.readOnly = false; + if (options) { + this.verifyATN = options.verifyATN; + this.generateRuleBypassTransitions = options.generateRuleBypassTransitions; + this.optimize = options.optimize; } else { - newTransition = new SetTransition_1.SetTransition(blockEndState, matchSet); - } - let setOptimizedState = new BasicState_1.BasicState(); - setOptimizedState.setRuleIndex(decision.ruleIndex); - atn.addState(setOptimizedState); - setOptimizedState.addTransition(newTransition); - optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(setOptimizedState)); - removedPaths += decision.numberOfOptimizedTransitions - optimizedTransitions.length; - if (decision.isOptimized) { - while (decision.numberOfOptimizedTransitions > 0) { - decision.removeOptimizedTransition(decision.numberOfOptimizedTransitions - 1); - } + this.verifyATN = true; + this.generateRuleBypassTransitions = false; + this.optimize = true; } - for (let transition of optimizedTransitions) { - decision.addOptimizedTransition(transition); + } + static get defaultOptions() { + if (ATNDeserializationOptions2._defaultOptions == null) { + ATNDeserializationOptions2._defaultOptions = new ATNDeserializationOptions2(); + ATNDeserializationOptions2._defaultOptions.makeReadOnly(); } + return ATNDeserializationOptions2._defaultOptions; } - if (ParserATNSimulator_1.ParserATNSimulator.debug) { - console.log("ATN runtime optimizer removed " + removedPaths + " paths by collapsing sets."); + get isReadOnly() { + return this.readOnly; } - return removedPaths; - } - static identifyTailCalls(atn) { - for (let state of atn.states) { - for (let i = 0; i < state.numberOfTransitions; i++) { - let transition = state.transition(i); - if (!(transition instanceof RuleTransition_1.RuleTransition)) { - continue; - } - transition.tailCall = this.testTailCall(atn, transition, false); - transition.optimizedTailCall = this.testTailCall(atn, transition, true); - } - if (!state.isOptimized) { - continue; - } - for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { - let transition = state.getOptimizedTransition(i); - if (!(transition instanceof RuleTransition_1.RuleTransition)) { - continue; - } - transition.tailCall = this.testTailCall(atn, transition, false); - transition.optimizedTailCall = this.testTailCall(atn, transition, true); - } + makeReadOnly() { + this.readOnly = true; } - } - static testTailCall(atn, transition, optimizedPath) { - if (!optimizedPath && transition.tailCall) { - return true; + get isVerifyATN() { + return this.verifyATN; } - if (optimizedPath && transition.optimizedTailCall) { - return true; + set isVerifyATN(verifyATN) { + this.throwIfReadOnly(); + this.verifyATN = verifyATN; } - let reachable = new BitSet_1.BitSet(atn.states.length); - let worklist = []; - worklist.push(transition.followState); - while (true) { - let state = worklist.pop(); - if (!state) { - break; - } - if (reachable.get(state.stateNumber)) { - continue; - } - if (state instanceof RuleStopState_1.RuleStopState) { - continue; - } - if (!state.onlyHasEpsilonTransitions) { - return false; - } - let transitionCount = optimizedPath ? state.numberOfOptimizedTransitions : state.numberOfTransitions; - for (let i = 0; i < transitionCount; i++) { - let t = optimizedPath ? state.getOptimizedTransition(i) : state.transition(i); - if (t.serializationType !== 1) { - return false; - } - worklist.push(t.target); - } + get isGenerateRuleBypassTransitions() { + return this.generateRuleBypassTransitions; } - return true; - } - static toInt(c) { - return c; - } - static toInt32(data, offset) { - return (data[offset] | data[offset + 1] << 16) >>> 0; - } - static toUUID(data, offset) { - let leastSigBits = ATNDeserializer3.toInt32(data, offset); - let lessSigBits = ATNDeserializer3.toInt32(data, offset + 2); - let moreSigBits = ATNDeserializer3.toInt32(data, offset + 4); - let mostSigBits = ATNDeserializer3.toInt32(data, offset + 6); - return new UUID_1.UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits); - } - edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) { - let target = atn.states[trg]; - switch (type) { - case 1: - return new EpsilonTransition_1.EpsilonTransition(target); - case 2: - if (arg3 !== 0) { - return new RangeTransition_1.RangeTransition(target, Token_1.Token.EOF, arg2); - } else { - return new RangeTransition_1.RangeTransition(target, arg1, arg2); - } - case 3: - let rt = new RuleTransition_1.RuleTransition(atn.states[arg1], arg2, arg3, target); - return rt; - case 4: - let pt = new PredicateTransition_1.PredicateTransition(target, arg1, arg2, arg3 !== 0); - return pt; - case 10: - return new PrecedencePredicateTransition_1.PrecedencePredicateTransition(target, arg1); - case 5: - if (arg3 !== 0) { - return new AtomTransition_1.AtomTransition(target, Token_1.Token.EOF); - } else { - return new AtomTransition_1.AtomTransition(target, arg1); - } - case 6: - let a = new ActionTransition_1.ActionTransition(target, arg1, arg2, arg3 !== 0); - return a; - case 7: - return new SetTransition_1.SetTransition(target, sets[arg1]); - case 8: - return new NotSetTransition_1.NotSetTransition(target, sets[arg1]); - case 9: - return new WildcardTransition_1.WildcardTransition(target); + set isGenerateRuleBypassTransitions(generateRuleBypassTransitions) { + this.throwIfReadOnly(); + this.generateRuleBypassTransitions = generateRuleBypassTransitions; } - throw new Error("The specified transition type is not valid."); - } - stateFactory(type, ruleIndex) { - let s; - switch (type) { - case ATNStateType_1.ATNStateType.INVALID_TYPE: - return new InvalidState_1.InvalidState(); - case ATNStateType_1.ATNStateType.BASIC: - s = new BasicState_1.BasicState(); - break; - case ATNStateType_1.ATNStateType.RULE_START: - s = new RuleStartState_1.RuleStartState(); - break; - case ATNStateType_1.ATNStateType.BLOCK_START: - s = new BasicBlockStartState_1.BasicBlockStartState(); - break; - case ATNStateType_1.ATNStateType.PLUS_BLOCK_START: - s = new PlusBlockStartState_1.PlusBlockStartState(); - break; - case ATNStateType_1.ATNStateType.STAR_BLOCK_START: - s = new StarBlockStartState_1.StarBlockStartState(); - break; - case ATNStateType_1.ATNStateType.TOKEN_START: - s = new TokensStartState_1.TokensStartState(); - break; - case ATNStateType_1.ATNStateType.RULE_STOP: - s = new RuleStopState_1.RuleStopState(); - break; - case ATNStateType_1.ATNStateType.BLOCK_END: - s = new BlockEndState_1.BlockEndState(); - break; - case ATNStateType_1.ATNStateType.STAR_LOOP_BACK: - s = new StarLoopbackState_1.StarLoopbackState(); - break; - case ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY: - s = new StarLoopEntryState_1.StarLoopEntryState(); - break; - case ATNStateType_1.ATNStateType.PLUS_LOOP_BACK: - s = new PlusLoopbackState_1.PlusLoopbackState(); - break; - case ATNStateType_1.ATNStateType.LOOP_END: - s = new LoopEndState_1.LoopEndState(); - break; - default: - let message = `The specified state type ${type} is not valid.`; - throw new Error(message); + get isOptimize() { + return this.optimize; } - s.ruleIndex = ruleIndex; - return s; - } - lexerActionFactory(type, data1, data2) { - switch (type) { - case 0: - return new LexerChannelAction_1.LexerChannelAction(data1); - case 1: - return new LexerCustomAction_1.LexerCustomAction(data1, data2); - case 2: - return new LexerModeAction_1.LexerModeAction(data1); - case 3: - return LexerMoreAction_1.LexerMoreAction.INSTANCE; - case 4: - return LexerPopModeAction_1.LexerPopModeAction.INSTANCE; - case 5: - return new LexerPushModeAction_1.LexerPushModeAction(data1); - case 6: - return LexerSkipAction_1.LexerSkipAction.INSTANCE; - case 7: - return new LexerTypeAction_1.LexerTypeAction(data1); - default: - let message = `The specified lexer action type ${type} is not valid.`; - throw new Error(message); - } - } - }; - ATNDeserializer3.BASE_SERIALIZED_UUID = UUID_1.UUID.fromString("E4178468-DF95-44D0-AD87-F22A5D5FB6D3"); - ATNDeserializer3.ADDED_LEXER_ACTIONS = UUID_1.UUID.fromString("AB35191A-1603-487E-B75A-479B831EAF6D"); - ATNDeserializer3.ADDED_UNICODE_SMP = UUID_1.UUID.fromString("C23FEA89-0605-4f51-AFB8-058BCAB8C91B"); - ATNDeserializer3.SUPPORTED_UUIDS = [ - ATNDeserializer3.BASE_SERIALIZED_UUID, - ATNDeserializer3.ADDED_LEXER_ACTIONS, - ATNDeserializer3.ADDED_UNICODE_SMP - ]; - ATNDeserializer3.SERIALIZED_UUID = ATNDeserializer3.ADDED_UNICODE_SMP; - __decorate([ - Decorators_1.NotNull - ], ATNDeserializer3.prototype, "deserializationOptions", void 0); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ATNDeserializer3.prototype, "deserialize", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ATNDeserializer3.prototype, "markPrecedenceDecisions", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ATNDeserializer3.prototype, "edgeFactory", null); - exports.ATNDeserializer = ATNDeserializer3; - }); - - // node_modules/antlr4ts/atn/ParseInfo.js - var require_ParseInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParseInfo = void 0; - var Decorators_1 = require_Decorators(); - var ParseInfo = class ParseInfo { - constructor(atnSimulator) { - this.atnSimulator = atnSimulator; - } - getDecisionInfo() { - return this.atnSimulator.getDecisionInfo(); - } - getLLDecisions() { - let decisions = this.atnSimulator.getDecisionInfo(); - let LL = []; - for (let i = 0; i < decisions.length; i++) { - let fallBack = decisions[i].LL_Fallback; - if (fallBack > 0) { - LL.push(i); - } - } - return LL; - } - getTotalTimeInPrediction() { - let decisions = this.atnSimulator.getDecisionInfo(); - let t = 0; - for (let decision of decisions) { - t += decision.timeInPrediction; - } - return t; - } - getTotalSLLLookaheadOps() { - let decisions = this.atnSimulator.getDecisionInfo(); - let k = 0; - for (let decision of decisions) { - k += decision.SLL_TotalLook; - } - return k; - } - getTotalLLLookaheadOps() { - let decisions = this.atnSimulator.getDecisionInfo(); - let k = 0; - for (let decision of decisions) { - k += decision.LL_TotalLook; - } - return k; - } - getTotalSLLATNLookaheadOps() { - let decisions = this.atnSimulator.getDecisionInfo(); - let k = 0; - for (let decision of decisions) { - k += decision.SLL_ATNTransitions; - } - return k; - } - getTotalLLATNLookaheadOps() { - let decisions = this.atnSimulator.getDecisionInfo(); - let k = 0; - for (let decision of decisions) { - k += decision.LL_ATNTransitions; - } - return k; - } - getTotalATNLookaheadOps() { - let decisions = this.atnSimulator.getDecisionInfo(); - let k = 0; - for (let decision of decisions) { - k += decision.SLL_ATNTransitions; - k += decision.LL_ATNTransitions; - } - return k; - } - getDFASize(decision) { - if (decision) { - let decisionToDFA = this.atnSimulator.atn.decisionToDFA[decision]; - return decisionToDFA.states.size; - } else { - let n = 0; - let decisionToDFA = this.atnSimulator.atn.decisionToDFA; - for (let i = 0; i < decisionToDFA.length; i++) { - n += this.getDFASize(i); - } - return n; + set isOptimize(optimize) { + this.throwIfReadOnly(); + this.optimize = optimize; } - } - }; - __decorate([ - Decorators_1.NotNull - ], ParseInfo.prototype, "getDecisionInfo", null); - __decorate([ - Decorators_1.NotNull - ], ParseInfo.prototype, "getLLDecisions", null); - ParseInfo = __decorate([ - __param(0, Decorators_1.NotNull) - ], ParseInfo); - exports.ParseInfo = ParseInfo; - }); - - // node_modules/antlr4ts/ProxyParserErrorListener.js - var require_ProxyParserErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ProxyParserErrorListener = void 0; - var ProxyErrorListener_1 = require_ProxyErrorListener(); - var Decorators_1 = require_Decorators(); - var ProxyParserErrorListener = class extends ProxyErrorListener_1.ProxyErrorListener { - constructor(delegates) { - super(delegates); - } - reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { - this.getDelegates().forEach((listener) => { - if (listener.reportAmbiguity) { - listener.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); - } - }); - } - reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState) { - this.getDelegates().forEach((listener) => { - if (listener.reportAttemptingFullContext) { - listener.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState); - } - }); - } - reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState) { - this.getDelegates().forEach((listener) => { - if (listener.reportContextSensitivity) { - listener.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState); + throwIfReadOnly() { + if (this.isReadOnly) { + throw new Error("The object is read only."); } - }); - } - }; - __decorate([ - Decorators_1.Override - ], ProxyParserErrorListener.prototype, "reportAmbiguity", null); - __decorate([ - Decorators_1.Override - ], ProxyParserErrorListener.prototype, "reportAttemptingFullContext", null); - __decorate([ - Decorators_1.Override - ], ProxyParserErrorListener.prototype, "reportContextSensitivity", null); - exports.ProxyParserErrorListener = ProxyParserErrorListener; - }); - - // node_modules/antlr4ts/misc/Character.js - var require_Character = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.isSupplementaryCodePoint = exports.isLowSurrogate = exports.isHighSurrogate = void 0; - function isHighSurrogate(ch) { - return ch >= 55296 && ch <= 56319; - } - exports.isHighSurrogate = isHighSurrogate; - function isLowSurrogate(ch) { - return ch >= 56320 && ch <= 57343; - } - exports.isLowSurrogate = isLowSurrogate; - function isSupplementaryCodePoint(ch) { - return ch >= 65536; - } - exports.isSupplementaryCodePoint = isSupplementaryCodePoint; + } + }; + __decorate([ + Decorators_1.NotNull + ], ATNDeserializationOptions2, "defaultOptions", null); + exports.ATNDeserializationOptions = ATNDeserializationOptions2; + } }); - // node_modules/antlr4ts/CodePointBuffer.js - var require_CodePointBuffer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CodePointBuffer = void 0; - var assert = require_assert(); - var Character = require_Character(); - var CodePointBuffer = class { - constructor(buffer, size) { - this.buffer = buffer; - this._position = 0; - this._size = size; - } - static withArray(buffer) { - return new CodePointBuffer(buffer, buffer.length); - } - get position() { - return this._position; - } - set position(newPosition) { - if (newPosition < 0 || newPosition > this._size) { - throw new RangeError(); - } - this._position = newPosition; - } - get remaining() { - return this._size - this.position; - } - get(offset) { - return this.buffer[offset]; - } - array() { - return this.buffer.slice(0, this._size); - } - static builder(initialBufferSize) { - return new CodePointBuffer.Builder(initialBufferSize); - } - }; - exports.CodePointBuffer = CodePointBuffer; - (function(CodePointBuffer2) { - let Type; - (function(Type2) { - Type2[Type2["BYTE"] = 0] = "BYTE"; - Type2[Type2["CHAR"] = 1] = "CHAR"; - Type2[Type2["INT"] = 2] = "INT"; - })(Type || (Type = {})); - class Builder { - constructor(initialBufferSize) { - this.type = 0; - this.buffer = new Uint8Array(initialBufferSize); - this.prevHighSurrogate = -1; - this.position = 0; - } - build() { - return new CodePointBuffer2(this.buffer, this.position); - } - static roundUpToNextPowerOfTwo(i) { - let nextPowerOfTwo = 32 - Math.clz32(i - 1); - return Math.pow(2, nextPowerOfTwo); - } - ensureRemaining(remainingNeeded) { - switch (this.type) { - case 0: - if (this.buffer.length - this.position < remainingNeeded) { - let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); - let newBuffer = new Uint8Array(newCapacity); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.buffer = newBuffer; - } - break; - case 1: - if (this.buffer.length - this.position < remainingNeeded) { - let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); - let newBuffer = new Uint16Array(newCapacity); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.buffer = newBuffer; - } - break; - case 2: - if (this.buffer.length - this.position < remainingNeeded) { - let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); - let newBuffer = new Int32Array(newCapacity); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.buffer = newBuffer; - } - break; - } + // node_modules/antlr4ts/atn/ActionTransition.js + var require_ActionTransition = __commonJS({ + "node_modules/antlr4ts/atn/ActionTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ActionTransition = void 0; + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var ActionTransition2 = class ActionTransition extends Transition_1.Transition { + constructor(target, ruleIndex, actionIndex = -1, isCtxDependent = false) { + super(target); + this.ruleIndex = ruleIndex; + this.actionIndex = actionIndex; + this.isCtxDependent = isCtxDependent; } - append(utf16In) { - this.ensureRemaining(utf16In.length); - this.appendArray(utf16In); + get serializationType() { + return 6; } - appendArray(utf16In) { - switch (this.type) { - case 0: - this.appendArrayByte(utf16In); - break; - case 1: - this.appendArrayChar(utf16In); - break; - case 2: - this.appendArrayInt(utf16In); - break; - } + get isEpsilon() { + return true; } - appendArrayByte(utf16In) { - assert(this.prevHighSurrogate === -1); - let input = utf16In; - let inOffset = 0; - let inLimit = utf16In.length; - let outByte = this.buffer; - let outOffset = this.position; - while (inOffset < inLimit) { - let c = input[inOffset]; - if (c <= 255) { - outByte[outOffset] = c; - } else { - utf16In = utf16In.subarray(inOffset, inLimit); - this.position = outOffset; - if (!Character.isHighSurrogate(c)) { - this.byteToCharBuffer(utf16In.length); - this.appendArrayChar(utf16In); - return; - } else { - this.byteToIntBuffer(utf16In.length); - this.appendArrayInt(utf16In); - return; - } - } - inOffset++; - outOffset++; - } - this.position = outOffset; + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - appendArrayChar(utf16In) { - assert(this.prevHighSurrogate === -1); - let input = utf16In; - let inOffset = 0; - let inLimit = utf16In.length; - let outChar = this.buffer; - let outOffset = this.position; - while (inOffset < inLimit) { - let c = input[inOffset]; - if (!Character.isHighSurrogate(c)) { - outChar[outOffset] = c; - } else { - utf16In = utf16In.subarray(inOffset, inLimit); - this.position = outOffset; - this.charToIntBuffer(utf16In.length); - this.appendArrayInt(utf16In); - return; - } - inOffset++; - outOffset++; - } - this.position = outOffset; + toString() { + return "action_" + this.ruleIndex + ":" + this.actionIndex; } - appendArrayInt(utf16In) { - let input = utf16In; - let inOffset = 0; - let inLimit = utf16In.length; - let outInt = this.buffer; - let outOffset = this.position; - while (inOffset < inLimit) { - let c = input[inOffset]; - inOffset++; - if (this.prevHighSurrogate !== -1) { - if (Character.isLowSurrogate(c)) { - outInt[outOffset] = String.fromCharCode(this.prevHighSurrogate, c).codePointAt(0); - outOffset++; - this.prevHighSurrogate = -1; - } else { - outInt[outOffset] = this.prevHighSurrogate; - outOffset++; - if (Character.isHighSurrogate(c)) { - this.prevHighSurrogate = c; - } else { - outInt[outOffset] = c; - outOffset++; - this.prevHighSurrogate = -1; - } - } - } else if (Character.isHighSurrogate(c)) { - this.prevHighSurrogate = c; - } else { - outInt[outOffset] = c; - outOffset++; - } - } - if (this.prevHighSurrogate !== -1) { - outInt[outOffset] = this.prevHighSurrogate; - outOffset++; - } - this.position = outOffset; + }; + __decorate([ + Decorators_1.Override + ], ActionTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], ActionTransition2.prototype, "isEpsilon", null); + __decorate([ + Decorators_1.Override + ], ActionTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override + ], ActionTransition2.prototype, "toString", null); + ActionTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], ActionTransition2); + exports.ActionTransition = ActionTransition2; + } + }); + + // node_modules/antlr4ts/atn/AtomTransition.js + var require_AtomTransition = __commonJS({ + "node_modules/antlr4ts/atn/AtomTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.AtomTransition = void 0; + var IntervalSet_1 = require_IntervalSet(); + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var AtomTransition2 = class AtomTransition extends Transition_1.Transition { + constructor(target, label) { + super(target); + this._label = label; } - byteToCharBuffer(toAppend) { - let newBuffer = new Uint16Array(Math.max(this.position + toAppend, this.buffer.length >> 1)); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.type = 1; - this.buffer = newBuffer; + get serializationType() { + return 5; } - byteToIntBuffer(toAppend) { - let newBuffer = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 2)); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.type = 2; - this.buffer = newBuffer; + get label() { + return IntervalSet_1.IntervalSet.of(this._label); } - charToIntBuffer(toAppend) { - let newBuffer = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 1)); - newBuffer.set(this.buffer.subarray(0, this.position), 0); - this.type = 2; - this.buffer = newBuffer; + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return this._label === symbol; } - } - CodePointBuffer2.Builder = Builder; - })(CodePointBuffer = exports.CodePointBuffer || (exports.CodePointBuffer = {})); + toString() { + return String(this.label); + } + }; + __decorate([ + Decorators_1.Override + ], AtomTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], AtomTransition2.prototype, "label", null); + __decorate([ + Decorators_1.Override + ], AtomTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], AtomTransition2.prototype, "toString", null); + AtomTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], AtomTransition2); + exports.AtomTransition = AtomTransition2; + } }); - // node_modules/antlr4ts/CodePointCharStream.js - var require_CodePointCharStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CodePointCharStream = void 0; - var assert = require_assert(); - var IntStream_1 = require_IntStream(); - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var CodePointCharStream = class { - constructor(array, position, remaining, name) { - assert(position === 0); - this._array = array; - this._size = remaining; - this._name = name; - this._position = 0; - } - get internalStorage() { - return this._array; - } - static fromBuffer(codePointBuffer, name) { - if (name === void 0 || name.length === 0) { - name = IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; - } - return new CodePointCharStream(codePointBuffer.array(), codePointBuffer.position, codePointBuffer.remaining, name); - } - consume() { - if (this._size - this._position === 0) { - assert(this.LA(1) === IntStream_1.IntStream.EOF); - throw new RangeError("cannot consume EOF"); - } - this._position++; - } - get index() { - return this._position; - } - get size() { - return this._size; - } - mark() { - return -1; - } - release(marker) { - } - seek(index) { - this._position = index; - } - get sourceName() { - return this._name; - } - toString() { - return this.getText(Interval_1.Interval.of(0, this.size - 1)); - } - LA(i) { - let offset; - switch (Math.sign(i)) { - case -1: - offset = this.index + i; - if (offset < 0) { - return IntStream_1.IntStream.EOF; - } - return this._array[offset]; - case 0: - return 0; - case 1: - offset = this.index + i - 1; - if (offset >= this.size) { - return IntStream_1.IntStream.EOF; - } - return this._array[offset]; - } - throw new RangeError("Not reached"); - } - getText(interval) { - const startIdx = Math.min(interval.a, this.size); - const len = Math.min(interval.b - interval.a + 1, this.size - startIdx); - if (this._array instanceof Int32Array) { - return String.fromCodePoint(...Array.from(this._array.subarray(startIdx, startIdx + len))); - } else { - return String.fromCharCode(...Array.from(this._array.subarray(startIdx, startIdx + len))); - } - } - }; - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "consume", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "index", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "mark", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "release", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "seek", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "sourceName", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "toString", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "LA", null); - __decorate([ - Decorators_1.Override - ], CodePointCharStream.prototype, "getText", null); - exports.CodePointCharStream = CodePointCharStream; + // node_modules/antlr4ts/atn/BlockStartState.js + var require_BlockStartState = __commonJS({ + "node_modules/antlr4ts/atn/BlockStartState.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BlockStartState = void 0; + var DecisionState_1 = require_DecisionState(); + var BlockStartState2 = class extends DecisionState_1.DecisionState { + }; + exports.BlockStartState = BlockStartState2; + } }); - // node_modules/antlr4ts/CharStreams.js - var require_CharStreams = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CharStreams = void 0; - var CodePointBuffer_1 = require_CodePointBuffer(); - var CodePointCharStream_1 = require_CodePointCharStream(); - var IntStream_1 = require_IntStream(); - var CharStreams; - (function(CharStreams2) { - function fromString(s, sourceName) { - if (sourceName === void 0 || sourceName.length === 0) { - sourceName = IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; - } - let codePointBufferBuilder = CodePointBuffer_1.CodePointBuffer.builder(s.length); - let cb = new Uint16Array(s.length); - for (let i = 0; i < s.length; i++) { - cb[i] = s.charCodeAt(i); - } - codePointBufferBuilder.append(cb); - return CodePointCharStream_1.CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName); - } - CharStreams2.fromString = fromString; - })(CharStreams = exports.CharStreams || (exports.CharStreams = {})); + // node_modules/antlr4ts/atn/BasicBlockStartState.js + var require_BasicBlockStartState = __commonJS({ + "node_modules/antlr4ts/atn/BasicBlockStartState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BasicBlockStartState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var BlockStartState_1 = require_BlockStartState(); + var Decorators_1 = require_Decorators(); + var BasicBlockStartState2 = class extends BlockStartState_1.BlockStartState { + get stateType() { + return ATNStateType_1.ATNStateType.BLOCK_START; + } + }; + __decorate([ + Decorators_1.Override + ], BasicBlockStartState2.prototype, "stateType", null); + exports.BasicBlockStartState = BasicBlockStartState2; + } }); - // node_modules/antlr4ts/BufferedTokenStream.js - var require_BufferedTokenStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BufferedTokenStream = void 0; - var assert = require_assert(); - var CommonToken_1 = require_CommonToken(); - var Interval_1 = require_Interval(); - var Lexer_1 = require_Lexer(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var BufferedTokenStream = class BufferedTokenStream { - constructor(tokenSource) { - this.tokens = []; - this.p = -1; - this.fetchedEOF = false; - if (tokenSource == null) { - throw new Error("tokenSource cannot be null"); - } - this._tokenSource = tokenSource; - } - get tokenSource() { - return this._tokenSource; - } - set tokenSource(tokenSource) { - this._tokenSource = tokenSource; - this.tokens.length = 0; - this.p = -1; - this.fetchedEOF = false; - } - get index() { - return this.p; - } - mark() { - return 0; - } - release(marker) { - } - seek(index) { - this.lazyInit(); - this.p = this.adjustSeekIndex(index); - } - get size() { - return this.tokens.length; - } - consume() { - let skipEofCheck; - if (this.p >= 0) { - if (this.fetchedEOF) { - skipEofCheck = this.p < this.tokens.length - 1; - } else { - skipEofCheck = this.p < this.tokens.length; - } - } else { - skipEofCheck = false; + // node_modules/antlr4ts/atn/BlockEndState.js + var require_BlockEndState = __commonJS({ + "node_modules/antlr4ts/atn/BlockEndState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BlockEndState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var BlockEndState2 = class extends ATNState_1.ATNState { + get stateType() { + return ATNStateType_1.ATNStateType.BLOCK_END; } - if (!skipEofCheck && this.LA(1) === Token_1.Token.EOF) { - throw new Error("cannot consume EOF"); + }; + __decorate([ + Decorators_1.Override + ], BlockEndState2.prototype, "stateType", null); + exports.BlockEndState = BlockEndState2; + } + }); + + // node_modules/antlr4ts/atn/EpsilonTransition.js + var require_EpsilonTransition = __commonJS({ + "node_modules/antlr4ts/atn/EpsilonTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.EpsilonTransition = void 0; + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var EpsilonTransition2 = class EpsilonTransition extends Transition_1.Transition { + constructor(target, outermostPrecedenceReturn = -1) { + super(target); + this._outermostPrecedenceReturn = outermostPrecedenceReturn; + } + get outermostPrecedenceReturn() { + return this._outermostPrecedenceReturn; + } + get serializationType() { + return 1; + } + get isEpsilon() { + return true; } - if (this.sync(this.p + 1)) { - this.p = this.adjustSeekIndex(this.p + 1); + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - } - sync(i) { - assert(i >= 0); - let n = i - this.tokens.length + 1; - if (n > 0) { - let fetched = this.fetch(n); - return fetched >= n; + toString() { + return "epsilon"; } - return true; - } - fetch(n) { - if (this.fetchedEOF) { + }; + __decorate([ + Decorators_1.Override + ], EpsilonTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], EpsilonTransition2.prototype, "isEpsilon", null); + __decorate([ + Decorators_1.Override + ], EpsilonTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], EpsilonTransition2.prototype, "toString", null); + EpsilonTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], EpsilonTransition2); + exports.EpsilonTransition = EpsilonTransition2; + } + }); + + // node_modules/antlr4ts/atn/LexerChannelAction.js + var require_LexerChannelAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerChannelAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerChannelAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerChannelAction2 = class { + constructor(channel) { + this._channel = channel; + } + get channel() { + return this._channel; + } + get actionType() { return 0; } - for (let i = 0; i < n; i++) { - let t = this.tokenSource.nextToken(); - if (this.isWritableToken(t)) { - t.tokenIndex = this.tokens.length; - } - this.tokens.push(t); - if (t.type === Token_1.Token.EOF) { - this.fetchedEOF = true; - return i + 1; - } - } - return n; - } - get(i) { - if (i < 0 || i >= this.tokens.length) { - throw new RangeError("token index " + i + " out of range 0.." + (this.tokens.length - 1)); + get isPositionDependent() { + return false; } - return this.tokens[i]; - } - getRange(start, stop) { - if (start < 0 || stop < 0) { - return []; + execute(lexer) { + lexer.channel = this._channel; } - this.lazyInit(); - let subset = new Array(); - if (stop >= this.tokens.length) { - stop = this.tokens.length - 1; + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + hash = MurmurHash_1.MurmurHash.update(hash, this._channel); + return MurmurHash_1.MurmurHash.finish(hash, 2); } - for (let i = start; i <= stop; i++) { - let t = this.tokens[i]; - if (t.type === Token_1.Token.EOF) { - break; + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerChannelAction2)) { + return false; } - subset.push(t); - } - return subset; - } - LA(i) { - let token = this.LT(i); - if (!token) { - return Token_1.Token.INVALID_TYPE; - } - return token.type; - } - tryLB(k) { - if (this.p - k < 0) { - return void 0; + return this._channel === obj._channel; } - return this.tokens[this.p - k]; - } - LT(k) { - let result = this.tryLT(k); - if (result === void 0) { - throw new RangeError("requested lookback index out of range"); - } - return result; - } - tryLT(k) { - this.lazyInit(); - if (k === 0) { - throw new RangeError("0 is not a valid lookahead index"); - } - if (k < 0) { - return this.tryLB(-k); + toString() { + return `channel(${this._channel})`; } - let i = this.p + k - 1; - this.sync(i); - if (i >= this.tokens.length) { - return this.tokens[this.tokens.length - 1]; + }; + __decorate([ + Decorators_1.Override + ], LexerChannelAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerChannelAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerChannelAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerChannelAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerChannelAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerChannelAction2.prototype, "toString", null); + exports.LexerChannelAction = LexerChannelAction2; + } + }); + + // node_modules/antlr4ts/atn/LexerCustomAction.js + var require_LexerCustomAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerCustomAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerCustomAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerCustomAction2 = class { + constructor(ruleIndex, actionIndex) { + this._ruleIndex = ruleIndex; + this._actionIndex = actionIndex; } - return this.tokens[i]; - } - adjustSeekIndex(i) { - return i; - } - lazyInit() { - if (this.p === -1) { - this.setup(); + get ruleIndex() { + return this._ruleIndex; } - } - setup() { - this.sync(0); - this.p = this.adjustSeekIndex(0); - } - getTokens(start, stop, types) { - this.lazyInit(); - if (start === void 0) { - assert(stop === void 0 && types === void 0); - return this.tokens; - } else if (stop === void 0) { - stop = this.tokens.length - 1; + get actionIndex() { + return this._actionIndex; } - if (start < 0 || stop >= this.tokens.length || stop < 0 || start >= this.tokens.length) { - throw new RangeError("start " + start + " or stop " + stop + " not in 0.." + (this.tokens.length - 1)); + get actionType() { + return 1; } - if (start > stop) { - return []; + get isPositionDependent() { + return true; } - if (types === void 0) { - return this.tokens.slice(start, stop + 1); - } else if (typeof types === "number") { - types = new Set().add(types); + execute(lexer) { + lexer.action(void 0, this._ruleIndex, this._actionIndex); } - let typesSet = types; - let filteredTokens = this.tokens.slice(start, stop + 1); - filteredTokens = filteredTokens.filter((value) => typesSet.has(value.type)); - return filteredTokens; - } - nextTokenOnChannel(i, channel) { - this.sync(i); - if (i >= this.size) { - return this.size - 1; + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + hash = MurmurHash_1.MurmurHash.update(hash, this._ruleIndex); + hash = MurmurHash_1.MurmurHash.update(hash, this._actionIndex); + return MurmurHash_1.MurmurHash.finish(hash, 3); } - let token = this.tokens[i]; - while (token.channel !== channel) { - if (token.type === Token_1.Token.EOF) { - return i; + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerCustomAction2)) { + return false; } - i++; - this.sync(i); - token = this.tokens[i]; - } - return i; - } - previousTokenOnChannel(i, channel) { - this.sync(i); - if (i >= this.size) { - return this.size - 1; + return this._ruleIndex === obj._ruleIndex && this._actionIndex === obj._actionIndex; } - while (i >= 0) { - let token = this.tokens[i]; - if (token.type === Token_1.Token.EOF || token.channel === channel) { - return i; - } - i--; + }; + __decorate([ + Decorators_1.Override + ], LexerCustomAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerCustomAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerCustomAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerCustomAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerCustomAction2.prototype, "equals", null); + exports.LexerCustomAction = LexerCustomAction2; + } + }); + + // node_modules/antlr4ts/atn/LexerModeAction.js + var require_LexerModeAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerModeAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerModeAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerModeAction2 = class { + constructor(mode) { + this._mode = mode; } - return i; - } - getHiddenTokensToRight(tokenIndex, channel = -1) { - this.lazyInit(); - if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { - throw new RangeError(tokenIndex + " not in 0.." + (this.tokens.length - 1)); + get mode() { + return this._mode; } - let nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL); - let to; - let from = tokenIndex + 1; - if (nextOnChannel === -1) { - to = this.size - 1; - } else { - to = nextOnChannel; + get actionType() { + return 2; } - return this.filterForChannel(from, to, channel); - } - getHiddenTokensToLeft(tokenIndex, channel = -1) { - this.lazyInit(); - if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { - throw new RangeError(tokenIndex + " not in 0.." + (this.tokens.length - 1)); + get isPositionDependent() { + return false; } - if (tokenIndex === 0) { - return []; + execute(lexer) { + lexer.mode(this._mode); } - let prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL); - if (prevOnChannel === tokenIndex - 1) { - return []; + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + hash = MurmurHash_1.MurmurHash.update(hash, this._mode); + return MurmurHash_1.MurmurHash.finish(hash, 2); } - let from = prevOnChannel + 1; - let to = tokenIndex - 1; - return this.filterForChannel(from, to, channel); - } - filterForChannel(from, to, channel) { - let hidden = new Array(); - for (let i = from; i <= to; i++) { - let t = this.tokens[i]; - if (channel === -1) { - if (t.channel !== Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL) { - hidden.push(t); - } - } else { - if (t.channel === channel) { - hidden.push(t); - } + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerModeAction2)) { + return false; } + return this._mode === obj._mode; } - return hidden; - } - get sourceName() { - return this.tokenSource.sourceName; - } - getText(interval) { - if (interval === void 0) { - interval = Interval_1.Interval.of(0, this.size - 1); - } else if (!(interval instanceof Interval_1.Interval)) { - interval = interval.sourceInterval; + toString() { + return `mode(${this._mode})`; } - let start = interval.a; - let stop = interval.b; - if (start < 0 || stop < 0) { - return ""; + }; + __decorate([ + Decorators_1.Override + ], LexerModeAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerModeAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerModeAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerModeAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerModeAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerModeAction2.prototype, "toString", null); + exports.LexerModeAction = LexerModeAction2; + } + }); + + // node_modules/antlr4ts/atn/LexerMoreAction.js + var require_LexerMoreAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerMoreAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerMoreAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerMoreAction2 = class { + constructor() { } - this.fill(); - if (stop >= this.tokens.length) { - stop = this.tokens.length - 1; + get actionType() { + return 3; } - let buf = ""; - for (let i = start; i <= stop; i++) { - let t = this.tokens[i]; - if (t.type === Token_1.Token.EOF) { - break; - } - buf += t.text; + get isPositionDependent() { + return false; } - return buf.toString(); - } - getTextFromRange(start, stop) { - if (this.isToken(start) && this.isToken(stop)) { - return this.getText(Interval_1.Interval.of(start.tokenIndex, stop.tokenIndex)); + execute(lexer) { + lexer.more(); } - return ""; - } - fill() { - this.lazyInit(); - const blockSize = 1e3; - while (true) { - let fetched = this.fetch(blockSize); - if (fetched < blockSize) { - return; - } + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + return MurmurHash_1.MurmurHash.finish(hash, 1); } - } - isWritableToken(t) { - return t instanceof CommonToken_1.CommonToken; - } - isToken(t) { - return t instanceof CommonToken_1.CommonToken; - } - }; - __decorate([ - Decorators_1.NotNull - ], BufferedTokenStream.prototype, "_tokenSource", void 0); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "tokenSource", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "index", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "mark", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "release", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "seek", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "size", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "consume", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "get", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "LA", null); - __decorate([ - Decorators_1.NotNull, - Decorators_1.Override - ], BufferedTokenStream.prototype, "LT", null); - __decorate([ - Decorators_1.Override - ], BufferedTokenStream.prototype, "sourceName", null); - __decorate([ - Decorators_1.NotNull, - Decorators_1.Override - ], BufferedTokenStream.prototype, "getText", null); - __decorate([ - Decorators_1.NotNull, - Decorators_1.Override - ], BufferedTokenStream.prototype, "getTextFromRange", null); - BufferedTokenStream = __decorate([ - __param(0, Decorators_1.NotNull) - ], BufferedTokenStream); - exports.BufferedTokenStream = BufferedTokenStream; + equals(obj) { + return obj === this; + } + toString() { + return "more"; + } + }; + __decorate([ + Decorators_1.Override + ], LexerMoreAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerMoreAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerMoreAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerMoreAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerMoreAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerMoreAction2.prototype, "toString", null); + exports.LexerMoreAction = LexerMoreAction2; + (function(LexerMoreAction3) { + LexerMoreAction3.INSTANCE = new LexerMoreAction3(); + })(LexerMoreAction2 = exports.LexerMoreAction || (exports.LexerMoreAction = {})); + } }); - // node_modules/antlr4ts/CommonTokenStream.js - var require_CommonTokenStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.CommonTokenStream = void 0; - var BufferedTokenStream_1 = require_BufferedTokenStream(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var CommonTokenStream2 = class CommonTokenStream extends BufferedTokenStream_1.BufferedTokenStream { - constructor(tokenSource, channel = Token_1.Token.DEFAULT_CHANNEL) { - super(tokenSource); - this.channel = channel; - } - adjustSeekIndex(i) { - return this.nextTokenOnChannel(i, this.channel); - } - tryLB(k) { - if (this.p - k < 0) { - return void 0; + // node_modules/antlr4ts/atn/LexerPopModeAction.js + var require_LexerPopModeAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerPopModeAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerPopModeAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerPopModeAction2 = class { + constructor() { } - let i = this.p; - let n = 1; - while (n <= k && i > 0) { - i = this.previousTokenOnChannel(i - 1, this.channel); - n++; + get actionType() { + return 4; } - if (i < 0) { - return void 0; + get isPositionDependent() { + return false; } - return this.tokens[i]; - } - tryLT(k) { - this.lazyInit(); - if (k === 0) { - throw new RangeError("0 is not a valid lookahead index"); + execute(lexer) { + lexer.popMode(); } - if (k < 0) { - return this.tryLB(-k); + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + return MurmurHash_1.MurmurHash.finish(hash, 1); } - let i = this.p; - let n = 1; - while (n < k) { - if (this.sync(i + 1)) { - i = this.nextTokenOnChannel(i + 1, this.channel); - } - n++; + equals(obj) { + return obj === this; } - return this.tokens[i]; - } - getNumberOfOnChannelTokens() { - let n = 0; - this.fill(); - for (let t of this.tokens) { - if (t.channel === this.channel) { - n++; - } - if (t.type === Token_1.Token.EOF) { - break; - } + toString() { + return "popMode"; } - return n; - } - }; - __decorate([ - Decorators_1.Override - ], CommonTokenStream2.prototype, "adjustSeekIndex", null); - __decorate([ - Decorators_1.Override - ], CommonTokenStream2.prototype, "tryLB", null); - __decorate([ - Decorators_1.Override - ], CommonTokenStream2.prototype, "tryLT", null); - CommonTokenStream2 = __decorate([ - __param(0, Decorators_1.NotNull) - ], CommonTokenStream2); - exports.CommonTokenStream = CommonTokenStream2; - }); - - // node_modules/antlr4ts/ListTokenSource.js - var require_ListTokenSource = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ListTokenSource = void 0; - var CommonTokenFactory_1 = require_CommonTokenFactory(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var ListTokenSource = class ListTokenSource { - constructor(tokens2, sourceName) { - this.i = 0; - this._factory = CommonTokenFactory_1.CommonTokenFactory.DEFAULT; - if (tokens2 == null) { - throw new Error("tokens cannot be null"); - } - this.tokens = tokens2; - this._sourceName = sourceName; - } - get charPositionInLine() { - if (this.i < this.tokens.length) { - return this.tokens[this.i].charPositionInLine; - } else if (this.eofToken != null) { - return this.eofToken.charPositionInLine; - } else if (this.tokens.length > 0) { - let lastToken = this.tokens[this.tokens.length - 1]; - let tokenText = lastToken.text; - if (tokenText != null) { - let lastNewLine = tokenText.lastIndexOf("\n"); - if (lastNewLine >= 0) { - return tokenText.length - lastNewLine - 1; - } - } - return lastToken.charPositionInLine + lastToken.stopIndex - lastToken.startIndex + 1; - } - return 0; - } - nextToken() { - if (this.i >= this.tokens.length) { - if (this.eofToken == null) { - let start = -1; - if (this.tokens.length > 0) { - let previousStop = this.tokens[this.tokens.length - 1].stopIndex; - if (previousStop !== -1) { - start = previousStop + 1; - } - } - let stop = Math.max(-1, start - 1); - this.eofToken = this._factory.create({source: this, stream: this.inputStream}, Token_1.Token.EOF, "EOF", Token_1.Token.DEFAULT_CHANNEL, start, stop, this.line, this.charPositionInLine); - } - return this.eofToken; - } - let t = this.tokens[this.i]; - if (this.i === this.tokens.length - 1 && t.type === Token_1.Token.EOF) { - this.eofToken = t; - } - this.i++; - return t; - } - get line() { - if (this.i < this.tokens.length) { - return this.tokens[this.i].line; - } else if (this.eofToken != null) { - return this.eofToken.line; - } else if (this.tokens.length > 0) { - let lastToken = this.tokens[this.tokens.length - 1]; - let line = lastToken.line; - let tokenText = lastToken.text; - if (tokenText != null) { - for (let i = 0; i < tokenText.length; i++) { - if (tokenText.charAt(i) === "\n") { - line++; - } - } - } - return line; - } - return 1; - } - get inputStream() { - if (this.i < this.tokens.length) { - return this.tokens[this.i].inputStream; - } else if (this.eofToken != null) { - return this.eofToken.inputStream; - } else if (this.tokens.length > 0) { - return this.tokens[this.tokens.length - 1].inputStream; - } - return void 0; - } - get sourceName() { - if (this._sourceName) { - return this._sourceName; - } - let inputStream = this.inputStream; - if (inputStream != null) { - return inputStream.sourceName; - } - return "List"; - } - set tokenFactory(factory) { - this._factory = factory; - } - get tokenFactory() { - return this._factory; - } - }; - __decorate([ - Decorators_1.Override - ], ListTokenSource.prototype, "charPositionInLine", null); - __decorate([ - Decorators_1.Override - ], ListTokenSource.prototype, "nextToken", null); - __decorate([ - Decorators_1.Override - ], ListTokenSource.prototype, "line", null); - __decorate([ - Decorators_1.Override - ], ListTokenSource.prototype, "inputStream", null); - __decorate([ - Decorators_1.Override - ], ListTokenSource.prototype, "sourceName", null); - __decorate([ - Decorators_1.Override, - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ListTokenSource.prototype, "tokenFactory", null); - ListTokenSource = __decorate([ - __param(0, Decorators_1.NotNull) - ], ListTokenSource); - exports.ListTokenSource = ListTokenSource; - }); - - // node_modules/antlr4ts/misc/MultiMap.js - var require_MultiMap = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.MultiMap = void 0; - var MultiMap = class extends Map { - constructor() { - super(); - } - map(key, value) { - let elementsForKey = super.get(key); - if (!elementsForKey) { - elementsForKey = []; - super.set(key, elementsForKey); - } - elementsForKey.push(value); - } - getPairs() { - let pairs = []; - this.forEach((values, key) => { - values.forEach((v) => { - pairs.push([key, v]); - }); - }); - return pairs; - } - }; - exports.MultiMap = MultiMap; - }); - - // node_modules/antlr4ts/misc/ParseCancellationException.js - var require_ParseCancellationException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParseCancellationException = void 0; - var ParseCancellationException = class extends Error { - constructor(cause) { - super(cause.message); - this.cause = cause; - this.stack = cause.stack; - } - getCause() { - return this.cause; - } - }; - exports.ParseCancellationException = ParseCancellationException; + }; + __decorate([ + Decorators_1.Override + ], LexerPopModeAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerPopModeAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerPopModeAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerPopModeAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerPopModeAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerPopModeAction2.prototype, "toString", null); + exports.LexerPopModeAction = LexerPopModeAction2; + (function(LexerPopModeAction3) { + LexerPopModeAction3.INSTANCE = new LexerPopModeAction3(); + })(LexerPopModeAction2 = exports.LexerPopModeAction || (exports.LexerPopModeAction = {})); + } }); - // node_modules/antlr4ts/InterpreterRuleContext.js - var require_InterpreterRuleContext = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.InterpreterRuleContext = void 0; - var Decorators_1 = require_Decorators(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var InterpreterRuleContext = class extends ParserRuleContext_1.ParserRuleContext { - constructor(ruleIndex, parent, invokingStateNumber) { - if (invokingStateNumber !== void 0) { - super(parent, invokingStateNumber); - } else { - super(); + // node_modules/antlr4ts/atn/LexerPushModeAction.js + var require_LexerPushModeAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerPushModeAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerPushModeAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerPushModeAction2 = class { + constructor(mode) { + this._mode = mode; } - this._ruleIndex = ruleIndex; - } - get ruleIndex() { - return this._ruleIndex; - } - }; - __decorate([ - Decorators_1.Override - ], InterpreterRuleContext.prototype, "ruleIndex", null); - exports.InterpreterRuleContext = InterpreterRuleContext; - }); - - // node_modules/antlr4ts/ParserInterpreter.js - var require_ParserInterpreter = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParserInterpreter = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var BitSet_1 = require_BitSet(); - var FailedPredicateException_1 = require_FailedPredicateException(); - var InputMismatchException_1 = require_InputMismatchException(); - var InterpreterRuleContext_1 = require_InterpreterRuleContext(); - var LoopEndState_1 = require_LoopEndState(); - var Decorators_1 = require_Decorators(); - var Decorators_2 = require_Decorators(); - var Parser_1 = require_Parser(); - var ParserATNSimulator_1 = require_ParserATNSimulator(); - var RecognitionException_1 = require_RecognitionException(); - var StarLoopEntryState_1 = require_StarLoopEntryState(); - var Token_1 = require_Token(); - var ParserInterpreter = class ParserInterpreter2 extends Parser_1.Parser { - constructor(grammarFileName, vocabulary, ruleNames, atn, input) { - super(grammarFileName instanceof ParserInterpreter2 ? grammarFileName.inputStream : input); - this._parentContextStack = []; - this.overrideDecision = -1; - this.overrideDecisionInputIndex = -1; - this.overrideDecisionAlt = -1; - this.overrideDecisionReached = false; - this._overrideDecisionRoot = void 0; - if (grammarFileName instanceof ParserInterpreter2) { - let old = grammarFileName; - this._grammarFileName = old._grammarFileName; - this._atn = old._atn; - this.pushRecursionContextStates = old.pushRecursionContextStates; - this._ruleNames = old._ruleNames; - this._vocabulary = old._vocabulary; - this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(this._atn, this); - } else { - vocabulary = vocabulary; - ruleNames = ruleNames; - atn = atn; - this._grammarFileName = grammarFileName; - this._atn = atn; - this._ruleNames = ruleNames.slice(0); - this._vocabulary = vocabulary; - this.pushRecursionContextStates = new BitSet_1.BitSet(atn.states.length); - for (let state of atn.states) { - if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { - continue; - } - if (state.precedenceRuleDecision) { - this.pushRecursionContextStates.set(state.stateNumber); - } - } - this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(atn, this); + get mode() { + return this._mode; } - } - reset(resetInput) { - if (resetInput === void 0) { - super.reset(); - } else { - super.reset(resetInput); + get actionType() { + return 5; } - this.overrideDecisionReached = false; - this._overrideDecisionRoot = void 0; - } - get atn() { - return this._atn; - } - get vocabulary() { - return this._vocabulary; - } - get ruleNames() { - return this._ruleNames; - } - get grammarFileName() { - return this._grammarFileName; - } - parse(startRuleIndex) { - let startRuleStartState = this._atn.ruleToStartState[startRuleIndex]; - this._rootContext = this.createInterpreterRuleContext(void 0, ATNState_1.ATNState.INVALID_STATE_NUMBER, startRuleIndex); - if (startRuleStartState.isPrecedenceRule) { - this.enterRecursionRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex, 0); - } else { - this.enterRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex); + get isPositionDependent() { + return false; } - while (true) { - let p = this.atnState; - switch (p.stateType) { - case ATNStateType_1.ATNStateType.RULE_STOP: - if (this._ctx.isEmpty) { - if (startRuleStartState.isPrecedenceRule) { - let result = this._ctx; - let parentContext = this._parentContextStack.pop(); - this.unrollRecursionContexts(parentContext[0]); - return result; - } else { - this.exitRule(); - return this._rootContext; - } - } - this.visitRuleStopState(p); - break; - default: - try { - this.visitState(p); - } catch (e) { - if (e instanceof RecognitionException_1.RecognitionException) { - this.state = this._atn.ruleToStopState[p.ruleIndex].stateNumber; - this.context.exception = e; - this.errorHandler.reportError(this, e); - this.recover(e); - } else { - throw e; - } - } - break; - } + execute(lexer) { + lexer.pushMode(this._mode); } - } - enterRecursionRule(localctx, state, ruleIndex, precedence) { - this._parentContextStack.push([this._ctx, localctx.invokingState]); - super.enterRecursionRule(localctx, state, ruleIndex, precedence); - } - get atnState() { - return this._atn.states[this.state]; - } - visitState(p) { - let predictedAlt = 1; - if (p.numberOfTransitions > 1) { - predictedAlt = this.visitDecisionState(p); + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + hash = MurmurHash_1.MurmurHash.update(hash, this._mode); + return MurmurHash_1.MurmurHash.finish(hash, 2); } - let transition = p.transition(predictedAlt - 1); - switch (transition.serializationType) { - case 1: - if (this.pushRecursionContextStates.get(p.stateNumber) && !(transition.target instanceof LoopEndState_1.LoopEndState)) { - let parentContext = this._parentContextStack[this._parentContextStack.length - 1]; - let localctx = this.createInterpreterRuleContext(parentContext[0], parentContext[1], this._ctx.ruleIndex); - this.pushNewRecursionContext(localctx, this._atn.ruleToStartState[p.ruleIndex].stateNumber, this._ctx.ruleIndex); - } - break; - case 5: - this.match(transition._label); - break; - case 2: - case 7: - case 8: - if (!transition.matches(this._input.LA(1), Token_1.Token.MIN_USER_TOKEN_TYPE, 65535)) { - this.recoverInline(); - } - this.matchWildcard(); - break; - case 9: - this.matchWildcard(); - break; - case 3: - let ruleStartState = transition.target; - let ruleIndex = ruleStartState.ruleIndex; - let newctx = this.createInterpreterRuleContext(this._ctx, p.stateNumber, ruleIndex); - if (ruleStartState.isPrecedenceRule) { - this.enterRecursionRule(newctx, ruleStartState.stateNumber, ruleIndex, transition.precedence); - } else { - this.enterRule(newctx, transition.target.stateNumber, ruleIndex); - } - break; - case 4: - let predicateTransition = transition; - if (!this.sempred(this._ctx, predicateTransition.ruleIndex, predicateTransition.predIndex)) { - throw new FailedPredicateException_1.FailedPredicateException(this); - } - break; - case 6: - let actionTransition = transition; - this.action(this._ctx, actionTransition.ruleIndex, actionTransition.actionIndex); - break; - case 10: - if (!this.precpred(this._ctx, transition.precedence)) { - let precedence = transition.precedence; - throw new FailedPredicateException_1.FailedPredicateException(this, `precpred(_ctx, ${precedence})`); - } - break; - default: - throw new Error("UnsupportedOperationException: Unrecognized ATN transition type."); + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerPushModeAction2)) { + return false; + } + return this._mode === obj._mode; } - this.state = transition.target.stateNumber; - } - visitDecisionState(p) { - let predictedAlt; - this.errorHandler.sync(this); - let decision = p.decision; - if (decision === this.overrideDecision && this._input.index === this.overrideDecisionInputIndex && !this.overrideDecisionReached) { - predictedAlt = this.overrideDecisionAlt; - this.overrideDecisionReached = true; - } else { - predictedAlt = this.interpreter.adaptivePredict(this._input, decision, this._ctx); + toString() { + return `pushMode(${this._mode})`; } - return predictedAlt; - } - createInterpreterRuleContext(parent, invokingStateNumber, ruleIndex) { - return new InterpreterRuleContext_1.InterpreterRuleContext(ruleIndex, parent, invokingStateNumber); - } - visitRuleStopState(p) { - let ruleStartState = this._atn.ruleToStartState[p.ruleIndex]; - if (ruleStartState.isPrecedenceRule) { - let parentContext = this._parentContextStack.pop(); - this.unrollRecursionContexts(parentContext[0]); - this.state = parentContext[1]; - } else { - this.exitRule(); - } - let ruleTransition = this._atn.states[this.state].transition(0); - this.state = ruleTransition.followState.stateNumber; - } - addDecisionOverride(decision, tokenIndex, forcedAlt) { - this.overrideDecision = decision; - this.overrideDecisionInputIndex = tokenIndex; - this.overrideDecisionAlt = forcedAlt; - } - get overrideDecisionRoot() { - return this._overrideDecisionRoot; - } - recover(e) { - let i = this._input.index; - this.errorHandler.recover(this, e); - if (this._input.index === i) { - let tok = e.getOffendingToken(); - if (!tok) { - throw new Error("Expected exception to have an offending token"); - } - let source = tok.tokenSource; - let stream = source !== void 0 ? source.inputStream : void 0; - let sourcePair = {source, stream}; - if (e instanceof InputMismatchException_1.InputMismatchException) { - let expectedTokens = e.expectedTokens; - if (expectedTokens === void 0) { - throw new Error("Expected the exception to provide expected tokens"); - } - let expectedTokenType = Token_1.Token.INVALID_TYPE; - if (!expectedTokens.isNil) { - expectedTokenType = expectedTokens.minElement; - } - let errToken = this.tokenFactory.create(sourcePair, expectedTokenType, tok.text, Token_1.Token.DEFAULT_CHANNEL, -1, -1, tok.line, tok.charPositionInLine); - this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken)); - } else { - let source2 = tok.tokenSource; - let errToken = this.tokenFactory.create(sourcePair, Token_1.Token.INVALID_TYPE, tok.text, Token_1.Token.DEFAULT_CHANNEL, -1, -1, tok.line, tok.charPositionInLine); - this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken)); - } - } - } - recoverInline() { - return this._errHandler.recoverInline(this); - } - get rootContext() { - return this._rootContext; - } - }; - __decorate([ - Decorators_1.NotNull - ], ParserInterpreter.prototype, "_vocabulary", void 0); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "reset", null); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "atn", null); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "vocabulary", null); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "ruleNames", null); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "grammarFileName", null); - __decorate([ - Decorators_2.Override - ], ParserInterpreter.prototype, "enterRecursionRule", null); - ParserInterpreter = __decorate([ - __param(1, Decorators_1.NotNull) - ], ParserInterpreter); - exports.ParserInterpreter = ParserInterpreter; + }; + __decorate([ + Decorators_1.Override + ], LexerPushModeAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerPushModeAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerPushModeAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerPushModeAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerPushModeAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerPushModeAction2.prototype, "toString", null); + exports.LexerPushModeAction = LexerPushModeAction2; + } }); - // node_modules/antlr4ts/tree/pattern/ParseTreeMatch.js - var require_ParseTreeMatch = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParseTreeMatch = void 0; - var Decorators_1 = require_Decorators(); - var ParseTreeMatch = class ParseTreeMatch { - constructor(tree, pattern, labels, mismatchedNode) { - if (!tree) { - throw new Error("tree cannot be null"); - } - if (!pattern) { - throw new Error("pattern cannot be null"); - } - if (!labels) { - throw new Error("labels cannot be null"); - } - this._tree = tree; - this._pattern = pattern; - this._labels = labels; - this._mismatchedNode = mismatchedNode; - } - get(label) { - let parseTrees = this._labels.get(label); - if (!parseTrees || parseTrees.length === 0) { - return void 0; + // node_modules/antlr4ts/atn/LexerSkipAction.js + var require_LexerSkipAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerSkipAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerSkipAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerSkipAction2 = class { + constructor() { } - return parseTrees[parseTrees.length - 1]; - } - getAll(label) { - const nodes = this._labels.get(label); - if (!nodes) { - return []; - } - return nodes; - } - get labels() { - return this._labels; - } - get mismatchedNode() { - return this._mismatchedNode; - } - get succeeded() { - return !this._mismatchedNode; - } - get pattern() { - return this._pattern; - } - get tree() { - return this._tree; - } - toString() { - return `Match ${this.succeeded ? "succeeded" : "failed"}; found ${this.labels.size} labels`; - } - }; - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ParseTreeMatch.prototype, "getAll", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreeMatch.prototype, "labels", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreeMatch.prototype, "pattern", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreeMatch.prototype, "tree", null); - __decorate([ - Decorators_1.Override - ], ParseTreeMatch.prototype, "toString", null); - ParseTreeMatch = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParseTreeMatch); - exports.ParseTreeMatch = ParseTreeMatch; - }); - - // node_modules/antlr4ts/tree/xpath/XPathLexer.js - var require_XPathLexer = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathLexer = void 0; - var ATNDeserializer_1 = require_ATNDeserializer(); - var Lexer_1 = require_Lexer(); - var LexerATNSimulator_1 = require_LexerATNSimulator(); - var VocabularyImpl_1 = require_VocabularyImpl(); - var Utils3 = require_Utils(); - var XPathLexer = class extends Lexer_1.Lexer { - constructor(input) { - super(input); - this._interp = new LexerATNSimulator_1.LexerATNSimulator(XPathLexer._ATN, this); - } - get vocabulary() { - return XPathLexer.VOCABULARY; - } - get grammarFileName() { - return "XPathLexer.g4"; - } - get ruleNames() { - return XPathLexer.ruleNames; - } - get serializedATN() { - return XPathLexer._serializedATN; - } - get channelNames() { - return XPathLexer.channelNames; - } - get modeNames() { - return XPathLexer.modeNames; - } - action(_localctx, ruleIndex, actionIndex) { - switch (ruleIndex) { - case 4: - this.ID_action(_localctx, actionIndex); - break; + get actionType() { + return 6; } - } - ID_action(_localctx, actionIndex) { - switch (actionIndex) { - case 0: - let text = this.text; - if (text.charAt(0) === text.charAt(0).toUpperCase()) { - this.type = XPathLexer.TOKEN_REF; - } else { - this.type = XPathLexer.RULE_REF; - } - break; + get isPositionDependent() { + return false; } - } - static get _ATN() { - if (!XPathLexer.__ATN) { - XPathLexer.__ATN = new ATNDeserializer_1.ATNDeserializer().deserialize(Utils3.toCharArray(XPathLexer._serializedATN)); - } - return XPathLexer.__ATN; - } - }; - exports.XPathLexer = XPathLexer; - XPathLexer.TOKEN_REF = 1; - XPathLexer.RULE_REF = 2; - XPathLexer.ANYWHERE = 3; - XPathLexer.ROOT = 4; - XPathLexer.WILDCARD = 5; - XPathLexer.BANG = 6; - XPathLexer.ID = 7; - XPathLexer.STRING = 8; - XPathLexer.channelNames = [ - "DEFAULT_TOKEN_CHANNEL", - "HIDDEN" - ]; - XPathLexer.modeNames = [ - "DEFAULT_MODE" - ]; - XPathLexer.ruleNames = [ - "ANYWHERE", - "ROOT", - "WILDCARD", - "BANG", - "ID", - "NameChar", - "NameStartChar", - "STRING" - ]; - XPathLexer._LITERAL_NAMES = [ - void 0, - void 0, - void 0, - "'//'", - "'/'", - "'*'", - "'!'" - ]; - XPathLexer._SYMBOLIC_NAMES = [ - void 0, - "TOKEN_REF", - "RULE_REF", - "ANYWHERE", - "ROOT", - "WILDCARD", - "BANG", - "ID", - "STRING" - ]; - XPathLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(XPathLexer._LITERAL_NAMES, XPathLexer._SYMBOLIC_NAMES, []); - XPathLexer._serializedATNSegments = 2; - XPathLexer._serializedATNSegment0 = '\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\n2\b     \x07 \x07\b \b \x07\n\f"\v\x07\x07\b\b  \x07 ,\n \f  /\v   -\n\x07\x07 \b\v \r\n\u02B6\n2;C\\aac|\x81\xA1\xAC\xAC\xAF\xAF\xB7\xB7\xBC\xBC\xC2\xD8\xDA\xF8\xFA\u02C3\u02C8\u02D3\u02E2\u02E6\u02EE\u02EE\u02F0\u02F0\u0302\u0376\u0378\u0379\u037C\u037F\u0381\u0381\u0388\u0388\u038A\u038C\u038E\u038E\u0390\u03A3\u03A5\u03F7\u03F9\u0483\u0485\u0489\u048C\u0531\u0533\u0558\u055B\u055B\u0563\u0589\u0593\u05BF\u05C1\u05C1\u05C3\u05C4\u05C6\u05C7\u05C9\u05C9\u05D2\u05EC\u05F2\u05F4\u0602\u0607\u0612\u061C\u061E\u061E\u0622\u066B\u0670\u06D5\u06D7\u06DF\u06E1\u06EA\u06EC\u06FE\u0701\u0701\u0711\u074C\u074F\u07B3\u07C2\u07F7\u07FC\u07FC\u0802\u082F\u0842\u085D\u08A2\u08B6\u08B8\u08BF\u08D6\u0965\u0968\u0971\u0973\u0985\u0987\u098E\u0991\u0992\u0995\u09AA\u09AC\u09B2\u09B4\u09B4\u09B8\u09BB\u09BE\u09C6\u09C9\u09CA\u09CD\u09D0\u09D9\u09D9\u09DE\u09DF\u09E1\u09E5\u09E8\u09F3\u0A03\u0A05\u0A07\u0A0C\u0A11\u0A12\u0A15\u0A2A\u0A2C\u0A32\u0A34\u0A35\u0A37\u0A38\u0A3A\u0A3B\u0A3E\u0A3E\u0A40\u0A44\u0A49\u0A4A\u0A4D\u0A4F\u0A53\u0A53\u0A5B\u0A5E\u0A60\u0A60\u0A68\u0A77\u0A83\u0A85\u0A87\u0A8F\u0A91\u0A93\u0A95\u0AAA\u0AAC\u0AB2\u0AB4\u0AB5\u0AB7\u0ABB\u0ABE\u0AC7\u0AC9\u0ACB\u0ACD\u0ACF\u0AD2\u0AD2\u0AE2\u0AE5\u0AE8\u0AF1\u0AFB\u0AFB\u0B03\u0B05\u0B07\u0B0E\u0B11\u0B12\u0B15\u0B2A\u0B2C\u0B32\u0B34\u0B35\u0B37\u0B3B\u0B3E\u0B46\u0B49\u0B4A\u0B4D\u0B4F\u0B58\u0B59\u0B5E\u0B5F\u0B61\u0B65\u0B68\u0B71\u0B73\u0B73\u0B84\u0B85\u0B87\u0B8C\u0B90\u0B92\u0B94\u0B97\u0B9B\u0B9C\u0B9E\u0B9E\u0BA0\u0BA1\u0BA5\u0BA6\u0BAA\u0BAC\u0BB0\u0BBB\u0BC0\u0BC4\u0BC8\u0BCA\u0BCC\u0BCF\u0BD2\u0BD2\u0BD9\u0BD9\u0BE8\u0BF1\u0C02\u0C05\u0C07\u0C0E\u0C10\u0C12\u0C14\u0C2A\u0C2C\u0C3B\u0C3F\u0C46\u0C48\u0C4A\u0C4C\u0C4F\u0C57\u0C58\u0C5A\u0C5C\u0C62\u0C65\u0C68\u0C71\u0C82\u0C85\u0C87\u0C8E\u0C90\u0C92\u0C94\u0CAA\u0CAC\u0CB5\u0CB7\u0CBB\u0CBE\u0CC6\u0CC8\u0CCA\u0CCC\u0CCF\u0CD7\u0CD8\u0CE0\u0CE0\u0CE2\u0CE5\u0CE8\u0CF1\u0CF3\u0CF4\u0D03\u0D05\u0D07\u0D0E\u0D10\u0D12\u0D14\u0D3C\u0D3F\u0D46\u0D48\u0D4A\u0D4C\u0D50\u0D56\u0D59\u0D61\u0D65\u0D68\u0D71\u0D7C\u0D81\u0D84\u0D85\u0D87\u0D98\u0D9C\u0DB3\u0DB5\u0DBD\u0DBF\u0DBF\u0DC2\u0DC8\u0DCC\u0DCC\u0DD1\u0DD6\u0DD8\u0DD8\u0DDA\u0DE1\u0DE8\u0DF1\u0DF4\u0DF5\u0E03\u0E3C\u0E42\u0E50\u0E52\u0E5B\u0E83\u0E84\u0E86\u0E86\u0E89\u0E8A\u0E8C\u0E8C\u0E8F\u0E8F\u0E96\u0E99\u0E9B\u0EA1\u0EA3\u0EA5\u0EA7\u0EA7\u0EA9\u0EA9\u0EAC\u0EAD\u0EAF\u0EBB\u0EBD\u0EBF\u0EC2\u0EC6\u0EC8\u0EC8\u0ECA\u0ECF\u0ED2\u0EDB\u0EDE\u0EE1\u0F02\u0F02\u0F1A\u0F1B\u0F22\u0F2B\u0F37\u0F37\u0F39\u0F39\u0F3B\u0F3B\u0F40\u0F49\u0F4B\u0F6E\u0F73\u0F86\u0F88\u0F99\u0F9B\u0FBE\u0FC8\u0FC8\u1002\u104B\u1052\u109F\u10A2\u10C7\u10C9\u10C9\u10CF\u10CF\u10D2\u10FC\u10FE\u124A\u124C\u124F\u1252\u1258\u125A\u125A\u125C\u125F\u1262\u128A\u128C\u128F\u1292\u12B2\u12B4\u12B7\u12BA\u12C0\u12C2\u12C2\u12C4\u12C7\u12CA\u12D8\u12DA\u1312\u1314\u1317\u131A\u135C\u135F\u1361\u1382\u1391\u13A2\u13F7\u13FA\u13FF\u1403\u166E\u1671\u1681\u1683\u169C\u16A2\u16EC\u16F0\u16FA\u1702\u170E\u1710\u1716\u1722\u1736\u1742\u1755\u1762\u176E\u1770\u1772\u1774\u1775\u1782\u17D5\u17D9\u17D9\u17DE\u17DF\u17E2\u17EB\u180D\u1810\u1812\u181B\u1822\u1879\u1882\u18AC\u18B2\u18F7\u1902\u1920\u1922\u192D\u1932\u193D\u1948\u196F\u1972\u1976\u1982\u19AD\u19B2\u19CB\u19D2\u19DB\u1A02\u1A1D\u1A22\u1A60\u1A62\u1A7E\u1A81\u1A8B\u1A92\u1A9B\u1AA9\u1AA9\u1AB2\u1ABF\u1B02\u1B4D\u1B52\u1B5B\u1B6D\u1B75\u1B82\u1BF5\u1C02\u1C39\u1C42\u1C4B\u1C4F\u1C7F\u1C82\u1C8A\u1CD2\u1CD4\u1CD6\u1CF8\u1CFA\u1CFB\u1D02\u1DF7\u1DFD\u1F17\u1F1A\u1F1F\u1F22\u1F47\u1F4A\u1F4F\u1F52\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F61\u1F7F\u1F82\u1FB6\u1FB8\u1FBE\u1FC0\u1FC0\u1FC4\u1FC6\u1FC8\u1FCE\u1FD2\u1FD5\u1FD8\u1FDD\u1FE2\u1FEE\u1FF4\u1FF6\u1FF8\u1FFE\u200D\u2011\u202C\u2030\u2041\u2042\u2056\u2056\u2062\u2066\u2068\u2071\u2073\u2073\u2081\u2081\u2092\u209E\u20D2\u20DE\u20E3\u20E3\u20E7\u20F2\u2104\u2104\u2109\u2109\u210C\u2115\u2117\u2117\u211B\u211F\u2126\u2126\u2128\u2128\u212A\u212A\u212C\u212F\u2131\u213B\u213E\u2141\u2147\u214B\u2150\u2150\u2162\u218A\u2C02\u2C30\u2C32\u2C60\u2C62\u2CE6\u2CED\u2CF5\u2D02\u2D27\u2D29\u2D29\u2D2F\u2D2F\u2D32\u2D69\u2D71\u2D71\u2D81\u2D98\u2DA2\u2DA8\u2DAA\u2DB0\u2DB2\u2DB8\u2DBA\u2DC0\u2DC2\u2DC8\u2DCA\u2DD0\u2DD2\u2DD8\u2DDA\u2DE0\u2DE2\u2E01\u2E31\u2E31\u3007\u3009\u3023\u3031\u3033\u3037\u303A\u303E\u3043\u3098\u309B\u309C\u309F\u30A1\u30A3\u30FC\u30FE\u3101\u3107\u312F\u3133\u3190\u31A2\u31BC\u31F2\u3201\u3402\u4DB7\u4E02\u9FD7\uA002\uA48E\uA4D2\uA4FF\uA502\uA60E\uA612\uA62D\uA642\uA671\uA676\uA67F\uA681\uA6F3\uA719\uA721\uA724\uA78A\uA78D\uA7B0\uA7B2\uA7B9\uA7F9\uA829\uA842\uA875\uA882\uA8C7\uA8D2\uA8DB\uA8E2\uA8F9\uA8FD\uA8FD\uA8FF\uA8FF\uA902\uA92F\uA932\uA955\uA962\uA97E\uA982\uA9C2\uA9D1\uA9DB\uA9E2\uAA00\uAA02\uAA38\uAA42\uAA4F\uAA52\uAA5B\uAA62\uAA78\uAA7C\uAAC4\uAADD\uAADF\uAAE2\uAAF1\uAAF4\uAAF8\uAB03\uAB08\uAB0B\uAB10\uAB13\uAB18\uAB22\uAB28\uAB2A\uAB30\uAB32\uAB5C\uAB5E\uAB67\uAB72\uABEC\uABEE\uABEF\uABF2\uABFB\uAC02\uD7A5\uD7B2\uD7C8\uD7CD\uD7FD\uF902\uFA6F\uFA72\uFADB\uFB02\uFB08\uFB15\uFB19\uFB1F\uFB2A\uFB2C\uFB38\uFB3A\uFB3E\uFB40\uFB40\uFB42\uFB43\uFB45\uFB46\uFB48\uFBB3\uFBD5\uFD3F\uFD52\uFD91\uFD94\uFDC9\uFDF2\uFDFD\uFE02\uFE11\uFE22\uFE31\uFE35\uFE36\uFE4F\uFE51\uFE72\uFE76\uFE78\uFEFE\uFF01\uFF01\uFF12\uFF1B\uFF23\uFF3C\uFF41\uFF41\uFF43\uFF5C\uFF68\uFFC0\uFFC4\uFFC9\uFFCC\uFFD1\uFFD4\uFFD9\uFFDC\uFFDE\uFFFB\uFFFD\r(*<>?AOR_\x82\xFC\u0142\u0176\u01FF\u01FF\u0282\u029E\u02A2\u02D2\u02E2\u02E2\u0302\u0321\u0332\u034C\u0352\u037C\u0382\u039F\u03A2\u03C5\u03CA\u03D1\u03D3\u03D7\u0402\u049F\u04A2\u04AB\u04B2\u04D5\u04DA\u04FD\u0502\u0529\u0532\u0565\u0602\u0738\u0742\u0757\u0762\u0769\u0802\u0807\u080A\u080A\u080C\u0837\u0839\u083A\u083E\u083E\u0841\u0857\u0862\u0878\u0882\u08A0\u08E2\u08F4\u08F6\u08F7\u0902\u0917\u0922\u093B\u0982\u09B9\u09C0\u09C1\u0A02\u0A05\u0A07\u0A08\u0A0E\u0A15\u0A17\u0A19\u0A1B\u0A35\u0A3A\u0A3C\u0A41\u0A41\u0A62\u0A7E\u0A82\u0A9E\u0AC2\u0AC9\u0ACB\u0AE8\u0B02\u0B37\u0B42\u0B57\u0B62\u0B74\u0B82\u0B93\u0C02\u0C4A\u0C82\u0CB4\u0CC2\u0CF4\u1002\u1048\u1068\u1071\u1081\u10BC\u10BF\u10BF\u10D2\u10EA\u10F2\u10FB\u1102\u1136\u1138\u1141\u1152\u1175\u1178\u1178\u1182\u11C6\u11CC\u11CE\u11D2\u11DC\u11DE\u11DE\u1202\u1213\u1215\u1239\u1240\u1240\u1282\u1288\u128A\u128A\u128C\u128F\u1291\u129F\u12A1\u12AA\u12B2\u12EC\u12F2\u12FB\u1302\u1305\u1307\u130E\u1311\u1312\u1315\u132A\u132C\u1332\u1334\u1335\u1337\u133B\u133E\u1346\u1349\u134A\u134D\u134F\u1352\u1352\u1359\u1359\u135F\u1365\u1368\u136E\u1372\u1376\u1402\u144C\u1452\u145B\u1482\u14C7\u14C9\u14C9\u14D2\u14DB\u1582\u15B7\u15BA\u15C2\u15DA\u15DF\u1602\u1642\u1646\u1646\u1652\u165B\u1682\u16B9\u16C2\u16CB\u1702\u171B\u171F\u172D\u1732\u173B\u18A2\u18EB\u1901\u1901\u1AC2\u1AFA\u1C02\u1C0A\u1C0C\u1C38\u1C3A\u1C42\u1C52\u1C5B\u1C74\u1C91\u1C94\u1CA9\u1CAB\u1CB8\u2002\u239B\u2402\u2470\u2482\u2545\u3002\u3430\u4402\u4648\u6802\u6A3A\u6A42\u6A60\u6A62\u6A6B\u6AD2\u6AEF\u6AF2\u6AF6\u6B02\u6B38\u6B42\u6B45\u6B52\u6B5B\u6B65\u6B79\u6B7F\u6B91\u6F02\u6F46\u6F52\u6F80\u6F91\u6FA1\u6FE2\u6FE2\u7002\u87EE\u8802\u8AF4\uB002\uB003\uBC02\uBC6C\uBC72\uBC7E\uBC82\uBC8A\uBC92\uBC9B\uBC9F\uBCA0\uBCA2\uBCA5\uD167\uD16B\uD16F\uD184\uD187\uD18D\uD1AC\uD1AF\uD244\uD246\uD402\uD456\uD458\uD49E\uD4A0\uD4A1\uD4A4\uD4A4\uD4A7\uD4A8\uD4AB\uD4AE\uD4B0\uD4BB\uD4BD\uD4BD\uD4BF\uD4C5\uD4C7\uD507\uD509\uD50C\uD50F\uD516\uD518\uD51E\uD520\uD53B\uD53D\uD540\uD542\uD546\uD548\uD548\uD54C\uD552\uD554\uD6A7\uD6AA\uD6C2\uD6C4\uD6DC\uD6DE\uD6FC\uD6FE\uD716\uD718\uD736\uD738\uD750\uD752\uD770\uD772\uD78A\uD78C\uD7AA\uD7AC\uD7C4\uD7C6\uD7CD\uD7D0\uD801\uDA02\uDA38\uDA3D\uDA6E\uDA77\uDA77\uDA86\uDA86\uDA9D\uDAA1\uDAA3\uDAB1\uE002\uE008\uE00A\uE01A\uE01D\uE023\uE025\uE026\uE028\uE02C\uE802\uE8C6\uE8D2\uE8D8\uE902\uE94C\uE952\uE95B\uEE02\uEE05\uEE07\uEE21\uEE23\uEE24\uEE26\uEE26\uEE29\uEE29\uEE2B\uEE34\uEE36\uEE39\uEE3B\uEE3B\uEE3D\uEE3D\uEE44\uEE44\uEE49\uEE49\uEE4B\uEE4B\uEE4D\uEE4D\uEE4F\uEE51\uEE53\uEE54\uEE56\uEE56\uEE59\uEE59\uEE5B\uEE5B\uEE5D\uEE5D\uEE5F\uEE5F\uEE61\uEE61\uEE63\uEE64\uEE66\uEE66\uEE69\uEE6C\uEE6E\uEE74\uEE76\uEE79\uEE7B\uEE7E\uEE80\uEE80\uEE82\uEE8B\uEE8D\uEE9D\uEEA3\uEEA5\uEEA7\uEEAB\uEEAD\uEEBD\uA6D8\uA702\uB736\uB742\uB81F\uB822\uCEA3\uF802\uFA1F"\x81\u0102\u01F1\u0240C\\c|\xAC\xAC\xB7\xB7\xBC\xBC\xC2\xD8\xDA\xF8\xFA\u02C3\u02C8\u02D3\u02E2\u02E6\u02EE\u02EE\u02F0\u02F0\u0372\u0376\u0378\u0379\u037C\u037F\u0381\u0381\u0388\u0388\u038A\u038C\u038E\u038E\u0390\u03A3\u03A5\u03F7\u03F9\u0483\u048C\u0531\u0533\u0558\u055B\u055B\u0563\u0589\u05D2\u05EC\u05F2\u05F4\u0622\u064C\u0670\u0671\u0673\u06D5\u06D7\u06D7\u06E7\u06E8\u06F0\u06F1\u06FC\u06FE\u0701\u0701\u0712\u0712\u0714\u0731\u074F\u07A7\u07B3\u07B3\u07CC\u07EC\u07F6\u07F7\u07FC\u07FC\u0802\u0817\u081C\u081C\u0826\u0826\u082A\u082A\u0842\u085A\u08A2\u08B6\u08B8\u08BF\u0906\u093B\u093F\u093F\u0952\u0952\u095A\u0963\u0973\u0982\u0987\u098E\u0991\u0992\u0995\u09AA\u09AC\u09B2\u09B4\u09B4\u09B8\u09BB\u09BF\u09BF\u09D0\u09D0\u09DE\u09DF\u09E1\u09E3\u09F2\u09F3\u0A07\u0A0C\u0A11\u0A12\u0A15\u0A2A\u0A2C\u0A32\u0A34\u0A35\u0A37\u0A38\u0A3A\u0A3B\u0A5B\u0A5E\u0A60\u0A60\u0A74\u0A76\u0A87\u0A8F\u0A91\u0A93\u0A95\u0AAA\u0AAC\u0AB2\u0AB4\u0AB5\u0AB7\u0ABB\u0ABF\u0ABF\u0AD2\u0AD2\u0AE2\u0AE3\u0AFB\u0AFB\u0B07\u0B0E\u0B11\u0B12\u0B15\u0B2A\u0B2C\u0B32\u0B34\u0B35\u0B37\u0B3B\u0B3F\u0B3F\u0B5E\u0B5F\u0B61\u0B63\u0B73\u0B73\u0B85\u0B85\u0B87\u0B8C\u0B90\u0B92\u0B94\u0B97\u0B9B\u0B9C\u0B9E\u0B9E\u0BA0\u0BA1\u0BA5\u0BA6\u0BAA\u0BAC\u0BB0\u0BBB\u0BD2\u0BD2\u0C07\u0C0E\u0C10\u0C12\u0C14\u0C2A\u0C2C\u0C3B\u0C3F\u0C3F\u0C5A\u0C5C\u0C62\u0C63\u0C82\u0C82\u0C87\u0C8E\u0C90\u0C92\u0C94\u0CAA\u0CAC\u0CB5\u0CB7\u0CBB\u0CBF\u0CBF\u0CE0\u0CE0\u0CE2\u0CE3\u0CF3\u0CF4\u0D07\u0D0E\u0D10\u0D12\u0D14\u0D3C\u0D3F\u0D3F\u0D50\u0D50\u0D56\u0D58\u0D61\u0D63\u0D7C\u0D81\u0D87\u0D98\u0D9C\u0DB3\u0DB5\u0DBD\u0DBF\u0DBF\u0DC2\u0DC8\u0E03\u0E32\u0E34\u0E35\u0E42\u0E48\u0E83\u0E84\u0E86\u0E86\u0E89\u0E8A\u0E8C\u0E8C\u0E8F\u0E8F\u0E96\u0E99\u0E9B\u0EA1\u0EA3\u0EA5\u0EA7\u0EA7\u0EA9\u0EA9\u0EAC\u0EAD\u0EAF\u0EB2\u0EB4\u0EB5\u0EBF\u0EBF\u0EC2\u0EC6\u0EC8\u0EC8\u0EDE\u0EE1\u0F02\u0F02\u0F42\u0F49\u0F4B\u0F6E\u0F8A\u0F8E\u1002\u102C\u1041\u1041\u1052\u1057\u105C\u105F\u1063\u1063\u1067\u1068\u1070\u1072\u1077\u1083\u1090\u1090\u10A2\u10C7\u10C9\u10C9\u10CF\u10CF\u10D2\u10FC\u10FE\u124A\u124C\u124F\u1252\u1258\u125A\u125A\u125C\u125F\u1262\u128A\u128C\u128F\u1292\u12B2\u12B4\u12B7\u12BA\u12C0\u12C2\u12C2\u12C4\u12C7\u12CA\u12D8\u12DA\u1312\u1314\u1317\u131A\u135C\u1382\u1391\u13A2\u13F7\u13FA\u13FF\u1403\u166E\u1671\u1681\u1683\u169C\u16A2\u16EC\u16F0\u16FA\u1702\u170E\u1710\u1713\u1722\u1733\u1742\u1753\u1762\u176E\u1770\u1772\u1782\u17B5\u17D9\u17D9\u17DE\u17DE\u1822\u1879\u1882\u1886\u1889\u18AA\u18AC\u18AC\u18B2\u18F7\u1902\u1920\u1952\u196F\u1972\u1976\u1982\u19AD\u19B2\u19CB\u1A02\u1A18\u1A22\u1A56\u1AA9\u1AA9\u1B07\u1B35\u1B47\u1B4D\u1B85\u1BA2\u1BB0\u1BB1\u1BBC\u1BE7\u1C02\u1C25\u1C4F\u1C51\u1C5C\u1C7F\u1C82\u1C8A\u1CEB\u1CEE\u1CF0\u1CF3\u1CF7\u1CF8\u1D02\u1DC1\u1E02\u1F17\u1F1A\u1F1F\u1F22\u1F47\u1F4A\u1F4F\u1F52\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F61\u1F7F\u1F82\u1FB6\u1FB8\u1FBE\u1FC0\u1FC0\u1FC4\u1FC6\u1FC8\u1FCE\u1FD2\u1FD5\u1FD8\u1FDD\u1FE2\u1FEE\u1FF4\u1FF6\u1FF8\u1FFE\u2073\u2073\u2081\u2081\u2092\u209E\u2104\u2104\u2109\u2109\u210C\u2115\u2117\u2117\u211B\u211F\u2126\u2126\u2128\u2128\u212A\u212A\u212C\u212F\u2131\u213B\u213E\u2141\u2147\u214B\u2150\u2150\u2162\u218A\u2C02\u2C30\u2C32\u2C60\u2C62\u2CE6\u2CED\u2CF0\u2CF4\u2CF5\u2D02\u2D27\u2D29\u2D29\u2D2F\u2D2F\u2D32\u2D69\u2D71\u2D71\u2D82\u2D98\u2DA2\u2DA8\u2DAA\u2DB0\u2DB2\u2DB8\u2DBA\u2DC0\u2DC2\u2DC8\u2DCA\u2DD0\u2DD2\u2DD8\u2DDA\u2DE0\u2E31\u2E31\u3007\u3009\u3023\u302B\u3033\u3037\u303A\u303E\u3043\u3098\u309F\u30A1\u30A3\u30FC\u30FE\u3101\u3107\u312F\u3133\u3190\u31A2\u31BC\u31F2\u3201\u3402\u4DB7\u4E02\u9FD7\uA002\uA48E\uA4D2\uA4FF\uA502\uA60E\uA612\uA621\uA62C\uA62D\uA642\uA670\uA681\uA69F\uA6A2\uA6F1\uA719\uA721\uA724\uA78A\uA78D\uA7B0\uA7B2\uA7B9\uA7F9\uA803\uA805\uA807\uA809\uA80C\uA80E\uA824\uA842\uA875\uA884\uA8B5\uA8F4\uA8F9\uA8FD\uA8FD\uA8FF\uA8FF\uA90C\uA927\uA932\uA948\uA962\uA97E\uA986\uA9B4\uA9D1\uA9D1\uA9E2\uA9E6\uA9E8\uA9F1\uA9FC\uAA00\uAA02\uAA2A\uAA42\uAA44\uAA46\uAA4D\uAA62\uAA78\uAA7C\uAA7C\uAA80\uAAB1\uAAB3\uAAB3\uAAB7\uAAB8\uAABB\uAABF\uAAC2\uAAC2\uAAC4\uAAC4\uAADD\uAADF\uAAE2\uAAEC\uAAF4\uAAF6\uAB03\uAB08\uAB0B\uAB10\uAB13\uAB18\uAB22\uAB28\uAB2A\uAB30\uAB32\uAB5C\uAB5E\uAB67\uAB72\uABE4\uAC02\uD7A5\uD7B2\uD7C8\uD7CD\uD7FD\uF902\uFA6F\uFA72\uFADB\uFB02\uFB08\uFB15\uFB19\uFB1F\uFB1F\uFB21\uFB2A\uFB2C\uFB38\uFB3A\uFB3E\uFB40\uFB40\uFB42\uFB43\uFB45\uFB46\uFB48\uFBB3\uFBD5\uFD3F\uFD52\uFD91\uFD94\uFDC9\uFDF2\uFDFD\uFE72\uFE76\uFE78\uFEFE\uFF23\uFF3C\uFF43\uFF5C\uFF68\uFFC0\uFFC4\uFFC9\uFFCC\uFFD1\uFFD4\uFFD9\uFFDC\uFFDE\r(*<>?AOR_\x82\xFC\u0142\u0176\u0282\u029E\u02A2\u02D2\u0302\u0321\u0332\u034C\u0352\u0377\u0382\u039F\u03A2\u03C5\u03CA\u03D1\u03D3\u03D7\u0402\u049F\u04B2\u04D5\u04DA\u04FD\u0502\u0529\u0532\u0565\u0602\u0738\u0742\u0757\u0762\u0769\u0802\u0807\u080A\u080A\u080C\u0837\u0839\u083A\u083E\u083E\u0841\u0857\u0862\u0878\u0882\u08A0\u08E2\u08F4\u08F6\u08F7\u0902\u0917\u0922\u093B\u0982\u09B9\u09C0\u09C1\u0A02\u0A02\u0A12\u0A15\u0A17\u0A19\u0A1B\u0A35\u0A62\u0A7E\u0A82\u0A9E\u0AC2\u0AC9\u0ACB\u0AE6\u0B02\u0B37\u0B42\u0B57\u0B62\u0B74\u0B82\u0B93\u0C02\u0C4A\u0C82\u0CB4\u0CC2\u0CF4\u1005\u1039\u1085\u10B1\u10D2\u10EA\u1105\u1128\u1152\u1174\u1178\u1178\u1185\u11B4\u11C3\u11C6\u11DC\u11DC\u11DE\u11DE\u1202\u1213\u1215\u122D\u1282\u1288\u128A\u128A\u128C\u128F\u1291\u129F\u12A1\u12AA\u12B2\u12E0\u1307\u130E\u1311\u1312\u1315\u132A\u132C\u1332\u1334\u1335\u1337\u133B\u133F\u133F\u1352\u1352\u135F\u1363\u1402\u1436\u1449\u144C\u1482\u14B1\u14C6\u14C7\u14C9\u14C9\u1582\u15B0\u15DA\u15DD\u1602\u1631\u1646\u1646\u1682\u16AC\u1702\u171B\u18A2\u18E1\u1901\u1901\u1AC2\u1AFA\u1C02\u1C0A\u1C0C\u1C30\u1C42\u1C42\u1C74\u1C91\u2002\u239B\u2402\u2470\u2482\u2545\u3002\u3430\u4402\u4648\u6802\u6A3A\u6A42\u6A60\u6AD2\u6AEF\u6B02\u6B31\u6B42\u6B45\u6B65\u6B79\u6B7F\u6B91\u6F02\u6F46\u6F52\u6F52\u6F95\u6FA1\u6FE2\u6FE2\u7002\u87EE\u8802\u8AF4\uB002\uB003\uBC02\uBC6C\uBC72\uBC7E\uBC82\uBC8A\uBC92\uBC9B\uD402\uD456\uD458\uD49E\uD4A0\uD4A1\uD4A4\uD4A4\uD4A7\uD4A8\uD4AB\uD4AE\uD4B0\uD4BB\uD4BD\uD4BD\uD4BF\uD4C5\uD4C7\uD507\uD509\uD50C\uD50F\uD516\uD518\uD51E\uD520\uD53B\uD53D\uD540\uD542\uD546\uD548\uD548'; - XPathLexer._serializedATNSegment1 = `\uD54C\uD552\uD554\uD6A7\uD6AA\uD6C2\uD6C4\uD6DC\uD6DE\uD6FC\uD6FE\uD716\uD718\uD736\uD738\uD750\uD752\uD770\uD772\uD78A\uD78C\uD7AA\uD7AC\uD7C4\uD7C6\uD7CD\uE802\uE8C6\uE902\uE945\uEE02\uEE05\uEE07\uEE21\uEE23\uEE24\uEE26\uEE26\uEE29\uEE29\uEE2B\uEE34\uEE36\uEE39\uEE3B\uEE3B\uEE3D\uEE3D\uEE44\uEE44\uEE49\uEE49\uEE4B\uEE4B\uEE4D\uEE4D\uEE4F\uEE51\uEE53\uEE54\uEE56\uEE56\uEE59\uEE59\uEE5B\uEE5B\uEE5D\uEE5D\uEE5F\uEE5F\uEE61\uEE61\uEE63\uEE64\uEE66\uEE66\uEE69\uEE6C\uEE6E\uEE74\uEE76\uEE79\uEE7B\uEE7E\uEE80\uEE80\uEE82\uEE8B\uEE8D\uEE9D\uEEA3\uEEA5\uEEA7\uEEAB\uEEAD\uEEBD\uA6D8\uA702\uB736\uB742\uB81F\uB822\uCEA3\uF802\uFA1F1\x07 \v\x07 \v\r%')\x071\x071\x071\x07,\b\x07# - \b\r\x07"  !!#" #$\b$\f%& &'( ()-\x07)*,\v+*,/-.-+.0/-01\x07)1 -`; - XPathLexer._serializedATN = Utils3.join([ - XPathLexer._serializedATNSegment0, - XPathLexer._serializedATNSegment1 - ], ""); - }); - - // node_modules/antlr4ts/tree/xpath/XPathLexerErrorListener.js - var require_XPathLexerErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathLexerErrorListener = void 0; - var Decorators_1 = require_Decorators(); - var XPathLexerErrorListener = class { - syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { - } - }; - __decorate([ - Decorators_1.Override - ], XPathLexerErrorListener.prototype, "syntaxError", null); - exports.XPathLexerErrorListener = XPathLexerErrorListener; - }); - - // node_modules/antlr4ts/tree/xpath/XPathElement.js - var require_XPathElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathElement = void 0; - var Decorators_1 = require_Decorators(); - var XPathElement = class { - constructor(nodeName) { - this.nodeName = nodeName; - this.invert = false; - } - toString() { - let inv = this.invert ? "!" : ""; - let className = Object.constructor.name; - return className + "[" + inv + this.nodeName + "]"; - } - }; - __decorate([ - Decorators_1.Override - ], XPathElement.prototype, "toString", null); - exports.XPathElement = XPathElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathRuleAnywhereElement.js - var require_XPathRuleAnywhereElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathRuleAnywhereElement = void 0; - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var XPathElement_1 = require_XPathElement(); - var XPathRuleAnywhereElement = class extends XPathElement_1.XPathElement { - constructor(ruleName, ruleIndex) { - super(ruleName); - this.ruleIndex = ruleIndex; - } - evaluate(t) { - return Trees_1.Trees.findAllRuleNodes(t, this.ruleIndex); - } - }; - __decorate([ - Decorators_1.Override - ], XPathRuleAnywhereElement.prototype, "evaluate", null); - exports.XPathRuleAnywhereElement = XPathRuleAnywhereElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathRuleElement.js - var require_XPathRuleElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathRuleElement = void 0; - var ParserRuleContext_1 = require_ParserRuleContext(); - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var XPathElement_1 = require_XPathElement(); - var XPathRuleElement = class extends XPathElement_1.XPathElement { - constructor(ruleName, ruleIndex) { - super(ruleName); - this.ruleIndex = ruleIndex; - } - evaluate(t) { - let nodes = []; - for (let c of Trees_1.Trees.getChildren(t)) { - if (c instanceof ParserRuleContext_1.ParserRuleContext) { - if (c.ruleIndex === this.ruleIndex && !this.invert || c.ruleIndex !== this.ruleIndex && this.invert) { - nodes.push(c); - } - } - } - return nodes; - } - }; - __decorate([ - Decorators_1.Override - ], XPathRuleElement.prototype, "evaluate", null); - exports.XPathRuleElement = XPathRuleElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathTokenAnywhereElement.js - var require_XPathTokenAnywhereElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathTokenAnywhereElement = void 0; - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var XPathElement_1 = require_XPathElement(); - var XPathTokenAnywhereElement = class extends XPathElement_1.XPathElement { - constructor(tokenName, tokenType) { - super(tokenName); - this.tokenType = tokenType; - } - evaluate(t) { - return Trees_1.Trees.findAllTokenNodes(t, this.tokenType); - } - }; - __decorate([ - Decorators_1.Override - ], XPathTokenAnywhereElement.prototype, "evaluate", null); - exports.XPathTokenAnywhereElement = XPathTokenAnywhereElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathTokenElement.js - var require_XPathTokenElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathTokenElement = void 0; - var Decorators_1 = require_Decorators(); - var TerminalNode_1 = require_TerminalNode(); - var Trees_1 = require_Trees(); - var XPathElement_1 = require_XPathElement(); - var XPathTokenElement = class extends XPathElement_1.XPathElement { - constructor(tokenName, tokenType) { - super(tokenName); - this.tokenType = tokenType; - } - evaluate(t) { - let nodes = []; - for (let c of Trees_1.Trees.getChildren(t)) { - if (c instanceof TerminalNode_1.TerminalNode) { - if (c.symbol.type === this.tokenType && !this.invert || c.symbol.type !== this.tokenType && this.invert) { - nodes.push(c); - } - } - } - return nodes; - } - }; - __decorate([ - Decorators_1.Override - ], XPathTokenElement.prototype, "evaluate", null); - exports.XPathTokenElement = XPathTokenElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathWildcardAnywhereElement.js - var require_XPathWildcardAnywhereElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathWildcardAnywhereElement = void 0; - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var XPath_1 = require_XPath(); - var XPathElement_1 = require_XPathElement(); - var XPathWildcardAnywhereElement = class extends XPathElement_1.XPathElement { - constructor() { - super(XPath_1.XPath.WILDCARD); - } - evaluate(t) { - if (this.invert) { - return []; - } - return Trees_1.Trees.getDescendants(t); - } - }; - __decorate([ - Decorators_1.Override - ], XPathWildcardAnywhereElement.prototype, "evaluate", null); - exports.XPathWildcardAnywhereElement = XPathWildcardAnywhereElement; - }); - - // node_modules/antlr4ts/tree/xpath/XPathWildcardElement.js - var require_XPathWildcardElement = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPathWildcardElement = void 0; - var Decorators_1 = require_Decorators(); - var Trees_1 = require_Trees(); - var XPath_1 = require_XPath(); - var XPathElement_1 = require_XPathElement(); - var XPathWildcardElement = class extends XPathElement_1.XPathElement { - constructor() { - super(XPath_1.XPath.WILDCARD); - } - evaluate(t) { - let kids = []; - if (this.invert) { - return kids; + execute(lexer) { + lexer.skip(); } - for (let c of Trees_1.Trees.getChildren(t)) { - kids.push(c); + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + return MurmurHash_1.MurmurHash.finish(hash, 1); } - return kids; - } - }; - __decorate([ - Decorators_1.Override - ], XPathWildcardElement.prototype, "evaluate", null); - exports.XPathWildcardElement = XPathWildcardElement; + equals(obj) { + return obj === this; + } + toString() { + return "skip"; + } + }; + __decorate([ + Decorators_1.Override + ], LexerSkipAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerSkipAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerSkipAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerSkipAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerSkipAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerSkipAction2.prototype, "toString", null); + exports.LexerSkipAction = LexerSkipAction2; + (function(LexerSkipAction3) { + LexerSkipAction3.INSTANCE = new LexerSkipAction3(); + })(LexerSkipAction2 = exports.LexerSkipAction || (exports.LexerSkipAction = {})); + } }); - // node_modules/antlr4ts/tree/xpath/XPath.js - var require_XPath = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.XPath = void 0; - var CharStreams_1 = require_CharStreams(); - var CommonTokenStream_1 = require_CommonTokenStream(); - var LexerNoViableAltException_1 = require_LexerNoViableAltException(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var Token_1 = require_Token(); - var XPathLexer_1 = require_XPathLexer(); - var XPathLexerErrorListener_1 = require_XPathLexerErrorListener(); - var XPathRuleAnywhereElement_1 = require_XPathRuleAnywhereElement(); - var XPathRuleElement_1 = require_XPathRuleElement(); - var XPathTokenAnywhereElement_1 = require_XPathTokenAnywhereElement(); - var XPathTokenElement_1 = require_XPathTokenElement(); - var XPathWildcardAnywhereElement_1 = require_XPathWildcardAnywhereElement(); - var XPathWildcardElement_1 = require_XPathWildcardElement(); - var XPath = class { - constructor(parser, path) { - this.parser = parser; - this.path = path; - this.elements = this.split(path); - } - split(path) { - let lexer = new XPathLexer_1.XPathLexer(CharStreams_1.CharStreams.fromString(path)); - lexer.recover = (e) => { - throw e; + // node_modules/antlr4ts/atn/LexerTypeAction.js + var require_LexerTypeAction = __commonJS({ + "node_modules/antlr4ts/atn/LexerTypeAction.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); }; - lexer.removeErrorListeners(); - lexer.addErrorListener(new XPathLexerErrorListener_1.XPathLexerErrorListener()); - let tokenStream = new CommonTokenStream_1.CommonTokenStream(lexer); - try { - tokenStream.fill(); - } catch (e) { - if (e instanceof LexerNoViableAltException_1.LexerNoViableAltException) { - let pos = lexer.charPositionInLine; - let msg = "Invalid tokens or characters at index " + pos + " in path '" + path + "' -- " + e.message; - throw new RangeError(msg); - } - throw e; - } - let tokens2 = tokenStream.getTokens(); - let elements = []; - let n = tokens2.length; - let i = 0; - loop: - while (i < n) { - let el = tokens2[i]; - let next; - switch (el.type) { - case XPathLexer_1.XPathLexer.ROOT: - case XPathLexer_1.XPathLexer.ANYWHERE: - let anywhere = el.type === XPathLexer_1.XPathLexer.ANYWHERE; - i++; - next = tokens2[i]; - let invert = next.type === XPathLexer_1.XPathLexer.BANG; - if (invert) { - i++; - next = tokens2[i]; - } - let pathElement = this.getXPathElement(next, anywhere); - pathElement.invert = invert; - elements.push(pathElement); - i++; - break; - case XPathLexer_1.XPathLexer.TOKEN_REF: - case XPathLexer_1.XPathLexer.RULE_REF: - case XPathLexer_1.XPathLexer.WILDCARD: - elements.push(this.getXPathElement(el, false)); - i++; - break; - case Token_1.Token.EOF: - break loop; - default: - throw new Error("Unknowth path element " + el); - } - } - return elements; - } - getXPathElement(wordToken, anywhere) { - if (wordToken.type === Token_1.Token.EOF) { - throw new Error("Missing path element at end of path"); + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerTypeAction = void 0; + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var LexerTypeAction2 = class { + constructor(type) { + this._type = type; } - let word = wordToken.text; - if (word == null) { - throw new Error("Expected wordToken to have text content."); + get type() { + return this._type; } - let ttype = this.parser.getTokenType(word); - let ruleIndex = this.parser.getRuleIndex(word); - switch (wordToken.type) { - case XPathLexer_1.XPathLexer.WILDCARD: - return anywhere ? new XPathWildcardAnywhereElement_1.XPathWildcardAnywhereElement() : new XPathWildcardElement_1.XPathWildcardElement(); - case XPathLexer_1.XPathLexer.TOKEN_REF: - case XPathLexer_1.XPathLexer.STRING: - if (ttype === Token_1.Token.INVALID_TYPE) { - throw new Error(word + " at index " + wordToken.startIndex + " isn't a valid token name"); - } - return anywhere ? new XPathTokenAnywhereElement_1.XPathTokenAnywhereElement(word, ttype) : new XPathTokenElement_1.XPathTokenElement(word, ttype); - default: - if (ruleIndex === -1) { - throw new Error(word + " at index " + wordToken.startIndex + " isn't a valid rule name"); - } - return anywhere ? new XPathRuleAnywhereElement_1.XPathRuleAnywhereElement(word, ruleIndex) : new XPathRuleElement_1.XPathRuleElement(word, ruleIndex); + get actionType() { + return 7; } - } - static findAll(tree, xpath, parser) { - let p = new XPath(parser, xpath); - return p.evaluate(tree); - } - evaluate(t) { - let dummyRoot = new ParserRuleContext_1.ParserRuleContext(); - dummyRoot.addChild(t); - let work = new Set([dummyRoot]); - let i = 0; - while (i < this.elements.length) { - let next = new Set(); - for (let node of work) { - if (node.childCount > 0) { - let matching = this.elements[i].evaluate(node); - matching.forEach(next.add, next); - } + get isPositionDependent() { + return false; + } + execute(lexer) { + lexer.type = this._type; + } + hashCode() { + let hash = MurmurHash_1.MurmurHash.initialize(); + hash = MurmurHash_1.MurmurHash.update(hash, this.actionType); + hash = MurmurHash_1.MurmurHash.update(hash, this._type); + return MurmurHash_1.MurmurHash.finish(hash, 2); + } + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof LexerTypeAction2)) { + return false; } - i++; - work = next; + return this._type === obj._type; } - return work; - } - }; - exports.XPath = XPath; - XPath.WILDCARD = "*"; - XPath.NOT = "!"; + toString() { + return `type(${this._type})`; + } + }; + __decorate([ + Decorators_1.Override + ], LexerTypeAction2.prototype, "actionType", null); + __decorate([ + Decorators_1.Override + ], LexerTypeAction2.prototype, "isPositionDependent", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], LexerTypeAction2.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], LexerTypeAction2.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], LexerTypeAction2.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], LexerTypeAction2.prototype, "toString", null); + exports.LexerTypeAction = LexerTypeAction2; + } }); - // node_modules/antlr4ts/tree/pattern/ParseTreePattern.js - var require_ParseTreePattern = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParseTreePattern = void 0; - var Decorators_1 = require_Decorators(); - var XPath_1 = require_XPath(); - var ParseTreePattern = class ParseTreePattern { - constructor(matcher, pattern, patternRuleIndex, patternTree) { - this._matcher = matcher; - this._patternRuleIndex = patternRuleIndex; - this._pattern = pattern; - this._patternTree = patternTree; - } - match(tree) { - return this._matcher.match(tree, this); - } - matches(tree) { - return this._matcher.match(tree, this).succeeded; - } - findAll(tree, xpath) { - let subtrees = XPath_1.XPath.findAll(tree, xpath, this._matcher.parser); - let matches = []; - for (let t of subtrees) { - let match = this.match(t); - if (match.succeeded) { - matches.push(match); - } - } - return matches; - } - get matcher() { - return this._matcher; - } - get pattern() { - return this._pattern; - } - get patternRuleIndex() { - return this._patternRuleIndex; - } - get patternTree() { - return this._patternTree; - } - }; - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "_pattern", void 0); - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "_patternTree", void 0); - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "_matcher", void 0); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], ParseTreePattern.prototype, "match", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], ParseTreePattern.prototype, "matches", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], ParseTreePattern.prototype, "findAll", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "matcher", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "pattern", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreePattern.prototype, "patternTree", null); - ParseTreePattern = __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], ParseTreePattern); - exports.ParseTreePattern = ParseTreePattern; + // node_modules/antlr4ts/atn/LoopEndState.js + var require_LoopEndState = __commonJS({ + "node_modules/antlr4ts/atn/LoopEndState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LoopEndState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var LoopEndState2 = class extends ATNState_1.ATNState { + get stateType() { + return ATNStateType_1.ATNStateType.LOOP_END; + } + }; + __decorate([ + Decorators_1.Override + ], LoopEndState2.prototype, "stateType", null); + exports.LoopEndState = LoopEndState2; + } }); - // node_modules/antlr4ts/tree/pattern/RuleTagToken.js - var require_RuleTagToken = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleTagToken = void 0; - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var RuleTagToken = class RuleTagToken { - constructor(ruleName, bypassTokenType, label) { - if (ruleName == null || ruleName.length === 0) { - throw new Error("ruleName cannot be null or empty."); - } - this._ruleName = ruleName; - this.bypassTokenType = bypassTokenType; - this._label = label; - } - get ruleName() { - return this._ruleName; - } - get label() { - return this._label; - } - get channel() { - return Token_1.Token.DEFAULT_CHANNEL; - } - get text() { - if (this._label != null) { - return "<" + this._label + ":" + this._ruleName + ">"; - } - return "<" + this._ruleName + ">"; - } - get type() { - return this.bypassTokenType; - } - get line() { - return 0; - } - get charPositionInLine() { - return -1; - } - get tokenIndex() { - return -1; - } - get startIndex() { - return -1; - } - get stopIndex() { - return -1; - } - get tokenSource() { - return void 0; - } - get inputStream() { - return void 0; - } - toString() { - return this._ruleName + ":" + this.bypassTokenType; - } - }; - __decorate([ - Decorators_1.NotNull - ], RuleTagToken.prototype, "ruleName", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "channel", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "type", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "line", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "charPositionInLine", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "tokenIndex", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "startIndex", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "stopIndex", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "tokenSource", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "inputStream", null); - __decorate([ - Decorators_1.Override - ], RuleTagToken.prototype, "toString", null); - RuleTagToken = __decorate([ - __param(0, Decorators_1.NotNull) - ], RuleTagToken); - exports.RuleTagToken = RuleTagToken; - }); - - // node_modules/antlr4ts/tree/pattern/Chunk.js - var require_Chunk = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Chunk = void 0; - var Chunk = class { - }; - exports.Chunk = Chunk; + // node_modules/antlr4ts/atn/ConflictInfo.js + var require_ConflictInfo = __commonJS({ + "node_modules/antlr4ts/atn/ConflictInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ConflictInfo = void 0; + var Decorators_1 = require_Decorators(); + var Utils3 = require_Utils(); + var ConflictInfo = class { + constructor(conflictedAlts, exact) { + this._conflictedAlts = conflictedAlts; + this.exact = exact; + } + get conflictedAlts() { + return this._conflictedAlts; + } + get isExact() { + return this.exact; + } + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof ConflictInfo)) { + return false; + } + return this.isExact === obj.isExact && Utils3.equals(this.conflictedAlts, obj.conflictedAlts); + } + hashCode() { + return this.conflictedAlts.hashCode(); + } + }; + __decorate([ + Decorators_1.Override + ], ConflictInfo.prototype, "equals", null); + __decorate([ + Decorators_1.Override + ], ConflictInfo.prototype, "hashCode", null); + exports.ConflictInfo = ConflictInfo; + } }); - // node_modules/antlr4ts/tree/pattern/TagChunk.js - var require_TagChunk = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.TagChunk = void 0; - var Chunk_1 = require_Chunk(); - var Decorators_1 = require_Decorators(); - var TagChunk = class extends Chunk_1.Chunk { - constructor(tag, label) { - super(); - if (tag == null || tag.length === 0) { - throw new Error("tag cannot be null or empty"); - } - this._tag = tag; - this._label = label; - } - get tag() { - return this._tag; - } - get label() { - return this._label; - } - toString() { - if (this._label != null) { - return this._label + ":" + this._tag; - } - return this._tag; - } - }; - __decorate([ - Decorators_1.NotNull - ], TagChunk.prototype, "tag", null); - __decorate([ - Decorators_1.Override - ], TagChunk.prototype, "toString", null); - exports.TagChunk = TagChunk; + // node_modules/antlr4ts/tree/TerminalNode.js + var require_TerminalNode = __commonJS({ + "node_modules/antlr4ts/tree/TerminalNode.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.TerminalNode = void 0; + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var TerminalNode2 = class { + constructor(symbol) { + this._symbol = symbol; + } + getChild(i) { + throw new RangeError("Terminal Node has no children."); + } + get symbol() { + return this._symbol; + } + get parent() { + return this._parent; + } + setParent(parent) { + this._parent = parent; + } + get payload() { + return this._symbol; + } + get sourceInterval() { + let tokenIndex = this._symbol.tokenIndex; + return new Interval_1.Interval(tokenIndex, tokenIndex); + } + get childCount() { + return 0; + } + accept(visitor) { + return visitor.visitTerminal(this); + } + get text() { + return this._symbol.text || ""; + } + toStringTree(parser) { + return this.toString(); + } + toString() { + if (this._symbol.type === Token_1.Token.EOF) { + return ""; + } + return this._symbol.text || ""; + } + }; + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "getChild", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "parent", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "setParent", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "payload", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "sourceInterval", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "childCount", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "accept", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "toStringTree", null); + __decorate([ + Decorators_1.Override + ], TerminalNode2.prototype, "toString", null); + exports.TerminalNode = TerminalNode2; + } }); - // node_modules/antlr4ts/tree/pattern/TextChunk.js - var require_TextChunk = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.TextChunk = void 0; - var Chunk_1 = require_Chunk(); - var Decorators_1 = require_Decorators(); - var TextChunk = class TextChunk extends Chunk_1.Chunk { - constructor(text) { - super(); - if (text == null) { - throw new Error("text cannot be null"); - } - this._text = text; - } - get text() { - return this._text; - } - toString() { - return "'" + this._text + "'"; - } - }; - __decorate([ - Decorators_1.NotNull - ], TextChunk.prototype, "_text", void 0); - __decorate([ - Decorators_1.NotNull - ], TextChunk.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], TextChunk.prototype, "toString", null); - TextChunk = __decorate([ - __param(0, Decorators_1.NotNull) - ], TextChunk); - exports.TextChunk = TextChunk; + // node_modules/antlr4ts/tree/ErrorNode.js + var require_ErrorNode = __commonJS({ + "node_modules/antlr4ts/tree/ErrorNode.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ErrorNode = void 0; + var Decorators_1 = require_Decorators(); + var TerminalNode_1 = require_TerminalNode(); + var ErrorNode3 = class extends TerminalNode_1.TerminalNode { + constructor(token) { + super(token); + } + accept(visitor) { + return visitor.visitErrorNode(this); + } + }; + __decorate([ + Decorators_1.Override + ], ErrorNode3.prototype, "accept", null); + exports.ErrorNode = ErrorNode3; + } }); - // node_modules/antlr4ts/tree/pattern/TokenTagToken.js - var require_TokenTagToken = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.TokenTagToken = void 0; - var CommonToken_1 = require_CommonToken(); - var Decorators_1 = require_Decorators(); - var TokenTagToken = class TokenTagToken extends CommonToken_1.CommonToken { - constructor(tokenName, type, label) { - super(type); - this._tokenName = tokenName; - this._label = label; - } - get tokenName() { - return this._tokenName; - } - get label() { - return this._label; - } - get text() { - if (this._label != null) { - return "<" + this._label + ":" + this._tokenName + ">"; - } - return "<" + this._tokenName + ">"; - } - toString() { - return this._tokenName + ":" + this.type; - } - }; - __decorate([ - Decorators_1.NotNull - ], TokenTagToken.prototype, "_tokenName", void 0); - __decorate([ - Decorators_1.NotNull - ], TokenTagToken.prototype, "tokenName", null); - __decorate([ - Decorators_1.Override - ], TokenTagToken.prototype, "text", null); - __decorate([ - Decorators_1.Override - ], TokenTagToken.prototype, "toString", null); - TokenTagToken = __decorate([ - __param(0, Decorators_1.NotNull) - ], TokenTagToken); - exports.TokenTagToken = TokenTagToken; + // node_modules/antlr4ts/tree/RuleNode.js + var require_RuleNode = __commonJS({ + "node_modules/antlr4ts/tree/RuleNode.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleNode = void 0; + var RuleNode2 = class { + }; + exports.RuleNode = RuleNode2; + } }); - // node_modules/antlr4ts/tree/pattern/ParseTreePatternMatcher.js - var require_ParseTreePatternMatcher = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ParseTreePatternMatcher = void 0; - var BailErrorStrategy_1 = require_BailErrorStrategy(); - var CharStreams_1 = require_CharStreams(); - var CommonTokenStream_1 = require_CommonTokenStream(); - var ListTokenSource_1 = require_ListTokenSource(); - var MultiMap_1 = require_MultiMap(); - var Decorators_1 = require_Decorators(); - var ParseCancellationException_1 = require_ParseCancellationException(); - var ParserInterpreter_1 = require_ParserInterpreter(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var ParseTreeMatch_1 = require_ParseTreeMatch(); - var ParseTreePattern_1 = require_ParseTreePattern(); - var RecognitionException_1 = require_RecognitionException(); - var RuleNode_1 = require_RuleNode(); - var RuleTagToken_1 = require_RuleTagToken(); - var TagChunk_1 = require_TagChunk(); - var TerminalNode_1 = require_TerminalNode(); - var TextChunk_1 = require_TextChunk(); - var Token_1 = require_Token(); - var TokenTagToken_1 = require_TokenTagToken(); - var ParseTreePatternMatcher2 = class { - constructor(lexer, parser) { - this.start = "<"; - this.stop = ">"; - this.escape = "\\"; - this.escapeRE = /\\/g; - this._lexer = lexer; - this._parser = parser; - } - setDelimiters(start, stop, escapeLeft) { - if (!start) { - throw new Error("start cannot be null or empty"); - } - if (!stop) { - throw new Error("stop cannot be null or empty"); - } - this.start = start; - this.stop = stop; - this.escape = escapeLeft; - this.escapeRE = new RegExp(escapeLeft.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"); - } - matches(tree, pattern, patternRuleIndex = 0) { - if (typeof pattern === "string") { - let p = this.compile(pattern, patternRuleIndex); - return this.matches(tree, p); - } else { - let labels = new MultiMap_1.MultiMap(); - let mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels); - return !mismatchedNode; - } - } - match(tree, pattern, patternRuleIndex = 0) { - if (typeof pattern === "string") { - let p = this.compile(pattern, patternRuleIndex); - return this.match(tree, p); - } else { - let labels = new MultiMap_1.MultiMap(); - let mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels); - return new ParseTreeMatch_1.ParseTreeMatch(tree, pattern, labels, mismatchedNode); - } - } - compile(pattern, patternRuleIndex) { - let tokenList = this.tokenize(pattern); - let tokenSrc = new ListTokenSource_1.ListTokenSource(tokenList); - let tokens2 = new CommonTokenStream_1.CommonTokenStream(tokenSrc); - const parser = this._parser; - let parserInterp = new ParserInterpreter_1.ParserInterpreter(parser.grammarFileName, parser.vocabulary, parser.ruleNames, parser.getATNWithBypassAlts(), tokens2); - let tree; - try { - parserInterp.errorHandler = new BailErrorStrategy_1.BailErrorStrategy(); - tree = parserInterp.parse(patternRuleIndex); - } catch (e) { - if (e instanceof ParseCancellationException_1.ParseCancellationException) { - throw e.getCause(); - } else if (e instanceof RecognitionException_1.RecognitionException) { - throw e; - } else if (e instanceof Error) { - throw new ParseTreePatternMatcher2.CannotInvokeStartRule(e); + // node_modules/antlr4ts/tree/Trees.js + var require_Trees = __commonJS({ + "node_modules/antlr4ts/tree/Trees.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Trees = void 0; + var ATN_1 = require_ATN(); + var CommonToken_1 = require_CommonToken(); + var ErrorNode_1 = require_ErrorNode(); + var Decorators_1 = require_Decorators(); + var Parser_1 = require_Parser(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var RuleNode_1 = require_RuleNode(); + var TerminalNode_1 = require_TerminalNode(); + var Token_1 = require_Token(); + var Utils3 = require_Utils(); + var Trees2 = class { + static toStringTree(t, arg2) { + let ruleNames; + if (arg2 instanceof Parser_1.Parser) { + ruleNames = arg2.ruleNames; } else { - throw e; + ruleNames = arg2; } + let s = Utils3.escapeWhitespace(this.getNodeText(t, ruleNames), false); + if (t.childCount === 0) { + return s; + } + let buf = ""; + buf += "("; + s = Utils3.escapeWhitespace(this.getNodeText(t, ruleNames), false); + buf += s; + buf += " "; + for (let i = 0; i < t.childCount; i++) { + if (i > 0) { + buf += " "; + } + buf += this.toStringTree(t.getChild(i), ruleNames); + } + buf += ")"; + return buf; + } + static getNodeText(t, arg2) { + let ruleNames; + if (arg2 instanceof Parser_1.Parser) { + ruleNames = arg2.ruleNames; + } else if (arg2) { + ruleNames = arg2; + } else { + let payload = t.payload; + if (typeof payload.text === "string") { + return payload.text; + } + return t.payload.toString(); + } + if (t instanceof RuleNode_1.RuleNode) { + let ruleContext = t.ruleContext; + let ruleIndex = ruleContext.ruleIndex; + let ruleName = ruleNames[ruleIndex]; + let altNumber = ruleContext.altNumber; + if (altNumber !== ATN_1.ATN.INVALID_ALT_NUMBER) { + return ruleName + ":" + altNumber; + } + return ruleName; + } else if (t instanceof ErrorNode_1.ErrorNode) { + return t.toString(); + } else if (t instanceof TerminalNode_1.TerminalNode) { + let symbol = t.symbol; + return symbol.text || ""; + } + throw new TypeError("Unexpected node type"); } - if (tokens2.LA(1) !== Token_1.Token.EOF) { - throw new ParseTreePatternMatcher2.StartRuleDoesNotConsumeFullPattern(); - } - return new ParseTreePattern_1.ParseTreePattern(this, pattern, patternRuleIndex, tree); - } - get lexer() { - return this._lexer; - } - get parser() { - return this._parser; - } - matchImpl(tree, patternTree, labels) { - if (!tree) { - throw new TypeError("tree cannot be null"); + static getChildren(t) { + let kids = []; + for (let i = 0; i < t.childCount; i++) { + kids.push(t.getChild(i)); + } + return kids; } - if (!patternTree) { - throw new TypeError("patternTree cannot be null"); + static getAncestors(t) { + let ancestors = []; + let p = t.parent; + while (p) { + ancestors.unshift(p); + p = p.parent; + } + return ancestors; } - if (tree instanceof TerminalNode_1.TerminalNode && patternTree instanceof TerminalNode_1.TerminalNode) { - let mismatchedNode; - if (tree.symbol.type === patternTree.symbol.type) { - if (patternTree.symbol instanceof TokenTagToken_1.TokenTagToken) { - let tokenTagToken = patternTree.symbol; - labels.map(tokenTagToken.tokenName, tree); - const l = tokenTagToken.label; - if (l) { - labels.map(l, tree); - } - } else if (tree.text === patternTree.text) { - } else { - if (!mismatchedNode) { - mismatchedNode = tree; - } - } - } else { - if (!mismatchedNode) { - mismatchedNode = tree; + static isAncestorOf(t, u) { + if (!t || !u || !t.parent) { + return false; + } + let p = u.parent; + while (p) { + if (t === p) { + return true; } + p = p.parent; } - return mismatchedNode; + return false; } - if (tree instanceof ParserRuleContext_1.ParserRuleContext && patternTree instanceof ParserRuleContext_1.ParserRuleContext) { - let mismatchedNode; - let ruleTagToken = this.getRuleTagToken(patternTree); - if (ruleTagToken) { - let m; - if (tree.ruleContext.ruleIndex === patternTree.ruleContext.ruleIndex) { - labels.map(ruleTagToken.ruleName, tree); - const l = ruleTagToken.label; - if (l) { - labels.map(l, tree); - } - } else { - if (!mismatchedNode) { - mismatchedNode = tree; - } + static findAllTokenNodes(t, ttype) { + return Trees2.findAllNodes(t, ttype, true); + } + static findAllRuleNodes(t, ruleIndex) { + return Trees2.findAllNodes(t, ruleIndex, false); + } + static findAllNodes(t, index, findTokens) { + let nodes = []; + Trees2._findAllNodes(t, index, findTokens, nodes); + return nodes; + } + static _findAllNodes(t, index, findTokens, nodes) { + if (findTokens && t instanceof TerminalNode_1.TerminalNode) { + if (t.symbol.type === index) { + nodes.push(t); } - return mismatchedNode; - } - if (tree.childCount !== patternTree.childCount) { - if (!mismatchedNode) { - mismatchedNode = tree; + } else if (!findTokens && t instanceof ParserRuleContext_1.ParserRuleContext) { + if (t.ruleIndex === index) { + nodes.push(t); } - return mismatchedNode; } - let n = tree.childCount; - for (let i = 0; i < n; i++) { - let childMatch = this.matchImpl(tree.getChild(i), patternTree.getChild(i), labels); - if (childMatch) { - return childMatch; - } + for (let i = 0; i < t.childCount; i++) { + Trees2._findAllNodes(t.getChild(i), index, findTokens, nodes); } - return mismatchedNode; } - return tree; - } - getRuleTagToken(t) { - if (t instanceof RuleNode_1.RuleNode) { - if (t.childCount === 1 && t.getChild(0) instanceof TerminalNode_1.TerminalNode) { - let c = t.getChild(0); - if (c.symbol instanceof RuleTagToken_1.RuleTagToken) { - return c.symbol; + static getDescendants(t) { + let nodes = []; + function recurse(e) { + nodes.push(e); + const n = e.childCount; + for (let i = 0; i < n; i++) { + recurse(e.getChild(i)); } } + recurse(t); + return nodes; } - return void 0; - } - tokenize(pattern) { - let chunks = this.split(pattern); - let tokens2 = []; - for (let chunk of chunks) { - if (chunk instanceof TagChunk_1.TagChunk) { - let tagChunk = chunk; - const firstChar = tagChunk.tag.substr(0, 1); - if (firstChar === firstChar.toUpperCase()) { - let ttype = this._parser.getTokenType(tagChunk.tag); - if (ttype === Token_1.Token.INVALID_TYPE) { - throw new Error("Unknown token " + tagChunk.tag + " in pattern: " + pattern); - } - let t = new TokenTagToken_1.TokenTagToken(tagChunk.tag, ttype, tagChunk.label); - tokens2.push(t); - } else if (firstChar === firstChar.toLowerCase()) { - let ruleIndex = this._parser.getRuleIndex(tagChunk.tag); - if (ruleIndex === -1) { - throw new Error("Unknown rule " + tagChunk.tag + " in pattern: " + pattern); - } - let ruleImaginaryTokenType = this._parser.getATNWithBypassAlts().ruleToTokenType[ruleIndex]; - tokens2.push(new RuleTagToken_1.RuleTagToken(tagChunk.tag, ruleImaginaryTokenType, tagChunk.label)); - } else { - throw new Error("invalid tag: " + tagChunk.tag + " in pattern: " + pattern); + static getRootOfSubtreeEnclosingRegion(t, startTokenIndex, stopTokenIndex) { + let n = t.childCount; + for (let i = 0; i < n; i++) { + let child = t.getChild(i); + let r = Trees2.getRootOfSubtreeEnclosingRegion(child, startTokenIndex, stopTokenIndex); + if (r) { + return r; } - } else { - let textChunk = chunk; - this._lexer.inputStream = CharStreams_1.CharStreams.fromString(textChunk.text); - let t = this._lexer.nextToken(); - while (t.type !== Token_1.Token.EOF) { - tokens2.push(t); - t = this._lexer.nextToken(); + } + if (t instanceof ParserRuleContext_1.ParserRuleContext) { + let stopToken = t.stop; + if (startTokenIndex >= t.start.tokenIndex && (stopToken == null || stopTokenIndex <= stopToken.tokenIndex)) { + return t; } } + return void 0; } - return tokens2; - } - split(pattern) { - let p = 0; - let n = pattern.length; - let chunks = []; - let buf; - let starts = []; - let stops = []; - while (p < n) { - if (p === pattern.indexOf(this.escape + this.start, p)) { - p += this.escape.length + this.start.length; - } else if (p === pattern.indexOf(this.escape + this.stop, p)) { - p += this.escape.length + this.stop.length; - } else if (p === pattern.indexOf(this.start, p)) { - starts.push(p); - p += this.start.length; - } else if (p === pattern.indexOf(this.stop, p)) { - stops.push(p); - p += this.stop.length; - } else { - p++; + static stripChildrenOutOfRange(t, root, startIndex, stopIndex) { + if (!t) { + return; } - } - if (starts.length > stops.length) { - throw new Error("unterminated tag in pattern: " + pattern); - } - if (starts.length < stops.length) { - throw new Error("missing start tag in pattern: " + pattern); - } - let ntags = starts.length; - for (let i = 0; i < ntags; i++) { - if (starts[i] >= stops[i]) { - throw new Error("tag delimiters out of order in pattern: " + pattern); + let count = t.childCount; + for (let i = 0; i < count; i++) { + let child = t.getChild(i); + let range = child.sourceInterval; + if (child instanceof ParserRuleContext_1.ParserRuleContext && (range.b < startIndex || range.a > stopIndex)) { + if (Trees2.isAncestorOf(child, root)) { + let abbrev = new CommonToken_1.CommonToken(Token_1.Token.INVALID_TYPE, "..."); + t.children[i] = new TerminalNode_1.TerminalNode(abbrev); + } + } } } - if (ntags === 0) { - let text = pattern.substring(0, n); - chunks.push(new TextChunk_1.TextChunk(text)); - } - if (ntags > 0 && starts[0] > 0) { - let text = pattern.substring(0, starts[0]); - chunks.push(new TextChunk_1.TextChunk(text)); - } - for (let i = 0; i < ntags; i++) { - let tag = pattern.substring(starts[i] + this.start.length, stops[i]); - let ruleOrToken = tag; - let label; - let colon = tag.indexOf(":"); - if (colon >= 0) { - label = tag.substring(0, colon); - ruleOrToken = tag.substring(colon + 1, tag.length); - } - chunks.push(new TagChunk_1.TagChunk(ruleOrToken, label)); - if (i + 1 < ntags) { - let text = pattern.substring(stops[i] + this.stop.length, starts[i + 1]); - chunks.push(new TextChunk_1.TextChunk(text)); + static findNodeSuchThat(t, pred) { + if (pred(t)) { + return t; } - } - if (ntags > 0) { - let afterLastTag = stops[ntags - 1] + this.stop.length; - if (afterLastTag < n) { - let text = pattern.substring(afterLastTag, n); - chunks.push(new TextChunk_1.TextChunk(text)); + let n = t.childCount; + for (let i = 0; i < n; i++) { + let u = Trees2.findNodeSuchThat(t.getChild(i), pred); + if (u !== void 0) { + return u; + } } + return void 0; } - for (let i = 0; i < chunks.length; i++) { - let c = chunks[i]; - if (c instanceof TextChunk_1.TextChunk) { - let unescaped = c.text.replace(this.escapeRE, ""); - if (unescaped.length < c.text.length) { - chunks[i] = new TextChunk_1.TextChunk(unescaped); - } - } - } - return chunks; - } - }; - __decorate([ - Decorators_1.NotNull, - __param(1, Decorators_1.NotNull) - ], ParseTreePatternMatcher2.prototype, "match", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreePatternMatcher2.prototype, "lexer", null); - __decorate([ - Decorators_1.NotNull - ], ParseTreePatternMatcher2.prototype, "parser", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ParseTreePatternMatcher2.prototype, "matchImpl", null); - exports.ParseTreePatternMatcher = ParseTreePatternMatcher2; - (function(ParseTreePatternMatcher3) { - class CannotInvokeStartRule extends Error { - constructor(error) { - super(`CannotInvokeStartRule: ${error}`); - this.error = error; - } - } - ParseTreePatternMatcher3.CannotInvokeStartRule = CannotInvokeStartRule; - class StartRuleDoesNotConsumeFullPattern extends Error { - constructor() { - super("StartRuleDoesNotConsumeFullPattern"); - } - } - ParseTreePatternMatcher3.StartRuleDoesNotConsumeFullPattern = StartRuleDoesNotConsumeFullPattern; - })(ParseTreePatternMatcher2 = exports.ParseTreePatternMatcher || (exports.ParseTreePatternMatcher = {})); - }); - - // node_modules/antlr4ts/atn/DecisionEventInfo.js - var require_DecisionEventInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DecisionEventInfo = void 0; - var Decorators_1 = require_Decorators(); - var DecisionEventInfo = class DecisionEventInfo { - constructor(decision, state, input, startIndex, stopIndex, fullCtx) { - this.decision = decision; - this.fullCtx = fullCtx; - this.stopIndex = stopIndex; - this.input = input; - this.startIndex = startIndex; - this.state = state; - } - }; - __decorate([ - Decorators_1.NotNull - ], DecisionEventInfo.prototype, "input", void 0); - DecisionEventInfo = __decorate([ - __param(2, Decorators_1.NotNull) - ], DecisionEventInfo); - exports.DecisionEventInfo = DecisionEventInfo; - }); - - // node_modules/antlr4ts/atn/AmbiguityInfo.js - var require_AmbiguityInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.AmbiguityInfo = void 0; - var DecisionEventInfo_1 = require_DecisionEventInfo(); - var Decorators_1 = require_Decorators(); - var AmbiguityInfo = class AmbiguityInfo extends DecisionEventInfo_1.DecisionEventInfo { - constructor(decision, state, ambigAlts, input, startIndex, stopIndex) { - super(decision, state, input, startIndex, stopIndex, state.useContext); - this.ambigAlts = ambigAlts; - } - get ambiguousAlternatives() { - return this.ambigAlts; - } - }; - __decorate([ - Decorators_1.NotNull - ], AmbiguityInfo.prototype, "ambigAlts", void 0); - __decorate([ - Decorators_1.NotNull - ], AmbiguityInfo.prototype, "ambiguousAlternatives", null); - AmbiguityInfo = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull), - __param(3, Decorators_1.NotNull) - ], AmbiguityInfo); - exports.AmbiguityInfo = AmbiguityInfo; - }); - - // node_modules/antlr4ts/atn/ContextSensitivityInfo.js - var require_ContextSensitivityInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ContextSensitivityInfo = void 0; - var DecisionEventInfo_1 = require_DecisionEventInfo(); - var Decorators_1 = require_Decorators(); - var ContextSensitivityInfo = class ContextSensitivityInfo extends DecisionEventInfo_1.DecisionEventInfo { - constructor(decision, state, input, startIndex, stopIndex) { - super(decision, state, input, startIndex, stopIndex, true); - } - }; - ContextSensitivityInfo = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ContextSensitivityInfo); - exports.ContextSensitivityInfo = ContextSensitivityInfo; - }); - - // node_modules/antlr4ts/atn/DecisionInfo.js - var require_DecisionInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DecisionInfo = void 0; - var Decorators_1 = require_Decorators(); - var DecisionInfo = class { - constructor(decision) { - this.invocations = 0; - this.timeInPrediction = 0; - this.SLL_TotalLook = 0; - this.SLL_MinLook = 0; - this.SLL_MaxLook = 0; - this.LL_TotalLook = 0; - this.LL_MinLook = 0; - this.LL_MaxLook = 0; - this.contextSensitivities = []; - this.errors = []; - this.ambiguities = []; - this.predicateEvals = []; - this.SLL_ATNTransitions = 0; - this.SLL_DFATransitions = 0; - this.LL_Fallback = 0; - this.LL_ATNTransitions = 0; - this.LL_DFATransitions = 0; - this.decision = decision; - } - toString() { - return "{decision=" + this.decision + ", contextSensitivities=" + this.contextSensitivities.length + ", errors=" + this.errors.length + ", ambiguities=" + this.ambiguities.length + ", SLL_lookahead=" + this.SLL_TotalLook + ", SLL_ATNTransitions=" + this.SLL_ATNTransitions + ", SLL_DFATransitions=" + this.SLL_DFATransitions + ", LL_Fallback=" + this.LL_Fallback + ", LL_lookahead=" + this.LL_TotalLook + ", LL_ATNTransitions=" + this.LL_ATNTransitions + "}"; - } - }; - __decorate([ - Decorators_1.Override - ], DecisionInfo.prototype, "toString", null); - exports.DecisionInfo = DecisionInfo; - }); - - // node_modules/antlr4ts/atn/ErrorInfo.js - var require_ErrorInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ErrorInfo = void 0; - var DecisionEventInfo_1 = require_DecisionEventInfo(); - var Decorators_1 = require_Decorators(); - var ErrorInfo = class ErrorInfo extends DecisionEventInfo_1.DecisionEventInfo { - constructor(decision, state, input, startIndex, stopIndex) { - super(decision, state, input, startIndex, stopIndex, state.useContext); - } - }; - ErrorInfo = __decorate([ - __param(1, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull) - ], ErrorInfo); - exports.ErrorInfo = ErrorInfo; - }); - - // node_modules/antlr4ts/atn/LookaheadEventInfo.js - var require_LookaheadEventInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LookaheadEventInfo = void 0; - var DecisionEventInfo_1 = require_DecisionEventInfo(); - var Decorators_1 = require_Decorators(); - var LookaheadEventInfo = class LookaheadEventInfo extends DecisionEventInfo_1.DecisionEventInfo { - constructor(decision, state, predictedAlt, input, startIndex, stopIndex, fullCtx) { - super(decision, state, input, startIndex, stopIndex, fullCtx); - this.predictedAlt = predictedAlt; - } - }; - LookaheadEventInfo = __decorate([ - __param(3, Decorators_1.NotNull) - ], LookaheadEventInfo); - exports.LookaheadEventInfo = LookaheadEventInfo; - }); - - // node_modules/antlr4ts/atn/PredicateEvalInfo.js - var require_PredicateEvalInfo = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.PredicateEvalInfo = void 0; - var DecisionEventInfo_1 = require_DecisionEventInfo(); - var Decorators_1 = require_Decorators(); - var PredicateEvalInfo = class PredicateEvalInfo extends DecisionEventInfo_1.DecisionEventInfo { - constructor(state, decision, input, startIndex, stopIndex, semctx, evalResult, predictedAlt) { - super(decision, state, input, startIndex, stopIndex, state.useContext); - this.semctx = semctx; - this.evalResult = evalResult; - this.predictedAlt = predictedAlt; - } - }; - PredicateEvalInfo = __decorate([ - __param(0, Decorators_1.NotNull), - __param(2, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull) - ], PredicateEvalInfo); - exports.PredicateEvalInfo = PredicateEvalInfo; + }; + __decorate([ + __param(0, Decorators_1.NotNull) + ], Trees2, "toStringTree", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], Trees2, "getAncestors", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], Trees2, "getRootOfSubtreeEnclosingRegion", null); + exports.Trees = Trees2; + } }); - // node_modules/antlr4ts/atn/ProfilingATNSimulator.js - var require_ProfilingATNSimulator = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.ProfilingATNSimulator = void 0; - var AmbiguityInfo_1 = require_AmbiguityInfo(); - var ATN_1 = require_ATN(); - var ATNSimulator_1 = require_ATNSimulator(); - var ContextSensitivityInfo_1 = require_ContextSensitivityInfo(); - var DecisionInfo_1 = require_DecisionInfo(); - var ErrorInfo_1 = require_ErrorInfo(); - var Decorators_1 = require_Decorators(); - var LookaheadEventInfo_1 = require_LookaheadEventInfo(); - var ParserATNSimulator_1 = require_ParserATNSimulator(); - var PredicateEvalInfo_1 = require_PredicateEvalInfo(); - var SemanticContext_1 = require_SemanticContext(); - var SimulatorState_1 = require_SimulatorState(); - var ProfilingATNSimulator = class extends ParserATNSimulator_1.ParserATNSimulator { - constructor(parser) { - super(parser.interpreter.atn, parser); - this._startIndex = 0; - this._sllStopIndex = 0; - this._llStopIndex = 0; - this.currentDecision = 0; - this.conflictingAltResolvedBySLL = 0; - this.optimize_ll1 = false; - this.reportAmbiguities = true; - this.numDecisions = this.atn.decisionToState.length; - this.decisions = []; - for (let i = 0; i < this.numDecisions; i++) { - this.decisions.push(new DecisionInfo_1.DecisionInfo(i)); - } - } - adaptivePredict(input, decision, outerContext, useContext) { - if (useContext !== void 0) { - return super.adaptivePredict(input, decision, outerContext, useContext); + // node_modules/antlr4ts/RuleContext.js + var require_RuleContext = __commonJS({ + "node_modules/antlr4ts/RuleContext.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleContext = void 0; + var ATN_1 = require_ATN(); + var Recognizer_1 = require_Recognizer(); + var RuleNode_1 = require_RuleNode(); + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var RuleContext2 = class extends RuleNode_1.RuleNode { + constructor(parent, invokingState) { + super(); + this._parent = parent; + this.invokingState = invokingState != null ? invokingState : -1; } - try { - this._input = input; - this._startIndex = input.index; - this._sllStopIndex = this._startIndex - 1; - this._llStopIndex = -1; - this.currentDecision = decision; - this.currentState = void 0; - this.conflictingAltResolvedBySLL = ATN_1.ATN.INVALID_ALT_NUMBER; - let start = process.hrtime(); - let alt = super.adaptivePredict(input, decision, outerContext); - let stop = process.hrtime(); - let nanoseconds = (stop[0] - start[0]) * 1e9; - if (nanoseconds === 0) { - nanoseconds = stop[1] - start[1]; - } else { - nanoseconds += 1e9 - start[1] + stop[1]; - } - this.decisions[decision].timeInPrediction += nanoseconds; - this.decisions[decision].invocations++; - let SLL_k = this._sllStopIndex - this._startIndex + 1; - this.decisions[decision].SLL_TotalLook += SLL_k; - this.decisions[decision].SLL_MinLook = this.decisions[decision].SLL_MinLook === 0 ? SLL_k : Math.min(this.decisions[decision].SLL_MinLook, SLL_k); - if (SLL_k > this.decisions[decision].SLL_MaxLook) { - this.decisions[decision].SLL_MaxLook = SLL_k; - this.decisions[decision].SLL_MaxLookEvent = new LookaheadEventInfo_1.LookaheadEventInfo(decision, void 0, alt, input, this._startIndex, this._sllStopIndex, false); - } - if (this._llStopIndex >= 0) { - let LL_k = this._llStopIndex - this._startIndex + 1; - this.decisions[decision].LL_TotalLook += LL_k; - this.decisions[decision].LL_MinLook = this.decisions[decision].LL_MinLook === 0 ? LL_k : Math.min(this.decisions[decision].LL_MinLook, LL_k); - if (LL_k > this.decisions[decision].LL_MaxLook) { - this.decisions[decision].LL_MaxLook = LL_k; - this.decisions[decision].LL_MaxLookEvent = new LookaheadEventInfo_1.LookaheadEventInfo(decision, void 0, alt, input, this._startIndex, this._llStopIndex, true); - } + static getChildContext(parent, invokingState) { + return new RuleContext2(parent, invokingState); + } + depth() { + let n = 0; + let p = this; + while (p) { + p = p._parent; + n++; } - return alt; - } finally { - this._input = void 0; - this.currentDecision = -1; + return n; } - } - getStartState(dfa, input, outerContext, useContext) { - let state = super.getStartState(dfa, input, outerContext, useContext); - this.currentState = state; - return state; - } - computeStartState(dfa, globalContext, useContext) { - let state = super.computeStartState(dfa, globalContext, useContext); - this.currentState = state; - return state; - } - computeReachSet(dfa, previous, t, contextCache) { - if (this._input === void 0) { - throw new Error("Invalid state"); + get isEmpty() { + return this.invokingState === -1; } - let reachState = super.computeReachSet(dfa, previous, t, contextCache); - if (reachState == null) { - this.decisions[this.currentDecision].errors.push(new ErrorInfo_1.ErrorInfo(this.currentDecision, previous, this._input, this._startIndex, this._input.index)); + get sourceInterval() { + return Interval_1.Interval.INVALID; } - this.currentState = reachState; - return reachState; - } - getExistingTargetState(previousD, t) { - if (this.currentState === void 0 || this._input === void 0) { - throw new Error("Invalid state"); + get ruleContext() { + return this; } - if (this.currentState.useContext) { - this._llStopIndex = this._input.index; - } else { - this._sllStopIndex = this._input.index; + get parent() { + return this._parent; } - let existingTargetState = super.getExistingTargetState(previousD, t); - if (existingTargetState != null) { - this.currentState = new SimulatorState_1.SimulatorState(this.currentState.outerContext, existingTargetState, this.currentState.useContext, this.currentState.remainingOuterContext); - if (this.currentState.useContext) { - this.decisions[this.currentDecision].LL_DFATransitions++; - } else { - this.decisions[this.currentDecision].SLL_DFATransitions++; + setParent(parent) { + this._parent = parent; + } + get payload() { + return this; + } + get text() { + if (this.childCount === 0) { + return ""; } - if (existingTargetState === ATNSimulator_1.ATNSimulator.ERROR) { - let state = new SimulatorState_1.SimulatorState(this.currentState.outerContext, previousD, this.currentState.useContext, this.currentState.remainingOuterContext); - this.decisions[this.currentDecision].errors.push(new ErrorInfo_1.ErrorInfo(this.currentDecision, state, this._input, this._startIndex, this._input.index)); + let builder = ""; + for (let i = 0; i < this.childCount; i++) { + builder += this.getChild(i).text; } + return builder.toString(); } - return existingTargetState; - } - computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache) { - let targetState = super.computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache); - if (useContext) { - this.decisions[this.currentDecision].LL_ATNTransitions++; - } else { - this.decisions[this.currentDecision].SLL_ATNTransitions++; + get ruleIndex() { + return -1; } - return targetState; - } - evalSemanticContextImpl(pred, parserCallStack, alt) { - if (this.currentState === void 0 || this._input === void 0) { - throw new Error("Invalid state"); + get altNumber() { + return ATN_1.ATN.INVALID_ALT_NUMBER; } - let result = super.evalSemanticContextImpl(pred, parserCallStack, alt); - if (!(pred instanceof SemanticContext_1.SemanticContext.PrecedencePredicate)) { - let fullContext = this._llStopIndex >= 0; - let stopIndex = fullContext ? this._llStopIndex : this._sllStopIndex; - this.decisions[this.currentDecision].predicateEvals.push(new PredicateEvalInfo_1.PredicateEvalInfo(this.currentState, this.currentDecision, this._input, this._startIndex, stopIndex, pred, result, alt)); + set altNumber(altNumber) { } - return result; - } - reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex) { - if (this._input === void 0) { - throw new Error("Invalid state"); + getChild(i) { + throw new RangeError("i must be greater than or equal to 0 and less than childCount"); } - if (prediction !== this.conflictingAltResolvedBySLL) { - this.decisions[this.currentDecision].contextSensitivities.push(new ContextSensitivityInfo_1.ContextSensitivityInfo(this.currentDecision, acceptState, this._input, startIndex, stopIndex)); + get childCount() { + return 0; } - super.reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex); - } - reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex) { - if (conflictingAlts != null) { - this.conflictingAltResolvedBySLL = conflictingAlts.nextSetBit(0); - } else { - this.conflictingAltResolvedBySLL = conflictState.s0.configs.getRepresentedAlternatives().nextSetBit(0); + accept(visitor) { + return visitor.visitChildren(this); } - this.decisions[this.currentDecision].LL_Fallback++; - super.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex); - } - reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { - if (this.currentState === void 0 || this._input === void 0) { - throw new Error("Invalid state"); + toStringTree(recog) { + return Trees_1.Trees.toStringTree(this, recog); } - let prediction; - if (ambigAlts != null) { - prediction = ambigAlts.nextSetBit(0); - } else { - prediction = configs.getRepresentedAlternatives().nextSetBit(0); - } - if (this.conflictingAltResolvedBySLL !== ATN_1.ATN.INVALID_ALT_NUMBER && prediction !== this.conflictingAltResolvedBySLL) { - this.decisions[this.currentDecision].contextSensitivities.push(new ContextSensitivityInfo_1.ContextSensitivityInfo(this.currentDecision, this.currentState, this._input, startIndex, stopIndex)); - } - this.decisions[this.currentDecision].ambiguities.push(new AmbiguityInfo_1.AmbiguityInfo(this.currentDecision, this.currentState, ambigAlts, this._input, startIndex, stopIndex)); - super.reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs); - } - getDecisionInfo() { - return this.decisions; - } - getCurrentState() { - return this.currentState; - } - }; - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], ProfilingATNSimulator.prototype, "adaptivePredict", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "getStartState", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "computeStartState", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "computeReachSet", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "getExistingTargetState", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "computeTargetState", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "evalSemanticContextImpl", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "reportContextSensitivity", null); - __decorate([ - Decorators_1.Override - ], ProfilingATNSimulator.prototype, "reportAttemptingFullContext", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull), - __param(6, Decorators_1.NotNull) - ], ProfilingATNSimulator.prototype, "reportAmbiguity", null); - exports.ProfilingATNSimulator = ProfilingATNSimulator; - }); - - // node_modules/antlr4ts/Parser.js - var require_Parser = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + toString(arg1, stop) { + const ruleNames = arg1 instanceof Recognizer_1.Recognizer ? arg1.ruleNames : arg1; + stop = stop || ParserRuleContext_1.ParserRuleContext.emptyContext(); + let buf = ""; + let p = this; + buf += "["; + while (p && p !== stop) { + if (!ruleNames) { + if (!p.isEmpty) { + buf += p.invokingState; + } + } else { + let ruleIndex = p.ruleIndex; + let ruleName = ruleIndex >= 0 && ruleIndex < ruleNames.length ? ruleNames[ruleIndex] : ruleIndex.toString(); + buf += ruleName; + } + if (p._parent && (ruleNames || !p._parent.isEmpty)) { + buf += " "; + } + p = p._parent; } + buf += "]"; + return buf.toString(); } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } + }; + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "sourceInterval", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "ruleContext", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "parent", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "setParent", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "payload", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "getChild", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "childCount", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "accept", null); + __decorate([ + Decorators_1.Override + ], RuleContext2.prototype, "toStringTree", null); + exports.RuleContext = RuleContext2; + } + }); + + // node_modules/antlr4ts/ParserRuleContext.js + var require_ParserRuleContext = __commonJS({ + "node_modules/antlr4ts/ParserRuleContext.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParserRuleContext = void 0; + var ErrorNode_1 = require_ErrorNode(); + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var RuleContext_1 = require_RuleContext(); + var TerminalNode_1 = require_TerminalNode(); + var ParserRuleContext3 = class extends RuleContext_1.RuleContext { + constructor(parent, invokingStateNumber) { + if (invokingStateNumber == null) { + super(); + } else { + super(parent, invokingStateNumber); + } + } + static emptyContext() { + return ParserRuleContext3.EMPTY; + } + copyFrom(ctx) { + this._parent = ctx._parent; + this.invokingState = ctx.invokingState; + this._start = ctx._start; + this._stop = ctx._stop; + if (ctx.children) { + this.children = []; + for (let child of ctx.children) { + if (child instanceof ErrorNode_1.ErrorNode) { + this.addChild(child); + } + } + } } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + enterRule(listener) { } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Parser = void 0; - var Utils3 = require_Utils(); - var ATNDeserializationOptions_1 = require_ATNDeserializationOptions(); - var ATNDeserializer_1 = require_ATNDeserializer(); - var DefaultErrorStrategy_1 = require_DefaultErrorStrategy(); - var ErrorNode_1 = require_ErrorNode(); - var IntegerStack_1 = require_IntegerStack(); - var Lexer_1 = require_Lexer(); - var Decorators_1 = require_Decorators(); - var ParseInfo_1 = require_ParseInfo(); - var ParserATNSimulator_1 = require_ParserATNSimulator(); - var ProxyParserErrorListener_1 = require_ProxyParserErrorListener(); - var Recognizer_1 = require_Recognizer(); - var TerminalNode_1 = require_TerminalNode(); - var Token_1 = require_Token(); - var TraceListener = class { - constructor(ruleNames, tokenStream) { - this.ruleNames = ruleNames; - this.tokenStream = tokenStream; - } - enterEveryRule(ctx) { - console.log("enter " + this.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.tokenStream.LT(1).text); - } - exitEveryRule(ctx) { - console.log("exit " + this.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.tokenStream.LT(1).text); - } - visitErrorNode(node) { - } - visitTerminal(node) { - let parent = node.parent.ruleContext; - let token = node.symbol; - console.log("consume " + token + " rule " + this.ruleNames[parent.ruleIndex]); - } - }; - __decorate([ - Decorators_1.Override - ], TraceListener.prototype, "enterEveryRule", null); - __decorate([ - Decorators_1.Override - ], TraceListener.prototype, "exitEveryRule", null); - __decorate([ - Decorators_1.Override - ], TraceListener.prototype, "visitErrorNode", null); - __decorate([ - Decorators_1.Override - ], TraceListener.prototype, "visitTerminal", null); - var Parser2 = class extends Recognizer_1.Recognizer { - constructor(input) { - super(); - this._errHandler = new DefaultErrorStrategy_1.DefaultErrorStrategy(); - this._precedenceStack = new IntegerStack_1.IntegerStack(); - this._buildParseTrees = true; - this._parseListeners = []; - this._syntaxErrors = 0; - this.matchedEOF = false; - this._precedenceStack.push(0); - this.inputStream = input; - } - reset(resetInput) { - if (resetInput === void 0 || resetInput) { - this.inputStream.seek(0); - } - this._errHandler.reset(this); - this._ctx = void 0; - this._syntaxErrors = 0; - this.matchedEOF = false; - this.isTrace = false; - this._precedenceStack.clear(); - this._precedenceStack.push(0); - let interpreter = this.interpreter; - if (interpreter != null) { - interpreter.reset(); - } - } - match(ttype) { - let t = this.currentToken; - if (t.type === ttype) { - if (ttype === Token_1.Token.EOF) { - this.matchedEOF = true; - } - this._errHandler.reportMatch(this); - this.consume(); - } else { - t = this._errHandler.recoverInline(this); - if (this._buildParseTrees && t.tokenIndex === -1) { - this._ctx.addErrorNode(this.createErrorNode(this._ctx, t)); - } + exitRule(listener) { } - return t; - } - matchWildcard() { - let t = this.currentToken; - if (t.type > 0) { - this._errHandler.reportMatch(this); - this.consume(); - } else { - t = this._errHandler.recoverInline(this); - if (this._buildParseTrees && t.tokenIndex === -1) { - this._ctx.addErrorNode(this.createErrorNode(this._ctx, t)); + addAnyChild(t) { + if (!this.children) { + this.children = [t]; + } else { + this.children.push(t); } + return t; } - return t; - } - set buildParseTree(buildParseTrees) { - this._buildParseTrees = buildParseTrees; - } - get buildParseTree() { - return this._buildParseTrees; - } - getParseListeners() { - return this._parseListeners; - } - addParseListener(listener) { - if (listener == null) { - throw new TypeError("listener cannot be null"); - } - this._parseListeners.push(listener); - } - removeParseListener(listener) { - let index = this._parseListeners.findIndex((l) => l === listener); - if (index !== -1) { - this._parseListeners.splice(index, 1); + addChild(t) { + let result; + if (t instanceof TerminalNode_1.TerminalNode) { + t.setParent(this); + this.addAnyChild(t); + return; + } else if (t instanceof RuleContext_1.RuleContext) { + this.addAnyChild(t); + return; + } else { + t = new TerminalNode_1.TerminalNode(t); + this.addAnyChild(t); + t.setParent(this); + return t; + } } - } - removeParseListeners() { - this._parseListeners.length = 0; - } - triggerEnterRuleEvent() { - for (let listener of this._parseListeners) { - if (listener.enterEveryRule) { - listener.enterEveryRule(this._ctx); + addErrorNode(node) { + if (node instanceof ErrorNode_1.ErrorNode) { + const errorNode = node; + errorNode.setParent(this); + return this.addAnyChild(errorNode); + } else { + const badToken = node; + let t = new ErrorNode_1.ErrorNode(badToken); + this.addAnyChild(t); + t.setParent(this); + return t; } - this._ctx.enterRule(listener); } - } - triggerExitRuleEvent() { - for (let i = this._parseListeners.length - 1; i >= 0; i--) { - let listener = this._parseListeners[i]; - this._ctx.exitRule(listener); - if (listener.exitEveryRule) { - listener.exitEveryRule(this._ctx); + removeLastChild() { + if (this.children) { + this.children.pop(); } } - } - get numberOfSyntaxErrors() { - return this._syntaxErrors; - } - get tokenFactory() { - return this._input.tokenSource.tokenFactory; - } - getATNWithBypassAlts() { - let serializedAtn = this.serializedATN; - if (serializedAtn == null) { - throw new Error("The current parser does not support an ATN with bypass alternatives."); + get parent() { + let parent = super.parent; + if (parent === void 0 || parent instanceof ParserRuleContext3) { + return parent; + } + throw new TypeError("Invalid parent type for ParserRuleContext"); } - let result = Parser2.bypassAltsAtnCache.get(serializedAtn); - if (result == null) { - let deserializationOptions = new ATNDeserializationOptions_1.ATNDeserializationOptions(); - deserializationOptions.isGenerateRuleBypassTransitions = true; - result = new ATNDeserializer_1.ATNDeserializer(deserializationOptions).deserialize(Utils3.toCharArray(serializedAtn)); - Parser2.bypassAltsAtnCache.set(serializedAtn, result); + getChild(i, ctxType) { + if (!this.children || i < 0 || i >= this.children.length) { + throw new RangeError("index parameter must be between >= 0 and <= number of children."); + } + if (ctxType == null) { + return this.children[i]; + } + let result = this.tryGetChild(i, ctxType); + if (result === void 0) { + throw new Error("The specified node does not exist"); + } + return result; } - return result; - } - compileParseTreePattern(pattern, patternRuleIndex, lexer) { - return __awaiter(this, void 0, void 0, function* () { - if (!lexer) { - if (this.inputStream) { - let tokenSource = this.inputStream.tokenSource; - if (tokenSource instanceof Lexer_1.Lexer) { - lexer = tokenSource; + tryGetChild(i, ctxType) { + if (!this.children || i < 0 || i >= this.children.length) { + return void 0; + } + let j = -1; + for (let o of this.children) { + if (o instanceof ctxType) { + j++; + if (j === i) { + return o; } } - if (!lexer) { - throw new Error("Parser can't discover a lexer to use"); - } } - let currentLexer = lexer; - let m = yield Promise.resolve().then(() => require_ParseTreePatternMatcher()); - let matcher = new m.ParseTreePatternMatcher(currentLexer, this); - return matcher.compile(pattern, patternRuleIndex); - }); - } - get errorHandler() { - return this._errHandler; - } - set errorHandler(handler) { - this._errHandler = handler; - } - get inputStream() { - return this._input; - } - set inputStream(input) { - this.reset(false); - this._input = input; - } - get currentToken() { - return this._input.LT(1); - } - notifyErrorListeners(msg, offendingToken, e) { - if (offendingToken === void 0) { - offendingToken = this.currentToken; - } else if (offendingToken === null) { - offendingToken = void 0; - } - this._syntaxErrors++; - let line = -1; - let charPositionInLine = -1; - if (offendingToken != null) { - line = offendingToken.line; - charPositionInLine = offendingToken.charPositionInLine; - } - let listener = this.getErrorListenerDispatch(); - if (listener.syntaxError) { - listener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e); - } - } - consume() { - let o = this.currentToken; - if (o.type !== Parser2.EOF) { - this.inputStream.consume(); - } - let hasListener = this._parseListeners.length !== 0; - if (this._buildParseTrees || hasListener) { - if (this._errHandler.inErrorRecoveryMode(this)) { - let node = this._ctx.addErrorNode(this.createErrorNode(this._ctx, o)); - if (hasListener) { - for (let listener of this._parseListeners) { - if (listener.visitErrorNode) { - listener.visitErrorNode(node); + return void 0; + } + getToken(ttype, i) { + let result = this.tryGetToken(ttype, i); + if (result === void 0) { + throw new Error("The specified token does not exist"); + } + return result; + } + tryGetToken(ttype, i) { + if (!this.children || i < 0 || i >= this.children.length) { + return void 0; + } + let j = -1; + for (let o of this.children) { + if (o instanceof TerminalNode_1.TerminalNode) { + let symbol = o.symbol; + if (symbol.type === ttype) { + j++; + if (j === i) { + return o; } } } - } else { - let node = this.createTerminalNode(this._ctx, o); - this._ctx.addChild(node); - if (hasListener) { - for (let listener of this._parseListeners) { - if (listener.visitTerminal) { - listener.visitTerminal(node); - } + } + return void 0; + } + getTokens(ttype) { + let tokens2 = []; + if (!this.children) { + return tokens2; + } + for (let o of this.children) { + if (o instanceof TerminalNode_1.TerminalNode) { + let symbol = o.symbol; + if (symbol.type === ttype) { + tokens2.push(o); } } } + return tokens2; } - return o; - } - createTerminalNode(parent, t) { - return new TerminalNode_1.TerminalNode(t); - } - createErrorNode(parent, t) { - return new ErrorNode_1.ErrorNode(t); - } - addContextToParseTree() { - let parent = this._ctx._parent; - if (parent != null) { - parent.addChild(this._ctx); - } - } - enterRule(localctx, state, ruleIndex) { - this.state = state; - this._ctx = localctx; - this._ctx._start = this._input.LT(1); - if (this._buildParseTrees) { - this.addContextToParseTree(); - } - this.triggerEnterRuleEvent(); - } - enterLeftFactoredRule(localctx, state, ruleIndex) { - this.state = state; - if (this._buildParseTrees) { - let factoredContext = this._ctx.getChild(this._ctx.childCount - 1); - this._ctx.removeLastChild(); - factoredContext._parent = localctx; - localctx.addChild(factoredContext); + get ruleContext() { + return this; } - this._ctx = localctx; - this._ctx._start = this._input.LT(1); - if (this._buildParseTrees) { - this.addContextToParseTree(); + getRuleContext(i, ctxType) { + return this.getChild(i, ctxType); } - this.triggerEnterRuleEvent(); - } - exitRule() { - if (this.matchedEOF) { - this._ctx._stop = this._input.LT(1); - } else { - this._ctx._stop = this._input.tryLT(-1); + tryGetRuleContext(i, ctxType) { + return this.tryGetChild(i, ctxType); } - this.triggerExitRuleEvent(); - this.state = this._ctx.invokingState; - this._ctx = this._ctx._parent; - } - enterOuterAlt(localctx, altNum) { - localctx.altNumber = altNum; - if (this._buildParseTrees && this._ctx !== localctx) { - let parent = this._ctx._parent; - if (parent != null) { - parent.removeLastChild(); - parent.addChild(localctx); + getRuleContexts(ctxType) { + let contexts = []; + if (!this.children) { + return contexts; + } + for (let o of this.children) { + if (o instanceof ctxType) { + contexts.push(o); + } } + return contexts; } - this._ctx = localctx; - } - get precedence() { - if (this._precedenceStack.isEmpty) { - return -1; + get childCount() { + return this.children ? this.children.length : 0; } - return this._precedenceStack.peek(); - } - enterRecursionRule(localctx, state, ruleIndex, precedence) { - this.state = state; - this._precedenceStack.push(precedence); - this._ctx = localctx; - this._ctx._start = this._input.LT(1); - this.triggerEnterRuleEvent(); - } - pushNewRecursionContext(localctx, state, ruleIndex) { - let previous = this._ctx; - previous._parent = localctx; - previous.invokingState = state; - previous._stop = this._input.tryLT(-1); - this._ctx = localctx; - this._ctx._start = previous._start; - if (this._buildParseTrees) { - this._ctx.addChild(previous); - } - this.triggerEnterRuleEvent(); - } - unrollRecursionContexts(_parentctx) { - this._precedenceStack.pop(); - this._ctx._stop = this._input.tryLT(-1); - let retctx = this._ctx; - if (this._parseListeners.length > 0) { - while (this._ctx !== _parentctx) { - this.triggerExitRuleEvent(); - this._ctx = this._ctx._parent; + get sourceInterval() { + if (!this._start) { + return Interval_1.Interval.INVALID; } - } else { - this._ctx = _parentctx; + if (!this._stop || this._stop.tokenIndex < this._start.tokenIndex) { + return Interval_1.Interval.of(this._start.tokenIndex, this._start.tokenIndex - 1); + } + return Interval_1.Interval.of(this._start.tokenIndex, this._stop.tokenIndex); } - retctx._parent = _parentctx; - if (this._buildParseTrees && _parentctx != null) { - _parentctx.addChild(retctx); + get start() { + return this._start; } - } - getInvokingContext(ruleIndex) { - let p = this._ctx; - while (p && p.ruleIndex !== ruleIndex) { - p = p._parent; + get stop() { + return this._stop; } - return p; - } - get context() { - return this._ctx; - } - set context(ctx) { - this._ctx = ctx; - } - precpred(localctx, precedence) { - return precedence >= this._precedenceStack.peek(); - } - getErrorListenerDispatch() { - return new ProxyParserErrorListener_1.ProxyParserErrorListener(this.getErrorListeners()); - } - inContext(context) { - return false; - } - isExpectedToken(symbol) { - let atn = this.interpreter.atn; - let ctx = this._ctx; - let s = atn.states[this.state]; - let following = atn.nextTokens(s); - if (following.contains(symbol)) { - return true; + toInfoString(recognizer) { + let rules = recognizer.getRuleInvocationStack(this).reverse(); + return "ParserRuleContext" + rules + "{start=" + this._start + ", stop=" + this._stop + "}"; } - if (!following.contains(Token_1.Token.EPSILON)) { - return false; + }; + ParserRuleContext3.EMPTY = new ParserRuleContext3(); + __decorate([ + Decorators_1.Override + ], ParserRuleContext3.prototype, "parent", null); + __decorate([ + Decorators_1.Override + ], ParserRuleContext3.prototype, "childCount", null); + __decorate([ + Decorators_1.Override + ], ParserRuleContext3.prototype, "sourceInterval", null); + exports.ParserRuleContext = ParserRuleContext3; + } + }); + + // node_modules/antlr4ts/atn/PredictionMode.js + var require_PredictionMode = __commonJS({ + "node_modules/antlr4ts/atn/PredictionMode.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PredictionMode = void 0; + var Array2DHashMap_1 = require_Array2DHashMap(); + var MurmurHash_1 = require_MurmurHash(); + var Decorators_1 = require_Decorators(); + var RuleStopState_1 = require_RuleStopState(); + var PredictionMode2; + (function(PredictionMode3) { + PredictionMode3[PredictionMode3["SLL"] = 0] = "SLL"; + PredictionMode3[PredictionMode3["LL"] = 1] = "LL"; + PredictionMode3[PredictionMode3["LL_EXACT_AMBIG_DETECTION"] = 2] = "LL_EXACT_AMBIG_DETECTION"; + })(PredictionMode2 = exports.PredictionMode || (exports.PredictionMode = {})); + (function(PredictionMode3) { + class AltAndContextMap extends Array2DHashMap_1.Array2DHashMap { + constructor() { + super(AltAndContextConfigEqualityComparator.INSTANCE); + } + } + class AltAndContextConfigEqualityComparator { + AltAndContextConfigEqualityComparator() { + } + hashCode(o) { + let hashCode = MurmurHash_1.MurmurHash.initialize(7); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, o.state.stateNumber); + hashCode = MurmurHash_1.MurmurHash.update(hashCode, o.context); + hashCode = MurmurHash_1.MurmurHash.finish(hashCode, 2); + return hashCode; + } + equals(a, b) { + if (a === b) { + return true; + } + if (a == null || b == null) { + return false; + } + return a.state.stateNumber === b.state.stateNumber && a.context.equals(b.context); + } } - while (ctx != null && ctx.invokingState >= 0 && following.contains(Token_1.Token.EPSILON)) { - let invokingState = atn.states[ctx.invokingState]; - let rt = invokingState.transition(0); - following = atn.nextTokens(rt.followState); - if (following.contains(symbol)) { - return true; + AltAndContextConfigEqualityComparator.INSTANCE = new AltAndContextConfigEqualityComparator(); + __decorate([ + Decorators_1.Override + ], AltAndContextConfigEqualityComparator.prototype, "hashCode", null); + __decorate([ + Decorators_1.Override + ], AltAndContextConfigEqualityComparator.prototype, "equals", null); + function hasConfigInRuleStopState(configs) { + for (let c of configs) { + if (c.state instanceof RuleStopState_1.RuleStopState) { + return true; + } } - ctx = ctx._parent; + return false; } - if (following.contains(Token_1.Token.EPSILON) && symbol === Token_1.Token.EOF) { + PredictionMode3.hasConfigInRuleStopState = hasConfigInRuleStopState; + function allConfigsInRuleStopStates(configs) { + for (let config of configs) { + if (!(config.state instanceof RuleStopState_1.RuleStopState)) { + return false; + } + } return true; } - return false; - } - get isMatchedEOF() { - return this.matchedEOF; - } - getExpectedTokens() { - return this.atn.getExpectedTokens(this.state, this.context); - } - getExpectedTokensWithinCurrentRule() { - let atn = this.interpreter.atn; - let s = atn.states[this.state]; - return atn.nextTokens(s); - } - getRuleIndex(ruleName) { - let ruleIndex = this.getRuleIndexMap().get(ruleName); - if (ruleIndex != null) { - return ruleIndex; + PredictionMode3.allConfigsInRuleStopStates = allConfigsInRuleStopStates; + })(PredictionMode2 = exports.PredictionMode || (exports.PredictionMode = {})); + } + }); + + // node_modules/antlr4ts/atn/SimulatorState.js + var require_SimulatorState = __commonJS({ + "node_modules/antlr4ts/atn/SimulatorState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.SimulatorState = void 0; + var Decorators_1 = require_Decorators(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var SimulatorState = class SimulatorState { + constructor(outerContext, s0, useContext, remainingOuterContext) { + this.outerContext = outerContext != null ? outerContext : ParserRuleContext_1.ParserRuleContext.emptyContext(); + this.s0 = s0; + this.useContext = useContext; + this.remainingOuterContext = remainingOuterContext; } - return -1; - } - get ruleContext() { - return this._ctx; - } - getRuleInvocationStack(ctx = this._ctx) { - let p = ctx; - let ruleNames = this.ruleNames; - let stack = []; - while (p != null) { - let ruleIndex = p.ruleIndex; - if (ruleIndex < 0) { - stack.push("n/a"); - } else { - stack.push(ruleNames[ruleIndex]); - } - p = p._parent; + }; + SimulatorState = __decorate([ + __param(1, Decorators_1.NotNull) + ], SimulatorState); + exports.SimulatorState = SimulatorState; + } + }); + + // node_modules/antlr4ts/atn/ParserATNSimulator.js + var require_ParserATNSimulator = __commonJS({ + "node_modules/antlr4ts/atn/ParserATNSimulator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParserATNSimulator = void 0; + var AcceptStateInfo_1 = require_AcceptStateInfo(); + var ActionTransition_1 = require_ActionTransition(); + var Array2DHashSet_1 = require_Array2DHashSet(); + var Arrays_1 = require_Arrays(); + var ATN_1 = require_ATN(); + var ATNConfig_1 = require_ATNConfig(); + var ATNConfigSet_1 = require_ATNConfigSet(); + var ATNSimulator_1 = require_ATNSimulator(); + var ATNStateType_1 = require_ATNStateType(); + var AtomTransition_1 = require_AtomTransition(); + var BitSet_1 = require_BitSet(); + var ConflictInfo_1 = require_ConflictInfo(); + var DecisionState_1 = require_DecisionState(); + var DFAState_1 = require_DFAState(); + var IntegerList_1 = require_IntegerList(); + var Interval_1 = require_Interval(); + var IntStream_1 = require_IntStream(); + var Decorators_1 = require_Decorators(); + var NotSetTransition_1 = require_NotSetTransition(); + var NoViableAltException_1 = require_NoViableAltException(); + var ObjectEqualityComparator_1 = require_ObjectEqualityComparator(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var PredictionContext_1 = require_PredictionContext(); + var PredictionContextCache_1 = require_PredictionContextCache(); + var PredictionMode_1 = require_PredictionMode(); + var RuleStopState_1 = require_RuleStopState(); + var RuleTransition_1 = require_RuleTransition(); + var SemanticContext_1 = require_SemanticContext(); + var SetTransition_1 = require_SetTransition(); + var SimulatorState_1 = require_SimulatorState(); + var Token_1 = require_Token(); + var VocabularyImpl_1 = require_VocabularyImpl(); + var assert = require_assert(); + var MAX_SHORT_VALUE = 65535; + var MIN_INTEGER_VALUE = -(1 << 31 >>> 0); + var ParserATNSimulator3 = class ParserATNSimulator4 extends ATNSimulator_1.ATNSimulator { + constructor(atn, parser) { + super(atn); + this.predictionMode = PredictionMode_1.PredictionMode.LL; + this.force_global_context = false; + this.always_try_local_context = true; + this.enable_global_context_dfa = false; + this.optimize_unique_closure = true; + this.optimize_ll1 = true; + this.optimize_tail_calls = true; + this.tail_call_preserves_sll = true; + this.treat_sllk1_conflict_as_ambiguity = false; + this.reportAmbiguities = false; + this.userWantsCtxSensitive = true; + this._parser = parser; + } + getPredictionMode() { + return this.predictionMode; + } + setPredictionMode(predictionMode) { + this.predictionMode = predictionMode; } - return stack; - } - getDFAStrings() { - let s = []; - for (let dfa of this._interp.atn.decisionToDFA) { - s.push(dfa.toString(this.vocabulary, this.ruleNames)); + reset() { } - return s; - } - dumpDFA() { - let seenOne = false; - for (let dfa of this._interp.atn.decisionToDFA) { + adaptivePredict(input, decision, outerContext, useContext) { + if (useContext === void 0) { + useContext = false; + } + let dfa = this.atn.decisionToDFA[decision]; + assert(dfa != null); + if (this.optimize_ll1 && !dfa.isPrecedenceDfa && !dfa.isEmpty) { + let ll_1 = input.LA(1); + if (ll_1 >= 0 && ll_1 <= 65535) { + let key = (decision << 16 >>> 0) + ll_1; + let alt = this.atn.LL1Table.get(key); + if (alt != null) { + return alt; + } + } + } + this.dfa = dfa; + if (this.force_global_context) { + useContext = true; + } else if (!this.always_try_local_context) { + useContext = useContext || dfa.isContextSensitive; + } + this.userWantsCtxSensitive = useContext || this.predictionMode !== PredictionMode_1.PredictionMode.SLL && outerContext != null && !this.atn.decisionToState[decision].sll; + if (outerContext == null) { + outerContext = ParserRuleContext_1.ParserRuleContext.emptyContext(); + } + let state; if (!dfa.isEmpty) { - if (seenOne) { - console.log(); + state = this.getStartState(dfa, input, outerContext, useContext); + } + if (state == null) { + if (outerContext == null) { + outerContext = ParserRuleContext_1.ParserRuleContext.emptyContext(); } - console.log("Decision " + dfa.decision + ":"); - process.stdout.write(dfa.toString(this.vocabulary, this.ruleNames)); - seenOne = true; + if (ParserATNSimulator4.debug) { + console.log("ATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this._parser)); + } + state = this.computeStartState(dfa, outerContext, useContext); } - } - } - get sourceName() { - return this._input.sourceName; - } - get parseInfo() { - return Promise.resolve().then(() => require_ProfilingATNSimulator()).then((m) => { - let interp = this.interpreter; - if (interp instanceof m.ProfilingATNSimulator) { - return new ParseInfo_1.ParseInfo(interp); + let m = input.mark(); + let index = input.index; + try { + let alt = this.execDFA(dfa, input, index, state); + if (ParserATNSimulator4.debug) { + console.log("DFA after predictATN: " + dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); + } + return alt; + } finally { + this.dfa = void 0; + input.seek(index); + input.release(m); } - return void 0; - }); - } - setProfile(profile) { - return __awaiter(this, void 0, void 0, function* () { - let m = yield Promise.resolve().then(() => require_ProfilingATNSimulator()); - let interp = this.interpreter; - if (profile) { - if (!(interp instanceof m.ProfilingATNSimulator)) { - this.interpreter = new m.ProfilingATNSimulator(this); + } + getStartState(dfa, input, outerContext, useContext) { + if (!useContext) { + if (dfa.isPrecedenceDfa) { + let state = dfa.getPrecedenceStartState(this._parser.precedence, false); + if (state == null) { + return void 0; + } + return new SimulatorState_1.SimulatorState(outerContext, state, false, outerContext); + } else { + if (dfa.s0 == null) { + return void 0; + } + return new SimulatorState_1.SimulatorState(outerContext, dfa.s0, false, outerContext); } - } else if (interp instanceof m.ProfilingATNSimulator) { - this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(this.atn, this); } - this.interpreter.setPredictionMode(interp.getPredictionMode()); - }); - } - set isTrace(trace) { - if (!trace) { - if (this._tracer) { - this.removeParseListener(this._tracer); - this._tracer = void 0; + if (!this.enable_global_context_dfa) { + return void 0; } - } else { - if (this._tracer) { - this.removeParseListener(this._tracer); + let remainingContext = outerContext; + assert(outerContext != null); + let s0; + if (dfa.isPrecedenceDfa) { + s0 = dfa.getPrecedenceStartState(this._parser.precedence, true); } else { - this._tracer = new TraceListener(this.ruleNames, this._input); - } - this.addParseListener(this._tracer); - } - } - get isTrace() { - return this._tracer != null; - } - }; - Parser2.bypassAltsAtnCache = new Map(); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "_errHandler", void 0); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "match", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "matchWildcard", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "getParseListeners", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], Parser2.prototype, "addParseListener", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "getATNWithBypassAlts", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], Parser2.prototype, "errorHandler", null); - __decorate([ - Decorators_1.Override - ], Parser2.prototype, "inputStream", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "currentToken", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], Parser2.prototype, "enterRule", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.Nullable) - ], Parser2.prototype, "precpred", null); - __decorate([ - Decorators_1.Override - ], Parser2.prototype, "getErrorListenerDispatch", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "getExpectedTokens", null); - __decorate([ - Decorators_1.NotNull - ], Parser2.prototype, "getExpectedTokensWithinCurrentRule", null); - __decorate([ - Decorators_1.Override - ], Parser2.prototype, "parseInfo", null); - exports.Parser = Parser2; - }); - - // node_modules/antlr4ts/NoViableAltException.js - var require_NoViableAltException = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.NoViableAltException = void 0; - var Parser_1 = require_Parser(); - var RecognitionException_1 = require_RecognitionException(); - var Decorators_1 = require_Decorators(); - var NoViableAltException2 = class extends RecognitionException_1.RecognitionException { - constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) { - if (recognizer instanceof Parser_1.Parser) { - if (input === void 0) { - input = recognizer.inputStream; - } - if (startToken === void 0) { - startToken = recognizer.currentToken; + s0 = dfa.s0full; } - if (offendingToken === void 0) { - offendingToken = recognizer.currentToken; + while (remainingContext != null && s0 != null && s0.isContextSensitive) { + remainingContext = this.skipTailCalls(remainingContext); + s0 = s0.getContextTarget(this.getReturnState(remainingContext)); + if (remainingContext.isEmpty) { + assert(s0 == null || !s0.isContextSensitive); + } else { + remainingContext = remainingContext.parent; + } } - if (ctx === void 0) { - ctx = recognizer.context; + if (s0 == null) { + return void 0; } + return new SimulatorState_1.SimulatorState(outerContext, s0, useContext, remainingContext); } - super(recognizer, input, ctx); - this._deadEndConfigs = deadEndConfigs; - this._startToken = startToken; - this.setOffendingToken(recognizer, offendingToken); - } - get startToken() { - return this._startToken; - } - get deadEndConfigs() { - return this._deadEndConfigs; - } - }; - __decorate([ - Decorators_1.NotNull - ], NoViableAltException2.prototype, "_startToken", void 0); - exports.NoViableAltException = NoViableAltException2; - }); - - // node_modules/antlr4ts/DefaultErrorStrategy.js - var require_DefaultErrorStrategy = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DefaultErrorStrategy = void 0; - var ATNState_1 = require_ATNState(); - var ATNStateType_1 = require_ATNStateType(); - var FailedPredicateException_1 = require_FailedPredicateException(); - var InputMismatchException_1 = require_InputMismatchException(); - var IntervalSet_1 = require_IntervalSet(); - var NoViableAltException_1 = require_NoViableAltException(); - var PredictionContext_1 = require_PredictionContext(); - var Token_1 = require_Token(); - var Decorators_1 = require_Decorators(); - var DefaultErrorStrategy = class { - constructor() { - this.errorRecoveryMode = false; - this.lastErrorIndex = -1; - this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER; - } - reset(recognizer) { - this.endErrorCondition(recognizer); - } - beginErrorCondition(recognizer) { - this.errorRecoveryMode = true; - } - inErrorRecoveryMode(recognizer) { - return this.errorRecoveryMode; - } - endErrorCondition(recognizer) { - this.errorRecoveryMode = false; - this.lastErrorStates = void 0; - this.lastErrorIndex = -1; - } - reportMatch(recognizer) { - this.endErrorCondition(recognizer); - } - reportError(recognizer, e) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - if (e instanceof NoViableAltException_1.NoViableAltException) { - this.reportNoViableAlternative(recognizer, e); - } else if (e instanceof InputMismatchException_1.InputMismatchException) { - this.reportInputMismatch(recognizer, e); - } else if (e instanceof FailedPredicateException_1.FailedPredicateException) { - this.reportFailedPredicate(recognizer, e); - } else { - console.error(`unknown recognition error type: ${e}`); - this.notifyErrorListeners(recognizer, e.toString(), e); - } - } - notifyErrorListeners(recognizer, message, e) { - let offendingToken = e.getOffendingToken(recognizer); - if (offendingToken === void 0) { - offendingToken = null; - } - recognizer.notifyErrorListeners(message, offendingToken, e); - } - recover(recognizer, e) { - if (this.lastErrorIndex === recognizer.inputStream.index && this.lastErrorStates && this.lastErrorStates.contains(recognizer.state)) { - recognizer.consume(); - } - this.lastErrorIndex = recognizer.inputStream.index; - if (!this.lastErrorStates) { - this.lastErrorStates = new IntervalSet_1.IntervalSet(); - } - this.lastErrorStates.add(recognizer.state); - let followSet = this.getErrorRecoverySet(recognizer); - this.consumeUntil(recognizer, followSet); - } - sync(recognizer) { - let s = recognizer.interpreter.atn.states[recognizer.state]; - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - let tokens2 = recognizer.inputStream; - let la = tokens2.LA(1); - let nextTokens = recognizer.atn.nextTokens(s); - if (nextTokens.contains(la)) { - this.nextTokensContext = void 0; - this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER; - return; - } - if (nextTokens.contains(Token_1.Token.EPSILON)) { - if (this.nextTokensContext === void 0) { - this.nextTokensContext = recognizer.context; - this.nextTokensState = recognizer.state; + execDFA(dfa, input, startIndex, state) { + let outerContext = state.outerContext; + if (ParserATNSimulator4.dfa_debug) { + console.log("DFA decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this._parser)); } - return; - } - switch (s.stateType) { - case ATNStateType_1.ATNStateType.BLOCK_START: - case ATNStateType_1.ATNStateType.STAR_BLOCK_START: - case ATNStateType_1.ATNStateType.PLUS_BLOCK_START: - case ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY: - if (this.singleTokenDeletion(recognizer)) { - return; - } - throw new InputMismatchException_1.InputMismatchException(recognizer); - case ATNStateType_1.ATNStateType.PLUS_LOOP_BACK: - case ATNStateType_1.ATNStateType.STAR_LOOP_BACK: - this.reportUnwantedToken(recognizer); - let expecting = recognizer.getExpectedTokens(); - let whatFollowsLoopIterationOrRule = expecting.or(this.getErrorRecoverySet(recognizer)); - this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule); - break; - default: - break; - } - } - reportNoViableAlternative(recognizer, e) { - let tokens2 = recognizer.inputStream; - let input; - if (tokens2) { - if (e.startToken.type === Token_1.Token.EOF) { - input = ""; - } else { - input = tokens2.getTextFromRange(e.startToken, e.getOffendingToken()); + if (ParserATNSimulator4.dfa_debug) { + console.log(dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); } - } else { - input = ""; - } - let msg = "no viable alternative at input " + this.escapeWSAndQuote(input); - this.notifyErrorListeners(recognizer, msg, e); - } - reportInputMismatch(recognizer, e) { - let expected = e.expectedTokens; - let expectedString = expected ? expected.toStringVocabulary(recognizer.vocabulary) : ""; - let msg = "mismatched input " + this.getTokenErrorDisplay(e.getOffendingToken(recognizer)) + " expecting " + expectedString; - this.notifyErrorListeners(recognizer, msg, e); - } - reportFailedPredicate(recognizer, e) { - let ruleName = recognizer.ruleNames[recognizer.context.ruleIndex]; - let msg = "rule " + ruleName + " " + e.message; - this.notifyErrorListeners(recognizer, msg, e); - } - reportUnwantedToken(recognizer) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - let t = recognizer.currentToken; - let tokenName = this.getTokenErrorDisplay(t); - let expecting = this.getExpectedTokens(recognizer); - let msg = "extraneous input " + tokenName + " expecting " + expecting.toStringVocabulary(recognizer.vocabulary); - recognizer.notifyErrorListeners(msg, t, void 0); - } - reportMissingToken(recognizer) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - let t = recognizer.currentToken; - let expecting = this.getExpectedTokens(recognizer); - let msg = "missing " + expecting.toStringVocabulary(recognizer.vocabulary) + " at " + this.getTokenErrorDisplay(t); - recognizer.notifyErrorListeners(msg, t, void 0); - } - recoverInline(recognizer) { - let matchedSymbol = this.singleTokenDeletion(recognizer); - if (matchedSymbol) { - recognizer.consume(); - return matchedSymbol; - } - if (this.singleTokenInsertion(recognizer)) { - return this.getMissingSymbol(recognizer); - } - if (this.nextTokensContext === void 0) { - throw new InputMismatchException_1.InputMismatchException(recognizer); - } else { - throw new InputMismatchException_1.InputMismatchException(recognizer, this.nextTokensState, this.nextTokensContext); - } - } - singleTokenInsertion(recognizer) { - let currentSymbolType = recognizer.inputStream.LA(1); - let currentState = recognizer.interpreter.atn.states[recognizer.state]; - let next = currentState.transition(0).target; - let atn = recognizer.interpreter.atn; - let expectingAtLL2 = atn.nextTokens(next, PredictionContext_1.PredictionContext.fromRuleContext(atn, recognizer.context)); - if (expectingAtLL2.contains(currentSymbolType)) { - this.reportMissingToken(recognizer); - return true; - } - return false; - } - singleTokenDeletion(recognizer) { - let nextTokenType = recognizer.inputStream.LA(2); - let expecting = this.getExpectedTokens(recognizer); - if (expecting.contains(nextTokenType)) { - this.reportUnwantedToken(recognizer); - recognizer.consume(); - let matchedSymbol = recognizer.currentToken; - this.reportMatch(recognizer); - return matchedSymbol; - } - return void 0; - } - getMissingSymbol(recognizer) { - let currentSymbol = recognizer.currentToken; - let expecting = this.getExpectedTokens(recognizer); - let expectedTokenType = Token_1.Token.INVALID_TYPE; - if (!expecting.isNil) { - expectedTokenType = expecting.minElement; - } - let tokenText; - if (expectedTokenType === Token_1.Token.EOF) { - tokenText = ""; - } else { - tokenText = ""; - } - let current = currentSymbol; - let lookback = recognizer.inputStream.tryLT(-1); - if (current.type === Token_1.Token.EOF && lookback != null) { - current = lookback; - } - return this.constructToken(recognizer.inputStream.tokenSource, expectedTokenType, tokenText, current); - } - constructToken(tokenSource, expectedTokenType, tokenText, current) { - let factory = tokenSource.tokenFactory; - let x = current.tokenSource; - let stream = x ? x.inputStream : void 0; - return factory.create({source: tokenSource, stream}, expectedTokenType, tokenText, Token_1.Token.DEFAULT_CHANNEL, -1, -1, current.line, current.charPositionInLine); - } - getExpectedTokens(recognizer) { - return recognizer.getExpectedTokens(); - } - getTokenErrorDisplay(t) { - if (!t) { - return ""; - } - let s = this.getSymbolText(t); - if (!s) { - if (this.getSymbolType(t) === Token_1.Token.EOF) { - s = ""; - } else { - s = `<${this.getSymbolType(t)}>`; - } - } - return this.escapeWSAndQuote(s); - } - getSymbolText(symbol) { - return symbol.text; - } - getSymbolType(symbol) { - return symbol.type; - } - escapeWSAndQuote(s) { - s = s.replace("\n", "\\n"); - s = s.replace("\r", "\\r"); - s = s.replace(" ", "\\t"); - return "'" + s + "'"; - } - getErrorRecoverySet(recognizer) { - let atn = recognizer.interpreter.atn; - let ctx = recognizer.context; - let recoverSet = new IntervalSet_1.IntervalSet(); - while (ctx && ctx.invokingState >= 0) { - let invokingState = atn.states[ctx.invokingState]; - let rt = invokingState.transition(0); - let follow = atn.nextTokens(rt.followState); - recoverSet.addAll(follow); - ctx = ctx._parent; - } - recoverSet.remove(Token_1.Token.EPSILON); - return recoverSet; - } - consumeUntil(recognizer, set) { - let ttype = recognizer.inputStream.LA(1); - while (ttype !== Token_1.Token.EOF && !set.contains(ttype)) { - recognizer.consume(); - ttype = recognizer.inputStream.LA(1); - } - } - }; - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "reset", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "beginErrorCondition", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "inErrorRecoveryMode", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "endErrorCondition", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "reportMatch", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "reportError", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "notifyErrorListeners", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "recover", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "sync", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "reportNoViableAlternative", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "reportInputMismatch", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "reportFailedPredicate", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "reportUnwantedToken", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "reportMissingToken", null); - __decorate([ - Decorators_1.Override - ], DefaultErrorStrategy.prototype, "recoverInline", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "singleTokenInsertion", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "singleTokenDeletion", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "getMissingSymbol", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "getExpectedTokens", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "getSymbolText", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "getSymbolType", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "escapeWSAndQuote", null); - __decorate([ - Decorators_1.NotNull, - __param(0, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "getErrorRecoverySet", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], DefaultErrorStrategy.prototype, "consumeUntil", null); - exports.DefaultErrorStrategy = DefaultErrorStrategy; - }); - - // node_modules/antlr4ts/BailErrorStrategy.js - var require_BailErrorStrategy = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.BailErrorStrategy = void 0; - var DefaultErrorStrategy_1 = require_DefaultErrorStrategy(); - var InputMismatchException_1 = require_InputMismatchException(); - var Decorators_1 = require_Decorators(); - var ParseCancellationException_1 = require_ParseCancellationException(); - var BailErrorStrategy = class extends DefaultErrorStrategy_1.DefaultErrorStrategy { - recover(recognizer, e) { - for (let context = recognizer.context; context; context = context.parent) { - context.exception = e; - } - throw new ParseCancellationException_1.ParseCancellationException(e); - } - recoverInline(recognizer) { - let e = new InputMismatchException_1.InputMismatchException(recognizer); - for (let context = recognizer.context; context; context = context.parent) { - context.exception = e; - } - throw new ParseCancellationException_1.ParseCancellationException(e); - } - sync(recognizer) { - } - }; - __decorate([ - Decorators_1.Override - ], BailErrorStrategy.prototype, "recover", null); - __decorate([ - Decorators_1.Override - ], BailErrorStrategy.prototype, "recoverInline", null); - __decorate([ - Decorators_1.Override - ], BailErrorStrategy.prototype, "sync", null); - exports.BailErrorStrategy = BailErrorStrategy; - }); - - // node_modules/antlr4ts/CharStream.js - var require_CharStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/Dependents.js - var require_Dependents = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.Dependents = void 0; - var Dependents; - (function(Dependents2) { - Dependents2[Dependents2["SELF"] = 0] = "SELF"; - Dependents2[Dependents2["PARENTS"] = 1] = "PARENTS"; - Dependents2[Dependents2["CHILDREN"] = 2] = "CHILDREN"; - Dependents2[Dependents2["ANCESTORS"] = 3] = "ANCESTORS"; - Dependents2[Dependents2["DESCENDANTS"] = 4] = "DESCENDANTS"; - Dependents2[Dependents2["SIBLINGS"] = 5] = "SIBLINGS"; - Dependents2[Dependents2["PRECEEDING_SIBLINGS"] = 6] = "PRECEEDING_SIBLINGS"; - Dependents2[Dependents2["FOLLOWING_SIBLINGS"] = 7] = "FOLLOWING_SIBLINGS"; - Dependents2[Dependents2["PRECEEDING"] = 8] = "PRECEEDING"; - Dependents2[Dependents2["FOLLOWING"] = 9] = "FOLLOWING"; - })(Dependents = exports.Dependents || (exports.Dependents = {})); - }); - - // node_modules/antlr4ts/DiagnosticErrorListener.js - var require_DiagnosticErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.DiagnosticErrorListener = void 0; - var BitSet_1 = require_BitSet(); - var Decorators_1 = require_Decorators(); - var Interval_1 = require_Interval(); - var DiagnosticErrorListener = class { - constructor(exactOnly = true) { - this.exactOnly = exactOnly; - this.exactOnly = exactOnly; - } - syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { - } - reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { - if (this.exactOnly && !exact) { - return; - } - let decision = this.getDecisionDescription(recognizer, dfa); - let conflictingAlts = this.getConflictingAlts(ambigAlts, configs); - let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); - let message = `reportAmbiguity d=${decision}: ambigAlts=${conflictingAlts}, input='${text}'`; - recognizer.notifyErrorListeners(message); - } - reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState) { - let format = "reportAttemptingFullContext d=%s, input='%s'"; - let decision = this.getDecisionDescription(recognizer, dfa); - let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); - let message = `reportAttemptingFullContext d=${decision}, input='${text}'`; - recognizer.notifyErrorListeners(message); - } - reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState) { - let format = "reportContextSensitivity d=%s, input='%s'"; - let decision = this.getDecisionDescription(recognizer, dfa); - let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); - let message = `reportContextSensitivity d=${decision}, input='${text}'`; - recognizer.notifyErrorListeners(message); - } - getDecisionDescription(recognizer, dfa) { - let decision = dfa.decision; - let ruleIndex = dfa.atnStartState.ruleIndex; - let ruleNames = recognizer.ruleNames; - if (ruleIndex < 0 || ruleIndex >= ruleNames.length) { - return decision.toString(); - } - let ruleName = ruleNames[ruleIndex]; - if (!ruleName) { - return decision.toString(); - } - return `${decision} (${ruleName})`; - } - getConflictingAlts(reportedAlts, configs) { - if (reportedAlts != null) { - return reportedAlts; - } - let result = new BitSet_1.BitSet(); - for (let config of configs) { - result.set(config.alt); - } - return result; - } - }; - __decorate([ - Decorators_1.Override - ], DiagnosticErrorListener.prototype, "syntaxError", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(6, Decorators_1.NotNull) - ], DiagnosticErrorListener.prototype, "reportAmbiguity", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull) - ], DiagnosticErrorListener.prototype, "reportAttemptingFullContext", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull), - __param(5, Decorators_1.NotNull) - ], DiagnosticErrorListener.prototype, "reportContextSensitivity", null); - __decorate([ - __param(0, Decorators_1.NotNull), - __param(1, Decorators_1.NotNull) - ], DiagnosticErrorListener.prototype, "getDecisionDescription", null); - __decorate([ - Decorators_1.NotNull, - __param(1, Decorators_1.NotNull) - ], DiagnosticErrorListener.prototype, "getConflictingAlts", null); - exports.DiagnosticErrorListener = DiagnosticErrorListener; - }); - - // node_modules/antlr4ts/LexerInterpreter.js - var require_LexerInterpreter = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.LexerInterpreter = void 0; - var Lexer_1 = require_Lexer(); - var LexerATNSimulator_1 = require_LexerATNSimulator(); - var Decorators_1 = require_Decorators(); - var Decorators_2 = require_Decorators(); - var LexerInterpreter = class LexerInterpreter extends Lexer_1.Lexer { - constructor(grammarFileName, vocabulary, ruleNames, channelNames, modeNames, atn, input) { - super(input); - if (atn.grammarType !== 0) { - throw new Error("IllegalArgumentException: The ATN must be a lexer ATN."); - } - this._grammarFileName = grammarFileName; - this._atn = atn; - this._ruleNames = ruleNames.slice(0); - this._channelNames = channelNames.slice(0); - this._modeNames = modeNames.slice(0); - this._vocabulary = vocabulary; - this._interp = new LexerATNSimulator_1.LexerATNSimulator(atn, this); - } - get atn() { - return this._atn; - } - get grammarFileName() { - return this._grammarFileName; - } - get ruleNames() { - return this._ruleNames; - } - get channelNames() { - return this._channelNames; - } - get modeNames() { - return this._modeNames; - } - get vocabulary() { - return this._vocabulary; - } - }; - __decorate([ - Decorators_1.NotNull - ], LexerInterpreter.prototype, "_vocabulary", void 0); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "atn", null); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "grammarFileName", null); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "ruleNames", null); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "channelNames", null); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "modeNames", null); - __decorate([ - Decorators_2.Override - ], LexerInterpreter.prototype, "vocabulary", null); - LexerInterpreter = __decorate([ - __param(1, Decorators_1.NotNull) - ], LexerInterpreter); - exports.LexerInterpreter = LexerInterpreter; - }); - - // node_modules/antlr4ts/ParserErrorListener.js - var require_ParserErrorListener = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/RuleContextWithAltNum.js - var require_RuleContextWithAltNum = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleContextWithAltNum = void 0; - var ATN_1 = require_ATN(); - var Decorators_1 = require_Decorators(); - var ParserRuleContext_1 = require_ParserRuleContext(); - var RuleContextWithAltNum = class extends ParserRuleContext_1.ParserRuleContext { - constructor(parent, invokingStateNumber) { - if (invokingStateNumber !== void 0) { - super(parent, invokingStateNumber); - } else { - super(); - } - this._altNumber = ATN_1.ATN.INVALID_ALT_NUMBER; - } - get altNumber() { - return this._altNumber; - } - set altNumber(altNum) { - this._altNumber = altNum; - } - }; - __decorate([ - Decorators_1.Override - ], RuleContextWithAltNum.prototype, "altNumber", null); - exports.RuleContextWithAltNum = RuleContextWithAltNum; - }); - - // node_modules/antlr4ts/RuleDependency.js - var require_RuleDependency = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleDependency = void 0; - function RuleDependency(dependency) { - return (target, propertyKey, propertyDescriptor) => { - }; - } - exports.RuleDependency = RuleDependency; - }); - - // node_modules/antlr4ts/RuleVersion.js - var require_RuleVersion = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RuleVersion = void 0; - function RuleVersion(version) { - return (target, propertyKey, propertyDescriptor) => { - }; - } - exports.RuleVersion = RuleVersion; - }); - - // node_modules/antlr4ts/TokenFactory.js - var require_TokenFactory = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/TokenSource.js - var require_TokenSource = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/TokenStream.js - var require_TokenStream = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/TokenStreamRewriter.js - var require_TokenStreamRewriter = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.RewriteOperation = exports.TokenStreamRewriter = void 0; - var Interval_1 = require_Interval(); - var Decorators_1 = require_Decorators(); - var Token_1 = require_Token(); - var TokenStreamRewriter = class { - constructor(tokens2) { - this.tokens = tokens2; - this.programs = new Map(); - this.programs.set(TokenStreamRewriter.DEFAULT_PROGRAM_NAME, []); - this.lastRewriteTokenIndexes = new Map(); - } - getTokenStream() { - return this.tokens; - } - rollback(instructionIndex, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - let is = this.programs.get(programName); - if (is != null) { - this.programs.set(programName, is.slice(TokenStreamRewriter.MIN_TOKEN_INDEX, instructionIndex)); - } - } - deleteProgram(programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - this.rollback(TokenStreamRewriter.MIN_TOKEN_INDEX, programName); - } - insertAfter(tokenOrIndex, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - let index; - if (typeof tokenOrIndex === "number") { - index = tokenOrIndex; - } else { - index = tokenOrIndex.tokenIndex; - } - let rewrites = this.getProgram(programName); - let op = new InsertAfterOp(this.tokens, index, rewrites.length, text); - rewrites.push(op); - } - insertBefore(tokenOrIndex, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - let index; - if (typeof tokenOrIndex === "number") { - index = tokenOrIndex; - } else { - index = tokenOrIndex.tokenIndex; - } - let rewrites = this.getProgram(programName); - let op = new InsertBeforeOp(this.tokens, index, rewrites.length, text); - rewrites.push(op); - } - replaceSingle(index, text) { - if (typeof index === "number") { - this.replace(index, index, text); - } else { - this.replace(index, index, text); - } - } - replace(from, to, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - if (typeof from !== "number") { - from = from.tokenIndex; - } - if (typeof to !== "number") { - to = to.tokenIndex; - } - if (from > to || from < 0 || to < 0 || to >= this.tokens.size) { - throw new RangeError(`replace: range invalid: ${from}..${to}(size=${this.tokens.size})`); - } - let rewrites = this.getProgram(programName); - let op = new ReplaceOp(this.tokens, from, to, rewrites.length, text); - rewrites.push(op); - } - delete(from, to, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - if (to === void 0) { - to = from; - } - if (typeof from === "number") { - this.replace(from, to, "", programName); - } else { - this.replace(from, to, "", programName); - } - } - getLastRewriteTokenIndex(programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - let I = this.lastRewriteTokenIndexes.get(programName); - if (I == null) { - return -1; - } - return I; - } - setLastRewriteTokenIndex(programName, i) { - this.lastRewriteTokenIndexes.set(programName, i); - } - getProgram(name) { - let is = this.programs.get(name); - if (is == null) { - is = this.initializeProgram(name); - } - return is; - } - initializeProgram(name) { - let is = []; - this.programs.set(name, is); - return is; - } - getText(intervalOrProgram, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { - let interval; - if (intervalOrProgram instanceof Interval_1.Interval) { - interval = intervalOrProgram; - } else { - interval = Interval_1.Interval.of(0, this.tokens.size - 1); - } - if (typeof intervalOrProgram === "string") { - programName = intervalOrProgram; - } - let rewrites = this.programs.get(programName); - let start = interval.a; - let stop = interval.b; - if (stop > this.tokens.size - 1) { - stop = this.tokens.size - 1; - } - if (start < 0) { - start = 0; - } - if (rewrites == null || rewrites.length === 0) { - return this.tokens.getText(interval); - } - let buf = []; - let indexToOp = this.reduceToSingleOperationPerIndex(rewrites); - let i = start; - while (i <= stop && i < this.tokens.size) { - let op = indexToOp.get(i); - indexToOp.delete(i); - let t = this.tokens.get(i); - if (op == null) { - if (t.type !== Token_1.Token.EOF) { - buf.push(String(t.text)); + let s = state.s0; + let t = input.LA(1); + let remainingOuterContext = state.remainingOuterContext; + while (true) { + if (ParserATNSimulator4.dfa_debug) { + console.log("DFA state " + s.stateNumber + " LA(1)==" + this.getLookaheadName(input)); + } + if (state.useContext) { + while (s.isContextSymbol(t)) { + let next; + if (remainingOuterContext != null) { + remainingOuterContext = this.skipTailCalls(remainingOuterContext); + next = s.getContextTarget(this.getReturnState(remainingOuterContext)); + } + if (next == null) { + let initialState = new SimulatorState_1.SimulatorState(state.outerContext, s, state.useContext, remainingOuterContext); + return this.execATN(dfa, input, startIndex, initialState); + } + assert(remainingOuterContext != null); + remainingOuterContext = remainingOuterContext.parent; + s = next; + } } - i++; - } else { - i = op.execute(buf); - } - } - if (stop === this.tokens.size - 1) { - for (let op of indexToOp.values()) { - if (op.index >= this.tokens.size - 1) { - buf.push(op.text.toString()); + if (this.isAcceptState(s, state.useContext)) { + if (s.predicates != null) { + if (ParserATNSimulator4.dfa_debug) { + console.log("accept " + s); + } + } else { + if (ParserATNSimulator4.dfa_debug) { + console.log("accept; predict " + s.prediction + " in state " + s.stateNumber); + } + } + break; + } + assert(!this.isAcceptState(s, state.useContext)); + let target = this.getExistingTargetState(s, t); + if (target == null) { + if (ParserATNSimulator4.dfa_debug && t >= 0) { + console.log("no edge for " + this._parser.vocabulary.getDisplayName(t)); + } + let alt; + if (ParserATNSimulator4.dfa_debug) { + let interval = Interval_1.Interval.of(startIndex, this._parser.inputStream.index); + console.log("ATN exec upon " + this._parser.inputStream.getText(interval) + " at DFA state " + s.stateNumber); + } + let initialState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); + alt = this.execATN(dfa, input, startIndex, initialState); + if (ParserATNSimulator4.dfa_debug) { + console.log("back from DFA update, alt=" + alt + ", dfa=\n" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames)); + } + if (ParserATNSimulator4.dfa_debug) { + console.log("DFA decision " + dfa.decision + " predicts " + alt); + } + return alt; + } else if (target === ATNSimulator_1.ATNSimulator.ERROR) { + let errorState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); + return this.handleNoViableAlt(input, startIndex, errorState); + } + s = target; + if (!this.isAcceptState(s, state.useContext) && t !== IntStream_1.IntStream.EOF) { + input.consume(); + t = input.LA(1); } } - } - return buf.join(""); - } - reduceToSingleOperationPerIndex(rewrites) { - for (let i = 0; i < rewrites.length; i++) { - let op = rewrites[i]; - if (op == null) { - continue; - } - if (!(op instanceof ReplaceOp)) { - continue; - } - let rop = op; - let inserts = this.getKindOfOps(rewrites, InsertBeforeOp, i); - for (let iop of inserts) { - if (iop.index === rop.index) { - rewrites[iop.instructionIndex] = void 0; - rop.text = iop.text.toString() + (rop.text != null ? rop.text.toString() : ""); - } else if (iop.index > rop.index && iop.index <= rop.lastIndex) { - rewrites[iop.instructionIndex] = void 0; + if (!state.useContext && s.configs.conflictInfo != null) { + if (dfa.atnStartState instanceof DecisionState_1.DecisionState) { + if (!this.userWantsCtxSensitive || !s.configs.dipsIntoOuterContext && s.configs.isExactConflict || this.treat_sllk1_conflict_as_ambiguity && input.index === startIndex) { + } else { + assert(!state.useContext); + let conflictingAlts; + let predicates2 = s.predicates; + if (predicates2 != null) { + let conflictIndex = input.index; + if (conflictIndex !== startIndex) { + input.seek(startIndex); + } + conflictingAlts = this.evalSemanticContext(predicates2, outerContext, true); + if (conflictingAlts.cardinality() === 1) { + return conflictingAlts.nextSetBit(0); + } + if (conflictIndex !== startIndex) { + input.seek(conflictIndex); + } + } + if (this.reportAmbiguities) { + let conflictState = new SimulatorState_1.SimulatorState(outerContext, s, state.useContext, remainingOuterContext); + this.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, input.index); + } + input.seek(startIndex); + return this.adaptivePredict(input, dfa.decision, outerContext, true); + } } } - let prevReplaces = this.getKindOfOps(rewrites, ReplaceOp, i); - for (let prevRop of prevReplaces) { - if (prevRop.index >= rop.index && prevRop.lastIndex <= rop.lastIndex) { - rewrites[prevRop.instructionIndex] = void 0; - continue; + let predicates = s.predicates; + if (predicates != null) { + let stopIndex = input.index; + if (startIndex !== stopIndex) { + input.seek(startIndex); } - let disjoint = prevRop.lastIndex < rop.index || prevRop.index > rop.lastIndex; - if (prevRop.text == null && rop.text == null && !disjoint) { - rewrites[prevRop.instructionIndex] = void 0; - rop.index = Math.min(prevRop.index, rop.index); - rop.lastIndex = Math.max(prevRop.lastIndex, rop.lastIndex); - } else if (!disjoint) { - throw new Error(`replace op boundaries of ${rop} overlap with previous ${prevRop}`); + let alts = this.evalSemanticContext(predicates, outerContext, this.reportAmbiguities && this.predictionMode === PredictionMode_1.PredictionMode.LL_EXACT_AMBIG_DETECTION); + switch (alts.cardinality()) { + case 0: + throw this.noViableAlt(input, outerContext, s.configs, startIndex); + case 1: + return alts.nextSetBit(0); + default: + if (startIndex !== stopIndex) { + input.seek(stopIndex); + } + this.reportAmbiguity(dfa, s, startIndex, stopIndex, s.configs.isExactConflict, alts, s.configs); + return alts.nextSetBit(0); } } + if (ParserATNSimulator4.dfa_debug) { + console.log("DFA decision " + dfa.decision + " predicts " + s.prediction); + } + return s.prediction; } - for (let i = 0; i < rewrites.length; i++) { - let op = rewrites[i]; - if (op == null) { - continue; + isAcceptState(state, useContext) { + if (!state.isAcceptState) { + return false; } - if (!(op instanceof InsertBeforeOp)) { - continue; + if (state.configs.conflictingAlts == null) { + return true; + } + if (useContext && this.predictionMode === PredictionMode_1.PredictionMode.LL_EXACT_AMBIG_DETECTION) { + return state.configs.isExactConflict; + } + return true; + } + execATN(dfa, input, startIndex, initialState) { + if (ParserATNSimulator4.debug) { + console.log("execATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input)); } - let iop = op; - let prevInserts = this.getKindOfOps(rewrites, InsertBeforeOp, i); - for (let prevIop of prevInserts) { - if (prevIop.index === iop.index) { - if (prevIop instanceof InsertAfterOp) { - iop.text = this.catOpText(prevIop.text, iop.text); - rewrites[prevIop.instructionIndex] = void 0; - } else if (prevIop instanceof InsertBeforeOp) { - iop.text = this.catOpText(iop.text, prevIop.text); - rewrites[prevIop.instructionIndex] = void 0; + let outerContext = initialState.outerContext; + let useContext = initialState.useContext; + let t = input.LA(1); + let previous = initialState; + let contextCache = new PredictionContextCache_1.PredictionContextCache(); + while (true) { + let nextState = this.computeReachSet(dfa, previous, t, contextCache); + if (nextState == null) { + this.setDFAEdge(previous.s0, input.LA(1), ATNSimulator_1.ATNSimulator.ERROR); + return this.handleNoViableAlt(input, startIndex, previous); + } + let D = nextState.s0; + assert(D.isAcceptState || D.prediction === ATN_1.ATN.INVALID_ALT_NUMBER); + assert(D.isAcceptState || D.configs.conflictInfo == null); + if (this.isAcceptState(D, useContext)) { + let conflictingAlts = D.configs.conflictingAlts; + let predictedAlt = conflictingAlts == null ? D.prediction : ATN_1.ATN.INVALID_ALT_NUMBER; + if (predictedAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { + if (this.optimize_ll1 && input.index === startIndex && !dfa.isPrecedenceDfa && nextState.outerContext === nextState.remainingOuterContext && dfa.decision >= 0 && !D.configs.hasSemanticContext) { + if (t >= 0 && t <= MAX_SHORT_VALUE) { + let key = (dfa.decision << 16 >>> 0) + t; + this.atn.LL1Table.set(key, predictedAlt); + } + } + if (useContext && this.always_try_local_context) { + this.reportContextSensitivity(dfa, predictedAlt, nextState, startIndex, input.index); + } + } + predictedAlt = D.prediction; + let attemptFullContext = conflictingAlts != null && this.userWantsCtxSensitive; + if (attemptFullContext) { + attemptFullContext = !useContext && (D.configs.dipsIntoOuterContext || !D.configs.isExactConflict) && (!this.treat_sllk1_conflict_as_ambiguity || input.index !== startIndex); + } + if (D.configs.hasSemanticContext) { + let predPredictions = D.predicates; + if (predPredictions != null) { + let conflictIndex = input.index; + if (conflictIndex !== startIndex) { + input.seek(startIndex); + } + conflictingAlts = this.evalSemanticContext(predPredictions, outerContext, attemptFullContext || this.reportAmbiguities); + switch (conflictingAlts.cardinality()) { + case 0: + throw this.noViableAlt(input, outerContext, D.configs, startIndex); + case 1: + return conflictingAlts.nextSetBit(0); + default: + break; + } + if (conflictIndex !== startIndex) { + input.seek(conflictIndex); + } + } + } + if (!attemptFullContext) { + if (conflictingAlts != null) { + if (this.reportAmbiguities && conflictingAlts.cardinality() > 1) { + this.reportAmbiguity(dfa, D, startIndex, input.index, D.configs.isExactConflict, conflictingAlts, D.configs); + } + predictedAlt = conflictingAlts.nextSetBit(0); + } + return predictedAlt; + } else { + assert(!useContext); + assert(this.isAcceptState(D, false)); + if (ParserATNSimulator4.debug) { + console.log("RETRY with outerContext=" + outerContext); + } + let fullContextState = this.computeStartState(dfa, outerContext, true); + if (this.reportAmbiguities) { + this.reportAttemptingFullContext(dfa, conflictingAlts, nextState, startIndex, input.index); + } + input.seek(startIndex); + return this.execATN(dfa, input, startIndex, fullContextState); } } + previous = nextState; + if (t !== IntStream_1.IntStream.EOF) { + input.consume(); + t = input.LA(1); + } } - let prevReplaces = this.getKindOfOps(rewrites, ReplaceOp, i); - for (let rop of prevReplaces) { - if (iop.index === rop.index) { - rop.text = this.catOpText(iop.text, rop.text); - rewrites[i] = void 0; - continue; + } + handleNoViableAlt(input, startIndex, previous) { + if (previous.s0 != null) { + let alts = new BitSet_1.BitSet(); + let maxAlt = 0; + for (let config of previous.s0.configs) { + if (config.reachesIntoOuterContext || config.state instanceof RuleStopState_1.RuleStopState) { + alts.set(config.alt); + maxAlt = Math.max(maxAlt, config.alt); + } } - if (iop.index >= rop.index && iop.index <= rop.lastIndex) { - throw new Error(`insert op ${iop} within boundaries of previous ${rop}`); + switch (alts.cardinality()) { + case 0: + break; + case 1: + return alts.nextSetBit(0); + default: + if (!previous.s0.configs.hasSemanticContext) { + return alts.nextSetBit(0); + } + let filteredConfigs = new ATNConfigSet_1.ATNConfigSet(); + for (let config of previous.s0.configs) { + if (config.reachesIntoOuterContext || config.state instanceof RuleStopState_1.RuleStopState) { + filteredConfigs.add(config); + } + } + let altToPred = this.getPredsForAmbigAlts(alts, filteredConfigs, maxAlt); + if (altToPred != null) { + let predicates = this.getPredicatePredictions(alts, altToPred); + if (predicates != null) { + let stopIndex = input.index; + try { + input.seek(startIndex); + let filteredAlts = this.evalSemanticContext(predicates, previous.outerContext, false); + if (!filteredAlts.isEmpty) { + return filteredAlts.nextSetBit(0); + } + } finally { + input.seek(stopIndex); + } + } + } + return alts.nextSetBit(0); } } + throw this.noViableAlt(input, previous.outerContext, previous.s0.configs, startIndex); } - let m = new Map(); - for (let op of rewrites) { - if (op == null) { - continue; + computeReachSet(dfa, previous, t, contextCache) { + let useContext = previous.useContext; + let remainingGlobalContext = previous.remainingOuterContext; + let s = previous.s0; + if (useContext) { + while (s.isContextSymbol(t)) { + let next; + if (remainingGlobalContext != null) { + remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); + next = s.getContextTarget(this.getReturnState(remainingGlobalContext)); + } + if (next == null) { + break; + } + assert(remainingGlobalContext != null); + remainingGlobalContext = remainingGlobalContext.parent; + s = next; + } } - if (m.get(op.index) != null) { - throw new Error("should only be one op per index"); + assert(!this.isAcceptState(s, useContext)); + if (this.isAcceptState(s, useContext)) { + return new SimulatorState_1.SimulatorState(previous.outerContext, s, useContext, remainingGlobalContext); } - m.set(op.index, op); - } - return m; - } - catOpText(a, b) { - let x = ""; - let y = ""; - if (a != null) { - x = a.toString(); + let s0 = s; + let target = this.getExistingTargetState(s0, t); + if (target == null) { + let result = this.computeTargetState(dfa, s0, remainingGlobalContext, t, useContext, contextCache); + target = result[0]; + remainingGlobalContext = result[1]; + } + if (target === ATNSimulator_1.ATNSimulator.ERROR) { + return void 0; + } + assert(!useContext || !target.configs.dipsIntoOuterContext); + return new SimulatorState_1.SimulatorState(previous.outerContext, target, useContext, remainingGlobalContext); } - if (b != null) { - y = b.toString(); + getExistingTargetState(s, t) { + return s.getTarget(t); } - return x + y; - } - getKindOfOps(rewrites, kind, before) { - let ops = []; - for (let i = 0; i < before && i < rewrites.length; i++) { - let op = rewrites[i]; - if (op == null) { - continue; + computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache) { + let closureConfigs = s.configs.toArray(); + let contextElements; + let reach = new ATNConfigSet_1.ATNConfigSet(); + let stepIntoGlobal; + do { + let hasMoreContext = !useContext || remainingGlobalContext != null; + if (!hasMoreContext) { + reach.isOutermostConfigSet = true; + } + let reachIntermediate = new ATNConfigSet_1.ATNConfigSet(); + let skippedStopStates; + for (let c of closureConfigs) { + if (ParserATNSimulator4.debug) { + console.log("testing " + this.getTokenName(t) + " at " + c.toString()); + } + if (c.state instanceof RuleStopState_1.RuleStopState) { + assert(c.context.isEmpty); + if (useContext && !c.reachesIntoOuterContext || t === IntStream_1.IntStream.EOF) { + if (skippedStopStates == null) { + skippedStopStates = []; + } + skippedStopStates.push(c); + } + continue; + } + let n = c.state.numberOfOptimizedTransitions; + for (let ti = 0; ti < n; ti++) { + let trans = c.state.getOptimizedTransition(ti); + let target = this.getReachableTarget(c, trans, t); + if (target != null) { + reachIntermediate.add(c.transform(target, false), contextCache); + } + } + } + if (this.optimize_unique_closure && skippedStopStates == null && t !== Token_1.Token.EOF && reachIntermediate.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { + reachIntermediate.isOutermostConfigSet = reach.isOutermostConfigSet; + reach = reachIntermediate; + break; + } + let collectPredicates = false; + let treatEofAsEpsilon = t === Token_1.Token.EOF; + this.closure(reachIntermediate, reach, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon); + stepIntoGlobal = reach.dipsIntoOuterContext; + if (t === IntStream_1.IntStream.EOF) { + reach = this.removeAllConfigsNotInRuleStopState(reach, contextCache); + } + if (skippedStopStates != null && (!useContext || !PredictionMode_1.PredictionMode.hasConfigInRuleStopState(reach))) { + assert(skippedStopStates.length > 0); + for (let c of skippedStopStates) { + reach.add(c, contextCache); + } + } + if (useContext && stepIntoGlobal) { + reach.clear(); + remainingGlobalContext = remainingGlobalContext; + remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); + let nextContextElement = this.getReturnState(remainingGlobalContext); + if (contextElements == null) { + contextElements = new IntegerList_1.IntegerList(); + } + if (remainingGlobalContext.isEmpty) { + remainingGlobalContext = void 0; + } else { + remainingGlobalContext = remainingGlobalContext.parent; + } + contextElements.add(nextContextElement); + if (nextContextElement !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + for (let i = 0; i < closureConfigs.length; i++) { + closureConfigs[i] = closureConfigs[i].appendContext(nextContextElement, contextCache); + } + } + } + } while (useContext && stepIntoGlobal); + if (reach.isEmpty) { + this.setDFAEdge(s, t, ATNSimulator_1.ATNSimulator.ERROR); + return [ATNSimulator_1.ATNSimulator.ERROR, remainingGlobalContext]; } - if (op instanceof kind) { - ops.push(op); - } - } - return ops; - } - }; - exports.TokenStreamRewriter = TokenStreamRewriter; - TokenStreamRewriter.DEFAULT_PROGRAM_NAME = "default"; - TokenStreamRewriter.PROGRAM_INIT_SIZE = 100; - TokenStreamRewriter.MIN_TOKEN_INDEX = 0; - var RewriteOperation = class { - constructor(tokens2, index, instructionIndex, text) { - this.tokens = tokens2; - this.instructionIndex = instructionIndex; - this.index = index; - this.text = text === void 0 ? "" : text; - } - execute(buf) { - return this.index; - } - toString() { - let opName = this.constructor.name; - let $index = opName.indexOf("$"); - opName = opName.substring($index + 1, opName.length); - return "<" + opName + "@" + this.tokens.get(this.index) + ':"' + this.text + '">'; - } - }; - __decorate([ - Decorators_1.Override - ], RewriteOperation.prototype, "toString", null); - exports.RewriteOperation = RewriteOperation; - var InsertBeforeOp = class extends RewriteOperation { - constructor(tokens2, index, instructionIndex, text) { - super(tokens2, index, instructionIndex, text); - } - execute(buf) { - buf.push(this.text.toString()); - if (this.tokens.get(this.index).type !== Token_1.Token.EOF) { - buf.push(String(this.tokens.get(this.index).text)); - } - return this.index + 1; - } - }; - __decorate([ - Decorators_1.Override - ], InsertBeforeOp.prototype, "execute", null); - var InsertAfterOp = class extends InsertBeforeOp { - constructor(tokens2, index, instructionIndex, text) { - super(tokens2, index + 1, instructionIndex, text); - } - }; - var ReplaceOp = class extends RewriteOperation { - constructor(tokens2, from, to, instructionIndex, text) { - super(tokens2, from, instructionIndex, text); - this.lastIndex = to; - } - execute(buf) { - if (this.text != null) { - buf.push(this.text.toString()); + let result = this.addDFAEdge(dfa, s, t, contextElements, reach, contextCache); + return [result, remainingGlobalContext]; } - return this.lastIndex + 1; - } - toString() { - if (this.text == null) { - return ""; + removeAllConfigsNotInRuleStopState(configs, contextCache) { + if (PredictionMode_1.PredictionMode.allConfigsInRuleStopStates(configs)) { + return configs; + } + let result = new ATNConfigSet_1.ATNConfigSet(); + for (let config of configs) { + if (!(config.state instanceof RuleStopState_1.RuleStopState)) { + continue; + } + result.add(config, contextCache); + } + return result; } - return "'; - } - }; - __decorate([ - Decorators_1.Override - ], ReplaceOp.prototype, "execute", null); - __decorate([ - Decorators_1.Override - ], ReplaceOp.prototype, "toString", null); - }); - - // node_modules/antlr4ts/Vocabulary.js - var require_Vocabulary = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/WritableToken.js - var require_WritableToken = __commonJS((exports) => { - init_process_shim(); - "use strict"; - Object.defineProperty(exports, "__esModule", {value: true}); - }); - - // node_modules/antlr4ts/index.js - var require_antlr4ts = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - Object.defineProperty(o, k2, {enumerable: true, get: function() { - return m[k]; - }}); - } : function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - o[k2] = m[k]; - }); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) - if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) - __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", {value: true}); - __exportStar(require_ANTLRErrorListener(), exports); - __exportStar(require_ANTLRErrorStrategy(), exports); - __exportStar(require_ANTLRInputStream(), exports); - __exportStar(require_BailErrorStrategy(), exports); - __exportStar(require_BufferedTokenStream(), exports); - __exportStar(require_CharStream(), exports); - __exportStar(require_CharStreams(), exports); - __exportStar(require_CodePointBuffer(), exports); - __exportStar(require_CodePointCharStream(), exports); - __exportStar(require_CommonToken(), exports); - __exportStar(require_CommonTokenFactory(), exports); - __exportStar(require_CommonTokenStream(), exports); - __exportStar(require_ConsoleErrorListener(), exports); - __exportStar(require_DefaultErrorStrategy(), exports); - __exportStar(require_Dependents(), exports); - __exportStar(require_DiagnosticErrorListener(), exports); - __exportStar(require_FailedPredicateException(), exports); - __exportStar(require_InputMismatchException(), exports); - __exportStar(require_InterpreterRuleContext(), exports); - __exportStar(require_IntStream(), exports); - __exportStar(require_Lexer(), exports); - __exportStar(require_LexerInterpreter(), exports); - __exportStar(require_LexerNoViableAltException(), exports); - __exportStar(require_ListTokenSource(), exports); - __exportStar(require_NoViableAltException(), exports); - __exportStar(require_Parser(), exports); - __exportStar(require_ParserErrorListener(), exports); - __exportStar(require_ParserInterpreter(), exports); - __exportStar(require_ParserRuleContext(), exports); - __exportStar(require_ProxyErrorListener(), exports); - __exportStar(require_ProxyParserErrorListener(), exports); - __exportStar(require_RecognitionException(), exports); - __exportStar(require_Recognizer(), exports); - __exportStar(require_RuleContext(), exports); - __exportStar(require_RuleContextWithAltNum(), exports); - __exportStar(require_RuleDependency(), exports); - __exportStar(require_RuleVersion(), exports); - __exportStar(require_Token(), exports); - __exportStar(require_TokenFactory(), exports); - __exportStar(require_TokenSource(), exports); - __exportStar(require_TokenStream(), exports); - __exportStar(require_TokenStreamRewriter(), exports); - __exportStar(require_Vocabulary(), exports); - __exportStar(require_VocabularyImpl(), exports); - __exportStar(require_WritableToken(), exports); - }); - - // node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js - var require_AbstractParseTreeVisitor = __commonJS((exports) => { - init_process_shim(); - "use strict"; - var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - var __param = exports && exports.__param || function(paramIndex, decorator) { - return function(target, key) { - decorator(target, key, paramIndex); - }; - }; - Object.defineProperty(exports, "__esModule", {value: true}); - exports.AbstractParseTreeVisitor = void 0; - var Decorators_1 = require_Decorators(); - var AbstractParseTreeVisitor2 = class { - visit(tree) { - return tree.accept(this); - } - visitChildren(node) { - let result = this.defaultResult(); - let n = node.childCount; - for (let i = 0; i < n; i++) { - if (!this.shouldVisitNextChild(node, result)) { - break; + computeStartState(dfa, globalContext, useContext) { + let s0 = dfa.isPrecedenceDfa ? dfa.getPrecedenceStartState(this._parser.precedence, useContext) : useContext ? dfa.s0full : dfa.s0; + if (s0 != null) { + if (!useContext) { + return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, globalContext); + } + s0.setContextSensitive(this.atn); + } + let decision = dfa.decision; + let p = dfa.atnStartState; + let previousContext = 0; + let remainingGlobalContext = globalContext; + let initialContext = useContext ? PredictionContext_1.PredictionContext.EMPTY_FULL : PredictionContext_1.PredictionContext.EMPTY_LOCAL; + let contextCache = new PredictionContextCache_1.PredictionContextCache(); + if (useContext) { + if (!this.enable_global_context_dfa) { + while (remainingGlobalContext != null) { + if (remainingGlobalContext.isEmpty) { + previousContext = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; + remainingGlobalContext = void 0; + } else { + previousContext = this.getReturnState(remainingGlobalContext); + initialContext = initialContext.appendSingleContext(previousContext, contextCache); + remainingGlobalContext = remainingGlobalContext.parent; + } + } + } + while (s0 != null && s0.isContextSensitive && remainingGlobalContext != null) { + let next; + remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); + if (remainingGlobalContext.isEmpty) { + next = s0.getContextTarget(PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY); + previousContext = PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; + remainingGlobalContext = void 0; + } else { + previousContext = this.getReturnState(remainingGlobalContext); + next = s0.getContextTarget(previousContext); + initialContext = initialContext.appendSingleContext(previousContext, contextCache); + remainingGlobalContext = remainingGlobalContext.parent; + } + if (next == null) { + break; + } + s0 = next; + } } - let c = node.getChild(i); - let childResult = c.accept(this); - result = this.aggregateResult(result, childResult); - } - return result; - } - visitTerminal(node) { - return this.defaultResult(); - } - visitErrorNode(node) { - return this.defaultResult(); - } - aggregateResult(aggregate, nextResult) { - return nextResult; - } - shouldVisitNextChild(node, currentResult) { - return true; - } - }; - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], AbstractParseTreeVisitor2.prototype, "visit", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], AbstractParseTreeVisitor2.prototype, "visitChildren", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], AbstractParseTreeVisitor2.prototype, "visitTerminal", null); - __decorate([ - Decorators_1.Override, - __param(0, Decorators_1.NotNull) - ], AbstractParseTreeVisitor2.prototype, "visitErrorNode", null); - __decorate([ - __param(0, Decorators_1.NotNull) - ], AbstractParseTreeVisitor2.prototype, "shouldVisitNextChild", null); - exports.AbstractParseTreeVisitor = AbstractParseTreeVisitor2; - }); - - // node_modules/antlr4/src/antlr4/Utils.js - var require_Utils2 = __commonJS((exports, module) => { - init_process_shim(); - function arrayToString(a) { - return Array.isArray(a) ? "[" + a.join(", ") + "]" : "null"; - } - String.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32)); - String.prototype.hashCode = function() { - const key = this.toString(); - let h1b, k1; - const remainder = key.length & 3; - const bytes = key.length - remainder; - let h1 = String.prototype.seed; - const c1 = 3432918353; - const c2 = 461845907; - let i = 0; - while (i < bytes) { - k1 = key.charCodeAt(i) & 255 | (key.charCodeAt(++i) & 255) << 8 | (key.charCodeAt(++i) & 255) << 16 | (key.charCodeAt(++i) & 255) << 24; - ++i; - k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295; - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295; - h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1b = (h1 & 65535) * 5 + (((h1 >>> 16) * 5 & 65535) << 16) & 4294967295; - h1 = (h1b & 65535) + 27492 + (((h1b >>> 16) + 58964 & 65535) << 16); - } - k1 = 0; - switch (remainder) { - case 3: - k1 ^= (key.charCodeAt(i + 2) & 255) << 16; - case 2: - k1 ^= (key.charCodeAt(i + 1) & 255) << 8; - case 1: - k1 ^= key.charCodeAt(i) & 255; - k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295; - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295; - h1 ^= k1; - } - h1 ^= key.length; - h1 ^= h1 >>> 16; - h1 = (h1 & 65535) * 2246822507 + (((h1 >>> 16) * 2246822507 & 65535) << 16) & 4294967295; - h1 ^= h1 >>> 13; - h1 = (h1 & 65535) * 3266489909 + (((h1 >>> 16) * 3266489909 & 65535) << 16) & 4294967295; - h1 ^= h1 >>> 16; - return h1 >>> 0; - }; - function standardEqualsFunction(a, b) { - return a ? a.equals(b) : a == b; - } - function standardHashCodeFunction(a) { - return a ? a.hashCode() : -1; - } - var Set2 = class { - constructor(hashFunction, equalsFunction) { - this.data = {}; - this.hashFunction = hashFunction || standardHashCodeFunction; - this.equalsFunction = equalsFunction || standardEqualsFunction; - } - add(value) { - const hash = this.hashFunction(value); - const key = "hash_" + hash; - if (key in this.data) { - const values = this.data[key]; - for (let i = 0; i < values.length; i++) { - if (this.equalsFunction(value, values[i])) { - return values[i]; - } - } - values.push(value); - return value; - } else { - this.data[key] = [value]; - return value; - } - } - contains(value) { - return this.get(value) != null; - } - get(value) { - const hash = this.hashFunction(value); - const key = "hash_" + hash; - if (key in this.data) { - const values = this.data[key]; - for (let i = 0; i < values.length; i++) { - if (this.equalsFunction(value, values[i])) { - return values[i]; + if (s0 != null && !s0.isContextSensitive) { + return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, remainingGlobalContext); + } + let configs = new ATNConfigSet_1.ATNConfigSet(); + while (true) { + let reachIntermediate = new ATNConfigSet_1.ATNConfigSet(); + let n = p.numberOfTransitions; + for (let ti = 0; ti < n; ti++) { + let target = p.transition(ti).target; + reachIntermediate.add(ATNConfig_1.ATNConfig.create(target, ti + 1, initialContext)); + } + let hasMoreContext = remainingGlobalContext != null; + if (!hasMoreContext) { + configs.isOutermostConfigSet = true; + } + let collectPredicates = true; + this.closure(reachIntermediate, configs, collectPredicates, hasMoreContext, contextCache, false); + let stepIntoGlobal = configs.dipsIntoOuterContext; + let next; + if (useContext && !this.enable_global_context_dfa) { + s0 = this.addDFAState(dfa, configs, contextCache); + break; + } else if (s0 == null) { + if (!dfa.isPrecedenceDfa) { + next = this.addDFAState(dfa, configs, contextCache); + if (useContext) { + if (!dfa.s0full) { + dfa.s0full = next; + } else { + next = dfa.s0full; + } + } else { + if (!dfa.s0) { + dfa.s0 = next; + } else { + next = dfa.s0; + } + } + } else { + configs = this.applyPrecedenceFilter(configs, globalContext, contextCache); + next = this.addDFAState(dfa, configs, contextCache); + dfa.setPrecedenceStartState(this._parser.precedence, useContext, next); + } + } else { + if (dfa.isPrecedenceDfa) { + configs = this.applyPrecedenceFilter(configs, globalContext, contextCache); + } + next = this.addDFAState(dfa, configs, contextCache); + s0.setContextTarget(previousContext, next); + } + s0 = next; + if (!useContext || !stepIntoGlobal) { + break; + } + next.setContextSensitive(this.atn); + remainingGlobalContext = remainingGlobalContext; + configs.clear(); + remainingGlobalContext = this.skipTailCalls(remainingGlobalContext); + let nextContextElement = this.getReturnState(remainingGlobalContext); + if (remainingGlobalContext.isEmpty) { + remainingGlobalContext = void 0; + } else { + remainingGlobalContext = remainingGlobalContext.parent; + } + if (nextContextElement !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + initialContext = initialContext.appendSingleContext(nextContextElement, contextCache); } + previousContext = nextContextElement; } + return new SimulatorState_1.SimulatorState(globalContext, s0, useContext, remainingGlobalContext); } - return null; - } - values() { - let l = []; - for (const key in this.data) { - if (key.indexOf("hash_") === 0) { - l = l.concat(this.data[key]); + applyPrecedenceFilter(configs, globalContext, contextCache) { + let statesFromAlt1 = new Map(); + let configSet = new ATNConfigSet_1.ATNConfigSet(); + for (let config of configs) { + if (config.alt !== 1) { + continue; + } + let updatedContext = config.semanticContext.evalPrecedence(this._parser, globalContext); + if (updatedContext == null) { + continue; + } + statesFromAlt1.set(config.state.stateNumber, config.context); + if (updatedContext !== config.semanticContext) { + configSet.add(config.transform(config.state, false, updatedContext), contextCache); + } else { + configSet.add(config, contextCache); + } + } + for (let config of configs) { + if (config.alt === 1) { + continue; + } + if (!config.isPrecedenceFilterSuppressed) { + let context = statesFromAlt1.get(config.state.stateNumber); + if (context != null && context.equals(config.context)) { + continue; + } + } + configSet.add(config, contextCache); } + return configSet; } - return l; - } - toString() { - return arrayToString(this.values()); - } - get length() { - let l = 0; - for (const key in this.data) { - if (key.indexOf("hash_") === 0) { - l = l + this.data[key].length; + getReachableTarget(source, trans, ttype) { + if (trans.matches(ttype, 0, this.atn.maxTokenType)) { + return trans.target; } + return void 0; } - return l; - } - }; - var BitSet = class { - constructor() { - this.data = []; - } - add(value) { - this.data[value] = true; - } - or(set) { - const bits = this; - Object.keys(set.data).map(function(alt) { - bits.add(alt); - }); - } - remove(value) { - delete this.data[value]; - } - contains(value) { - return this.data[value] === true; - } - values() { - return Object.keys(this.data); - } - minValue() { - return Math.min.apply(null, this.values()); - } - hashCode() { - const hash = new Hash2(); - hash.update(this.values()); - return hash.finish(); - } - equals(other) { - if (!(other instanceof BitSet)) { - return false; + predicateDFAState(D, configs, nalts) { + let conflictingAlts = this.getConflictingAltsFromConfigSet(configs); + if (!conflictingAlts) { + throw new Error("This unhandled scenario is intended to be unreachable, but I'm currently not sure of why we know that's the case."); + } + if (ParserATNSimulator4.debug) { + console.log("predicateDFAState " + D); + } + let altToPred = this.getPredsForAmbigAlts(conflictingAlts, configs, nalts); + let predPredictions; + if (altToPred != null) { + predPredictions = this.getPredicatePredictions(conflictingAlts, altToPred); + D.predicates = predPredictions; + } + return predPredictions; } - return this.hashCode() === other.hashCode(); - } - toString() { - return "{" + this.values().join(", ") + "}"; - } - get length() { - return this.values().length; - } - }; - var Map2 = class { - constructor(hashFunction, equalsFunction) { - this.data = {}; - this.hashFunction = hashFunction || standardHashCodeFunction; - this.equalsFunction = equalsFunction || standardEqualsFunction; - } - put(key, value) { - const hashKey = "hash_" + this.hashFunction(key); - if (hashKey in this.data) { - const entries = this.data[hashKey]; - for (let i = 0; i < entries.length; i++) { - const entry = entries[i]; - if (this.equalsFunction(key, entry.key)) { - const oldValue = entry.value; - entry.value = value; - return oldValue; + getPredsForAmbigAlts(ambigAlts, configs, nalts) { + let altToPred = new Array(nalts + 1); + let n = altToPred.length; + for (let c of configs) { + if (ambigAlts.get(c.alt)) { + altToPred[c.alt] = SemanticContext_1.SemanticContext.or(altToPred[c.alt], c.semanticContext); } } - entries.push({key, value}); - return value; - } else { - this.data[hashKey] = [{key, value}]; - return value; - } - } - containsKey(key) { - const hashKey = "hash_" + this.hashFunction(key); - if (hashKey in this.data) { - const entries = this.data[hashKey]; - for (let i = 0; i < entries.length; i++) { - const entry = entries[i]; - if (this.equalsFunction(key, entry.key)) - return true; + let nPredAlts = 0; + for (let i = 0; i < n; i++) { + if (altToPred[i] == null) { + altToPred[i] = SemanticContext_1.SemanticContext.NONE; + } else if (altToPred[i] !== SemanticContext_1.SemanticContext.NONE) { + nPredAlts++; + } } - } - return false; - } - get(key) { - const hashKey = "hash_" + this.hashFunction(key); - if (hashKey in this.data) { - const entries = this.data[hashKey]; - for (let i = 0; i < entries.length; i++) { - const entry = entries[i]; - if (this.equalsFunction(key, entry.key)) - return entry.value; + let result = altToPred; + if (nPredAlts === 0) { + result = void 0; } - } - return null; - } - entries() { - let l = []; - for (const key in this.data) { - if (key.indexOf("hash_") === 0) { - l = l.concat(this.data[key]); + if (ParserATNSimulator4.debug) { + console.log("getPredsForAmbigAlts result " + (result ? Arrays_1.Arrays.toString(result) : "undefined")); } + return result; } - return l; - } - getKeys() { - return this.entries().map(function(e) { - return e.key; - }); - } - getValues() { - return this.entries().map(function(e) { - return e.value; - }); - } - toString() { - const ss = this.entries().map(function(entry) { - return "{" + entry.key + ":" + entry.value + "}"; - }); - return "[" + ss.join(", ") + "]"; - } - get length() { - let l = 0; - for (const hashKey in this.data) { - if (hashKey.indexOf("hash_") === 0) { - l = l + this.data[hashKey].length; + getPredicatePredictions(ambigAlts, altToPred) { + let pairs = []; + let containsPredicate = false; + for (let i = 1; i < altToPred.length; i++) { + let pred = altToPred[i]; + assert(pred != null); + if (ambigAlts != null && ambigAlts.get(i) && pred === SemanticContext_1.SemanticContext.NONE) { + pairs.push(new DFAState_1.DFAState.PredPrediction(pred, i)); + } else if (pred !== SemanticContext_1.SemanticContext.NONE) { + containsPredicate = true; + pairs.push(new DFAState_1.DFAState.PredPrediction(pred, i)); + } } + if (!containsPredicate) { + return void 0; + } + return pairs; } - return l; - } - }; - var AltDict = class { - constructor() { - this.data = {}; - } - get(key) { - key = "k-" + key; - if (key in this.data) { - return this.data[key]; - } else { - return null; - } - } - put(key, value) { - key = "k-" + key; - this.data[key] = value; - } - values() { - const data = this.data; - const keys = Object.keys(this.data); - return keys.map(function(key) { - return data[key]; - }); - } - }; - var DoubleDict = class { - constructor(defaultMapCtor) { - this.defaultMapCtor = defaultMapCtor || Map2; - this.cacheMap = new this.defaultMapCtor(); - } - get(a, b) { - const d = this.cacheMap.get(a) || null; - return d === null ? null : d.get(b) || null; - } - set(a, b, o) { - let d = this.cacheMap.get(a) || null; - if (d === null) { - d = new this.defaultMapCtor(); - this.cacheMap.put(a, d); - } - d.put(b, o); - } - }; - var Hash2 = class { - constructor() { - this.count = 0; - this.hash = 0; - } - update() { - for (let i = 0; i < arguments.length; i++) { - const value = arguments[i]; - if (value == null) - continue; - if (Array.isArray(value)) - this.update.apply(this, value); - else { - let k = 0; - switch (typeof value) { - case "undefined": - case "function": - continue; - case "number": - case "boolean": - k = value; + evalSemanticContext(predPredictions, outerContext, complete) { + let predictions = new BitSet_1.BitSet(); + for (let pair of predPredictions) { + if (pair.pred === SemanticContext_1.SemanticContext.NONE) { + predictions.set(pair.alt); + if (!complete) { break; - case "string": - k = value.hashCode(); + } + continue; + } + let evaluatedResult = this.evalSemanticContextImpl(pair.pred, outerContext, pair.alt); + if (ParserATNSimulator4.debug || ParserATNSimulator4.dfa_debug) { + console.log("eval pred " + pair + "=" + evaluatedResult); + } + if (evaluatedResult) { + if (ParserATNSimulator4.debug || ParserATNSimulator4.dfa_debug) { + console.log("PREDICT " + pair.alt); + } + predictions.set(pair.alt); + if (!complete) { break; - default: - if (value.updateHashCode) - value.updateHashCode(this); - else - console.log("No updateHashCode for " + value.toString()); - continue; + } } - k = k * 3432918353; - k = k << 15 | k >>> 32 - 15; - k = k * 461845907; - this.count = this.count + 1; - let hash = this.hash ^ k; - hash = hash << 13 | hash >>> 32 - 13; - hash = hash * 5 + 3864292196; - this.hash = hash; } + return predictions; } - } - finish() { - let hash = this.hash ^ this.count * 4; - hash = hash ^ hash >>> 16; - hash = hash * 2246822507; - hash = hash ^ hash >>> 13; - hash = hash * 3266489909; - hash = hash ^ hash >>> 16; - return hash; - } - }; - function hashStuff() { - const hash = new Hash2(); - hash.update.apply(hash, arguments); - return hash.finish(); - } - function escapeWhitespace(s, escapeSpaces) { - s = s.replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r"); - if (escapeSpaces) { - s = s.replace(/ /g, "\xB7"); - } - return s; - } - function titleCase(str) { - return str.replace(/\w\S*/g, function(txt) { - return txt.charAt(0).toUpperCase() + txt.substr(1); - }); - } - function equalArrays(a, b) { - if (!Array.isArray(a) || !Array.isArray(b)) - return false; - if (a === b) - return true; - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) { - if (a[i] === b[i]) - continue; - if (!a[i].equals || !a[i].equals(b[i])) - return false; - } - return true; - } - module.exports = { - Hash: Hash2, - Set: Set2, - Map: Map2, - BitSet, - AltDict, - DoubleDict, - hashStuff, - escapeWhitespace, - arrayToString, - titleCase, - equalArrays - }; - }); - - // node_modules/antlr4/src/antlr4/Token.js - var require_Token2 = __commonJS((exports, module) => { - init_process_shim(); - var Token2 = class { - constructor() { - this.source = null; - this.type = null; - this.channel = null; - this.start = null; - this.stop = null; - this.tokenIndex = null; - this.line = null; - this.column = null; - this._text = null; - } - getTokenSource() { - return this.source[0]; - } - getInputStream() { - return this.source[1]; - } - get text() { - return this._text; - } - set text(text) { - this._text = text; - } - }; - Token2.INVALID_TYPE = 0; - Token2.EPSILON = -2; - Token2.MIN_USER_TOKEN_TYPE = 1; - Token2.EOF = -1; - Token2.DEFAULT_CHANNEL = 0; - Token2.HIDDEN_CHANNEL = 1; - var CommonToken = class extends Token2 { - constructor(source, type, channel, start, stop) { - super(); - this.source = source !== void 0 ? source : CommonToken.EMPTY_SOURCE; - this.type = type !== void 0 ? type : null; - this.channel = channel !== void 0 ? channel : Token2.DEFAULT_CHANNEL; - this.start = start !== void 0 ? start : -1; - this.stop = stop !== void 0 ? stop : -1; - this.tokenIndex = -1; - if (this.source[0] !== null) { - this.line = source[0].line; - this.column = source[0].column; - } else { - this.column = -1; + evalSemanticContextImpl(pred, parserCallStack, alt) { + return pred.eval(this._parser, parserCallStack); } - } - clone() { - const t = new CommonToken(this.source, this.type, this.channel, this.start, this.stop); - t.tokenIndex = this.tokenIndex; - t.line = this.line; - t.column = this.column; - t.text = this.text; - return t; - } - toString() { - let txt = this.text; - if (txt !== null) { - txt = txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t"); - } else { - txt = ""; + closure(sourceConfigs, configs, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon) { + if (contextCache == null) { + contextCache = PredictionContextCache_1.PredictionContextCache.UNCACHED; + } + let currentConfigs = sourceConfigs; + let closureBusy = new Array2DHashSet_1.Array2DHashSet(ObjectEqualityComparator_1.ObjectEqualityComparator.INSTANCE); + while (currentConfigs.size > 0) { + let intermediate = new ATNConfigSet_1.ATNConfigSet(); + for (let config of currentConfigs) { + this.closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContext, contextCache, 0, treatEofAsEpsilon); + } + currentConfigs = intermediate; + } } - return "[@" + this.tokenIndex + "," + this.start + ":" + this.stop + "='" + txt + "',<" + this.type + ">" + (this.channel > 0 ? ",channel=" + this.channel : "") + "," + this.line + ":" + this.column + "]"; - } - get text() { - if (this._text !== null) { - return this._text; + closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth, treatEofAsEpsilon) { + if (ParserATNSimulator4.debug) { + console.log("closure(" + config.toString(this._parser, true) + ")"); + } + if (config.state instanceof RuleStopState_1.RuleStopState) { + if (!config.context.isEmpty) { + let hasEmpty = config.context.hasEmpty; + let nonEmptySize = config.context.size - (hasEmpty ? 1 : 0); + for (let i = 0; i < nonEmptySize; i++) { + let newContext = config.context.getParent(i); + let returnState = this.atn.states[config.context.getReturnState(i)]; + let c = ATNConfig_1.ATNConfig.create(returnState, config.alt, newContext, config.semanticContext); + c.outerContextDepth = config.outerContextDepth; + c.isPrecedenceFilterSuppressed = config.isPrecedenceFilterSuppressed; + assert(depth > MIN_INTEGER_VALUE); + this.closureImpl(c, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth - 1, treatEofAsEpsilon); + } + if (!hasEmpty || !hasMoreContexts) { + return; + } + config = config.transform(config.state, false, PredictionContext_1.PredictionContext.EMPTY_LOCAL); + } else if (!hasMoreContexts) { + configs.add(config, contextCache); + return; + } else { + if (ParserATNSimulator4.debug) { + console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); + } + if (config.context === PredictionContext_1.PredictionContext.EMPTY_FULL) { + config = config.transform(config.state, false, PredictionContext_1.PredictionContext.EMPTY_LOCAL); + } else if (!config.reachesIntoOuterContext && PredictionContext_1.PredictionContext.isEmptyLocal(config.context)) { + configs.add(config, contextCache); + } + } + } + let p = config.state; + if (!p.onlyHasEpsilonTransitions) { + configs.add(config, contextCache); + if (ParserATNSimulator4.debug) { + console.log("added config " + configs); + } + } + for (let i = 0; i < p.numberOfOptimizedTransitions; i++) { + if (i === 0 && p.stateType === ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY && p.precedenceRuleDecision && !config.context.hasEmpty) { + let precedenceDecision = p; + let suppress = true; + for (let j = 0; j < config.context.size; j++) { + if (!precedenceDecision.precedenceLoopbackStates.get(config.context.getReturnState(j))) { + suppress = false; + break; + } + } + if (suppress) { + continue; + } + } + let t = p.getOptimizedTransition(i); + let continueCollecting = !(t instanceof ActionTransition_1.ActionTransition) && collectPredicates; + let c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, contextCache, treatEofAsEpsilon); + if (c != null) { + if (t instanceof RuleTransition_1.RuleTransition) { + if (intermediate != null && !collectPredicates) { + intermediate.add(c, contextCache); + continue; + } + } + let newDepth = depth; + if (config.state instanceof RuleStopState_1.RuleStopState) { + if (this.dfa != null && this.dfa.isPrecedenceDfa) { + let outermostPrecedenceReturn = t.outermostPrecedenceReturn; + if (outermostPrecedenceReturn === this.dfa.atnStartState.ruleIndex) { + c.isPrecedenceFilterSuppressed = true; + } + } + c.outerContextDepth = c.outerContextDepth + 1; + if (!closureBusy.add(c)) { + continue; + } + assert(newDepth > MIN_INTEGER_VALUE); + newDepth--; + if (ParserATNSimulator4.debug) { + console.log("dips into outer ctx: " + c); + } + } else if (t instanceof RuleTransition_1.RuleTransition) { + if (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext_1.PredictionContext.isEmptyLocal(config.context))) { + assert(c.context === config.context); + if (newDepth === 0) { + newDepth--; + if (!this.tail_call_preserves_sll && PredictionContext_1.PredictionContext.isEmptyLocal(config.context)) { + c.outerContextDepth = c.outerContextDepth + 1; + } + } + } else { + if (newDepth >= 0) { + newDepth++; + } + } + } else { + if (!t.isEpsilon && !closureBusy.add(c)) { + continue; + } + } + this.closureImpl(c, configs, intermediate, closureBusy, continueCollecting, hasMoreContexts, contextCache, newDepth, treatEofAsEpsilon); + } + } } - const input = this.getInputStream(); - if (input === null) { - return null; + getRuleName(index) { + if (this._parser != null && index >= 0) { + return this._parser.ruleNames[index]; + } + return ""; } - const n = input.size; - if (this.start < n && this.stop < n) { - return input.getText(this.start, this.stop); - } else { - return ""; + getEpsilonTarget(config, t, collectPredicates, inContext, contextCache, treatEofAsEpsilon) { + switch (t.serializationType) { + case 3: + return this.ruleTransition(config, t, contextCache); + case 10: + return this.precedenceTransition(config, t, collectPredicates, inContext); + case 4: + return this.predTransition(config, t, collectPredicates, inContext); + case 6: + return this.actionTransition(config, t); + case 1: + return config.transform(t.target, false); + case 5: + case 2: + case 7: + if (treatEofAsEpsilon) { + if (t.matches(Token_1.Token.EOF, 0, 1)) { + return config.transform(t.target, false); + } + } + return void 0; + default: + return void 0; + } } - } - set text(text) { - this._text = text; - } - }; - CommonToken.EMPTY_SOURCE = [null, null]; - module.exports = { - Token: Token2, - CommonToken - }; - }); - - // node_modules/antlr4/src/antlr4/atn/ATNState.js - var require_ATNState2 = __commonJS((exports, module) => { - init_process_shim(); - var ATNState = class { - constructor() { - this.atn = null; - this.stateNumber = ATNState.INVALID_STATE_NUMBER; - this.stateType = null; - this.ruleIndex = 0; - this.epsilonOnlyTransitions = false; - this.transitions = []; - this.nextTokenWithinRule = null; - } - toString() { - return this.stateNumber; - } - equals(other) { - if (other instanceof ATNState) { - return this.stateNumber === other.stateNumber; - } else { - return false; - } - } - isNonGreedyExitState() { - return false; - } - addTransition(trans, index) { - if (index === void 0) { - index = -1; - } - if (this.transitions.length === 0) { - this.epsilonOnlyTransitions = trans.isEpsilon; - } else if (this.epsilonOnlyTransitions !== trans.isEpsilon) { - this.epsilonOnlyTransitions = false; - } - if (index === -1) { - this.transitions.push(trans); - } else { - this.transitions.splice(index, 1, trans); - } - } - }; - ATNState.INVALID_TYPE = 0; - ATNState.BASIC = 1; - ATNState.RULE_START = 2; - ATNState.BLOCK_START = 3; - ATNState.PLUS_BLOCK_START = 4; - ATNState.STAR_BLOCK_START = 5; - ATNState.TOKEN_START = 6; - ATNState.RULE_STOP = 7; - ATNState.BLOCK_END = 8; - ATNState.STAR_LOOP_BACK = 9; - ATNState.STAR_LOOP_ENTRY = 10; - ATNState.PLUS_LOOP_BACK = 11; - ATNState.LOOP_END = 12; - ATNState.serializationNames = [ - "INVALID", - "BASIC", - "RULE_START", - "BLOCK_START", - "PLUS_BLOCK_START", - "STAR_BLOCK_START", - "TOKEN_START", - "RULE_STOP", - "BLOCK_END", - "STAR_LOOP_BACK", - "STAR_LOOP_ENTRY", - "PLUS_LOOP_BACK", - "LOOP_END" - ]; - ATNState.INVALID_STATE_NUMBER = -1; - var BasicState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.BASIC; - } - }; - var DecisionState = class extends ATNState { - constructor() { - super(); - this.decision = -1; - this.nonGreedy = false; - return this; - } - }; - var BlockStartState = class extends DecisionState { - constructor() { - super(); - this.endState = null; - return this; - } - }; - var BasicBlockStartState = class extends BlockStartState { - constructor() { - super(); - this.stateType = ATNState.BLOCK_START; - return this; - } - }; - var BlockEndState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.BLOCK_END; - this.startState = null; - return this; - } - }; - var RuleStopState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.RULE_STOP; - return this; - } - }; - var RuleStartState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.RULE_START; - this.stopState = null; - this.isPrecedenceRule = false; - return this; - } - }; - var PlusLoopbackState = class extends DecisionState { - constructor() { - super(); - this.stateType = ATNState.PLUS_LOOP_BACK; - return this; - } - }; - var PlusBlockStartState = class extends BlockStartState { - constructor() { - super(); - this.stateType = ATNState.PLUS_BLOCK_START; - this.loopBackState = null; - return this; - } - }; - var StarBlockStartState = class extends BlockStartState { - constructor() { - super(); - this.stateType = ATNState.STAR_BLOCK_START; - return this; - } - }; - var StarLoopbackState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.STAR_LOOP_BACK; - return this; - } - }; - var StarLoopEntryState = class extends DecisionState { - constructor() { - super(); - this.stateType = ATNState.STAR_LOOP_ENTRY; - this.loopBackState = null; - this.isPrecedenceDecision = null; - return this; - } - }; - var LoopEndState = class extends ATNState { - constructor() { - super(); - this.stateType = ATNState.LOOP_END; - this.loopBackState = null; - return this; - } - }; - var TokensStartState = class extends DecisionState { - constructor() { - super(); - this.stateType = ATNState.TOKEN_START; - return this; - } - }; - module.exports = { - ATNState, - BasicState, - DecisionState, - BlockStartState, - BlockEndState, - LoopEndState, - RuleStartState, - RuleStopState, - TokensStartState, - PlusLoopbackState, - StarLoopbackState, - StarLoopEntryState, - PlusBlockStartState, - StarBlockStartState, - BasicBlockStartState - }; - }); - - // node_modules/antlr4/src/antlr4/atn/SemanticContext.js - var require_SemanticContext2 = __commonJS((exports, module) => { - init_process_shim(); - var {Set: Set2, Hash: Hash2, equalArrays} = require_Utils2(); - var SemanticContext = class { - hashCode() { - const hash = new Hash2(); - this.updateHashCode(hash); - return hash.finish(); - } - evaluate(parser, outerContext) { - } - evalPrecedence(parser, outerContext) { - return this; - } - static andContext(a, b) { - if (a === null || a === SemanticContext.NONE) { - return b; - } - if (b === null || b === SemanticContext.NONE) { - return a; - } - const result = new AND(a, b); - if (result.opnds.length === 1) { - return result.opnds[0]; - } else { - return result; + actionTransition(config, t) { + if (ParserATNSimulator4.debug) { + console.log("ACTION edge " + t.ruleIndex + ":" + t.actionIndex); + } + return config.transform(t.target, false); } - } - static orContext(a, b) { - if (a === null) { - return b; + precedenceTransition(config, pt, collectPredicates, inContext) { + if (ParserATNSimulator4.debug) { + console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.precedence + ">=_p, ctx dependent=true"); + if (this._parser != null) { + console.log("context surrounding pred is " + this._parser.getRuleInvocationStack()); + } + } + let c; + if (collectPredicates && inContext) { + let newSemCtx = SemanticContext_1.SemanticContext.and(config.semanticContext, pt.predicate); + c = config.transform(pt.target, false, newSemCtx); + } else { + c = config.transform(pt.target, false); + } + if (ParserATNSimulator4.debug) { + console.log("config from pred transition=" + c); + } + return c; } - if (b === null) { - return a; + predTransition(config, pt, collectPredicates, inContext) { + if (ParserATNSimulator4.debug) { + console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.ruleIndex + ":" + pt.predIndex + ", ctx dependent=" + pt.isCtxDependent); + if (this._parser != null) { + console.log("context surrounding pred is " + this._parser.getRuleInvocationStack()); + } + } + let c; + if (collectPredicates && (!pt.isCtxDependent || pt.isCtxDependent && inContext)) { + let newSemCtx = SemanticContext_1.SemanticContext.and(config.semanticContext, pt.predicate); + c = config.transform(pt.target, false, newSemCtx); + } else { + c = config.transform(pt.target, false); + } + if (ParserATNSimulator4.debug) { + console.log("config from pred transition=" + c); + } + return c; } - if (a === SemanticContext.NONE || b === SemanticContext.NONE) { - return SemanticContext.NONE; + ruleTransition(config, t, contextCache) { + if (ParserATNSimulator4.debug) { + console.log("CALL rule " + this.getRuleName(t.target.ruleIndex) + ", ctx=" + config.context); + } + let returnState = t.followState; + let newContext; + if (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext_1.PredictionContext.isEmptyLocal(config.context))) { + newContext = config.context; + } else if (contextCache != null) { + newContext = contextCache.getChild(config.context, returnState.stateNumber); + } else { + newContext = config.context.getChild(returnState.stateNumber); + } + return config.transform(t.target, false, newContext); } - const result = new OR(a, b); - if (result.opnds.length === 1) { - return result.opnds[0]; - } else { - return result; + isConflicted(configset, contextCache) { + if (configset.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER || configset.size <= 1) { + return void 0; + } + let configs = configset.toArray(); + configs.sort(ParserATNSimulator4.STATE_ALT_SORT_COMPARATOR); + let exact = !configset.dipsIntoOuterContext; + let alts = new BitSet_1.BitSet(); + let minAlt = configs[0].alt; + alts.set(minAlt); + let currentState = configs[0].state.nonStopStateNumber; + for (let config of configs) { + let stateNumber = config.state.nonStopStateNumber; + if (stateNumber !== currentState) { + if (config.alt !== minAlt) { + return void 0; + } + currentState = stateNumber; + } + } + let representedAlts; + if (exact) { + currentState = configs[0].state.nonStopStateNumber; + representedAlts = new BitSet_1.BitSet(); + let maxAlt = minAlt; + for (let config of configs) { + if (config.state.nonStopStateNumber !== currentState) { + break; + } + let alt = config.alt; + representedAlts.set(alt); + maxAlt = alt; + } + currentState = configs[0].state.nonStopStateNumber; + let currentAlt = minAlt; + for (let config of configs) { + let stateNumber = config.state.nonStopStateNumber; + let alt = config.alt; + if (stateNumber !== currentState) { + if (currentAlt !== maxAlt) { + exact = false; + break; + } + currentState = stateNumber; + currentAlt = minAlt; + } else if (alt !== currentAlt) { + if (alt !== representedAlts.nextSetBit(currentAlt + 1)) { + exact = false; + break; + } + currentAlt = alt; + } + } + } + currentState = configs[0].state.nonStopStateNumber; + let firstIndexCurrentState = 0; + let lastIndexCurrentStateMinAlt = 0; + let joinedCheckContext = configs[0].context; + for (let i = 1; i < configs.length; i++) { + let config = configs[i]; + if (config.alt !== minAlt) { + break; + } + if (config.state.nonStopStateNumber !== currentState) { + break; + } + lastIndexCurrentStateMinAlt = i; + joinedCheckContext = contextCache.join(joinedCheckContext, configs[i].context); + } + for (let i = lastIndexCurrentStateMinAlt + 1; i < configs.length; i++) { + let config = configs[i]; + let state = config.state; + alts.set(config.alt); + if (state.nonStopStateNumber !== currentState) { + currentState = state.nonStopStateNumber; + firstIndexCurrentState = i; + lastIndexCurrentStateMinAlt = i; + joinedCheckContext = config.context; + for (let j = firstIndexCurrentState + 1; j < configs.length; j++) { + let config2 = configs[j]; + if (config2.alt !== minAlt) { + break; + } + if (config2.state.nonStopStateNumber !== currentState) { + break; + } + lastIndexCurrentStateMinAlt = j; + joinedCheckContext = contextCache.join(joinedCheckContext, config2.context); + } + i = lastIndexCurrentStateMinAlt; + continue; + } + let joinedCheckContext2 = config.context; + let currentAlt = config.alt; + let lastIndexCurrentStateCurrentAlt = i; + for (let j = lastIndexCurrentStateCurrentAlt + 1; j < configs.length; j++) { + let config2 = configs[j]; + if (config2.alt !== currentAlt) { + break; + } + if (config2.state.nonStopStateNumber !== currentState) { + break; + } + lastIndexCurrentStateCurrentAlt = j; + joinedCheckContext2 = contextCache.join(joinedCheckContext2, config2.context); + } + i = lastIndexCurrentStateCurrentAlt; + let check = contextCache.join(joinedCheckContext, joinedCheckContext2); + if (!joinedCheckContext.equals(check)) { + return void 0; + } + exact = exact && joinedCheckContext.equals(joinedCheckContext2); + } + return new ConflictInfo_1.ConflictInfo(alts, exact); } - } - }; - var Predicate = class extends SemanticContext { - constructor(ruleIndex, predIndex, isCtxDependent) { - super(); - this.ruleIndex = ruleIndex === void 0 ? -1 : ruleIndex; - this.predIndex = predIndex === void 0 ? -1 : predIndex; - this.isCtxDependent = isCtxDependent === void 0 ? false : isCtxDependent; - } - evaluate(parser, outerContext) { - const localctx = this.isCtxDependent ? outerContext : null; - return parser.sempred(localctx, this.ruleIndex, this.predIndex); - } - updateHashCode(hash) { - hash.update(this.ruleIndex, this.predIndex, this.isCtxDependent); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof Predicate)) { - return false; - } else { - return this.ruleIndex === other.ruleIndex && this.predIndex === other.predIndex && this.isCtxDependent === other.isCtxDependent; + getConflictingAltsFromConfigSet(configs) { + let conflictingAlts = configs.conflictingAlts; + if (conflictingAlts == null && configs.uniqueAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { + conflictingAlts = new BitSet_1.BitSet(); + conflictingAlts.set(configs.uniqueAlt); + } + return conflictingAlts; } - } - toString() { - return "{" + this.ruleIndex + ":" + this.predIndex + "}?"; - } - }; - SemanticContext.NONE = new Predicate(); - var PrecedencePredicate = class extends SemanticContext { - constructor(precedence) { - super(); - this.precedence = precedence === void 0 ? 0 : precedence; - } - evaluate(parser, outerContext) { - return parser.precpred(outerContext, this.precedence); - } - evalPrecedence(parser, outerContext) { - if (parser.precpred(outerContext, this.precedence)) { - return SemanticContext.NONE; - } else { - return null; + getTokenName(t) { + if (t === Token_1.Token.EOF) { + return "EOF"; + } + let vocabulary = this._parser != null ? this._parser.vocabulary : VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY; + let displayName = vocabulary.getDisplayName(t); + if (displayName === String(t)) { + return displayName; + } + return displayName + "<" + t + ">"; } - } - compareTo(other) { - return this.precedence - other.precedence; - } - updateHashCode(hash) { - hash.update(this.precedence); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof PrecedencePredicate)) { - return false; - } else { - return this.precedence === other.precedence; + getLookaheadName(input) { + return this.getTokenName(input.LA(1)); } - } - toString() { - return "{" + this.precedence + ">=prec}?"; - } - static filterPrecedencePredicates(set) { - const result = []; - set.values().map(function(context) { - if (context instanceof PrecedencePredicate) { - result.push(context); + dumpDeadEndConfigs(nvae) { + console.log("dead end configs: "); + let deadEndConfigs = nvae.deadEndConfigs; + if (!deadEndConfigs) { + return; + } + for (let c of deadEndConfigs) { + let trans = "no edges"; + if (c.state.numberOfOptimizedTransitions > 0) { + let t = c.state.getOptimizedTransition(0); + if (t instanceof AtomTransition_1.AtomTransition) { + trans = "Atom " + this.getTokenName(t._label); + } else if (t instanceof SetTransition_1.SetTransition) { + let not = t instanceof NotSetTransition_1.NotSetTransition; + trans = (not ? "~" : "") + "Set " + t.set.toString(); + } + } + console.log(c.toString(this._parser, true) + ":" + trans); } - }); - return result; - } - }; - var AND = class extends SemanticContext { - constructor(a, b) { - super(); - const operands = new Set2(); - if (a instanceof AND) { - a.opnds.map(function(o) { - operands.add(o); - }); - } else { - operands.add(a); } - if (b instanceof AND) { - b.opnds.map(function(o) { - operands.add(o); - }); - } else { - operands.add(b); + noViableAlt(input, outerContext, configs, startIndex) { + return new NoViableAltException_1.NoViableAltException(this._parser, input, input.get(startIndex), input.LT(1), configs, outerContext); } - const precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands); - if (precedencePredicates.length > 0) { - let reduced = null; - precedencePredicates.map(function(p) { - if (reduced === null || p.precedence < reduced.precedence) { - reduced = p; + getUniqueAlt(configs) { + let alt = ATN_1.ATN.INVALID_ALT_NUMBER; + for (let c of configs) { + if (alt === ATN_1.ATN.INVALID_ALT_NUMBER) { + alt = c.alt; + } else if (c.alt !== alt) { + return ATN_1.ATN.INVALID_ALT_NUMBER; } - }); - operands.add(reduced); + } + return alt; } - this.opnds = Array.from(operands.values()); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof AND)) { + configWithAltAtStopState(configs, alt) { + for (let c of configs) { + if (c.alt === alt) { + if (c.state instanceof RuleStopState_1.RuleStopState) { + return true; + } + } + } return false; - } else { - return equalArrays(this.opnds, other.opnds); } - } - updateHashCode(hash) { - hash.update(this.opnds, "AND"); - } - evaluate(parser, outerContext) { - for (let i = 0; i < this.opnds.length; i++) { - if (!this.opnds[i].evaluate(parser, outerContext)) { - return false; + addDFAEdge(dfa, fromState, t, contextTransitions, toConfigs, contextCache) { + assert(contextTransitions == null || contextTransitions.isEmpty || dfa.isContextSensitive); + let from = fromState; + let to = this.addDFAState(dfa, toConfigs, contextCache); + if (contextTransitions != null) { + for (let context of contextTransitions.toArray()) { + if (context === PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + if (from.configs.isOutermostConfigSet) { + continue; + } + } + from.setContextSensitive(this.atn); + from.setContextSymbol(t); + let next = from.getContextTarget(context); + if (next != null) { + from = next; + continue; + } + next = this.addDFAContextState(dfa, from.configs, context, contextCache); + assert(context !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY || next.configs.isOutermostConfigSet); + from.setContextTarget(context, next); + from = next; + } } - } - return true; - } - evalPrecedence(parser, outerContext) { - let differs = false; - const operands = []; - for (let i = 0; i < this.opnds.length; i++) { - const context = this.opnds[i]; - const evaluated = context.evalPrecedence(parser, outerContext); - differs |= evaluated !== context; - if (evaluated === null) { - return null; - } else if (evaluated !== SemanticContext.NONE) { - operands.push(evaluated); + if (ParserATNSimulator4.debug) { + console.log("EDGE " + from + " -> " + to + " upon " + this.getTokenName(t)); } + this.setDFAEdge(from, t, to); + if (ParserATNSimulator4.debug) { + console.log("DFA=\n" + dfa.toString(this._parser != null ? this._parser.vocabulary : VocabularyImpl_1.VocabularyImpl.EMPTY_VOCABULARY, this._parser != null ? this._parser.ruleNames : void 0)); + } + return to; } - if (!differs) { - return this; - } - if (operands.length === 0) { - return SemanticContext.NONE; + setDFAEdge(p, t, q) { + if (p != null) { + p.setTarget(t, q); + } } - let result = null; - operands.map(function(o) { - result = result === null ? o : SemanticContext.andContext(result, o); - }); - return result; - } - toString() { - const s = this.opnds.map((o) => o.toString()); - return (s.length > 3 ? s.slice(3) : s).join("&&"); - } - }; - var OR = class extends SemanticContext { - constructor(a, b) { - super(); - const operands = new Set2(); - if (a instanceof OR) { - a.opnds.map(function(o) { - operands.add(o); - }); - } else { - operands.add(a); + addDFAContextState(dfa, configs, returnContext, contextCache) { + if (returnContext !== PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY) { + let contextConfigs = new ATNConfigSet_1.ATNConfigSet(); + for (let config of configs) { + contextConfigs.add(config.appendContext(returnContext, contextCache)); + } + return this.addDFAState(dfa, contextConfigs, contextCache); + } else { + assert(!configs.isOutermostConfigSet, "Shouldn't be adding a duplicate edge."); + configs = configs.clone(true); + configs.isOutermostConfigSet = true; + return this.addDFAState(dfa, configs, contextCache); + } } - if (b instanceof OR) { - b.opnds.map(function(o) { - operands.add(o); - }); - } else { - operands.add(b); + addDFAState(dfa, configs, contextCache) { + let enableDfa = this.enable_global_context_dfa || !configs.isOutermostConfigSet; + if (enableDfa) { + if (!configs.isReadOnly) { + configs.optimizeConfigs(this); + } + let proposed = this.createDFAState(dfa, configs); + let existing = dfa.states.get(proposed); + if (existing != null) { + return existing; + } + } + if (!configs.isReadOnly) { + if (configs.conflictInfo == null) { + configs.conflictInfo = this.isConflicted(configs, contextCache); + } + } + let newState = this.createDFAState(dfa, configs.clone(true)); + let decisionState = this.atn.getDecisionState(dfa.decision); + let predictedAlt = this.getUniqueAlt(configs); + if (predictedAlt !== ATN_1.ATN.INVALID_ALT_NUMBER) { + newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(predictedAlt); + } else if (configs.conflictingAlts != null) { + let conflictingAlts = configs.conflictingAlts; + if (conflictingAlts) { + newState.acceptStateInfo = new AcceptStateInfo_1.AcceptStateInfo(conflictingAlts.nextSetBit(0)); + } + } + if (newState.isAcceptState && configs.hasSemanticContext) { + this.predicateDFAState(newState, configs, decisionState.numberOfTransitions); + } + if (!enableDfa) { + return newState; + } + let added = dfa.addState(newState); + if (ParserATNSimulator4.debug && added === newState) { + console.log("adding new DFA state: " + newState); + } + return added; } - const precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands); - if (precedencePredicates.length > 0) { - const s = precedencePredicates.sort(function(a2, b2) { - return a2.compareTo(b2); - }); - const reduced = s[s.length - 1]; - operands.add(reduced); + createDFAState(dfa, configs) { + return new DFAState_1.DFAState(configs); } - this.opnds = Array.from(operands.values()); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof OR)) { - return false; - } else { - return equalArrays(this.opnds, other.opnds); + reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex) { + if (ParserATNSimulator4.debug || ParserATNSimulator4.retry_debug) { + let interval = Interval_1.Interval.of(startIndex, stopIndex); + console.log("reportAttemptingFullContext decision=" + dfa.decision + ":" + conflictState.s0.configs + ", input=" + this._parser.inputStream.getText(interval)); + } + if (this._parser != null) { + let listener = this._parser.getErrorListenerDispatch(); + if (listener.reportAttemptingFullContext) { + listener.reportAttemptingFullContext(this._parser, dfa, startIndex, stopIndex, conflictingAlts, conflictState); + } + } } - } - updateHashCode(hash) { - hash.update(this.opnds, "OR"); - } - evaluate(parser, outerContext) { - for (let i = 0; i < this.opnds.length; i++) { - if (this.opnds[i].evaluate(parser, outerContext)) { - return true; + reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex) { + if (ParserATNSimulator4.debug || ParserATNSimulator4.retry_debug) { + let interval = Interval_1.Interval.of(startIndex, stopIndex); + console.log("reportContextSensitivity decision=" + dfa.decision + ":" + acceptState.s0.configs + ", input=" + this._parser.inputStream.getText(interval)); + } + if (this._parser != null) { + let listener = this._parser.getErrorListenerDispatch(); + if (listener.reportContextSensitivity) { + listener.reportContextSensitivity(this._parser, dfa, startIndex, stopIndex, prediction, acceptState); + } } } - return false; - } - evalPrecedence(parser, outerContext) { - let differs = false; - const operands = []; - for (let i = 0; i < this.opnds.length; i++) { - const context = this.opnds[i]; - const evaluated = context.evalPrecedence(parser, outerContext); - differs |= evaluated !== context; - if (evaluated === SemanticContext.NONE) { - return SemanticContext.NONE; - } else if (evaluated !== null) { - operands.push(evaluated); + reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { + if (ParserATNSimulator4.debug || ParserATNSimulator4.retry_debug) { + let interval = Interval_1.Interval.of(startIndex, stopIndex); + console.log("reportAmbiguity " + ambigAlts + ":" + configs + ", input=" + this._parser.inputStream.getText(interval)); + } + if (this._parser != null) { + let listener = this._parser.getErrorListenerDispatch(); + if (listener.reportAmbiguity) { + listener.reportAmbiguity(this._parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + } } } - if (!differs) { - return this; + getReturnState(context) { + if (context.isEmpty) { + return PredictionContext_1.PredictionContext.EMPTY_FULL_STATE_KEY; + } + let state = this.atn.states[context.invokingState]; + let transition = state.transition(0); + return transition.followState.stateNumber; } - if (operands.length === 0) { - return null; + skipTailCalls(context) { + if (!this.optimize_tail_calls) { + return context; + } + while (!context.isEmpty) { + let state = this.atn.states[context.invokingState]; + assert(state.numberOfTransitions === 1 && state.transition(0).serializationType === 3); + let transition = state.transition(0); + if (!transition.tailCall) { + break; + } + context = context.parent; + } + return context; } - const result = null; - operands.map(function(o) { - return result === null ? o : SemanticContext.orContext(result, o); - }); - return result; - } - toString() { - const s = this.opnds.map((o) => o.toString()); - return (s.length > 3 ? s.slice(3) : s).join("||"); - } - }; - module.exports = { - SemanticContext, - PrecedencePredicate, - Predicate - }; - }); - - // node_modules/antlr4/src/antlr4/atn/ATNConfig.js - var require_ATNConfig2 = __commonJS((exports, module) => { - init_process_shim(); - var {DecisionState} = require_ATNState2(); - var {SemanticContext} = require_SemanticContext2(); - var {Hash: Hash2} = require_Utils2(); - function checkParams(params, isCfg) { - if (params === null) { - const result = {state: null, alt: null, context: null, semanticContext: null}; - if (isCfg) { - result.reachesIntoOuterContext = 0; + get parser() { + return this._parser; } - return result; - } else { - const props = {}; - props.state = params.state || null; - props.alt = params.alt === void 0 ? null : params.alt; - props.context = params.context || null; - props.semanticContext = params.semanticContext || null; - if (isCfg) { - props.reachesIntoOuterContext = params.reachesIntoOuterContext || 0; - props.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false; - } - return props; - } - } - var ATNConfig = class { - constructor(params, config) { - this.checkContext(params, config); - params = checkParams(params); - config = checkParams(config, true); - this.state = params.state !== null ? params.state : config.state; - this.alt = params.alt !== null ? params.alt : config.alt; - this.context = params.context !== null ? params.context : config.context; - this.semanticContext = params.semanticContext !== null ? params.semanticContext : config.semanticContext !== null ? config.semanticContext : SemanticContext.NONE; - this.reachesIntoOuterContext = config.reachesIntoOuterContext; - this.precedenceFilterSuppressed = config.precedenceFilterSuppressed; - } - checkContext(params, config) { - if ((params.context === null || params.context === void 0) && (config === null || config.context === null || config.context === void 0)) { - this.context = null; - } - } - hashCode() { - const hash = new Hash2(); - this.updateHashCode(hash); - return hash.finish(); - } - updateHashCode(hash) { - hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof ATNConfig)) { - return false; - } else { - return this.state.stateNumber === other.state.stateNumber && this.alt === other.alt && (this.context === null ? other.context === null : this.context.equals(other.context)) && this.semanticContext.equals(other.semanticContext) && this.precedenceFilterSuppressed === other.precedenceFilterSuppressed; + }; + ParserATNSimulator3.debug = false; + ParserATNSimulator3.dfa_debug = false; + ParserATNSimulator3.retry_debug = false; + ParserATNSimulator3.STATE_ALT_SORT_COMPARATOR = (o1, o2) => { + let diff = o1.state.nonStopStateNumber - o2.state.nonStopStateNumber; + if (diff !== 0) { + return diff; + } + diff = o1.alt - o2.alt; + if (diff !== 0) { + return diff; } - } - hashCodeForConfigSet() { - const hash = new Hash2(); - hash.update(this.state.stateNumber, this.alt, this.semanticContext); - return hash.finish(); - } - equalsForConfigSet(other) { - if (this === other) { - return true; - } else if (!(other instanceof ATNConfig)) { - return false; - } else { - return this.state.stateNumber === other.state.stateNumber && this.alt === other.alt && this.semanticContext.equals(other.semanticContext); - } - } - toString() { - return "(" + this.state + "," + this.alt + (this.context !== null ? ",[" + this.context.toString() + "]" : "") + (this.semanticContext !== SemanticContext.NONE ? "," + this.semanticContext.toString() : "") + (this.reachesIntoOuterContext > 0 ? ",up=" + this.reachesIntoOuterContext : "") + ")"; - } - }; - var LexerATNConfig = class extends ATNConfig { - constructor(params, config) { - super(params, config); - const lexerActionExecutor = params.lexerActionExecutor || null; - this.lexerActionExecutor = lexerActionExecutor || (config !== null ? config.lexerActionExecutor : null); - this.passedThroughNonGreedyDecision = config !== null ? this.checkNonGreedyDecision(config, this.state) : false; - this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode; - this.equalsForConfigSet = LexerATNConfig.prototype.equals; - return this; - } - updateHashCode(hash) { - hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor); - } - equals(other) { - return this === other || other instanceof LexerATNConfig && this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision && (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) && super.equals(other); - } - checkNonGreedyDecision(source, target) { - return source.passedThroughNonGreedyDecision || target instanceof DecisionState && target.nonGreedy; - } - }; - module.exports.ATNConfig = ATNConfig; - module.exports.LexerATNConfig = LexerATNConfig; + return 0; + }; + __decorate([ + Decorators_1.NotNull + ], ParserATNSimulator3.prototype, "predictionMode", void 0); + __decorate([ + Decorators_1.NotNull + ], ParserATNSimulator3.prototype, "getPredictionMode", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "setPredictionMode", null); + __decorate([ + Decorators_1.Override + ], ParserATNSimulator3.prototype, "reset", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "adaptivePredict", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getStartState", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "execDFA", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "execATN", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "handleNoViableAlt", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getExistingTargetState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "computeTargetState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "removeAllConfigsNotInRuleStopState", null); + __decorate([ + Decorators_1.NotNull + ], ParserATNSimulator3.prototype, "computeStartState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "applyPrecedenceFilter", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getReachableTarget", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getPredsForAmbigAlts", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "evalSemanticContext", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "evalSemanticContextImpl", null); + __decorate([ + __param(1, Decorators_1.NotNull), + __param(4, Decorators_1.Nullable) + ], ParserATNSimulator3.prototype, "closure", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.Nullable), + __param(3, Decorators_1.NotNull), + __param(6, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "closureImpl", null); + __decorate([ + Decorators_1.NotNull + ], ParserATNSimulator3.prototype, "getRuleName", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getEpsilonTarget", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "actionTransition", null); + __decorate([ + Decorators_1.Nullable, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "precedenceTransition", null); + __decorate([ + Decorators_1.Nullable, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "predTransition", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.Nullable) + ], ParserATNSimulator3.prototype, "ruleTransition", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "isConflicted", null); + __decorate([ + Decorators_1.NotNull + ], ParserATNSimulator3.prototype, "getTokenName", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "dumpDeadEndConfigs", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "noViableAlt", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "getUniqueAlt", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "configWithAltAtStopState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(4, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "addDFAEdge", null); + __decorate([ + __param(0, Decorators_1.Nullable), + __param(2, Decorators_1.Nullable) + ], ParserATNSimulator3.prototype, "setDFAEdge", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "addDFAContextState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "addDFAState", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "createDFAState", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "reportAttemptingFullContext", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "reportContextSensitivity", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull), + __param(6, Decorators_1.NotNull) + ], ParserATNSimulator3.prototype, "reportAmbiguity", null); + ParserATNSimulator3 = __decorate([ + __param(0, Decorators_1.NotNull) + ], ParserATNSimulator3); + exports.ParserATNSimulator = ParserATNSimulator3; + } }); - // node_modules/antlr4/src/antlr4/IntervalSet.js - var require_IntervalSet2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var Interval = class { - constructor(start, stop) { - this.start = start; - this.stop = stop; - } - contains(item) { - return item >= this.start && item < this.stop; - } - toString() { - if (this.start === this.stop - 1) { - return this.start.toString(); - } else { - return this.start.toString() + ".." + (this.stop - 1).toString(); + // node_modules/antlr4ts/atn/PlusBlockStartState.js + var require_PlusBlockStartState = __commonJS({ + "node_modules/antlr4ts/atn/PlusBlockStartState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PlusBlockStartState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var BlockStartState_1 = require_BlockStartState(); + var Decorators_1 = require_Decorators(); + var PlusBlockStartState2 = class extends BlockStartState_1.BlockStartState { + get stateType() { + return ATNStateType_1.ATNStateType.PLUS_BLOCK_START; } - } - get length() { - return this.stop - this.start; - } - }; - var IntervalSet = class { - constructor() { - this.intervals = null; - this.readOnly = false; - } - first(v) { - if (this.intervals === null || this.intervals.length === 0) { - return Token2.INVALID_TYPE; - } else { - return this.intervals[0].start; + }; + __decorate([ + Decorators_1.Override + ], PlusBlockStartState2.prototype, "stateType", null); + exports.PlusBlockStartState = PlusBlockStartState2; + } + }); + + // node_modules/antlr4ts/atn/PlusLoopbackState.js + var require_PlusLoopbackState = __commonJS({ + "node_modules/antlr4ts/atn/PlusLoopbackState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PlusLoopbackState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var DecisionState_1 = require_DecisionState(); + var Decorators_1 = require_Decorators(); + var PlusLoopbackState2 = class extends DecisionState_1.DecisionState { + get stateType() { + return ATNStateType_1.ATNStateType.PLUS_LOOP_BACK; } - } - addOne(v) { - this.addInterval(new Interval(v, v + 1)); - } - addRange(l, h) { - this.addInterval(new Interval(l, h + 1)); - } - addInterval(toAdd) { - if (this.intervals === null) { - this.intervals = []; - this.intervals.push(toAdd); - } else { - for (let pos = 0; pos < this.intervals.length; pos++) { - const existing = this.intervals[pos]; - if (toAdd.stop < existing.start) { - this.intervals.splice(pos, 0, toAdd); - return; - } else if (toAdd.stop === existing.start) { - this.intervals[pos].start = toAdd.start; - return; - } else if (toAdd.start <= existing.stop) { - this.intervals[pos] = new Interval(Math.min(existing.start, toAdd.start), Math.max(existing.stop, toAdd.stop)); - this.reduce(pos); - return; - } - } - this.intervals.push(toAdd); + }; + __decorate([ + Decorators_1.Override + ], PlusLoopbackState2.prototype, "stateType", null); + exports.PlusLoopbackState = PlusLoopbackState2; + } + }); + + // node_modules/antlr4ts/atn/PrecedencePredicateTransition.js + var require_PrecedencePredicateTransition = __commonJS({ + "node_modules/antlr4ts/atn/PrecedencePredicateTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PrecedencePredicateTransition = void 0; + var AbstractPredicateTransition_1 = require_AbstractPredicateTransition(); + var Decorators_1 = require_Decorators(); + var SemanticContext_1 = require_SemanticContext(); + var PrecedencePredicateTransition2 = class PrecedencePredicateTransition extends AbstractPredicateTransition_1.AbstractPredicateTransition { + constructor(target, precedence) { + super(target); + this.precedence = precedence; } - } - addSet(other) { - if (other.intervals !== null) { - other.intervals.forEach((toAdd) => this.addInterval(toAdd), this); + get serializationType() { + return 10; } - return this; - } - reduce(pos) { - if (pos < this.intervals.length - 1) { - const current = this.intervals[pos]; - const next = this.intervals[pos + 1]; - if (current.stop >= next.stop) { - this.intervals.splice(pos + 1, 1); - this.reduce(pos); - } else if (current.stop >= next.start) { - this.intervals[pos] = new Interval(current.start, next.stop); - this.intervals.splice(pos + 1, 1); - } + get isEpsilon() { + return true; } - } - complement(start, stop) { - const result = new IntervalSet(); - result.addInterval(new Interval(start, stop + 1)); - if (this.intervals !== null) - this.intervals.forEach((toRemove) => result.removeRange(toRemove)); - return result; - } - contains(item) { - if (this.intervals === null) { - return false; - } else { - for (let k = 0; k < this.intervals.length; k++) { - if (this.intervals[k].contains(item)) { - return true; - } - } + matches(symbol, minVocabSymbol, maxVocabSymbol) { return false; } - } - removeRange(toRemove) { - if (toRemove.start === toRemove.stop - 1) { - this.removeOne(toRemove.start); - } else if (this.intervals !== null) { - let pos = 0; - for (let n = 0; n < this.intervals.length; n++) { - const existing = this.intervals[pos]; - if (toRemove.stop <= existing.start) { - return; - } else if (toRemove.start > existing.start && toRemove.stop < existing.stop) { - this.intervals[pos] = new Interval(existing.start, toRemove.start); - const x = new Interval(toRemove.stop, existing.stop); - this.intervals.splice(pos, 0, x); - return; - } else if (toRemove.start <= existing.start && toRemove.stop >= existing.stop) { - this.intervals.splice(pos, 1); - pos = pos - 1; - } else if (toRemove.start < existing.stop) { - this.intervals[pos] = new Interval(existing.start, toRemove.start); - } else if (toRemove.stop < existing.stop) { - this.intervals[pos] = new Interval(toRemove.stop, existing.stop); - } - pos += 1; - } - } - } - removeOne(value) { - if (this.intervals !== null) { - for (let i = 0; i < this.intervals.length; i++) { - const existing = this.intervals[i]; - if (value < existing.start) { - return; - } else if (value === existing.start && value === existing.stop - 1) { - this.intervals.splice(i, 1); - return; - } else if (value === existing.start) { - this.intervals[i] = new Interval(existing.start + 1, existing.stop); - return; - } else if (value === existing.stop - 1) { - this.intervals[i] = new Interval(existing.start, existing.stop - 1); - return; - } else if (value < existing.stop - 1) { - const replace = new Interval(existing.start, value); - existing.start = value + 1; - this.intervals.splice(i, 0, replace); - return; - } - } + get predicate() { + return new SemanticContext_1.SemanticContext.PrecedencePredicate(this.precedence); } - } - toString(literalNames, symbolicNames, elemsAreChar) { - literalNames = literalNames || null; - symbolicNames = symbolicNames || null; - elemsAreChar = elemsAreChar || false; - if (this.intervals === null) { - return "{}"; - } else if (literalNames !== null || symbolicNames !== null) { - return this.toTokenString(literalNames, symbolicNames); - } else if (elemsAreChar) { - return this.toCharString(); - } else { - return this.toIndexString(); - } - } - toCharString() { - const names = []; - for (let i = 0; i < this.intervals.length; i++) { - const existing = this.intervals[i]; - if (existing.stop === existing.start + 1) { - if (existing.start === Token2.EOF) { - names.push(""); - } else { - names.push("'" + String.fromCharCode(existing.start) + "'"); - } - } else { - names.push("'" + String.fromCharCode(existing.start) + "'..'" + String.fromCharCode(existing.stop - 1) + "'"); - } + toString() { + return this.precedence + " >= _p"; } - if (names.length > 1) { - return "{" + names.join(", ") + "}"; - } else { - return names[0]; + }; + __decorate([ + Decorators_1.Override + ], PrecedencePredicateTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicateTransition2.prototype, "isEpsilon", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicateTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override + ], PrecedencePredicateTransition2.prototype, "toString", null); + PrecedencePredicateTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], PrecedencePredicateTransition2); + exports.PrecedencePredicateTransition = PrecedencePredicateTransition2; + } + }); + + // node_modules/antlr4ts/atn/RangeTransition.js + var require_RangeTransition = __commonJS({ + "node_modules/antlr4ts/atn/RangeTransition.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RangeTransition = void 0; + var IntervalSet_1 = require_IntervalSet(); + var Decorators_1 = require_Decorators(); + var Transition_1 = require_Transition(); + var RangeTransition2 = class RangeTransition extends Transition_1.Transition { + constructor(target, from, to) { + super(target); + this.from = from; + this.to = to; + } + get serializationType() { + return 2; + } + get label() { + return IntervalSet_1.IntervalSet.of(this.from, this.to); + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= this.from && symbol <= this.to; } - } - toIndexString() { - const names = []; - for (let i = 0; i < this.intervals.length; i++) { - const existing = this.intervals[i]; - if (existing.stop === existing.start + 1) { - if (existing.start === Token2.EOF) { - names.push(""); - } else { - names.push(existing.start.toString()); - } - } else { - names.push(existing.start.toString() + ".." + (existing.stop - 1).toString()); - } + toString() { + return "'" + String.fromCodePoint(this.from) + "'..'" + String.fromCodePoint(this.to) + "'"; } - if (names.length > 1) { - return "{" + names.join(", ") + "}"; - } else { - return names[0]; + }; + __decorate([ + Decorators_1.Override + ], RangeTransition2.prototype, "serializationType", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], RangeTransition2.prototype, "label", null); + __decorate([ + Decorators_1.Override + ], RangeTransition2.prototype, "matches", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull + ], RangeTransition2.prototype, "toString", null); + RangeTransition2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], RangeTransition2); + exports.RangeTransition = RangeTransition2; + } + }); + + // node_modules/antlr4ts/atn/RuleStartState.js + var require_RuleStartState = __commonJS({ + "node_modules/antlr4ts/atn/RuleStartState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleStartState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var RuleStartState2 = class extends ATNState_1.ATNState { + constructor() { + super(...arguments); + this.isPrecedenceRule = false; + this.leftFactored = false; } - } - toTokenString(literalNames, symbolicNames) { - const names = []; - for (let i = 0; i < this.intervals.length; i++) { - const existing = this.intervals[i]; - for (let j = existing.start; j < existing.stop; j++) { - names.push(this.elementName(literalNames, symbolicNames, j)); - } + get stateType() { + return ATNStateType_1.ATNStateType.RULE_START; } - if (names.length > 1) { - return "{" + names.join(", ") + "}"; - } else { - return names[0]; + }; + __decorate([ + Decorators_1.Override + ], RuleStartState2.prototype, "stateType", null); + exports.RuleStartState = RuleStartState2; + } + }); + + // node_modules/antlr4ts/atn/StarBlockStartState.js + var require_StarBlockStartState = __commonJS({ + "node_modules/antlr4ts/atn/StarBlockStartState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.StarBlockStartState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var BlockStartState_1 = require_BlockStartState(); + var Decorators_1 = require_Decorators(); + var StarBlockStartState2 = class extends BlockStartState_1.BlockStartState { + get stateType() { + return ATNStateType_1.ATNStateType.STAR_BLOCK_START; } - } - elementName(literalNames, symbolicNames, token) { - if (token === Token2.EOF) { - return ""; - } else if (token === Token2.EPSILON) { - return ""; - } else { - return literalNames[token] || symbolicNames[token]; + }; + __decorate([ + Decorators_1.Override + ], StarBlockStartState2.prototype, "stateType", null); + exports.StarBlockStartState = StarBlockStartState2; + } + }); + + // node_modules/antlr4ts/atn/StarLoopbackState.js + var require_StarLoopbackState = __commonJS({ + "node_modules/antlr4ts/atn/StarLoopbackState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.StarLoopbackState = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var Decorators_1 = require_Decorators(); + var StarLoopbackState2 = class extends ATNState_1.ATNState { + get loopEntryState() { + return this.transition(0).target; + } + get stateType() { + return ATNStateType_1.ATNStateType.STAR_LOOP_BACK; } - } - get length() { - return this.intervals.map((interval) => interval.length).reduce((acc, val) => acc + val); - } - }; - module.exports = { - Interval, - IntervalSet - }; + }; + __decorate([ + Decorators_1.Override + ], StarLoopbackState2.prototype, "stateType", null); + exports.StarLoopbackState = StarLoopbackState2; + } }); - // node_modules/antlr4/src/antlr4/atn/Transition.js - var require_Transition2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var {IntervalSet} = require_IntervalSet2(); - var {Predicate, PrecedencePredicate} = require_SemanticContext2(); - var Transition = class { - constructor(target) { - if (target === void 0 || target === null) { - throw "target cannot be null."; - } - this.target = target; - this.isEpsilon = false; - this.label = null; - } - }; - Transition.EPSILON = 1; - Transition.RANGE = 2; - Transition.RULE = 3; - Transition.PREDICATE = 4; - Transition.ATOM = 5; - Transition.ACTION = 6; - Transition.SET = 7; - Transition.NOT_SET = 8; - Transition.WILDCARD = 9; - Transition.PRECEDENCE = 10; - Transition.serializationNames = [ - "INVALID", - "EPSILON", - "RANGE", - "RULE", - "PREDICATE", - "ATOM", - "ACTION", - "SET", - "NOT_SET", - "WILDCARD", - "PRECEDENCE" - ]; - Transition.serializationTypes = { - EpsilonTransition: Transition.EPSILON, - RangeTransition: Transition.RANGE, - RuleTransition: Transition.RULE, - PredicateTransition: Transition.PREDICATE, - AtomTransition: Transition.ATOM, - ActionTransition: Transition.ACTION, - SetTransition: Transition.SET, - NotSetTransition: Transition.NOT_SET, - WildcardTransition: Transition.WILDCARD, - PrecedencePredicateTransition: Transition.PRECEDENCE - }; - var AtomTransition2 = class extends Transition { - constructor(target, label) { - super(target); - this.label_ = label; - this.label = this.makeLabel(); - this.serializationType = Transition.ATOM; - } - makeLabel() { - const s = new IntervalSet(); - s.addOne(this.label_); - return s; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return this.label_ === symbol; - } - toString() { - return this.label_; - } - }; - var RuleTransition = class extends Transition { - constructor(ruleStart, ruleIndex, precedence, followState) { - super(ruleStart); - this.ruleIndex = ruleIndex; - this.precedence = precedence; - this.followState = followState; - this.serializationType = Transition.RULE; - this.isEpsilon = true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - }; - var EpsilonTransition = class extends Transition { - constructor(target, outermostPrecedenceReturn) { - super(target); - this.serializationType = Transition.EPSILON; - this.isEpsilon = true; - this.outermostPrecedenceReturn = outermostPrecedenceReturn; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - toString() { - return "epsilon"; - } - }; - var RangeTransition = class extends Transition { - constructor(target, start, stop) { - super(target); - this.serializationType = Transition.RANGE; - this.start = start; - this.stop = stop; - this.label = this.makeLabel(); - } - makeLabel() { - const s = new IntervalSet(); - s.addRange(this.start, this.stop); - return s; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= this.start && symbol <= this.stop; - } - toString() { - return "'" + String.fromCharCode(this.start) + "'..'" + String.fromCharCode(this.stop) + "'"; - } - }; - var AbstractPredicateTransition = class extends Transition { - constructor(target) { - super(target); - } - }; - var PredicateTransition = class extends AbstractPredicateTransition { - constructor(target, ruleIndex, predIndex, isCtxDependent) { - super(target); - this.serializationType = Transition.PREDICATE; - this.ruleIndex = ruleIndex; - this.predIndex = predIndex; - this.isCtxDependent = isCtxDependent; - this.isEpsilon = true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - getPredicate() { - return new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent); - } - toString() { - return "pred_" + this.ruleIndex + ":" + this.predIndex; - } - }; - var ActionTransition = class extends Transition { - constructor(target, ruleIndex, actionIndex, isCtxDependent) { - super(target); - this.serializationType = Transition.ACTION; - this.ruleIndex = ruleIndex; - this.actionIndex = actionIndex === void 0 ? -1 : actionIndex; - this.isCtxDependent = isCtxDependent === void 0 ? false : isCtxDependent; - this.isEpsilon = true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - toString() { - return "action_" + this.ruleIndex + ":" + this.actionIndex; - } - }; - var SetTransition = class extends Transition { - constructor(target, set) { - super(target); - this.serializationType = Transition.SET; - if (set !== void 0 && set !== null) { - this.label = set; - } else { - this.label = new IntervalSet(); - this.label.addOne(Token2.INVALID_TYPE); + // node_modules/antlr4ts/atn/TokensStartState.js + var require_TokensStartState = __commonJS({ + "node_modules/antlr4ts/atn/TokensStartState.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.TokensStartState = void 0; + var ATNStateType_1 = require_ATNStateType(); + var DecisionState_1 = require_DecisionState(); + var Decorators_1 = require_Decorators(); + var TokensStartState2 = class extends DecisionState_1.DecisionState { + get stateType() { + return ATNStateType_1.ATNStateType.TOKEN_START; } - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return this.label.contains(symbol); - } - toString() { - return this.label.toString(); - } - }; - var NotSetTransition = class extends SetTransition { - constructor(target, set) { - super(target, set); - this.serializationType = Transition.NOT_SET; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= minVocabSymbol && symbol <= maxVocabSymbol && !super.matches(symbol, minVocabSymbol, maxVocabSymbol); - } - toString() { - return "~" + super.toString(); - } - }; - var WildcardTransition = class extends Transition { - constructor(target) { - super(target); - this.serializationType = Transition.WILDCARD; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return symbol >= minVocabSymbol && symbol <= maxVocabSymbol; - } - toString() { - return "."; - } - }; - var PrecedencePredicateTransition = class extends AbstractPredicateTransition { - constructor(target, precedence) { - super(target); - this.serializationType = Transition.PRECEDENCE; - this.precedence = precedence; - this.isEpsilon = true; - } - matches(symbol, minVocabSymbol, maxVocabSymbol) { - return false; - } - getPredicate() { - return new PrecedencePredicate(this.precedence); - } - toString() { - return this.precedence + " >= _p"; - } - }; - module.exports = { - Transition, - AtomTransition: AtomTransition2, - SetTransition, - NotSetTransition, - RuleTransition, - ActionTransition, - EpsilonTransition, - RangeTransition, - WildcardTransition, - PredicateTransition, - PrecedencePredicateTransition, - AbstractPredicateTransition - }; + }; + __decorate([ + Decorators_1.Override + ], TokensStartState2.prototype, "stateType", null); + exports.TokensStartState = TokensStartState2; + } }); - // node_modules/antlr4/src/antlr4/tree/Tree.js - var require_Tree = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var {Interval} = require_IntervalSet2(); - var INVALID_INTERVAL = new Interval(-1, -2); - var Tree = class { - }; - var SyntaxTree = class extends Tree { - constructor() { - super(); - } - }; - var ParseTree = class extends SyntaxTree { - constructor() { - super(); - } - }; - var RuleNode = class extends ParseTree { - constructor() { - super(); - } - getRuleContext() { - throw new Error("missing interface implementation"); - } - }; - var TerminalNode = class extends ParseTree { - constructor() { - super(); - } - }; - var ErrorNode2 = class extends TerminalNode { - constructor() { - super(); - } - }; - var ParseTreeVisitor = class { - visit(ctx) { - if (Array.isArray(ctx)) { - return ctx.map(function(child) { - return child.accept(this); - }, this); - } else { - return ctx.accept(this); + // node_modules/antlr4ts/misc/UUID.js + var require_UUID = __commonJS({ + "node_modules/antlr4ts/misc/UUID.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.UUID = void 0; + var MurmurHash_1 = require_MurmurHash(); + var UUID = class { + constructor(mostSigBits, moreSigBits, lessSigBits, leastSigBits) { + this.data = new Uint32Array(4); + this.data[0] = mostSigBits; + this.data[1] = moreSigBits; + this.data[2] = lessSigBits; + this.data[3] = leastSigBits; + } + static fromString(data) { + if (!/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/.test(data)) { + throw new Error("Incorrectly formatted UUID"); + } + let segments = data.split("-"); + let mostSigBits = parseInt(segments[0], 16); + let moreSigBits = (parseInt(segments[1], 16) << 16 >>> 0) + parseInt(segments[2], 16); + let lessSigBits = (parseInt(segments[3], 16) << 16 >>> 0) + parseInt(segments[4].substr(0, 4), 16); + let leastSigBits = parseInt(segments[4].substr(-8), 16); + return new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits); } - } - visitChildren(ctx) { - if (ctx.children) { - return this.visit(ctx.children); - } else { - return null; + hashCode() { + return MurmurHash_1.MurmurHash.hashCode([this.data[0], this.data[1], this.data[2], this.data[3]]); } - } - visitTerminal(node) { - } - visitErrorNode(node) { - } - }; - var ParseTreeListener = class { - visitTerminal(node) { - } - visitErrorNode(node) { - } - enterEveryRule(node) { - } - exitEveryRule(node) { - } - }; - var TerminalNodeImpl = class extends TerminalNode { - constructor(symbol) { - super(); - this.parentCtx = null; - this.symbol = symbol; - } - getChild(i) { - return null; - } - getSymbol() { - return this.symbol; - } - getParent() { - return this.parentCtx; - } - getPayload() { - return this.symbol; - } - getSourceInterval() { - if (this.symbol === null) { - return INVALID_INTERVAL; + equals(obj) { + if (obj === this) { + return true; + } else if (!(obj instanceof UUID)) { + return false; + } + return this.data[0] === obj.data[0] && this.data[1] === obj.data[1] && this.data[2] === obj.data[2] && this.data[3] === obj.data[3]; } - const tokenIndex = this.symbol.tokenIndex; - return new Interval(tokenIndex, tokenIndex); - } - getChildCount() { - return 0; - } - accept(visitor) { - return visitor.visitTerminal(this); - } - getText() { - return this.symbol.text; - } - toString() { - if (this.symbol.type === Token2.EOF) { - return ""; - } else { - return this.symbol.text; + toString() { + return ("00000000" + this.data[0].toString(16)).substr(-8) + "-" + ("0000" + (this.data[1] >>> 16).toString(16)).substr(-4) + "-" + ("0000" + this.data[1].toString(16)).substr(-4) + "-" + ("0000" + (this.data[2] >>> 16).toString(16)).substr(-4) + "-" + ("0000" + this.data[2].toString(16)).substr(-4) + ("00000000" + this.data[3].toString(16)).substr(-8); } - } - }; - var ErrorNodeImpl = class extends TerminalNodeImpl { - constructor(token) { - super(token); - } - isErrorNode() { - return true; - } - accept(visitor) { - return visitor.visitErrorNode(this); - } - }; - var ParseTreeWalker = class { - walk(listener, t) { - const errorNode = t instanceof ErrorNode2 || t.isErrorNode !== void 0 && t.isErrorNode(); - if (errorNode) { - listener.visitErrorNode(t); - } else if (t instanceof TerminalNode) { - listener.visitTerminal(t); - } else { - this.enterRule(listener, t); - for (let i = 0; i < t.getChildCount(); i++) { - const child = t.getChild(i); - this.walk(listener, child); - } - this.exitRule(listener, t); - } - } - enterRule(listener, r) { - const ctx = r.getRuleContext(); - listener.enterEveryRule(ctx); - ctx.enterRule(listener); - } - exitRule(listener, r) { - const ctx = r.getRuleContext(); - ctx.exitRule(listener); - listener.exitEveryRule(ctx); - } - }; - ParseTreeWalker.DEFAULT = new ParseTreeWalker(); - module.exports = { - RuleNode, - ErrorNode: ErrorNode2, - TerminalNode, - ErrorNodeImpl, - TerminalNodeImpl, - ParseTreeListener, - ParseTreeVisitor, - ParseTreeWalker, - INVALID_INTERVAL - }; + }; + exports.UUID = UUID; + } }); - // node_modules/antlr4/src/antlr4/tree/Trees.js - var require_Trees2 = __commonJS((exports, module) => { - init_process_shim(); - var Utils3 = require_Utils2(); - var {Token: Token2} = require_Token2(); - var {ErrorNode: ErrorNode2, TerminalNode, RuleNode} = require_Tree(); - var Trees = { - toStringTree: function(tree, ruleNames, recog) { - ruleNames = ruleNames || null; - recog = recog || null; - if (recog !== null) { - ruleNames = recog.ruleNames; - } - let s = Trees.getNodeText(tree, ruleNames); - s = Utils3.escapeWhitespace(s, false); - const c = tree.getChildCount(); - if (c === 0) { - return s; - } - let res = "(" + s + " "; - if (c > 0) { - s = Trees.toStringTree(tree.getChild(0), ruleNames); - res = res.concat(s); - } - for (let i = 1; i < c; i++) { - s = Trees.toStringTree(tree.getChild(i), ruleNames); - res = res.concat(" " + s); - } - res = res.concat(")"); - return res; - }, - getNodeText: function(t, ruleNames, recog) { - ruleNames = ruleNames || null; - recog = recog || null; - if (recog !== null) { - ruleNames = recog.ruleNames; - } - if (ruleNames !== null) { - if (t instanceof RuleNode) { - const context = t.getRuleContext(); - const altNumber = context.getAltNumber(); - if (altNumber != 0) { - return ruleNames[t.ruleIndex] + ":" + altNumber; - } - return ruleNames[t.ruleIndex]; - } else if (t instanceof ErrorNode2) { - return t.toString(); - } else if (t instanceof TerminalNode) { - if (t.symbol !== null) { - return t.symbol.text; - } + // node_modules/antlr4ts/atn/ATNDeserializer.js + var require_ATNDeserializer = __commonJS({ + "node_modules/antlr4ts/atn/ATNDeserializer.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ATNDeserializer = void 0; + var ActionTransition_1 = require_ActionTransition(); + var Array2DHashSet_1 = require_Array2DHashSet(); + var ATN_1 = require_ATN(); + var ATNDeserializationOptions_1 = require_ATNDeserializationOptions(); + var ATNStateType_1 = require_ATNStateType(); + var AtomTransition_1 = require_AtomTransition(); + var BasicBlockStartState_1 = require_BasicBlockStartState(); + var BasicState_1 = require_BasicState(); + var BitSet_1 = require_BitSet(); + var BlockEndState_1 = require_BlockEndState(); + var BlockStartState_1 = require_BlockStartState(); + var DecisionState_1 = require_DecisionState(); + var DFA_1 = require_DFA(); + var EpsilonTransition_1 = require_EpsilonTransition(); + var IntervalSet_1 = require_IntervalSet(); + var InvalidState_1 = require_InvalidState(); + var LexerChannelAction_1 = require_LexerChannelAction(); + var LexerCustomAction_1 = require_LexerCustomAction(); + var LexerModeAction_1 = require_LexerModeAction(); + var LexerMoreAction_1 = require_LexerMoreAction(); + var LexerPopModeAction_1 = require_LexerPopModeAction(); + var LexerPushModeAction_1 = require_LexerPushModeAction(); + var LexerSkipAction_1 = require_LexerSkipAction(); + var LexerTypeAction_1 = require_LexerTypeAction(); + var LoopEndState_1 = require_LoopEndState(); + var Decorators_1 = require_Decorators(); + var NotSetTransition_1 = require_NotSetTransition(); + var ParserATNSimulator_1 = require_ParserATNSimulator(); + var PlusBlockStartState_1 = require_PlusBlockStartState(); + var PlusLoopbackState_1 = require_PlusLoopbackState(); + var PrecedencePredicateTransition_1 = require_PrecedencePredicateTransition(); + var PredicateTransition_1 = require_PredicateTransition(); + var RangeTransition_1 = require_RangeTransition(); + var RuleStartState_1 = require_RuleStartState(); + var RuleStopState_1 = require_RuleStopState(); + var RuleTransition_1 = require_RuleTransition(); + var SetTransition_1 = require_SetTransition(); + var StarBlockStartState_1 = require_StarBlockStartState(); + var StarLoopbackState_1 = require_StarLoopbackState(); + var StarLoopEntryState_1 = require_StarLoopEntryState(); + var Token_1 = require_Token(); + var TokensStartState_1 = require_TokensStartState(); + var UUID_1 = require_UUID(); + var WildcardTransition_1 = require_WildcardTransition(); + var UnicodeDeserializingMode; + (function(UnicodeDeserializingMode2) { + UnicodeDeserializingMode2[UnicodeDeserializingMode2["UNICODE_BMP"] = 0] = "UNICODE_BMP"; + UnicodeDeserializingMode2[UnicodeDeserializingMode2["UNICODE_SMP"] = 1] = "UNICODE_SMP"; + })(UnicodeDeserializingMode || (UnicodeDeserializingMode = {})); + var ATNDeserializer4 = class { + constructor(deserializationOptions) { + if (deserializationOptions === void 0) { + deserializationOptions = ATNDeserializationOptions_1.ATNDeserializationOptions.defaultOptions; + } + this.deserializationOptions = deserializationOptions; + } + static get SERIALIZED_VERSION() { + return 3; + } + static isFeatureSupported(feature, actualUuid) { + let featureIndex = ATNDeserializer4.SUPPORTED_UUIDS.findIndex((e) => e.equals(feature)); + if (featureIndex < 0) { + return false; } + return ATNDeserializer4.SUPPORTED_UUIDS.findIndex((e) => e.equals(actualUuid)) >= featureIndex; } - const payload = t.getPayload(); - if (payload instanceof Token2) { - return payload.text; - } - return t.getPayload().toString(); - }, - getChildren: function(t) { - const list = []; - for (let i = 0; i < t.getChildCount(); i++) { - list.push(t.getChild(i)); - } - return list; - }, - getAncestors: function(t) { - let ancestors = []; - t = t.getParent(); - while (t !== null) { - ancestors = [t].concat(ancestors); - t = t.getParent(); - } - return ancestors; - }, - findAllTokenNodes: function(t, ttype) { - return Trees.findAllNodes(t, ttype, true); - }, - findAllRuleNodes: function(t, ruleIndex) { - return Trees.findAllNodes(t, ruleIndex, false); - }, - findAllNodes: function(t, index, findTokens) { - const nodes = []; - Trees._findAllNodes(t, index, findTokens, nodes); - return nodes; - }, - _findAllNodes: function(t, index, findTokens, nodes) { - if (findTokens && t instanceof TerminalNode) { - if (t.symbol.type === index) { - nodes.push(t); - } - } else if (!findTokens && t instanceof RuleNode) { - if (t.ruleIndex === index) { - nodes.push(t); + static getUnicodeDeserializer(mode) { + if (mode === 0) { + return { + readUnicode: (data, p) => { + return ATNDeserializer4.toInt(data[p]); + }, + size: 1 + }; + } else { + return { + readUnicode: (data, p) => { + return ATNDeserializer4.toInt32(data, p); + }, + size: 2 + }; } } - for (let i = 0; i < t.getChildCount(); i++) { - Trees._findAllNodes(t.getChild(i), index, findTokens, nodes); - } - }, - descendants: function(t) { - let nodes = [t]; - for (let i = 0; i < t.getChildCount(); i++) { - nodes = nodes.concat(Trees.descendants(t.getChild(i))); - } - return nodes; - } - }; - module.exports = Trees; - }); - - // node_modules/antlr4/src/antlr4/RuleContext.js - var require_RuleContext2 = __commonJS((exports, module) => { - init_process_shim(); - var {RuleNode} = require_Tree(); - var {INVALID_INTERVAL} = require_Tree(); - var Trees = require_Trees2(); - var RuleContext = class extends RuleNode { - constructor(parent, invokingState) { - super(); - this.parentCtx = parent || null; - this.invokingState = invokingState || -1; - } - depth() { - let n = 0; - let p = this; - while (p !== null) { - p = p.parentCtx; - n += 1; - } - return n; - } - isEmpty() { - return this.invokingState === -1; - } - getSourceInterval() { - return INVALID_INTERVAL; - } - getRuleContext() { - return this; - } - getPayload() { - return this; - } - getText() { - if (this.getChildCount() === 0) { - return ""; - } else { - return this.children.map(function(child) { - return child.getText(); - }).join(""); - } - } - getAltNumber() { - return 0; - } - setAltNumber(altNumber) { - } - getChild(i) { - return null; - } - getChildCount() { - return 0; - } - accept(visitor) { - return visitor.visitChildren(this); - } - toStringTree(ruleNames, recog) { - return Trees.toStringTree(this, ruleNames, recog); - } - toString(ruleNames, stop) { - ruleNames = ruleNames || null; - stop = stop || null; - let p = this; - let s = "["; - while (p !== null && p !== stop) { - if (ruleNames === null) { - if (!p.isEmpty()) { - s += p.invokingState; + deserialize(data) { + data = data.slice(0); + for (let i = 1; i < data.length; i++) { + data[i] = data[i] - 2 & 65535; + } + let p = 0; + let version = ATNDeserializer4.toInt(data[p++]); + if (version !== ATNDeserializer4.SERIALIZED_VERSION) { + let reason = `Could not deserialize ATN with version ${version} (expected ${ATNDeserializer4.SERIALIZED_VERSION}).`; + throw new Error(reason); + } + let uuid = ATNDeserializer4.toUUID(data, p); + p += 8; + if (ATNDeserializer4.SUPPORTED_UUIDS.findIndex((e) => e.equals(uuid)) < 0) { + let reason = `Could not deserialize ATN with UUID ${uuid} (expected ${ATNDeserializer4.SERIALIZED_UUID} or a legacy UUID).`; + throw new Error(reason); + } + let supportsLexerActions = ATNDeserializer4.isFeatureSupported(ATNDeserializer4.ADDED_LEXER_ACTIONS, uuid); + let grammarType = ATNDeserializer4.toInt(data[p++]); + let maxTokenType = ATNDeserializer4.toInt(data[p++]); + let atn = new ATN_1.ATN(grammarType, maxTokenType); + let loopBackStateNumbers = []; + let endStateNumbers = []; + let nstates = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < nstates; i++) { + let stype = ATNDeserializer4.toInt(data[p++]); + if (stype === ATNStateType_1.ATNStateType.INVALID_TYPE) { + atn.addState(new InvalidState_1.InvalidState()); + continue; } - } else { - const ri = p.ruleIndex; - const ruleName = ri >= 0 && ri < ruleNames.length ? ruleNames[ri] : "" + ri; - s += ruleName; + let ruleIndex = ATNDeserializer4.toInt(data[p++]); + if (ruleIndex === 65535) { + ruleIndex = -1; + } + let s = this.stateFactory(stype, ruleIndex); + if (stype === ATNStateType_1.ATNStateType.LOOP_END) { + let loopBackStateNumber = ATNDeserializer4.toInt(data[p++]); + loopBackStateNumbers.push([s, loopBackStateNumber]); + } else if (s instanceof BlockStartState_1.BlockStartState) { + let endStateNumber = ATNDeserializer4.toInt(data[p++]); + endStateNumbers.push([s, endStateNumber]); + } + atn.addState(s); } - if (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) { - s += " "; + for (let pair of loopBackStateNumbers) { + pair[0].loopBackState = atn.states[pair[1]]; } - p = p.parentCtx; - } - s += "]"; - return s; - } - }; - module.exports = RuleContext; - }); - - // node_modules/antlr4/src/antlr4/PredictionContext.js - var require_PredictionContext2 = __commonJS((exports, module) => { - init_process_shim(); - var RuleContext = require_RuleContext2(); - var {Hash: Hash2, Map: Map2, equalArrays} = require_Utils2(); - var PredictionContext = class { - constructor(cachedHashCode) { - this.cachedHashCode = cachedHashCode; - } - isEmpty() { - return this === PredictionContext.EMPTY; - } - hasEmptyPath() { - return this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE; - } - hashCode() { - return this.cachedHashCode; - } - updateHashCode(hash) { - hash.update(this.cachedHashCode); - } - }; - PredictionContext.EMPTY = null; - PredictionContext.EMPTY_RETURN_STATE = 2147483647; - PredictionContext.globalNodeCount = 1; - PredictionContext.id = PredictionContext.globalNodeCount; - var PredictionContextCache = class { - constructor() { - this.cache = new Map2(); - } - add(ctx) { - if (ctx === PredictionContext.EMPTY) { - return PredictionContext.EMPTY; - } - const existing = this.cache.get(ctx) || null; - if (existing !== null) { - return existing; - } - this.cache.put(ctx, ctx); - return ctx; - } - get(ctx) { - return this.cache.get(ctx) || null; - } - get length() { - return this.cache.length; - } - }; - var SingletonPredictionContext = class extends PredictionContext { - constructor(parent, returnState) { - let hashCode = 0; - const hash = new Hash2(); - if (parent !== null) { - hash.update(parent, returnState); - } else { - hash.update(1); - } - hashCode = hash.finish(); - super(hashCode); - this.parentCtx = parent; - this.returnState = returnState; - } - getParent(index) { - return this.parentCtx; - } - getReturnState(index) { - return this.returnState; - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof SingletonPredictionContext)) { - return false; - } else if (this.hashCode() !== other.hashCode()) { - return false; - } else { - if (this.returnState !== other.returnState) - return false; - else if (this.parentCtx == null) - return other.parentCtx == null; - else - return this.parentCtx.equals(other.parentCtx); - } - } - toString() { - const up = this.parentCtx === null ? "" : this.parentCtx.toString(); - if (up.length === 0) { - if (this.returnState === PredictionContext.EMPTY_RETURN_STATE) { - return "$"; - } else { - return "" + this.returnState; + for (let pair of endStateNumbers) { + pair[0].endState = atn.states[pair[1]]; } - } else { - return "" + this.returnState + " " + up; - } - } - get length() { - return 1; - } - static create(parent, returnState) { - if (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) { - return PredictionContext.EMPTY; - } else { - return new SingletonPredictionContext(parent, returnState); - } - } - }; - var EmptyPredictionContext = class extends SingletonPredictionContext { - constructor() { - super(null, PredictionContext.EMPTY_RETURN_STATE); - } - isEmpty() { - return true; - } - getParent(index) { - return null; - } - getReturnState(index) { - return this.returnState; - } - equals(other) { - return this === other; - } - toString() { - return "$"; - } - }; - PredictionContext.EMPTY = new EmptyPredictionContext(); - var ArrayPredictionContext = class extends PredictionContext { - constructor(parents, returnStates) { - const h = new Hash2(); - h.update(parents, returnStates); - const hashCode = h.finish(); - super(hashCode); - this.parents = parents; - this.returnStates = returnStates; - return this; - } - isEmpty() { - return this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE; - } - getParent(index) { - return this.parents[index]; - } - getReturnState(index) { - return this.returnStates[index]; - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof ArrayPredictionContext)) { - return false; - } else if (this.hashCode() !== other.hashCode()) { - return false; - } else { - return equalArrays(this.returnStates, other.returnStates) && equalArrays(this.parents, other.parents); - } - } - toString() { - if (this.isEmpty()) { - return "[]"; - } else { - let s = "["; - for (let i = 0; i < this.returnStates.length; i++) { - if (i > 0) { - s = s + ", "; + let numNonGreedyStates = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < numNonGreedyStates; i++) { + let stateNumber = ATNDeserializer4.toInt(data[p++]); + atn.states[stateNumber].nonGreedy = true; + } + let numSllDecisions = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < numSllDecisions; i++) { + let stateNumber = ATNDeserializer4.toInt(data[p++]); + atn.states[stateNumber].sll = true; + } + let numPrecedenceStates = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < numPrecedenceStates; i++) { + let stateNumber = ATNDeserializer4.toInt(data[p++]); + atn.states[stateNumber].isPrecedenceRule = true; + } + let nrules = ATNDeserializer4.toInt(data[p++]); + if (atn.grammarType === 0) { + atn.ruleToTokenType = new Int32Array(nrules); + } + atn.ruleToStartState = new Array(nrules); + for (let i = 0; i < nrules; i++) { + let s = ATNDeserializer4.toInt(data[p++]); + let startState = atn.states[s]; + startState.leftFactored = ATNDeserializer4.toInt(data[p++]) !== 0; + atn.ruleToStartState[i] = startState; + if (atn.grammarType === 0) { + let tokenType = ATNDeserializer4.toInt(data[p++]); + if (tokenType === 65535) { + tokenType = Token_1.Token.EOF; + } + atn.ruleToTokenType[i] = tokenType; + if (!ATNDeserializer4.isFeatureSupported(ATNDeserializer4.ADDED_LEXER_ACTIONS, uuid)) { + let actionIndexIgnored = ATNDeserializer4.toInt(data[p++]); + if (actionIndexIgnored === 65535) { + actionIndexIgnored = -1; + } + } } - if (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) { - s = s + "$"; + } + atn.ruleToStopState = new Array(nrules); + for (let state of atn.states) { + if (!(state instanceof RuleStopState_1.RuleStopState)) { continue; } - s = s + this.returnStates[i]; - if (this.parents[i] !== null) { - s = s + " " + this.parents[i]; + atn.ruleToStopState[state.ruleIndex] = state; + atn.ruleToStartState[state.ruleIndex].stopState = state; + } + let nmodes = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < nmodes; i++) { + let s = ATNDeserializer4.toInt(data[p++]); + atn.modeToStartState.push(atn.states[s]); + } + atn.modeToDFA = new Array(nmodes); + for (let i = 0; i < nmodes; i++) { + atn.modeToDFA[i] = new DFA_1.DFA(atn.modeToStartState[i]); + } + let sets = []; + p = this.deserializeSets(data, p, sets, ATNDeserializer4.getUnicodeDeserializer(0)); + if (ATNDeserializer4.isFeatureSupported(ATNDeserializer4.ADDED_UNICODE_SMP, uuid)) { + p = this.deserializeSets(data, p, sets, ATNDeserializer4.getUnicodeDeserializer(1)); + } + let nedges = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < nedges; i++) { + let src = ATNDeserializer4.toInt(data[p]); + let trg = ATNDeserializer4.toInt(data[p + 1]); + let ttype = ATNDeserializer4.toInt(data[p + 2]); + let arg1 = ATNDeserializer4.toInt(data[p + 3]); + let arg2 = ATNDeserializer4.toInt(data[p + 4]); + let arg3 = ATNDeserializer4.toInt(data[p + 5]); + let trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets); + let srcState = atn.states[src]; + srcState.addTransition(trans); + p += 6; + } + let returnTransitionsSet = new Array2DHashSet_1.Array2DHashSet({ + hashCode: (o) => o.stopState ^ o.returnState ^ o.outermostPrecedenceReturn, + equals: (a, b) => { + return a.stopState === b.stopState && a.returnState === b.returnState && a.outermostPrecedenceReturn === b.outermostPrecedenceReturn; + } + }); + let returnTransitions = []; + for (let state of atn.states) { + let returningToLeftFactored = state.ruleIndex >= 0 && atn.ruleToStartState[state.ruleIndex].leftFactored; + for (let i = 0; i < state.numberOfTransitions; i++) { + let t = state.transition(i); + if (!(t instanceof RuleTransition_1.RuleTransition)) { + continue; + } + let ruleTransition = t; + let returningFromLeftFactored = atn.ruleToStartState[ruleTransition.target.ruleIndex].leftFactored; + if (!returningFromLeftFactored && returningToLeftFactored) { + continue; + } + let outermostPrecedenceReturn = -1; + if (atn.ruleToStartState[ruleTransition.target.ruleIndex].isPrecedenceRule) { + if (ruleTransition.precedence === 0) { + outermostPrecedenceReturn = ruleTransition.target.ruleIndex; + } + } + let current = {stopState: ruleTransition.target.ruleIndex, returnState: ruleTransition.followState.stateNumber, outermostPrecedenceReturn}; + if (returnTransitionsSet.add(current)) { + returnTransitions.push(current); + } + } + } + for (let returnTransition of returnTransitions) { + let transition = new EpsilonTransition_1.EpsilonTransition(atn.states[returnTransition.returnState], returnTransition.outermostPrecedenceReturn); + atn.ruleToStopState[returnTransition.stopState].addTransition(transition); + } + for (let state of atn.states) { + if (state instanceof BlockStartState_1.BlockStartState) { + if (state.endState === void 0) { + throw new Error("IllegalStateException"); + } + if (state.endState.startState !== void 0) { + throw new Error("IllegalStateException"); + } + state.endState.startState = state; + } + if (state instanceof PlusLoopbackState_1.PlusLoopbackState) { + let loopbackState = state; + for (let i = 0; i < loopbackState.numberOfTransitions; i++) { + let target = loopbackState.transition(i).target; + if (target instanceof PlusBlockStartState_1.PlusBlockStartState) { + target.loopBackState = loopbackState; + } + } + } else if (state instanceof StarLoopbackState_1.StarLoopbackState) { + let loopbackState = state; + for (let i = 0; i < loopbackState.numberOfTransitions; i++) { + let target = loopbackState.transition(i).target; + if (target instanceof StarLoopEntryState_1.StarLoopEntryState) { + target.loopBackState = loopbackState; + } + } + } + } + let ndecisions = ATNDeserializer4.toInt(data[p++]); + for (let i = 1; i <= ndecisions; i++) { + let s = ATNDeserializer4.toInt(data[p++]); + let decState = atn.states[s]; + atn.decisionToState.push(decState); + decState.decision = i - 1; + } + if (atn.grammarType === 0) { + if (supportsLexerActions) { + atn.lexerActions = new Array(ATNDeserializer4.toInt(data[p++])); + for (let i = 0; i < atn.lexerActions.length; i++) { + let actionType = ATNDeserializer4.toInt(data[p++]); + let data1 = ATNDeserializer4.toInt(data[p++]); + if (data1 === 65535) { + data1 = -1; + } + let data2 = ATNDeserializer4.toInt(data[p++]); + if (data2 === 65535) { + data2 = -1; + } + let lexerAction = this.lexerActionFactory(actionType, data1, data2); + atn.lexerActions[i] = lexerAction; + } } else { - s = s + "null"; + let legacyLexerActions = []; + for (let state of atn.states) { + for (let i = 0; i < state.numberOfTransitions; i++) { + let transition = state.transition(i); + if (!(transition instanceof ActionTransition_1.ActionTransition)) { + continue; + } + let ruleIndex = transition.ruleIndex; + let actionIndex = transition.actionIndex; + let lexerAction = new LexerCustomAction_1.LexerCustomAction(ruleIndex, actionIndex); + state.setTransition(i, new ActionTransition_1.ActionTransition(transition.target, ruleIndex, legacyLexerActions.length, false)); + legacyLexerActions.push(lexerAction); + } + } + atn.lexerActions = legacyLexerActions; } } - return s + "]"; - } - } - get length() { - return this.returnStates.length; - } - }; - function predictionContextFromRuleContext(atn, outerContext) { - if (outerContext === void 0 || outerContext === null) { - outerContext = RuleContext.EMPTY; - } - if (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) { - return PredictionContext.EMPTY; - } - const parent = predictionContextFromRuleContext(atn, outerContext.parentCtx); - const state = atn.states[outerContext.invokingState]; - const transition = state.transitions[0]; - return SingletonPredictionContext.create(parent, transition.followState.stateNumber); - } - function merge(a, b, rootIsWildcard, mergeCache) { - if (a === b) { - return a; - } - if (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) { - return mergeSingletons(a, b, rootIsWildcard, mergeCache); - } - if (rootIsWildcard) { - if (a instanceof EmptyPredictionContext) { - return a; - } - if (b instanceof EmptyPredictionContext) { - return b; - } - } - if (a instanceof SingletonPredictionContext) { - a = new ArrayPredictionContext([a.getParent()], [a.returnState]); - } - if (b instanceof SingletonPredictionContext) { - b = new ArrayPredictionContext([b.getParent()], [b.returnState]); - } - return mergeArrays(a, b, rootIsWildcard, mergeCache); - } - function mergeSingletons(a, b, rootIsWildcard, mergeCache) { - if (mergeCache !== null) { - let previous = mergeCache.get(a, b); - if (previous !== null) { - return previous; - } - previous = mergeCache.get(b, a); - if (previous !== null) { - return previous; - } - } - const rootMerge = mergeRoot(a, b, rootIsWildcard); - if (rootMerge !== null) { - if (mergeCache !== null) { - mergeCache.set(a, b, rootMerge); - } - return rootMerge; - } - if (a.returnState === b.returnState) { - const parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache); - if (parent === a.parentCtx) { - return a; - } - if (parent === b.parentCtx) { - return b; - } - const spc = SingletonPredictionContext.create(parent, a.returnState); - if (mergeCache !== null) { - mergeCache.set(a, b, spc); - } - return spc; - } else { - let singleParent = null; - if (a === b || a.parentCtx !== null && a.parentCtx === b.parentCtx) { - singleParent = a.parentCtx; - } - if (singleParent !== null) { - const payloads2 = [a.returnState, b.returnState]; - if (a.returnState > b.returnState) { - payloads2[0] = b.returnState; - payloads2[1] = a.returnState; + this.markPrecedenceDecisions(atn); + atn.decisionToDFA = new Array(ndecisions); + for (let i = 0; i < ndecisions; i++) { + atn.decisionToDFA[i] = new DFA_1.DFA(atn.decisionToState[i], i); } - const parents2 = [singleParent, singleParent]; - const apc = new ArrayPredictionContext(parents2, payloads2); - if (mergeCache !== null) { - mergeCache.set(a, b, apc); + if (this.deserializationOptions.isVerifyATN) { + this.verifyATN(atn); } - return apc; - } - const payloads = [a.returnState, b.returnState]; - let parents = [a.parentCtx, b.parentCtx]; - if (a.returnState > b.returnState) { - payloads[0] = b.returnState; - payloads[1] = a.returnState; - parents = [b.parentCtx, a.parentCtx]; - } - const a_ = new ArrayPredictionContext(parents, payloads); - if (mergeCache !== null) { - mergeCache.set(a, b, a_); - } - return a_; - } - } - function mergeRoot(a, b, rootIsWildcard) { - if (rootIsWildcard) { - if (a === PredictionContext.EMPTY) { - return PredictionContext.EMPTY; - } - if (b === PredictionContext.EMPTY) { - return PredictionContext.EMPTY; - } - } else { - if (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) { - return PredictionContext.EMPTY; - } else if (a === PredictionContext.EMPTY) { - const payloads = [ - b.returnState, - PredictionContext.EMPTY_RETURN_STATE - ]; - const parents = [b.parentCtx, null]; - return new ArrayPredictionContext(parents, payloads); - } else if (b === PredictionContext.EMPTY) { - const payloads = [a.returnState, PredictionContext.EMPTY_RETURN_STATE]; - const parents = [a.parentCtx, null]; - return new ArrayPredictionContext(parents, payloads); - } - } - return null; - } - function mergeArrays(a, b, rootIsWildcard, mergeCache) { - if (mergeCache !== null) { - let previous = mergeCache.get(a, b); - if (previous !== null) { - return previous; - } - previous = mergeCache.get(b, a); - if (previous !== null) { - return previous; - } - } - let i = 0; - let j = 0; - let k = 0; - let mergedReturnStates = []; - let mergedParents = []; - while (i < a.returnStates.length && j < b.returnStates.length) { - const a_parent = a.parents[i]; - const b_parent = b.parents[j]; - if (a.returnStates[i] === b.returnStates[j]) { - const payload = a.returnStates[i]; - const bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE && a_parent === null && b_parent === null; - const ax_ax = a_parent !== null && b_parent !== null && a_parent === b_parent; - if (bothDollars || ax_ax) { - mergedParents[k] = a_parent; - mergedReturnStates[k] = payload; - } else { - mergedParents[k] = merge(a_parent, b_parent, rootIsWildcard, mergeCache); - mergedReturnStates[k] = payload; + if (this.deserializationOptions.isGenerateRuleBypassTransitions && atn.grammarType === 1) { + atn.ruleToTokenType = new Int32Array(atn.ruleToStartState.length); + for (let i = 0; i < atn.ruleToStartState.length; i++) { + atn.ruleToTokenType[i] = atn.maxTokenType + i + 1; + } + for (let i = 0; i < atn.ruleToStartState.length; i++) { + let bypassStart = new BasicBlockStartState_1.BasicBlockStartState(); + bypassStart.ruleIndex = i; + atn.addState(bypassStart); + let bypassStop = new BlockEndState_1.BlockEndState(); + bypassStop.ruleIndex = i; + atn.addState(bypassStop); + bypassStart.endState = bypassStop; + atn.defineDecisionState(bypassStart); + bypassStop.startState = bypassStart; + let endState; + let excludeTransition; + if (atn.ruleToStartState[i].isPrecedenceRule) { + endState = void 0; + for (let state of atn.states) { + if (state.ruleIndex !== i) { + continue; + } + if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { + continue; + } + let maybeLoopEndState = state.transition(state.numberOfTransitions - 1).target; + if (!(maybeLoopEndState instanceof LoopEndState_1.LoopEndState)) { + continue; + } + if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState_1.RuleStopState) { + endState = state; + break; + } + } + if (!endState) { + throw new Error("Couldn't identify final state of the precedence rule prefix section."); + } + excludeTransition = endState.loopBackState.transition(0); + } else { + endState = atn.ruleToStopState[i]; + } + for (let state of atn.states) { + for (let i2 = 0; i2 < state.numberOfTransitions; i2++) { + let transition = state.transition(i2); + if (transition === excludeTransition) { + continue; + } + if (transition.target === endState) { + transition.target = bypassStop; + } + } + } + while (atn.ruleToStartState[i].numberOfTransitions > 0) { + let transition = atn.ruleToStartState[i].removeTransition(atn.ruleToStartState[i].numberOfTransitions - 1); + bypassStart.addTransition(transition); + } + atn.ruleToStartState[i].addTransition(new EpsilonTransition_1.EpsilonTransition(bypassStart)); + bypassStop.addTransition(new EpsilonTransition_1.EpsilonTransition(endState)); + let matchState = new BasicState_1.BasicState(); + atn.addState(matchState); + matchState.addTransition(new AtomTransition_1.AtomTransition(bypassStop, atn.ruleToTokenType[i])); + bypassStart.addTransition(new EpsilonTransition_1.EpsilonTransition(matchState)); + } + if (this.deserializationOptions.isVerifyATN) { + this.verifyATN(atn); + } } - i += 1; - j += 1; - } else if (a.returnStates[i] < b.returnStates[j]) { - mergedParents[k] = a_parent; - mergedReturnStates[k] = a.returnStates[i]; - i += 1; - } else { - mergedParents[k] = b_parent; - mergedReturnStates[k] = b.returnStates[j]; - j += 1; - } - k += 1; - } - if (i < a.returnStates.length) { - for (let p = i; p < a.returnStates.length; p++) { - mergedParents[k] = a.parents[p]; - mergedReturnStates[k] = a.returnStates[p]; - k += 1; - } - } else { - for (let p = j; p < b.returnStates.length; p++) { - mergedParents[k] = b.parents[p]; - mergedReturnStates[k] = b.returnStates[p]; - k += 1; - } - } - if (k < mergedParents.length) { - if (k === 1) { - const a_ = SingletonPredictionContext.create(mergedParents[0], mergedReturnStates[0]); - if (mergeCache !== null) { - mergeCache.set(a, b, a_); + if (this.deserializationOptions.isOptimize) { + while (true) { + let optimizationCount = 0; + optimizationCount += ATNDeserializer4.inlineSetRules(atn); + optimizationCount += ATNDeserializer4.combineChainedEpsilons(atn); + let preserveOrder = atn.grammarType === 0; + optimizationCount += ATNDeserializer4.optimizeSets(atn, preserveOrder); + if (optimizationCount === 0) { + break; + } + } + if (this.deserializationOptions.isVerifyATN) { + this.verifyATN(atn); + } } - return a_; - } - mergedParents = mergedParents.slice(0, k); - mergedReturnStates = mergedReturnStates.slice(0, k); - } - const M = new ArrayPredictionContext(mergedParents, mergedReturnStates); - if (M === a) { - if (mergeCache !== null) { - mergeCache.set(a, b, a); + ATNDeserializer4.identifyTailCalls(atn); + return atn; } - return a; - } - if (M === b) { - if (mergeCache !== null) { - mergeCache.set(a, b, b); + deserializeSets(data, p, sets, unicodeDeserializer) { + let nsets = ATNDeserializer4.toInt(data[p++]); + for (let i = 0; i < nsets; i++) { + let nintervals = ATNDeserializer4.toInt(data[p]); + p++; + let set = new IntervalSet_1.IntervalSet(); + sets.push(set); + let containsEof = ATNDeserializer4.toInt(data[p++]) !== 0; + if (containsEof) { + set.add(-1); + } + for (let j = 0; j < nintervals; j++) { + let a = unicodeDeserializer.readUnicode(data, p); + p += unicodeDeserializer.size; + let b = unicodeDeserializer.readUnicode(data, p); + p += unicodeDeserializer.size; + set.add(a, b); + } + } + return p; } - return b; - } - combineCommonParents(mergedParents); - if (mergeCache !== null) { - mergeCache.set(a, b, M); - } - return M; - } - function combineCommonParents(parents) { - const uniqueParents = new Map2(); - for (let p = 0; p < parents.length; p++) { - const parent = parents[p]; - if (!uniqueParents.containsKey(parent)) { - uniqueParents.put(parent, parent); + markPrecedenceDecisions(atn) { + let rulePrecedenceDecisions = new Map(); + for (let state of atn.states) { + if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { + continue; + } + if (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) { + let maybeLoopEndState = state.transition(state.numberOfTransitions - 1).target; + if (maybeLoopEndState instanceof LoopEndState_1.LoopEndState) { + if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState_1.RuleStopState) { + rulePrecedenceDecisions.set(state.ruleIndex, state); + state.precedenceRuleDecision = true; + state.precedenceLoopbackStates = new BitSet_1.BitSet(atn.states.length); + } + } + } + } + for (let precedenceDecision of rulePrecedenceDecisions) { + for (let transition of atn.ruleToStopState[precedenceDecision[0]].getTransitions()) { + if (transition.serializationType !== 1) { + continue; + } + let epsilonTransition = transition; + if (epsilonTransition.outermostPrecedenceReturn !== -1) { + continue; + } + precedenceDecision[1].precedenceLoopbackStates.set(transition.target.stateNumber); + } + } } - } - for (let q = 0; q < parents.length; q++) { - parents[q] = uniqueParents.get(parents[q]); - } - } - function getCachedPredictionContext(context, contextCache, visited) { - if (context.isEmpty()) { - return context; - } - let existing = visited.get(context) || null; - if (existing !== null) { - return existing; - } - existing = contextCache.get(context); - if (existing !== null) { - visited.put(context, existing); - return existing; - } - let changed = false; - let parents = []; - for (let i = 0; i < parents.length; i++) { - const parent = getCachedPredictionContext(context.getParent(i), contextCache, visited); - if (changed || parent !== context.getParent(i)) { - if (!changed) { - parents = []; - for (let j = 0; j < context.length; j++) { - parents[j] = context.getParent(j); + verifyATN(atn) { + for (let state of atn.states) { + this.checkCondition(state !== void 0, "ATN states should not be undefined."); + if (state.stateType === ATNStateType_1.ATNStateType.INVALID_TYPE) { + continue; + } + this.checkCondition(state.onlyHasEpsilonTransitions || state.numberOfTransitions <= 1); + if (state instanceof PlusBlockStartState_1.PlusBlockStartState) { + this.checkCondition(state.loopBackState !== void 0); + } + if (state instanceof StarLoopEntryState_1.StarLoopEntryState) { + let starLoopEntryState = state; + this.checkCondition(starLoopEntryState.loopBackState !== void 0); + this.checkCondition(starLoopEntryState.numberOfTransitions === 2); + if (starLoopEntryState.transition(0).target instanceof StarBlockStartState_1.StarBlockStartState) { + this.checkCondition(starLoopEntryState.transition(1).target instanceof LoopEndState_1.LoopEndState); + this.checkCondition(!starLoopEntryState.nonGreedy); + } else if (starLoopEntryState.transition(0).target instanceof LoopEndState_1.LoopEndState) { + this.checkCondition(starLoopEntryState.transition(1).target instanceof StarBlockStartState_1.StarBlockStartState); + this.checkCondition(starLoopEntryState.nonGreedy); + } else { + throw new Error("IllegalStateException"); + } + } + if (state instanceof StarLoopbackState_1.StarLoopbackState) { + this.checkCondition(state.numberOfTransitions === 1); + this.checkCondition(state.transition(0).target instanceof StarLoopEntryState_1.StarLoopEntryState); + } + if (state instanceof LoopEndState_1.LoopEndState) { + this.checkCondition(state.loopBackState !== void 0); + } + if (state instanceof RuleStartState_1.RuleStartState) { + this.checkCondition(state.stopState !== void 0); + } + if (state instanceof BlockStartState_1.BlockStartState) { + this.checkCondition(state.endState !== void 0); + } + if (state instanceof BlockEndState_1.BlockEndState) { + this.checkCondition(state.startState !== void 0); + } + if (state instanceof DecisionState_1.DecisionState) { + let decisionState = state; + this.checkCondition(decisionState.numberOfTransitions <= 1 || decisionState.decision >= 0); + } else { + this.checkCondition(state.numberOfTransitions <= 1 || state instanceof RuleStopState_1.RuleStopState); } - changed = true; } - parents[i] = parent; } - } - if (!changed) { - contextCache.add(context); - visited.put(context, context); - return context; - } - let updated = null; - if (parents.length === 0) { - updated = PredictionContext.EMPTY; - } else if (parents.length === 1) { - updated = SingletonPredictionContext.create(parents[0], context.getReturnState(0)); - } else { - updated = new ArrayPredictionContext(parents, context.returnStates); - } - contextCache.add(updated); - visited.put(updated, updated); - visited.put(context, updated); - return updated; - } - module.exports = { - merge, - PredictionContext, - PredictionContextCache, - SingletonPredictionContext, - predictionContextFromRuleContext, - getCachedPredictionContext - }; - }); - - // node_modules/antlr4/src/antlr4/LL1Analyzer.js - var require_LL1Analyzer2 = __commonJS((exports, module) => { - init_process_shim(); - var {Set: Set2, BitSet} = require_Utils2(); - var {Token: Token2} = require_Token2(); - var {ATNConfig} = require_ATNConfig2(); - var {IntervalSet} = require_IntervalSet2(); - var {RuleStopState} = require_ATNState2(); - var {RuleTransition, NotSetTransition, WildcardTransition, AbstractPredicateTransition} = require_Transition2(); - var {predictionContextFromRuleContext, PredictionContext, SingletonPredictionContext} = require_PredictionContext2(); - var LL1Analyzer = class { - constructor(atn) { - this.atn = atn; - } - getDecisionLookahead(s) { - if (s === null) { - return null; + checkCondition(condition, message) { + if (!condition) { + throw new Error("IllegalStateException: " + message); + } } - const count = s.transitions.length; - const look = []; - for (let alt = 0; alt < count; alt++) { - look[alt] = new IntervalSet(); - const lookBusy = new Set2(); - const seeThruPreds = false; - this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY, look[alt], lookBusy, new BitSet(), seeThruPreds, false); - if (look[alt].length === 0 || look[alt].contains(LL1Analyzer.HIT_PRED)) { - look[alt] = null; - } - } - return look; - } - LOOK(s, stopState, ctx) { - const r = new IntervalSet(); - const seeThruPreds = true; - ctx = ctx || null; - const lookContext = ctx !== null ? predictionContextFromRuleContext(s.atn, ctx) : null; - this._LOOK(s, stopState, lookContext, r, new Set2(), new BitSet(), seeThruPreds, true); - return r; - } - _LOOK(s, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) { - const c = new ATNConfig({state: s, alt: 0, context: ctx}, null); - if (lookBusy.contains(c)) { - return; + static inlineSetRules(atn) { + let inlinedCalls = 0; + let ruleToInlineTransition = new Array(atn.ruleToStartState.length); + for (let i = 0; i < atn.ruleToStartState.length; i++) { + let startState = atn.ruleToStartState[i]; + let middleState = startState; + while (middleState.onlyHasEpsilonTransitions && middleState.numberOfOptimizedTransitions === 1 && middleState.getOptimizedTransition(0).serializationType === 1) { + middleState = middleState.getOptimizedTransition(0).target; + } + if (middleState.numberOfOptimizedTransitions !== 1) { + continue; + } + let matchTransition = middleState.getOptimizedTransition(0); + let matchTarget = matchTransition.target; + if (matchTransition.isEpsilon || !matchTarget.onlyHasEpsilonTransitions || matchTarget.numberOfOptimizedTransitions !== 1 || !(matchTarget.getOptimizedTransition(0).target instanceof RuleStopState_1.RuleStopState)) { + continue; + } + switch (matchTransition.serializationType) { + case 5: + case 2: + case 7: + ruleToInlineTransition[i] = matchTransition; + break; + case 8: + case 9: + continue; + default: + continue; + } + } + for (let state of atn.states) { + if (state.ruleIndex < 0) { + continue; + } + let optimizedTransitions; + for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { + let transition = state.getOptimizedTransition(i); + if (!(transition instanceof RuleTransition_1.RuleTransition)) { + if (optimizedTransitions !== void 0) { + optimizedTransitions.push(transition); + } + continue; + } + let ruleTransition = transition; + let effective = ruleToInlineTransition[ruleTransition.target.ruleIndex]; + if (effective === void 0) { + if (optimizedTransitions !== void 0) { + optimizedTransitions.push(transition); + } + continue; + } + if (optimizedTransitions === void 0) { + optimizedTransitions = []; + for (let j = 0; j < i; j++) { + optimizedTransitions.push(state.getOptimizedTransition(i)); + } + } + inlinedCalls++; + let target = ruleTransition.followState; + let intermediateState = new BasicState_1.BasicState(); + intermediateState.setRuleIndex(target.ruleIndex); + atn.addState(intermediateState); + optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(intermediateState)); + switch (effective.serializationType) { + case 5: + intermediateState.addTransition(new AtomTransition_1.AtomTransition(target, effective._label)); + break; + case 2: + intermediateState.addTransition(new RangeTransition_1.RangeTransition(target, effective.from, effective.to)); + break; + case 7: + intermediateState.addTransition(new SetTransition_1.SetTransition(target, effective.label)); + break; + default: + throw new Error("UnsupportedOperationException"); + } + } + if (optimizedTransitions !== void 0) { + if (state.isOptimized) { + while (state.numberOfOptimizedTransitions > 0) { + state.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1); + } + } + for (let transition of optimizedTransitions) { + state.addOptimizedTransition(transition); + } + } + } + if (ParserATNSimulator_1.ParserATNSimulator.debug) { + console.log("ATN runtime optimizer removed " + inlinedCalls + " rule invocations by inlining sets."); + } + return inlinedCalls; } - lookBusy.add(c); - if (s === stopState) { - if (ctx === null) { - look.addOne(Token2.EPSILON); - return; - } else if (ctx.isEmpty() && addEOF) { - look.addOne(Token2.EOF); - return; + static combineChainedEpsilons(atn) { + let removedEdges = 0; + for (let state of atn.states) { + if (!state.onlyHasEpsilonTransitions || state instanceof RuleStopState_1.RuleStopState) { + continue; + } + let optimizedTransitions; + nextTransition: + for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { + let transition = state.getOptimizedTransition(i); + let intermediate = transition.target; + if (transition.serializationType !== 1 || transition.outermostPrecedenceReturn !== -1 || intermediate.stateType !== ATNStateType_1.ATNStateType.BASIC || !intermediate.onlyHasEpsilonTransitions) { + if (optimizedTransitions !== void 0) { + optimizedTransitions.push(transition); + } + continue nextTransition; + } + for (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) { + if (intermediate.getOptimizedTransition(j).serializationType !== 1 || intermediate.getOptimizedTransition(j).outermostPrecedenceReturn !== -1) { + if (optimizedTransitions !== void 0) { + optimizedTransitions.push(transition); + } + continue nextTransition; + } + } + removedEdges++; + if (optimizedTransitions === void 0) { + optimizedTransitions = []; + for (let j = 0; j < i; j++) { + optimizedTransitions.push(state.getOptimizedTransition(j)); + } + } + for (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) { + let target = intermediate.getOptimizedTransition(j).target; + optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(target)); + } + } + if (optimizedTransitions !== void 0) { + if (state.isOptimized) { + while (state.numberOfOptimizedTransitions > 0) { + state.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1); + } + } + for (let transition of optimizedTransitions) { + state.addOptimizedTransition(transition); + } + } + } + if (ParserATNSimulator_1.ParserATNSimulator.debug) { + console.log("ATN runtime optimizer removed " + removedEdges + " transitions by combining chained epsilon transitions."); } + return removedEdges; } - if (s instanceof RuleStopState) { - if (ctx === null) { - look.addOne(Token2.EPSILON); - return; - } else if (ctx.isEmpty() && addEOF) { - look.addOne(Token2.EOF); - return; + static optimizeSets(atn, preserveOrder) { + if (preserveOrder) { + return 0; } - if (ctx !== PredictionContext.EMPTY) { - const removed = calledRuleStack.contains(s.ruleIndex); - try { - calledRuleStack.remove(s.ruleIndex); - for (let i = 0; i < ctx.length; i++) { - const returnState = this.atn.states[ctx.getReturnState(i)]; - this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + let removedPaths = 0; + let decisions = atn.decisionToState; + for (let decision of decisions) { + let setTransitions = new IntervalSet_1.IntervalSet(); + for (let i = 0; i < decision.numberOfOptimizedTransitions; i++) { + let epsTransition = decision.getOptimizedTransition(i); + if (!(epsTransition instanceof EpsilonTransition_1.EpsilonTransition)) { + continue; } - } finally { - if (removed) { - calledRuleStack.add(s.ruleIndex); + if (epsTransition.target.numberOfOptimizedTransitions !== 1) { + continue; + } + let transition = epsTransition.target.getOptimizedTransition(0); + if (!(transition.target instanceof BlockEndState_1.BlockEndState)) { + continue; + } + if (transition instanceof NotSetTransition_1.NotSetTransition) { + continue; + } + if (transition instanceof AtomTransition_1.AtomTransition || transition instanceof RangeTransition_1.RangeTransition || transition instanceof SetTransition_1.SetTransition) { + setTransitions.add(i); } } - return; + if (setTransitions.size <= 1) { + continue; + } + let optimizedTransitions = []; + for (let i = 0; i < decision.numberOfOptimizedTransitions; i++) { + if (!setTransitions.contains(i)) { + optimizedTransitions.push(decision.getOptimizedTransition(i)); + } + } + let blockEndState = decision.getOptimizedTransition(setTransitions.minElement).target.getOptimizedTransition(0).target; + let matchSet = new IntervalSet_1.IntervalSet(); + for (let interval of setTransitions.intervals) { + for (let j = interval.a; j <= interval.b; j++) { + let matchTransition = decision.getOptimizedTransition(j).target.getOptimizedTransition(0); + if (matchTransition instanceof NotSetTransition_1.NotSetTransition) { + throw new Error("Not yet implemented."); + } else { + matchSet.addAll(matchTransition.label); + } + } + } + let newTransition; + if (matchSet.intervals.length === 1) { + if (matchSet.size === 1) { + newTransition = new AtomTransition_1.AtomTransition(blockEndState, matchSet.minElement); + } else { + let matchInterval = matchSet.intervals[0]; + newTransition = new RangeTransition_1.RangeTransition(blockEndState, matchInterval.a, matchInterval.b); + } + } else { + newTransition = new SetTransition_1.SetTransition(blockEndState, matchSet); + } + let setOptimizedState = new BasicState_1.BasicState(); + setOptimizedState.setRuleIndex(decision.ruleIndex); + atn.addState(setOptimizedState); + setOptimizedState.addTransition(newTransition); + optimizedTransitions.push(new EpsilonTransition_1.EpsilonTransition(setOptimizedState)); + removedPaths += decision.numberOfOptimizedTransitions - optimizedTransitions.length; + if (decision.isOptimized) { + while (decision.numberOfOptimizedTransitions > 0) { + decision.removeOptimizedTransition(decision.numberOfOptimizedTransitions - 1); + } + } + for (let transition of optimizedTransitions) { + decision.addOptimizedTransition(transition); + } } + if (ParserATNSimulator_1.ParserATNSimulator.debug) { + console.log("ATN runtime optimizer removed " + removedPaths + " paths by collapsing sets."); + } + return removedPaths; } - for (let j = 0; j < s.transitions.length; j++) { - const t = s.transitions[j]; - if (t.constructor === RuleTransition) { - if (calledRuleStack.contains(t.target.ruleIndex)) { + static identifyTailCalls(atn) { + for (let state of atn.states) { + for (let i = 0; i < state.numberOfTransitions; i++) { + let transition = state.transition(i); + if (!(transition instanceof RuleTransition_1.RuleTransition)) { + continue; + } + transition.tailCall = this.testTailCall(atn, transition, false); + transition.optimizedTailCall = this.testTailCall(atn, transition, true); + } + if (!state.isOptimized) { continue; } - const newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber); - try { - calledRuleStack.add(t.target.ruleIndex); - this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } finally { - calledRuleStack.remove(t.target.ruleIndex); + for (let i = 0; i < state.numberOfOptimizedTransitions; i++) { + let transition = state.getOptimizedTransition(i); + if (!(transition instanceof RuleTransition_1.RuleTransition)) { + continue; + } + transition.tailCall = this.testTailCall(atn, transition, false); + transition.optimizedTailCall = this.testTailCall(atn, transition, true); } - } else if (t instanceof AbstractPredicateTransition) { - if (seeThruPreds) { - this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } else { - look.addOne(LL1Analyzer.HIT_PRED); + } + } + static testTailCall(atn, transition, optimizedPath) { + if (!optimizedPath && transition.tailCall) { + return true; + } + if (optimizedPath && transition.optimizedTailCall) { + return true; + } + let reachable = new BitSet_1.BitSet(atn.states.length); + let worklist = []; + worklist.push(transition.followState); + while (true) { + let state = worklist.pop(); + if (!state) { + break; } - } else if (t.isEpsilon) { - this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); - } else if (t.constructor === WildcardTransition) { - look.addRange(Token2.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType); - } else { - let set = t.label; - if (set !== null) { - if (t instanceof NotSetTransition) { - set = set.complement(Token2.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType); + if (reachable.get(state.stateNumber)) { + continue; + } + if (state instanceof RuleStopState_1.RuleStopState) { + continue; + } + if (!state.onlyHasEpsilonTransitions) { + return false; + } + let transitionCount = optimizedPath ? state.numberOfOptimizedTransitions : state.numberOfTransitions; + for (let i = 0; i < transitionCount; i++) { + let t = optimizedPath ? state.getOptimizedTransition(i) : state.transition(i); + if (t.serializationType !== 1) { + return false; } - look.addSet(set); + worklist.push(t.target); } } + return true; } - } - }; - LL1Analyzer.HIT_PRED = Token2.INVALID_TYPE; - module.exports = LL1Analyzer; - }); - - // node_modules/antlr4/src/antlr4/atn/ATN.js - var require_ATN2 = __commonJS((exports, module) => { - init_process_shim(); - var LL1Analyzer = require_LL1Analyzer2(); - var {IntervalSet} = require_IntervalSet2(); - var {Token: Token2} = require_Token2(); - var ATN2 = class { - constructor(grammarType, maxTokenType) { - this.grammarType = grammarType; - this.maxTokenType = maxTokenType; - this.states = []; - this.decisionToState = []; - this.ruleToStartState = []; - this.ruleToStopState = null; - this.modeNameToStartState = {}; - this.ruleToTokenType = null; - this.lexerActions = null; - this.modeToStartState = []; - } - nextTokensInContext(s, ctx) { - const anal = new LL1Analyzer(this); - return anal.LOOK(s, null, ctx); - } - nextTokensNoContext(s) { - if (s.nextTokenWithinRule !== null) { - return s.nextTokenWithinRule; - } - s.nextTokenWithinRule = this.nextTokensInContext(s, null); - s.nextTokenWithinRule.readOnly = true; - return s.nextTokenWithinRule; - } - nextTokens(s, ctx) { - if (ctx === void 0) { - return this.nextTokensNoContext(s); - } else { - return this.nextTokensInContext(s, ctx); - } - } - addState(state) { - if (state !== null) { - state.atn = this; - state.stateNumber = this.states.length; - } - this.states.push(state); - } - removeState(state) { - this.states[state.stateNumber] = null; - } - defineDecisionState(s) { - this.decisionToState.push(s); - s.decision = this.decisionToState.length - 1; - return s.decision; - } - getDecisionState(decision) { - if (this.decisionToState.length === 0) { - return null; - } else { - return this.decisionToState[decision]; - } - } - getExpectedTokens(stateNumber, ctx) { - if (stateNumber < 0 || stateNumber >= this.states.length) { - throw "Invalid state number."; - } - const s = this.states[stateNumber]; - let following = this.nextTokens(s); - if (!following.contains(Token2.EPSILON)) { - return following; + static toInt(c) { + return c; } - const expected = new IntervalSet(); - expected.addSet(following); - expected.removeOne(Token2.EPSILON); - while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token2.EPSILON)) { - const invokingState = this.states[ctx.invokingState]; - const rt = invokingState.transitions[0]; - following = this.nextTokens(rt.followState); - expected.addSet(following); - expected.removeOne(Token2.EPSILON); - ctx = ctx.parentCtx; - } - if (following.contains(Token2.EPSILON)) { - expected.addOne(Token2.EOF); - } - return expected; - } - }; - ATN2.INVALID_ALT_NUMBER = 0; - module.exports = ATN2; - }); - - // node_modules/antlr4/src/antlr4/atn/ATNType.js - var require_ATNType = __commonJS((exports, module) => { - init_process_shim(); - module.exports = { - LEXER: 0, - PARSER: 1 - }; - }); - - // node_modules/antlr4/src/antlr4/atn/ATNDeserializationOptions.js - var require_ATNDeserializationOptions2 = __commonJS((exports, module) => { - init_process_shim(); - var ATNDeserializationOptions = class { - constructor(copyFrom) { - if (copyFrom === void 0) { - copyFrom = null; - } - this.readOnly = false; - this.verifyATN = copyFrom === null ? true : copyFrom.verifyATN; - this.generateRuleBypassTransitions = copyFrom === null ? false : copyFrom.generateRuleBypassTransitions; - } - }; - ATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions(); - ATNDeserializationOptions.defaultOptions.readOnly = true; - module.exports = ATNDeserializationOptions; - }); - - // node_modules/antlr4/src/antlr4/atn/LexerAction.js - var require_LexerAction = __commonJS((exports, module) => { - init_process_shim(); - var LexerActionType = { - CHANNEL: 0, - CUSTOM: 1, - MODE: 2, - MORE: 3, - POP_MODE: 4, - PUSH_MODE: 5, - SKIP: 6, - TYPE: 7 - }; - var LexerAction = class { - constructor(action) { - this.actionType = action; - this.isPositionDependent = false; - } - hashCode() { - const hash = new Hash(); - this.updateHashCode(hash); - return hash.finish(); - } - updateHashCode(hash) { - hash.update(this.actionType); - } - equals(other) { - return this === other; - } - }; - var LexerSkipAction = class extends LexerAction { - constructor() { - super(LexerActionType.SKIP); - } - execute(lexer) { - lexer.skip(); - } - toString() { - return "skip"; - } - }; - LexerSkipAction.INSTANCE = new LexerSkipAction(); - var LexerTypeAction = class extends LexerAction { - constructor(type) { - super(LexerActionType.TYPE); - this.type = type; - } - execute(lexer) { - lexer.type = this.type; - } - updateHashCode(hash) { - hash.update(this.actionType, this.type); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerTypeAction)) { - return false; - } else { - return this.type === other.type; + static toInt32(data, offset) { + return (data[offset] | data[offset + 1] << 16) >>> 0; } - } - toString() { - return "type(" + this.type + ")"; - } - }; - var LexerPushModeAction = class extends LexerAction { - constructor(mode) { - super(LexerActionType.PUSH_MODE); - this.mode = mode; - } - execute(lexer) { - lexer.pushMode(this.mode); - } - updateHashCode(hash) { - hash.update(this.actionType, this.mode); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerPushModeAction)) { - return false; - } else { - return this.mode === other.mode; + static toUUID(data, offset) { + let leastSigBits = ATNDeserializer4.toInt32(data, offset); + let lessSigBits = ATNDeserializer4.toInt32(data, offset + 2); + let moreSigBits = ATNDeserializer4.toInt32(data, offset + 4); + let mostSigBits = ATNDeserializer4.toInt32(data, offset + 6); + return new UUID_1.UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits); } - } - toString() { - return "pushMode(" + this.mode + ")"; - } - }; - var LexerPopModeAction = class extends LexerAction { - constructor() { - super(LexerActionType.POP_MODE); - } - execute(lexer) { - lexer.popMode(); - } - toString() { - return "popMode"; - } - }; - LexerPopModeAction.INSTANCE = new LexerPopModeAction(); - var LexerMoreAction = class extends LexerAction { - constructor() { - super(LexerActionType.MORE); - } - execute(lexer) { - lexer.more(); - } - toString() { - return "more"; - } - }; - LexerMoreAction.INSTANCE = new LexerMoreAction(); - var LexerModeAction = class extends LexerAction { - constructor(mode) { - super(LexerActionType.MODE); - this.mode = mode; - } - execute(lexer) { - lexer.mode(this.mode); - } - updateHashCode(hash) { - hash.update(this.actionType, this.mode); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerModeAction)) { - return false; - } else { - return this.mode === other.mode; + edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) { + let target = atn.states[trg]; + switch (type) { + case 1: + return new EpsilonTransition_1.EpsilonTransition(target); + case 2: + if (arg3 !== 0) { + return new RangeTransition_1.RangeTransition(target, Token_1.Token.EOF, arg2); + } else { + return new RangeTransition_1.RangeTransition(target, arg1, arg2); + } + case 3: + let rt = new RuleTransition_1.RuleTransition(atn.states[arg1], arg2, arg3, target); + return rt; + case 4: + let pt = new PredicateTransition_1.PredicateTransition(target, arg1, arg2, arg3 !== 0); + return pt; + case 10: + return new PrecedencePredicateTransition_1.PrecedencePredicateTransition(target, arg1); + case 5: + if (arg3 !== 0) { + return new AtomTransition_1.AtomTransition(target, Token_1.Token.EOF); + } else { + return new AtomTransition_1.AtomTransition(target, arg1); + } + case 6: + let a = new ActionTransition_1.ActionTransition(target, arg1, arg2, arg3 !== 0); + return a; + case 7: + return new SetTransition_1.SetTransition(target, sets[arg1]); + case 8: + return new NotSetTransition_1.NotSetTransition(target, sets[arg1]); + case 9: + return new WildcardTransition_1.WildcardTransition(target); + } + throw new Error("The specified transition type is not valid."); } - } - toString() { - return "mode(" + this.mode + ")"; - } - }; - var LexerCustomAction = class extends LexerAction { - constructor(ruleIndex, actionIndex) { - super(LexerActionType.CUSTOM); - this.ruleIndex = ruleIndex; - this.actionIndex = actionIndex; - this.isPositionDependent = true; - } - execute(lexer) { - lexer.action(null, this.ruleIndex, this.actionIndex); - } - updateHashCode(hash) { - hash.update(this.actionType, this.ruleIndex, this.actionIndex); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerCustomAction)) { - return false; - } else { - return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex; + stateFactory(type, ruleIndex) { + let s; + switch (type) { + case ATNStateType_1.ATNStateType.INVALID_TYPE: + return new InvalidState_1.InvalidState(); + case ATNStateType_1.ATNStateType.BASIC: + s = new BasicState_1.BasicState(); + break; + case ATNStateType_1.ATNStateType.RULE_START: + s = new RuleStartState_1.RuleStartState(); + break; + case ATNStateType_1.ATNStateType.BLOCK_START: + s = new BasicBlockStartState_1.BasicBlockStartState(); + break; + case ATNStateType_1.ATNStateType.PLUS_BLOCK_START: + s = new PlusBlockStartState_1.PlusBlockStartState(); + break; + case ATNStateType_1.ATNStateType.STAR_BLOCK_START: + s = new StarBlockStartState_1.StarBlockStartState(); + break; + case ATNStateType_1.ATNStateType.TOKEN_START: + s = new TokensStartState_1.TokensStartState(); + break; + case ATNStateType_1.ATNStateType.RULE_STOP: + s = new RuleStopState_1.RuleStopState(); + break; + case ATNStateType_1.ATNStateType.BLOCK_END: + s = new BlockEndState_1.BlockEndState(); + break; + case ATNStateType_1.ATNStateType.STAR_LOOP_BACK: + s = new StarLoopbackState_1.StarLoopbackState(); + break; + case ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY: + s = new StarLoopEntryState_1.StarLoopEntryState(); + break; + case ATNStateType_1.ATNStateType.PLUS_LOOP_BACK: + s = new PlusLoopbackState_1.PlusLoopbackState(); + break; + case ATNStateType_1.ATNStateType.LOOP_END: + s = new LoopEndState_1.LoopEndState(); + break; + default: + let message = `The specified state type ${type} is not valid.`; + throw new Error(message); + } + s.ruleIndex = ruleIndex; + return s; } - } - }; - var LexerChannelAction = class extends LexerAction { - constructor(channel) { - super(LexerActionType.CHANNEL); - this.channel = channel; - } - execute(lexer) { - lexer._channel = this.channel; - } - updateHashCode(hash) { - hash.update(this.actionType, this.channel); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerChannelAction)) { - return false; - } else { - return this.channel === other.channel; + lexerActionFactory(type, data1, data2) { + switch (type) { + case 0: + return new LexerChannelAction_1.LexerChannelAction(data1); + case 1: + return new LexerCustomAction_1.LexerCustomAction(data1, data2); + case 2: + return new LexerModeAction_1.LexerModeAction(data1); + case 3: + return LexerMoreAction_1.LexerMoreAction.INSTANCE; + case 4: + return LexerPopModeAction_1.LexerPopModeAction.INSTANCE; + case 5: + return new LexerPushModeAction_1.LexerPushModeAction(data1); + case 6: + return LexerSkipAction_1.LexerSkipAction.INSTANCE; + case 7: + return new LexerTypeAction_1.LexerTypeAction(data1); + default: + let message = `The specified lexer action type ${type} is not valid.`; + throw new Error(message); + } } - } - toString() { - return "channel(" + this.channel + ")"; - } - }; - var LexerIndexedCustomAction = class extends LexerAction { - constructor(offset, action) { - super(action.actionType); - this.offset = offset; - this.action = action; - this.isPositionDependent = true; - } - execute(lexer) { - this.action.execute(lexer); - } - updateHashCode(hash) { - hash.update(this.actionType, this.offset, this.action); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerIndexedCustomAction)) { - return false; - } else { - return this.offset === other.offset && this.action === other.action; - } - } - }; - module.exports = { - LexerActionType, - LexerSkipAction, - LexerChannelAction, - LexerCustomAction, - LexerIndexedCustomAction, - LexerMoreAction, - LexerTypeAction, - LexerPushModeAction, - LexerPopModeAction, - LexerModeAction - }; + }; + ATNDeserializer4.BASE_SERIALIZED_UUID = UUID_1.UUID.fromString("E4178468-DF95-44D0-AD87-F22A5D5FB6D3"); + ATNDeserializer4.ADDED_LEXER_ACTIONS = UUID_1.UUID.fromString("AB35191A-1603-487E-B75A-479B831EAF6D"); + ATNDeserializer4.ADDED_UNICODE_SMP = UUID_1.UUID.fromString("C23FEA89-0605-4f51-AFB8-058BCAB8C91B"); + ATNDeserializer4.SUPPORTED_UUIDS = [ + ATNDeserializer4.BASE_SERIALIZED_UUID, + ATNDeserializer4.ADDED_LEXER_ACTIONS, + ATNDeserializer4.ADDED_UNICODE_SMP + ]; + ATNDeserializer4.SERIALIZED_UUID = ATNDeserializer4.ADDED_UNICODE_SMP; + __decorate([ + Decorators_1.NotNull + ], ATNDeserializer4.prototype, "deserializationOptions", void 0); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ATNDeserializer4.prototype, "deserialize", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ATNDeserializer4.prototype, "markPrecedenceDecisions", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ATNDeserializer4.prototype, "edgeFactory", null); + exports.ATNDeserializer = ATNDeserializer4; + } }); - // node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js - var require_ATNDeserializer2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var ATN2 = require_ATN2(); - var ATNType = require_ATNType(); - var { - ATNState, - BasicState, - DecisionState, - BlockStartState, - BlockEndState, - LoopEndState, - RuleStartState, - RuleStopState, - TokensStartState, - PlusLoopbackState, - StarLoopbackState, - StarLoopEntryState, - PlusBlockStartState, - StarBlockStartState, - BasicBlockStartState - } = require_ATNState2(); - var { - Transition, - AtomTransition: AtomTransition2, - SetTransition, - NotSetTransition, - RuleTransition, - RangeTransition, - ActionTransition, - EpsilonTransition, - WildcardTransition, - PredicateTransition, - PrecedencePredicateTransition - } = require_Transition2(); - var {IntervalSet} = require_IntervalSet2(); - var ATNDeserializationOptions = require_ATNDeserializationOptions2(); - var { - LexerActionType, - LexerSkipAction, - LexerChannelAction, - LexerCustomAction, - LexerMoreAction, - LexerTypeAction, - LexerPushModeAction, - LexerPopModeAction, - LexerModeAction - } = require_LexerAction(); - var BASE_SERIALIZED_UUID = "AADB8D7E-AEEF-4415-AD2B-8204D6CF042E"; - var ADDED_UNICODE_SMP = "59627784-3BE5-417A-B9EB-8131A7286089"; - var SUPPORTED_UUIDS = [BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP]; - var SERIALIZED_VERSION = 3; - var SERIALIZED_UUID = ADDED_UNICODE_SMP; - function initArray(length, value) { - const tmp = []; - tmp[length - 1] = value; - return tmp.map(function(i) { - return value; - }); - } - var ATNDeserializer3 = class { - constructor(options) { - if (options === void 0 || options === null) { - options = ATNDeserializationOptions.defaultOptions; - } - this.deserializationOptions = options; - this.stateFactories = null; - this.actionFactories = null; - } - isFeatureSupported(feature, actualUuid) { - const idx1 = SUPPORTED_UUIDS.indexOf(feature); - if (idx1 < 0) { - return false; - } - const idx2 = SUPPORTED_UUIDS.indexOf(actualUuid); - return idx2 >= idx1; - } - deserialize(data) { - this.reset(data); - this.checkVersion(); - this.checkUUID(); - const atn = this.readATN(); - this.readStates(atn); - this.readRules(atn); - this.readModes(atn); - const sets = []; - this.readSets(atn, sets, this.readInt.bind(this)); - if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) { - this.readSets(atn, sets, this.readInt32.bind(this)); - } - this.readEdges(atn, sets); - this.readDecisions(atn); - this.readLexerActions(atn); - this.markPrecedenceDecisions(atn); - this.verifyATN(atn); - if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER) { - this.generateRuleBypassTransitions(atn); - this.verifyATN(atn); - } - return atn; - } - reset(data) { - const adjust = function(c) { - const v = c.charCodeAt(0); - return v > 1 ? v - 2 : v + 65534; + // node_modules/antlr4ts/atn/ParseInfo.js + var require_ParseInfo = __commonJS({ + "node_modules/antlr4ts/atn/ParseInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); }; - const temp = data.split("").map(adjust); - temp[0] = data.charCodeAt(0); - this.data = temp; - this.pos = 0; - } - checkVersion() { - const version = this.readInt(); - if (version !== SERIALIZED_VERSION) { - throw "Could not deserialize ATN with version " + version + " (expected " + SERIALIZED_VERSION + ")."; - } - } - checkUUID() { - const uuid = this.readUUID(); - if (SUPPORTED_UUIDS.indexOf(uuid) < 0) { - throw "Could not deserialize ATN with UUID: " + uuid + " (expected " + SERIALIZED_UUID + " or a legacy UUID).", uuid, SERIALIZED_UUID; - } - this.uuid = uuid; - } - readATN() { - const grammarType = this.readInt(); - const maxTokenType = this.readInt(); - return new ATN2(grammarType, maxTokenType); - } - readStates(atn) { - let j, pair, stateNumber; - const loopBackStateNumbers = []; - const endStateNumbers = []; - const nstates = this.readInt(); - for (let i = 0; i < nstates; i++) { - const stype = this.readInt(); - if (stype === ATNState.INVALID_TYPE) { - atn.addState(null); - continue; - } - let ruleIndex = this.readInt(); - if (ruleIndex === 65535) { - ruleIndex = -1; - } - const s = this.stateFactory(stype, ruleIndex); - if (stype === ATNState.LOOP_END) { - const loopBackStateNumber = this.readInt(); - loopBackStateNumbers.push([s, loopBackStateNumber]); - } else if (s instanceof BlockStartState) { - const endStateNumber = this.readInt(); - endStateNumbers.push([s, endStateNumber]); - } - atn.addState(s); - } - for (j = 0; j < loopBackStateNumbers.length; j++) { - pair = loopBackStateNumbers[j]; - pair[0].loopBackState = atn.states[pair[1]]; - } - for (j = 0; j < endStateNumbers.length; j++) { - pair = endStateNumbers[j]; - pair[0].endState = atn.states[pair[1]]; - } - let numNonGreedyStates = this.readInt(); - for (j = 0; j < numNonGreedyStates; j++) { - stateNumber = this.readInt(); - atn.states[stateNumber].nonGreedy = true; - } - let numPrecedenceStates = this.readInt(); - for (j = 0; j < numPrecedenceStates; j++) { - stateNumber = this.readInt(); - atn.states[stateNumber].isPrecedenceRule = true; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParseInfo = void 0; + var Decorators_1 = require_Decorators(); + var ParseInfo = class ParseInfo { + constructor(atnSimulator) { + this.atnSimulator = atnSimulator; } - } - readRules(atn) { - let i; - const nrules = this.readInt(); - if (atn.grammarType === ATNType.LEXER) { - atn.ruleToTokenType = initArray(nrules, 0); + getDecisionInfo() { + return this.atnSimulator.getDecisionInfo(); } - atn.ruleToStartState = initArray(nrules, 0); - for (i = 0; i < nrules; i++) { - const s = this.readInt(); - atn.ruleToStartState[i] = atn.states[s]; - if (atn.grammarType === ATNType.LEXER) { - let tokenType = this.readInt(); - if (tokenType === 65535) { - tokenType = Token2.EOF; + getLLDecisions() { + let decisions = this.atnSimulator.getDecisionInfo(); + let LL = []; + for (let i = 0; i < decisions.length; i++) { + let fallBack = decisions[i].LL_Fallback; + if (fallBack > 0) { + LL.push(i); } - atn.ruleToTokenType[i] = tokenType; } + return LL; } - atn.ruleToStopState = initArray(nrules, 0); - for (i = 0; i < atn.states.length; i++) { - const state = atn.states[i]; - if (!(state instanceof RuleStopState)) { - continue; + getTotalTimeInPrediction() { + let decisions = this.atnSimulator.getDecisionInfo(); + let t = 0; + for (let decision of decisions) { + t += decision.timeInPrediction; } - atn.ruleToStopState[state.ruleIndex] = state; - atn.ruleToStartState[state.ruleIndex].stopState = state; - } - } - readModes(atn) { - const nmodes = this.readInt(); - for (let i = 0; i < nmodes; i++) { - let s = this.readInt(); - atn.modeToStartState.push(atn.states[s]); + return t; } - } - readSets(atn, sets, readUnicode) { - const m = this.readInt(); - for (let i = 0; i < m; i++) { - const iset = new IntervalSet(); - sets.push(iset); - const n = this.readInt(); - const containsEof = this.readInt(); - if (containsEof !== 0) { - iset.addOne(-1); + getTotalSLLLookaheadOps() { + let decisions = this.atnSimulator.getDecisionInfo(); + let k = 0; + for (let decision of decisions) { + k += decision.SLL_TotalLook; } - for (let j = 0; j < n; j++) { - const i1 = readUnicode(); - const i2 = readUnicode(); - iset.addRange(i1, i2); - } - } - } - readEdges(atn, sets) { - let i, j, state, trans, target; - const nedges = this.readInt(); - for (i = 0; i < nedges; i++) { - const src = this.readInt(); - const trg = this.readInt(); - const ttype = this.readInt(); - const arg1 = this.readInt(); - const arg2 = this.readInt(); - const arg3 = this.readInt(); - trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets); - const srcState = atn.states[src]; - srcState.addTransition(trans); + return k; } - for (i = 0; i < atn.states.length; i++) { - state = atn.states[i]; - for (j = 0; j < state.transitions.length; j++) { - const t = state.transitions[j]; - if (!(t instanceof RuleTransition)) { - continue; - } - let outermostPrecedenceReturn = -1; - if (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) { - if (t.precedence === 0) { - outermostPrecedenceReturn = t.target.ruleIndex; - } - } - trans = new EpsilonTransition(t.followState, outermostPrecedenceReturn); - atn.ruleToStopState[t.target.ruleIndex].addTransition(trans); + getTotalLLLookaheadOps() { + let decisions = this.atnSimulator.getDecisionInfo(); + let k = 0; + for (let decision of decisions) { + k += decision.LL_TotalLook; } + return k; } - for (i = 0; i < atn.states.length; i++) { - state = atn.states[i]; - if (state instanceof BlockStartState) { - if (state.endState === null) { - throw "IllegalState"; - } - if (state.endState.startState !== null) { - throw "IllegalState"; - } - state.endState.startState = state; + getTotalSLLATNLookaheadOps() { + let decisions = this.atnSimulator.getDecisionInfo(); + let k = 0; + for (let decision of decisions) { + k += decision.SLL_ATNTransitions; } - if (state instanceof PlusLoopbackState) { - for (j = 0; j < state.transitions.length; j++) { - target = state.transitions[j].target; - if (target instanceof PlusBlockStartState) { - target.loopBackState = state; - } - } - } else if (state instanceof StarLoopbackState) { - for (j = 0; j < state.transitions.length; j++) { - target = state.transitions[j].target; - if (target instanceof StarLoopEntryState) { - target.loopBackState = state; - } - } + return k; + } + getTotalLLATNLookaheadOps() { + let decisions = this.atnSimulator.getDecisionInfo(); + let k = 0; + for (let decision of decisions) { + k += decision.LL_ATNTransitions; } + return k; } - } - readDecisions(atn) { - const ndecisions = this.readInt(); - for (let i = 0; i < ndecisions; i++) { - const s = this.readInt(); - const decState = atn.states[s]; - atn.decisionToState.push(decState); - decState.decision = i; + getTotalATNLookaheadOps() { + let decisions = this.atnSimulator.getDecisionInfo(); + let k = 0; + for (let decision of decisions) { + k += decision.SLL_ATNTransitions; + k += decision.LL_ATNTransitions; + } + return k; } - } - readLexerActions(atn) { - if (atn.grammarType === ATNType.LEXER) { - const count = this.readInt(); - atn.lexerActions = initArray(count, null); - for (let i = 0; i < count; i++) { - const actionType = this.readInt(); - let data1 = this.readInt(); - if (data1 === 65535) { - data1 = -1; - } - let data2 = this.readInt(); - if (data2 === 65535) { - data2 = -1; - } - atn.lexerActions[i] = this.lexerActionFactory(actionType, data1, data2); - } - } - } - generateRuleBypassTransitions(atn) { - let i; - const count = atn.ruleToStartState.length; - for (i = 0; i < count; i++) { - atn.ruleToTokenType[i] = atn.maxTokenType + i + 1; - } - for (i = 0; i < count; i++) { - this.generateRuleBypassTransition(atn, i); - } - } - generateRuleBypassTransition(atn, idx) { - let i, state; - const bypassStart = new BasicBlockStartState(); - bypassStart.ruleIndex = idx; - atn.addState(bypassStart); - const bypassStop = new BlockEndState(); - bypassStop.ruleIndex = idx; - atn.addState(bypassStop); - bypassStart.endState = bypassStop; - atn.defineDecisionState(bypassStart); - bypassStop.startState = bypassStart; - let excludeTransition = null; - let endState = null; - if (atn.ruleToStartState[idx].isPrecedenceRule) { - endState = null; - for (i = 0; i < atn.states.length; i++) { - state = atn.states[i]; - if (this.stateIsEndStateFor(state, idx)) { - endState = state; - excludeTransition = state.loopBackState.transitions[0]; - break; + getDFASize(decision) { + if (decision) { + let decisionToDFA = this.atnSimulator.atn.decisionToDFA[decision]; + return decisionToDFA.states.size; + } else { + let n = 0; + let decisionToDFA = this.atnSimulator.atn.decisionToDFA; + for (let i = 0; i < decisionToDFA.length; i++) { + n += this.getDFASize(i); } + return n; } - if (excludeTransition === null) { - throw "Couldn't identify final state of the precedence rule prefix section."; - } - } else { - endState = atn.ruleToStopState[idx]; } - for (i = 0; i < atn.states.length; i++) { - state = atn.states[i]; - for (let j = 0; j < state.transitions.length; j++) { - const transition = state.transitions[j]; - if (transition === excludeTransition) { - continue; + }; + __decorate([ + Decorators_1.NotNull + ], ParseInfo.prototype, "getDecisionInfo", null); + __decorate([ + Decorators_1.NotNull + ], ParseInfo.prototype, "getLLDecisions", null); + ParseInfo = __decorate([ + __param(0, Decorators_1.NotNull) + ], ParseInfo); + exports.ParseInfo = ParseInfo; + } + }); + + // node_modules/antlr4ts/ProxyParserErrorListener.js + var require_ProxyParserErrorListener = __commonJS({ + "node_modules/antlr4ts/ProxyParserErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ProxyParserErrorListener = void 0; + var ProxyErrorListener_1 = require_ProxyErrorListener(); + var Decorators_1 = require_Decorators(); + var ProxyParserErrorListener = class extends ProxyErrorListener_1.ProxyErrorListener { + constructor(delegates) { + super(delegates); + } + reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { + this.getDelegates().forEach((listener) => { + if (listener.reportAmbiguity) { + listener.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); } - if (transition.target === endState) { - transition.target = bypassStop; + }); + } + reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState) { + this.getDelegates().forEach((listener) => { + if (listener.reportAttemptingFullContext) { + listener.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState); } - } + }); } - const ruleToStartState = atn.ruleToStartState[idx]; - const count = ruleToStartState.transitions.length; - while (count > 0) { - bypassStart.addTransition(ruleToStartState.transitions[count - 1]); - ruleToStartState.transitions = ruleToStartState.transitions.slice(-1); + reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState) { + this.getDelegates().forEach((listener) => { + if (listener.reportContextSensitivity) { + listener.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState); + } + }); } - atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart)); - bypassStop.addTransition(new EpsilonTransition(endState)); - const matchState = new BasicState(); - atn.addState(matchState); - matchState.addTransition(new AtomTransition2(bypassStop, atn.ruleToTokenType[idx])); - bypassStart.addTransition(new EpsilonTransition(matchState)); + }; + __decorate([ + Decorators_1.Override + ], ProxyParserErrorListener.prototype, "reportAmbiguity", null); + __decorate([ + Decorators_1.Override + ], ProxyParserErrorListener.prototype, "reportAttemptingFullContext", null); + __decorate([ + Decorators_1.Override + ], ProxyParserErrorListener.prototype, "reportContextSensitivity", null); + exports.ProxyParserErrorListener = ProxyParserErrorListener; + } + }); + + // node_modules/antlr4ts/misc/Character.js + var require_Character = __commonJS({ + "node_modules/antlr4ts/misc/Character.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.isSupplementaryCodePoint = exports.isLowSurrogate = exports.isHighSurrogate = void 0; + function isHighSurrogate(ch) { + return ch >= 55296 && ch <= 56319; } - stateIsEndStateFor(state, idx) { - if (state.ruleIndex !== idx) { - return null; - } - if (!(state instanceof StarLoopEntryState)) { - return null; - } - const maybeLoopEndState = state.transitions[state.transitions.length - 1].target; - if (!(maybeLoopEndState instanceof LoopEndState)) { - return null; - } - if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transitions[0].target instanceof RuleStopState) { - return state; - } else { - return null; - } + exports.isHighSurrogate = isHighSurrogate; + function isLowSurrogate(ch) { + return ch >= 56320 && ch <= 57343; } - markPrecedenceDecisions(atn) { - for (let i = 0; i < atn.states.length; i++) { - const state = atn.states[i]; - if (!(state instanceof StarLoopEntryState)) { - continue; - } - if (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) { - const maybeLoopEndState = state.transitions[state.transitions.length - 1].target; - if (maybeLoopEndState instanceof LoopEndState) { - if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transitions[0].target instanceof RuleStopState) { - state.isPrecedenceDecision = true; - } - } - } - } + exports.isLowSurrogate = isLowSurrogate; + function isSupplementaryCodePoint(ch) { + return ch >= 65536; } - verifyATN(atn) { - if (!this.deserializationOptions.verifyATN) { - return; + exports.isSupplementaryCodePoint = isSupplementaryCodePoint; + } + }); + + // node_modules/antlr4ts/CodePointBuffer.js + var require_CodePointBuffer = __commonJS({ + "node_modules/antlr4ts/CodePointBuffer.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CodePointBuffer = void 0; + var assert = require_assert(); + var Character = require_Character(); + var CodePointBuffer = class { + constructor(buffer, size) { + this.buffer = buffer; + this._position = 0; + this._size = size; } - for (let i = 0; i < atn.states.length; i++) { - const state = atn.states[i]; - if (state === null) { - continue; - } - this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1); - if (state instanceof PlusBlockStartState) { - this.checkCondition(state.loopBackState !== null); - } else if (state instanceof StarLoopEntryState) { - this.checkCondition(state.loopBackState !== null); - this.checkCondition(state.transitions.length === 2); - if (state.transitions[0].target instanceof StarBlockStartState) { - this.checkCondition(state.transitions[1].target instanceof LoopEndState); - this.checkCondition(!state.nonGreedy); - } else if (state.transitions[0].target instanceof LoopEndState) { - this.checkCondition(state.transitions[1].target instanceof StarBlockStartState); - this.checkCondition(state.nonGreedy); - } else { - throw "IllegalState"; - } - } else if (state instanceof StarLoopbackState) { - this.checkCondition(state.transitions.length === 1); - this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState); - } else if (state instanceof LoopEndState) { - this.checkCondition(state.loopBackState !== null); - } else if (state instanceof RuleStartState) { - this.checkCondition(state.stopState !== null); - } else if (state instanceof BlockStartState) { - this.checkCondition(state.endState !== null); - } else if (state instanceof BlockEndState) { - this.checkCondition(state.startState !== null); - } else if (state instanceof DecisionState) { - this.checkCondition(state.transitions.length <= 1 || state.decision >= 0); - } else { - this.checkCondition(state.transitions.length <= 1 || state instanceof RuleStopState); - } + static withArray(buffer) { + return new CodePointBuffer(buffer, buffer.length); } - } - checkCondition(condition, message) { - if (!condition) { - if (message === void 0 || message === null) { - message = "IllegalState"; - } - throw message; + get position() { + return this._position; } - } - readInt() { - return this.data[this.pos++]; - } - readInt32() { - const low = this.readInt(); - const high = this.readInt(); - return low | high << 16; - } - readLong() { - const low = this.readInt32(); - const high = this.readInt32(); - return low & 4294967295 | high << 32; - } - readUUID() { - const bb = []; - for (let i = 7; i >= 0; i--) { - const int = this.readInt(); - bb[2 * i + 1] = int & 255; - bb[2 * i] = int >> 8 & 255; - } - return byteToHex[bb[0]] + byteToHex[bb[1]] + byteToHex[bb[2]] + byteToHex[bb[3]] + "-" + byteToHex[bb[4]] + byteToHex[bb[5]] + "-" + byteToHex[bb[6]] + byteToHex[bb[7]] + "-" + byteToHex[bb[8]] + byteToHex[bb[9]] + "-" + byteToHex[bb[10]] + byteToHex[bb[11]] + byteToHex[bb[12]] + byteToHex[bb[13]] + byteToHex[bb[14]] + byteToHex[bb[15]]; - } - edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) { - const target = atn.states[trg]; - switch (type) { - case Transition.EPSILON: - return new EpsilonTransition(target); - case Transition.RANGE: - return arg3 !== 0 ? new RangeTransition(target, Token2.EOF, arg2) : new RangeTransition(target, arg1, arg2); - case Transition.RULE: - return new RuleTransition(atn.states[arg1], arg2, arg3, target); - case Transition.PREDICATE: - return new PredicateTransition(target, arg1, arg2, arg3 !== 0); - case Transition.PRECEDENCE: - return new PrecedencePredicateTransition(target, arg1); - case Transition.ATOM: - return arg3 !== 0 ? new AtomTransition2(target, Token2.EOF) : new AtomTransition2(target, arg1); - case Transition.ACTION: - return new ActionTransition(target, arg1, arg2, arg3 !== 0); - case Transition.SET: - return new SetTransition(target, sets[arg1]); - case Transition.NOT_SET: - return new NotSetTransition(target, sets[arg1]); - case Transition.WILDCARD: - return new WildcardTransition(target); - default: - throw "The specified transition type: " + type + " is not valid."; - } - } - stateFactory(type, ruleIndex) { - if (this.stateFactories === null) { - const sf = []; - sf[ATNState.INVALID_TYPE] = null; - sf[ATNState.BASIC] = () => new BasicState(); - sf[ATNState.RULE_START] = () => new RuleStartState(); - sf[ATNState.BLOCK_START] = () => new BasicBlockStartState(); - sf[ATNState.PLUS_BLOCK_START] = () => new PlusBlockStartState(); - sf[ATNState.STAR_BLOCK_START] = () => new StarBlockStartState(); - sf[ATNState.TOKEN_START] = () => new TokensStartState(); - sf[ATNState.RULE_STOP] = () => new RuleStopState(); - sf[ATNState.BLOCK_END] = () => new BlockEndState(); - sf[ATNState.STAR_LOOP_BACK] = () => new StarLoopbackState(); - sf[ATNState.STAR_LOOP_ENTRY] = () => new StarLoopEntryState(); - sf[ATNState.PLUS_LOOP_BACK] = () => new PlusLoopbackState(); - sf[ATNState.LOOP_END] = () => new LoopEndState(); - this.stateFactories = sf; - } - if (type > this.stateFactories.length || this.stateFactories[type] === null) { - throw "The specified state type " + type + " is not valid."; - } else { - const s = this.stateFactories[type](); - if (s !== null) { - s.ruleIndex = ruleIndex; - return s; + set position(newPosition) { + if (newPosition < 0 || newPosition > this._size) { + throw new RangeError(); } + this._position = newPosition; } - } - lexerActionFactory(type, data1, data2) { - if (this.actionFactories === null) { - const af = []; - af[LexerActionType.CHANNEL] = (data12, data22) => new LexerChannelAction(data12); - af[LexerActionType.CUSTOM] = (data12, data22) => new LexerCustomAction(data12, data22); - af[LexerActionType.MODE] = (data12, data22) => new LexerModeAction(data12); - af[LexerActionType.MORE] = (data12, data22) => LexerMoreAction.INSTANCE; - af[LexerActionType.POP_MODE] = (data12, data22) => LexerPopModeAction.INSTANCE; - af[LexerActionType.PUSH_MODE] = (data12, data22) => new LexerPushModeAction(data12); - af[LexerActionType.SKIP] = (data12, data22) => LexerSkipAction.INSTANCE; - af[LexerActionType.TYPE] = (data12, data22) => new LexerTypeAction(data12); - this.actionFactories = af; + get remaining() { + return this._size - this.position; } - if (type > this.actionFactories.length || this.actionFactories[type] === null) { - throw "The specified lexer action type " + type + " is not valid."; - } else { - return this.actionFactories[type](data1, data2); + get(offset) { + return this.buffer[offset]; } - } - }; - function createByteToHex() { - const bth = []; - for (let i = 0; i < 256; i++) { - bth[i] = (i + 256).toString(16).substr(1).toUpperCase(); - } - return bth; - } - var byteToHex = createByteToHex(); - module.exports = ATNDeserializer3; - }); - - // node_modules/antlr4/src/antlr4/error/ErrorListener.js - var require_ErrorListener = __commonJS((exports, module) => { - init_process_shim(); - var ErrorListener2 = class { - syntaxError(recognizer, offendingSymbol, line, column, msg, e) { - } - reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { - } - reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { - } - reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { - } - }; - var ConsoleErrorListener = class extends ErrorListener2 { - constructor() { - super(); - } - syntaxError(recognizer, offendingSymbol, line, column, msg, e) { - console.error("line " + line + ":" + column + " " + msg); - } - }; - ConsoleErrorListener.INSTANCE = new ConsoleErrorListener(); - var ProxyErrorListener = class extends ErrorListener2 { - constructor(delegates) { - super(); - if (delegates === null) { - throw "delegates"; - } - this.delegates = delegates; - return this; - } - syntaxError(recognizer, offendingSymbol, line, column, msg, e) { - this.delegates.map((d) => d.syntaxError(recognizer, offendingSymbol, line, column, msg, e)); - } - reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { - this.delegates.map((d) => d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs)); - } - reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { - this.delegates.map((d) => d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs)); - } - reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { - this.delegates.map((d) => d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs)); - } - }; - module.exports = {ErrorListener: ErrorListener2, ConsoleErrorListener, ProxyErrorListener}; - }); - - // node_modules/antlr4/src/antlr4/Recognizer.js - var require_Recognizer2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var {ConsoleErrorListener} = require_ErrorListener(); - var {ProxyErrorListener} = require_ErrorListener(); - var Recognizer = class { - constructor() { - this._listeners = [ConsoleErrorListener.INSTANCE]; - this._interp = null; - this._stateNumber = -1; - } - checkVersion(toolVersion) { - const runtimeVersion = "4.9.2"; - if (runtimeVersion !== toolVersion) { - console.log("ANTLR runtime and generated code versions disagree: " + runtimeVersion + "!=" + toolVersion); - } - } - addErrorListener(listener) { - this._listeners.push(listener); - } - removeErrorListeners() { - this._listeners = []; - } - getTokenTypeMap() { - const tokenNames = this.getTokenNames(); - if (tokenNames === null) { - throw "The current recognizer does not provide a list of token names."; - } - let result = this.tokenTypeMapCache[tokenNames]; - if (result === void 0) { - result = tokenNames.reduce(function(o, k, i) { - o[k] = i; - }); - result.EOF = Token2.EOF; - this.tokenTypeMapCache[tokenNames] = result; - } - return result; - } - getRuleIndexMap() { - const ruleNames = this.ruleNames; - if (ruleNames === null) { - throw "The current recognizer does not provide a list of rule names."; - } - let result = this.ruleIndexMapCache[ruleNames]; - if (result === void 0) { - result = ruleNames.reduce(function(o, k, i) { - o[k] = i; - }); - this.ruleIndexMapCache[ruleNames] = result; + array() { + return this.buffer.slice(0, this._size); } - return result; - } - getTokenType(tokenName) { - const ttype = this.getTokenTypeMap()[tokenName]; - if (ttype !== void 0) { - return ttype; - } else { - return Token2.INVALID_TYPE; - } - } - getErrorHeader(e) { - const line = e.getOffendingToken().line; - const column = e.getOffendingToken().column; - return "line " + line + ":" + column; - } - getTokenErrorDisplay(t) { - if (t === null) { - return ""; + static builder(initialBufferSize) { + return new CodePointBuffer.Builder(initialBufferSize); } - let s = t.text; - if (s === null) { - if (t.type === Token2.EOF) { - s = ""; - } else { - s = "<" + t.type + ">"; + }; + exports.CodePointBuffer = CodePointBuffer; + (function(CodePointBuffer2) { + let Type; + (function(Type2) { + Type2[Type2["BYTE"] = 0] = "BYTE"; + Type2[Type2["CHAR"] = 1] = "CHAR"; + Type2[Type2["INT"] = 2] = "INT"; + })(Type || (Type = {})); + class Builder { + constructor(initialBufferSize) { + this.type = 0; + this.buffer = new Uint8Array(initialBufferSize); + this.prevHighSurrogate = -1; + this.position = 0; + } + build() { + return new CodePointBuffer2(this.buffer, this.position); + } + static roundUpToNextPowerOfTwo(i) { + let nextPowerOfTwo = 32 - Math.clz32(i - 1); + return Math.pow(2, nextPowerOfTwo); + } + ensureRemaining(remainingNeeded) { + switch (this.type) { + case 0: + if (this.buffer.length - this.position < remainingNeeded) { + let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); + let newBuffer = new Uint8Array(newCapacity); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.buffer = newBuffer; + } + break; + case 1: + if (this.buffer.length - this.position < remainingNeeded) { + let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); + let newBuffer = new Uint16Array(newCapacity); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.buffer = newBuffer; + } + break; + case 2: + if (this.buffer.length - this.position < remainingNeeded) { + let newCapacity = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded); + let newBuffer = new Int32Array(newCapacity); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.buffer = newBuffer; + } + break; + } } - } - s = s.replace("\n", "\\n").replace("\r", "\\r").replace(" ", "\\t"); - return "'" + s + "'"; - } - getErrorListenerDispatch() { - return new ProxyErrorListener(this._listeners); - } - sempred(localctx, ruleIndex, actionIndex) { - return true; - } - precpred(localctx, precedence) { - return true; - } - get state() { - return this._stateNumber; - } - set state(state) { - this._stateNumber = state; - } - }; - Recognizer.tokenTypeMapCache = {}; - Recognizer.ruleIndexMapCache = {}; - module.exports = Recognizer; - }); - - // node_modules/antlr4/src/antlr4/CommonTokenFactory.js - var require_CommonTokenFactory2 = __commonJS((exports, module) => { - init_process_shim(); - var CommonToken = require_Token2().CommonToken; - var TokenFactory = class { - }; - var CommonTokenFactory = class extends TokenFactory { - constructor(copyText) { - super(); - this.copyText = copyText === void 0 ? false : copyText; - } - create(source, type, text, channel, start, stop, line, column) { - const t = new CommonToken(source, type, channel, start, stop); - t.line = line; - t.column = column; - if (text !== null) { - t.text = text; - } else if (this.copyText && source[1] !== null) { - t.text = source[1].getText(start, stop); - } - return t; - } - createThin(type, text) { - const t = new CommonToken(null, type); - t.text = text; - return t; - } - }; - CommonTokenFactory.DEFAULT = new CommonTokenFactory(); - module.exports = CommonTokenFactory; - }); - - // node_modules/antlr4/src/antlr4/error/Errors.js - var require_Errors = __commonJS((exports, module) => { - init_process_shim(); - var {PredicateTransition} = require_Transition2(); - var {Interval} = require_IntervalSet2().Interval; - var RecognitionException2 = class extends Error { - constructor(params) { - super(params.message); - if (!!Error.captureStackTrace) { - Error.captureStackTrace(this, RecognitionException2); - } else { - var stack = new Error().stack; - } - this.message = params.message; - this.recognizer = params.recognizer; - this.input = params.input; - this.ctx = params.ctx; - this.offendingToken = null; - this.offendingState = -1; - if (this.recognizer !== null) { - this.offendingState = this.recognizer.state; - } - } - getExpectedTokens() { - if (this.recognizer !== null) { - return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx); - } else { - return null; - } - } - toString() { - return this.message; - } - }; - var LexerNoViableAltException = class extends RecognitionException2 { - constructor(lexer, input, startIndex, deadEndConfigs) { - super({message: "", recognizer: lexer, input, ctx: null}); - this.startIndex = startIndex; - this.deadEndConfigs = deadEndConfigs; - } - toString() { - let symbol = ""; - if (this.startIndex >= 0 && this.startIndex < this.input.size) { - symbol = this.input.getText(new Interval(this.startIndex, this.startIndex)); - } - return "LexerNoViableAltException" + symbol; - } - }; - var NoViableAltException2 = class extends RecognitionException2 { - constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) { - ctx = ctx || recognizer._ctx; - offendingToken = offendingToken || recognizer.getCurrentToken(); - startToken = startToken || recognizer.getCurrentToken(); - input = input || recognizer.getInputStream(); - super({message: "", recognizer, input, ctx}); - this.deadEndConfigs = deadEndConfigs; - this.startToken = startToken; - this.offendingToken = offendingToken; - } - }; - var InputMismatchException = class extends RecognitionException2 { - constructor(recognizer) { - super({message: "", recognizer, input: recognizer.getInputStream(), ctx: recognizer._ctx}); - this.offendingToken = recognizer.getCurrentToken(); - } - }; - function formatMessage(predicate, message) { - if (message !== null) { - return message; - } else { - return "failed predicate: {" + predicate + "}?"; - } - } - var FailedPredicateException2 = class extends RecognitionException2 { - constructor(recognizer, predicate, message) { - super({ - message: formatMessage(predicate, message || null), - recognizer, - input: recognizer.getInputStream(), - ctx: recognizer._ctx - }); - const s = recognizer._interp.atn.states[recognizer.state]; - const trans = s.transitions[0]; - if (trans instanceof PredicateTransition) { - this.ruleIndex = trans.ruleIndex; - this.predicateIndex = trans.predIndex; - } else { - this.ruleIndex = 0; - this.predicateIndex = 0; - } - this.predicate = predicate; - this.offendingToken = recognizer.getCurrentToken(); - } - }; - var ParseCancellationException = class extends Error { - constructor() { - super(); - Error.captureStackTrace(this, ParseCancellationException); - } - }; - module.exports = { - RecognitionException: RecognitionException2, - NoViableAltException: NoViableAltException2, - LexerNoViableAltException, - InputMismatchException, - FailedPredicateException: FailedPredicateException2, - ParseCancellationException - }; - }); - - // node_modules/antlr4/src/antlr4/Lexer.js - var require_Lexer2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var Recognizer = require_Recognizer2(); - var CommonTokenFactory = require_CommonTokenFactory2(); - var {RecognitionException: RecognitionException2} = require_Errors(); - var {LexerNoViableAltException} = require_Errors(); - var Lexer2 = class extends Recognizer { - constructor(input) { - super(); - this._input = input; - this._factory = CommonTokenFactory.DEFAULT; - this._tokenFactorySourcePair = [this, input]; - this._interp = null; - this._token = null; - this._tokenStartCharIndex = -1; - this._tokenStartLine = -1; - this._tokenStartColumn = -1; - this._hitEOF = false; - this._channel = Token2.DEFAULT_CHANNEL; - this._type = Token2.INVALID_TYPE; - this._modeStack = []; - this._mode = Lexer2.DEFAULT_MODE; - this._text = null; - } - reset() { - if (this._input !== null) { - this._input.seek(0); - } - this._token = null; - this._type = Token2.INVALID_TYPE; - this._channel = Token2.DEFAULT_CHANNEL; - this._tokenStartCharIndex = -1; - this._tokenStartColumn = -1; - this._tokenStartLine = -1; - this._text = null; - this._hitEOF = false; - this._mode = Lexer2.DEFAULT_MODE; - this._modeStack = []; - this._interp.reset(); - } - nextToken() { - if (this._input === null) { - throw "nextToken requires a non-null input stream."; - } - const tokenStartMarker = this._input.mark(); - try { - while (true) { - if (this._hitEOF) { - this.emitEOF(); - return this._token; - } - this._token = null; - this._channel = Token2.DEFAULT_CHANNEL; - this._tokenStartCharIndex = this._input.index; - this._tokenStartColumn = this._interp.column; - this._tokenStartLine = this._interp.line; - this._text = null; - let continueOuter = false; - while (true) { - this._type = Token2.INVALID_TYPE; - let ttype = Lexer2.SKIP; - try { - ttype = this._interp.match(this._input, this._mode); - } catch (e) { - if (e instanceof RecognitionException2) { - this.notifyListeners(e); - this.recover(e); + append(utf16In) { + this.ensureRemaining(utf16In.length); + this.appendArray(utf16In); + } + appendArray(utf16In) { + switch (this.type) { + case 0: + this.appendArrayByte(utf16In); + break; + case 1: + this.appendArrayChar(utf16In); + break; + case 2: + this.appendArrayInt(utf16In); + break; + } + } + appendArrayByte(utf16In) { + assert(this.prevHighSurrogate === -1); + let input = utf16In; + let inOffset = 0; + let inLimit = utf16In.length; + let outByte = this.buffer; + let outOffset = this.position; + while (inOffset < inLimit) { + let c = input[inOffset]; + if (c <= 255) { + outByte[outOffset] = c; + } else { + utf16In = utf16In.subarray(inOffset, inLimit); + this.position = outOffset; + if (!Character.isHighSurrogate(c)) { + this.byteToCharBuffer(utf16In.length); + this.appendArrayChar(utf16In); + return; } else { - console.log(e.stack); - throw e; + this.byteToIntBuffer(utf16In.length); + this.appendArrayInt(utf16In); + return; } } - if (this._input.LA(1) === Token2.EOF) { - this._hitEOF = true; - } - if (this._type === Token2.INVALID_TYPE) { - this._type = ttype; - } - if (this._type === Lexer2.SKIP) { - continueOuter = true; - break; - } - if (this._type !== Lexer2.MORE) { - break; + inOffset++; + outOffset++; + } + this.position = outOffset; + } + appendArrayChar(utf16In) { + assert(this.prevHighSurrogate === -1); + let input = utf16In; + let inOffset = 0; + let inLimit = utf16In.length; + let outChar = this.buffer; + let outOffset = this.position; + while (inOffset < inLimit) { + let c = input[inOffset]; + if (!Character.isHighSurrogate(c)) { + outChar[outOffset] = c; + } else { + utf16In = utf16In.subarray(inOffset, inLimit); + this.position = outOffset; + this.charToIntBuffer(utf16In.length); + this.appendArrayInt(utf16In); + return; } + inOffset++; + outOffset++; } - if (continueOuter) { - continue; + this.position = outOffset; + } + appendArrayInt(utf16In) { + let input = utf16In; + let inOffset = 0; + let inLimit = utf16In.length; + let outInt = this.buffer; + let outOffset = this.position; + while (inOffset < inLimit) { + let c = input[inOffset]; + inOffset++; + if (this.prevHighSurrogate !== -1) { + if (Character.isLowSurrogate(c)) { + outInt[outOffset] = String.fromCharCode(this.prevHighSurrogate, c).codePointAt(0); + outOffset++; + this.prevHighSurrogate = -1; + } else { + outInt[outOffset] = this.prevHighSurrogate; + outOffset++; + if (Character.isHighSurrogate(c)) { + this.prevHighSurrogate = c; + } else { + outInt[outOffset] = c; + outOffset++; + this.prevHighSurrogate = -1; + } + } + } else if (Character.isHighSurrogate(c)) { + this.prevHighSurrogate = c; + } else { + outInt[outOffset] = c; + outOffset++; + } } - if (this._token === null) { - this.emit(); + if (this.prevHighSurrogate !== -1) { + outInt[outOffset] = this.prevHighSurrogate; + outOffset++; } - return this._token; + this.position = outOffset; + } + byteToCharBuffer(toAppend) { + let newBuffer = new Uint16Array(Math.max(this.position + toAppend, this.buffer.length >> 1)); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.type = 1; + this.buffer = newBuffer; + } + byteToIntBuffer(toAppend) { + let newBuffer = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 2)); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.type = 2; + this.buffer = newBuffer; + } + charToIntBuffer(toAppend) { + let newBuffer = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 1)); + newBuffer.set(this.buffer.subarray(0, this.position), 0); + this.type = 2; + this.buffer = newBuffer; } - } finally { - this._input.release(tokenStartMarker); } - } - skip() { - this._type = Lexer2.SKIP; - } - more() { - this._type = Lexer2.MORE; - } - mode(m) { - this._mode = m; - } - pushMode(m) { - if (this._interp.debug) { - console.log("pushMode " + m); + CodePointBuffer2.Builder = Builder; + })(CodePointBuffer = exports.CodePointBuffer || (exports.CodePointBuffer = {})); + } + }); + + // node_modules/antlr4ts/CodePointCharStream.js + var require_CodePointCharStream = __commonJS({ + "node_modules/antlr4ts/CodePointCharStream.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CodePointCharStream = void 0; + var assert = require_assert(); + var IntStream_1 = require_IntStream(); + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var CodePointCharStream = class { + constructor(array, position, remaining, name) { + assert(position === 0); + this._array = array; + this._size = remaining; + this._name = name; + this._position = 0; + } + get internalStorage() { + return this._array; + } + static fromBuffer(codePointBuffer, name) { + if (name === void 0 || name.length === 0) { + name = IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; + } + return new CodePointCharStream(codePointBuffer.array(), codePointBuffer.position, codePointBuffer.remaining, name); + } + consume() { + if (this._size - this._position === 0) { + assert(this.LA(1) === IntStream_1.IntStream.EOF); + throw new RangeError("cannot consume EOF"); + } + this._position++; + } + get index() { + return this._position; + } + get size() { + return this._size; + } + mark() { + return -1; } - this._modeStack.push(this._mode); - this.mode(m); - } - popMode() { - if (this._modeStack.length === 0) { - throw "Empty Stack"; + release(marker) { } - if (this._interp.debug) { - console.log("popMode back to " + this._modeStack.slice(0, -1)); + seek(index) { + this._position = index; } - this.mode(this._modeStack.pop()); - return this._mode; - } - emitToken(token) { - this._token = token; - } - emit() { - const t = this._factory.create(this._tokenFactorySourcePair, this._type, this._text, this._channel, this._tokenStartCharIndex, this.getCharIndex() - 1, this._tokenStartLine, this._tokenStartColumn); - this.emitToken(t); - return t; - } - emitEOF() { - const cpos = this.column; - const lpos = this.line; - const eof = this._factory.create(this._tokenFactorySourcePair, Token2.EOF, null, Token2.DEFAULT_CHANNEL, this._input.index, this._input.index - 1, lpos, cpos); - this.emitToken(eof); - return eof; - } - getCharIndex() { - return this._input.index; - } - getAllTokens() { - const tokens2 = []; - let t = this.nextToken(); - while (t.type !== Token2.EOF) { - tokens2.push(t); - t = this.nextToken(); + get sourceName() { + return this._name; } - return tokens2; - } - notifyListeners(e) { - const start = this._tokenStartCharIndex; - const stop = this._input.index; - const text = this._input.getText(start, stop); - const msg = "token recognition error at: '" + this.getErrorDisplay(text) + "'"; - const listener = this.getErrorListenerDispatch(); - listener.syntaxError(this, null, this._tokenStartLine, this._tokenStartColumn, msg, e); - } - getErrorDisplay(s) { - const d = []; - for (let i = 0; i < s.length; i++) { - d.push(s[i]); - } - return d.join(""); - } - getErrorDisplayForChar(c) { - if (c.charCodeAt(0) === Token2.EOF) { - return ""; - } else if (c === "\n") { - return "\\n"; - } else if (c === " ") { - return "\\t"; - } else if (c === "\r") { - return "\\r"; - } else { - return c; + toString() { + return this.getText(Interval_1.Interval.of(0, this.size - 1)); + } + LA(i) { + let offset; + switch (Math.sign(i)) { + case -1: + offset = this.index + i; + if (offset < 0) { + return IntStream_1.IntStream.EOF; + } + return this._array[offset]; + case 0: + return 0; + case 1: + offset = this.index + i - 1; + if (offset >= this.size) { + return IntStream_1.IntStream.EOF; + } + return this._array[offset]; + } + throw new RangeError("Not reached"); } - } - getCharErrorDisplay(c) { - return "'" + this.getErrorDisplayForChar(c) + "'"; - } - recover(re) { - if (this._input.LA(1) !== Token2.EOF) { - if (re instanceof LexerNoViableAltException) { - this._interp.consume(this._input); + getText(interval) { + const startIdx = Math.min(interval.a, this.size); + const len = Math.min(interval.b - interval.a + 1, this.size - startIdx); + if (this._array instanceof Int32Array) { + return String.fromCodePoint(...Array.from(this._array.subarray(startIdx, startIdx + len))); } else { - this._input.consume(); + return String.fromCharCode(...Array.from(this._array.subarray(startIdx, startIdx + len))); } } - } - get inputStream() { - return this._input; - } - set inputStream(input) { - this._input = null; - this._tokenFactorySourcePair = [this, this._input]; - this.reset(); - this._input = input; - this._tokenFactorySourcePair = [this, this._input]; - } - get sourceName() { - return this._input.sourceName; - } - get type() { - return this.type; - } - set type(type) { - this._type = type; - } - get line() { - return this._interp.line; - } - set line(line) { - this._interp.line = line; - } - get column() { - return this._interp.column; - } - set column(column) { - this._interp.column = column; - } - get text() { - if (this._text !== null) { - return this._text; - } else { - return this._interp.getText(this._input); - } - } - set text(text) { - this._text = text; - } - }; - Lexer2.DEFAULT_MODE = 0; - Lexer2.MORE = -2; - Lexer2.SKIP = -3; - Lexer2.DEFAULT_TOKEN_CHANNEL = Token2.DEFAULT_CHANNEL; - Lexer2.HIDDEN = Token2.HIDDEN_CHANNEL; - Lexer2.MIN_CHAR_VALUE = 0; - Lexer2.MAX_CHAR_VALUE = 1114111; - module.exports = Lexer2; + }; + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "consume", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "index", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "mark", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "release", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "seek", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "sourceName", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "toString", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "LA", null); + __decorate([ + Decorators_1.Override + ], CodePointCharStream.prototype, "getText", null); + exports.CodePointCharStream = CodePointCharStream; + } }); - // node_modules/antlr4/src/antlr4/atn/ATNConfigSet.js - var require_ATNConfigSet2 = __commonJS((exports, module) => { - init_process_shim(); - var ATN2 = require_ATN2(); - var Utils3 = require_Utils2(); - var {SemanticContext} = require_SemanticContext2(); - var {merge} = require_PredictionContext2(); - function hashATNConfig(c) { - return c.hashCodeForConfigSet(); - } - function equalATNConfigs(a, b) { - if (a === b) { - return true; - } else if (a === null || b === null) { - return false; - } else - return a.equalsForConfigSet(b); - } - var ATNConfigSet = class { - constructor(fullCtx) { - this.configLookup = new Utils3.Set(hashATNConfig, equalATNConfigs); - this.fullCtx = fullCtx === void 0 ? true : fullCtx; - this.readOnly = false; - this.configs = []; - this.uniqueAlt = 0; - this.conflictingAlts = null; - this.hasSemanticContext = false; - this.dipsIntoOuterContext = false; - this.cachedHashCode = -1; - } - add(config, mergeCache) { - if (mergeCache === void 0) { - mergeCache = null; - } - if (this.readOnly) { - throw "This set is readonly"; + // node_modules/antlr4ts/CharStreams.js + var require_CharStreams = __commonJS({ + "node_modules/antlr4ts/CharStreams.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CharStreams = void 0; + var CodePointBuffer_1 = require_CodePointBuffer(); + var CodePointCharStream_1 = require_CodePointCharStream(); + var IntStream_1 = require_IntStream(); + var CharStreams; + (function(CharStreams2) { + function fromString(s, sourceName) { + if (sourceName === void 0 || sourceName.length === 0) { + sourceName = IntStream_1.IntStream.UNKNOWN_SOURCE_NAME; + } + let codePointBufferBuilder = CodePointBuffer_1.CodePointBuffer.builder(s.length); + let cb = new Uint16Array(s.length); + for (let i = 0; i < s.length; i++) { + cb[i] = s.charCodeAt(i); + } + codePointBufferBuilder.append(cb); + return CodePointCharStream_1.CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName); + } + CharStreams2.fromString = fromString; + })(CharStreams = exports.CharStreams || (exports.CharStreams = {})); + } + }); + + // node_modules/antlr4ts/BufferedTokenStream.js + var require_BufferedTokenStream = __commonJS({ + "node_modules/antlr4ts/BufferedTokenStream.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BufferedTokenStream = void 0; + var assert = require_assert(); + var CommonToken_1 = require_CommonToken(); + var Interval_1 = require_Interval(); + var Lexer_1 = require_Lexer(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var BufferedTokenStream2 = class BufferedTokenStream { + constructor(tokenSource) { + this.tokens = []; + this.p = -1; + this.fetchedEOF = false; + if (tokenSource == null) { + throw new Error("tokenSource cannot be null"); + } + this._tokenSource = tokenSource; + } + get tokenSource() { + return this._tokenSource; + } + set tokenSource(tokenSource) { + this._tokenSource = tokenSource; + this.tokens.length = 0; + this.p = -1; + this.fetchedEOF = false; + } + get index() { + return this.p; + } + mark() { + return 0; } - if (config.semanticContext !== SemanticContext.NONE) { - this.hasSemanticContext = true; + release(marker) { } - if (config.reachesIntoOuterContext > 0) { - this.dipsIntoOuterContext = true; + seek(index) { + this.lazyInit(); + this.p = this.adjustSeekIndex(index); } - const existing = this.configLookup.add(config); - if (existing === config) { - this.cachedHashCode = -1; - this.configs.push(config); - return true; + get size() { + return this.tokens.length; } - const rootIsWildcard = !this.fullCtx; - const merged = merge(existing.context, config.context, rootIsWildcard, mergeCache); - existing.reachesIntoOuterContext = Math.max(existing.reachesIntoOuterContext, config.reachesIntoOuterContext); - if (config.precedenceFilterSuppressed) { - existing.precedenceFilterSuppressed = true; + consume() { + let skipEofCheck; + if (this.p >= 0) { + if (this.fetchedEOF) { + skipEofCheck = this.p < this.tokens.length - 1; + } else { + skipEofCheck = this.p < this.tokens.length; + } + } else { + skipEofCheck = false; + } + if (!skipEofCheck && this.LA(1) === Token_1.Token.EOF) { + throw new Error("cannot consume EOF"); + } + if (this.sync(this.p + 1)) { + this.p = this.adjustSeekIndex(this.p + 1); + } } - existing.context = merged; - return true; - } - getStates() { - const states = new Utils3.Set(); - for (let i = 0; i < this.configs.length; i++) { - states.add(this.configs[i].state); + sync(i) { + assert(i >= 0); + let n = i - this.tokens.length + 1; + if (n > 0) { + let fetched = this.fetch(n); + return fetched >= n; + } + return true; } - return states; - } - getPredicates() { - const preds = []; - for (let i = 0; i < this.configs.length; i++) { - const c = this.configs[i].semanticContext; - if (c !== SemanticContext.NONE) { - preds.push(c.semanticContext); + fetch(n) { + if (this.fetchedEOF) { + return 0; + } + for (let i = 0; i < n; i++) { + let t = this.tokenSource.nextToken(); + if (this.isWritableToken(t)) { + t.tokenIndex = this.tokens.length; + } + this.tokens.push(t); + if (t.type === Token_1.Token.EOF) { + this.fetchedEOF = true; + return i + 1; + } } + return n; } - return preds; - } - optimizeConfigs(interpreter) { - if (this.readOnly) { - throw "This set is readonly"; + get(i) { + if (i < 0 || i >= this.tokens.length) { + throw new RangeError("token index " + i + " out of range 0.." + (this.tokens.length - 1)); + } + return this.tokens[i]; } - if (this.configLookup.length === 0) { - return; + getRange(start, stop) { + if (start < 0 || stop < 0) { + return []; + } + this.lazyInit(); + let subset = new Array(); + if (stop >= this.tokens.length) { + stop = this.tokens.length - 1; + } + for (let i = start; i <= stop; i++) { + let t = this.tokens[i]; + if (t.type === Token_1.Token.EOF) { + break; + } + subset.push(t); + } + return subset; } - for (let i = 0; i < this.configs.length; i++) { - const config = this.configs[i]; - config.context = interpreter.getCachedContext(config.context); + LA(i) { + let token = this.LT(i); + if (!token) { + return Token_1.Token.INVALID_TYPE; + } + return token.type; } - } - addAll(coll) { - for (let i = 0; i < coll.length; i++) { - this.add(coll[i]); + tryLB(k) { + if (this.p - k < 0) { + return void 0; + } + return this.tokens[this.p - k]; } - return false; - } - equals(other) { - return this === other || other instanceof ATNConfigSet && Utils3.equalArrays(this.configs, other.configs) && this.fullCtx === other.fullCtx && this.uniqueAlt === other.uniqueAlt && this.conflictingAlts === other.conflictingAlts && this.hasSemanticContext === other.hasSemanticContext && this.dipsIntoOuterContext === other.dipsIntoOuterContext; - } - hashCode() { - const hash = new Utils3.Hash(); - hash.update(this.configs); - return hash.finish(); - } - updateHashCode(hash) { - if (this.readOnly) { - if (this.cachedHashCode === -1) { - this.cachedHashCode = this.hashCode(); + LT(k) { + let result = this.tryLT(k); + if (result === void 0) { + throw new RangeError("requested lookback index out of range"); } - hash.update(this.cachedHashCode); - } else { - hash.update(this.hashCode()); + return result; } - } - isEmpty() { - return this.configs.length === 0; - } - contains(item) { - if (this.configLookup === null) { - throw "This method is not implemented for readonly sets."; + tryLT(k) { + this.lazyInit(); + if (k === 0) { + throw new RangeError("0 is not a valid lookahead index"); + } + if (k < 0) { + return this.tryLB(-k); + } + let i = this.p + k - 1; + this.sync(i); + if (i >= this.tokens.length) { + return this.tokens[this.tokens.length - 1]; + } + return this.tokens[i]; } - return this.configLookup.contains(item); - } - containsFast(item) { - if (this.configLookup === null) { - throw "This method is not implemented for readonly sets."; + adjustSeekIndex(i) { + return i; } - return this.configLookup.containsFast(item); - } - clear() { - if (this.readOnly) { - throw "This set is readonly"; + lazyInit() { + if (this.p === -1) { + this.setup(); + } } - this.configs = []; - this.cachedHashCode = -1; - this.configLookup = new Utils3.Set(); - } - setReadonly(readOnly) { - this.readOnly = readOnly; - if (readOnly) { - this.configLookup = null; + setup() { + this.sync(0); + this.p = this.adjustSeekIndex(0); } - } - toString() { - return Utils3.arrayToString(this.configs) + (this.hasSemanticContext ? ",hasSemanticContext=" + this.hasSemanticContext : "") + (this.uniqueAlt !== ATN2.INVALID_ALT_NUMBER ? ",uniqueAlt=" + this.uniqueAlt : "") + (this.conflictingAlts !== null ? ",conflictingAlts=" + this.conflictingAlts : "") + (this.dipsIntoOuterContext ? ",dipsIntoOuterContext" : ""); - } - get items() { - return this.configs; - } - get length() { - return this.configs.length; - } - }; - var OrderedATNConfigSet = class extends ATNConfigSet { - constructor() { - super(); - this.configLookup = new Utils3.Set(); - } - }; - module.exports = { - ATNConfigSet, - OrderedATNConfigSet - }; - }); - - // node_modules/antlr4/src/antlr4/dfa/DFAState.js - var require_DFAState2 = __commonJS((exports, module) => { - init_process_shim(); - var {ATNConfigSet} = require_ATNConfigSet2(); - var {Hash: Hash2, Set: Set2} = require_Utils2(); - var PredPrediction = class { - constructor(pred, alt) { - this.alt = alt; - this.pred = pred; - } - toString() { - return "(" + this.pred + ", " + this.alt + ")"; - } - }; - var DFAState = class { - constructor(stateNumber, configs) { - if (stateNumber === null) { - stateNumber = -1; - } - if (configs === null) { - configs = new ATNConfigSet(); - } - this.stateNumber = stateNumber; - this.configs = configs; - this.edges = null; - this.isAcceptState = false; - this.prediction = 0; - this.lexerActionExecutor = null; - this.requiresFullContext = false; - this.predicates = null; - return this; - } - getAltSet() { - const alts = new Set2(); - if (this.configs !== null) { - for (let i = 0; i < this.configs.length; i++) { - const c = this.configs[i]; - alts.add(c.alt); + getTokens(start, stop, types) { + this.lazyInit(); + if (start === void 0) { + assert(stop === void 0 && types === void 0); + return this.tokens; + } else if (stop === void 0) { + stop = this.tokens.length - 1; } - } - if (alts.length === 0) { - return null; - } else { - return alts; - } - } - equals(other) { - return this === other || other instanceof DFAState && this.configs.equals(other.configs); - } - toString() { - let s = "" + this.stateNumber + ":" + this.configs; - if (this.isAcceptState) { - s = s + "=>"; - if (this.predicates !== null) - s = s + this.predicates; - else - s = s + this.prediction; - } - return s; - } - hashCode() { - const hash = new Hash2(); - hash.update(this.configs); - return hash.finish(); - } - }; - module.exports = {DFAState, PredPrediction}; - }); - - // node_modules/antlr4/src/antlr4/atn/ATNSimulator.js - var require_ATNSimulator2 = __commonJS((exports, module) => { - init_process_shim(); - var {DFAState} = require_DFAState2(); - var {ATNConfigSet} = require_ATNConfigSet2(); - var {getCachedPredictionContext} = require_PredictionContext2(); - var {Map: Map2} = require_Utils2(); - var ATNSimulator = class { - constructor(atn, sharedContextCache) { - this.atn = atn; - this.sharedContextCache = sharedContextCache; - return this; - } - getCachedContext(context) { - if (this.sharedContextCache === null) { - return context; - } - const visited = new Map2(); - return getCachedPredictionContext(context, this.sharedContextCache, visited); - } - }; - ATNSimulator.ERROR = new DFAState(2147483647, new ATNConfigSet()); - module.exports = ATNSimulator; - }); - - // node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js - var require_LexerActionExecutor2 = __commonJS((exports, module) => { - init_process_shim(); - var {hashStuff} = require_Utils2(); - var {LexerIndexedCustomAction} = require_LexerAction(); - var LexerActionExecutor = class { - constructor(lexerActions) { - this.lexerActions = lexerActions === null ? [] : lexerActions; - this.cachedHashCode = hashStuff(lexerActions); - return this; - } - fixOffsetBeforeMatch(offset) { - let updatedLexerActions = null; - for (let i = 0; i < this.lexerActions.length; i++) { - if (this.lexerActions[i].isPositionDependent && !(this.lexerActions[i] instanceof LexerIndexedCustomAction)) { - if (updatedLexerActions === null) { - updatedLexerActions = this.lexerActions.concat([]); - } - updatedLexerActions[i] = new LexerIndexedCustomAction(offset, this.lexerActions[i]); + if (start < 0 || stop >= this.tokens.length || stop < 0 || start >= this.tokens.length) { + throw new RangeError("start " + start + " or stop " + stop + " not in 0.." + (this.tokens.length - 1)); } - } - if (updatedLexerActions === null) { - return this; - } else { - return new LexerActionExecutor(updatedLexerActions); - } - } - execute(lexer, input, startIndex) { - let requiresSeek = false; - const stopIndex = input.index; - try { - for (let i = 0; i < this.lexerActions.length; i++) { - let lexerAction = this.lexerActions[i]; - if (lexerAction instanceof LexerIndexedCustomAction) { - const offset = lexerAction.offset; - input.seek(startIndex + offset); - lexerAction = lexerAction.action; - requiresSeek = startIndex + offset !== stopIndex; - } else if (lexerAction.isPositionDependent) { - input.seek(stopIndex); - requiresSeek = false; - } - lexerAction.execute(lexer); + if (start > stop) { + return []; } - } finally { - if (requiresSeek) { - input.seek(stopIndex); + if (types === void 0) { + return this.tokens.slice(start, stop + 1); + } else if (typeof types === "number") { + types = new Set().add(types); } + let typesSet = types; + let filteredTokens = this.tokens.slice(start, stop + 1); + filteredTokens = filteredTokens.filter((value) => typesSet.has(value.type)); + return filteredTokens; } - } - hashCode() { - return this.cachedHashCode; - } - updateHashCode(hash) { - hash.update(this.cachedHashCode); - } - equals(other) { - if (this === other) { - return true; - } else if (!(other instanceof LexerActionExecutor)) { - return false; - } else if (this.cachedHashCode != other.cachedHashCode) { - return false; - } else if (this.lexerActions.length != other.lexerActions.length) { - return false; - } else { - const numActions = this.lexerActions.length; - for (let idx = 0; idx < numActions; ++idx) { - if (!this.lexerActions[idx].equals(other.lexerActions[idx])) { - return false; + nextTokenOnChannel(i, channel) { + this.sync(i); + if (i >= this.size) { + return this.size - 1; + } + let token = this.tokens[i]; + while (token.channel !== channel) { + if (token.type === Token_1.Token.EOF) { + return i; } + i++; + this.sync(i); + token = this.tokens[i]; } - return true; + return i; } - } - static append(lexerActionExecutor, lexerAction) { - if (lexerActionExecutor === null) { - return new LexerActionExecutor([lexerAction]); + previousTokenOnChannel(i, channel) { + this.sync(i); + if (i >= this.size) { + return this.size - 1; + } + while (i >= 0) { + let token = this.tokens[i]; + if (token.type === Token_1.Token.EOF || token.channel === channel) { + return i; + } + i--; + } + return i; } - const lexerActions = lexerActionExecutor.lexerActions.concat([lexerAction]); - return new LexerActionExecutor(lexerActions); - } - }; - module.exports = LexerActionExecutor; - }); - - // node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js - var require_LexerATNSimulator2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var Lexer2 = require_Lexer2(); - var ATN2 = require_ATN2(); - var ATNSimulator = require_ATNSimulator2(); - var {DFAState} = require_DFAState2(); - var {OrderedATNConfigSet} = require_ATNConfigSet2(); - var {PredictionContext} = require_PredictionContext2(); - var {SingletonPredictionContext} = require_PredictionContext2(); - var {RuleStopState} = require_ATNState2(); - var {LexerATNConfig} = require_ATNConfig2(); - var {Transition} = require_Transition2(); - var LexerActionExecutor = require_LexerActionExecutor2(); - var {LexerNoViableAltException} = require_Errors(); - function resetSimState(sim) { - sim.index = -1; - sim.line = 0; - sim.column = -1; - sim.dfaState = null; - } - var SimState = class { - constructor() { - resetSimState(this); - } - reset() { - resetSimState(this); - } - }; - var LexerATNSimulator2 = class extends ATNSimulator { - constructor(recog, atn, decisionToDFA, sharedContextCache) { - super(atn, sharedContextCache); - this.decisionToDFA = decisionToDFA; - this.recog = recog; - this.startIndex = -1; - this.line = 1; - this.column = 0; - this.mode = Lexer2.DEFAULT_MODE; - this.prevAccept = new SimState(); - } - copyState(simulator) { - this.column = simulator.column; - this.line = simulator.line; - this.mode = simulator.mode; - this.startIndex = simulator.startIndex; - } - match(input, mode) { - this.match_calls += 1; - this.mode = mode; - const mark = input.mark(); - try { - this.startIndex = input.index; - this.prevAccept.reset(); - const dfa = this.decisionToDFA[mode]; - if (dfa.s0 === null) { - return this.matchATN(input); + getHiddenTokensToRight(tokenIndex, channel = -1) { + this.lazyInit(); + if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { + throw new RangeError(tokenIndex + " not in 0.." + (this.tokens.length - 1)); + } + let nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL); + let to; + let from = tokenIndex + 1; + if (nextOnChannel === -1) { + to = this.size - 1; } else { - return this.execATN(input, dfa.s0); + to = nextOnChannel; } - } finally { - input.release(mark); - } - } - reset() { - this.prevAccept.reset(); - this.startIndex = -1; - this.line = 1; - this.column = 0; - this.mode = Lexer2.DEFAULT_MODE; - } - matchATN(input) { - const startState = this.atn.modeToStartState[this.mode]; - if (LexerATNSimulator2.debug) { - console.log("matchATN mode " + this.mode + " start: " + startState); - } - const old_mode = this.mode; - const s0_closure = this.computeStartState(input, startState); - const suppressEdge = s0_closure.hasSemanticContext; - s0_closure.hasSemanticContext = false; - const next = this.addDFAState(s0_closure); - if (!suppressEdge) { - this.decisionToDFA[this.mode].s0 = next; + return this.filterForChannel(from, to, channel); } - const predict = this.execATN(input, next); - if (LexerATNSimulator2.debug) { - console.log("DFA after matchATN: " + this.decisionToDFA[old_mode].toLexerString()); + getHiddenTokensToLeft(tokenIndex, channel = -1) { + this.lazyInit(); + if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { + throw new RangeError(tokenIndex + " not in 0.." + (this.tokens.length - 1)); + } + if (tokenIndex === 0) { + return []; + } + let prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL); + if (prevOnChannel === tokenIndex - 1) { + return []; + } + let from = prevOnChannel + 1; + let to = tokenIndex - 1; + return this.filterForChannel(from, to, channel); } - return predict; - } - execATN(input, ds0) { - if (LexerATNSimulator2.debug) { - console.log("start state closure=" + ds0.configs); + filterForChannel(from, to, channel) { + let hidden = new Array(); + for (let i = from; i <= to; i++) { + let t = this.tokens[i]; + if (channel === -1) { + if (t.channel !== Lexer_1.Lexer.DEFAULT_TOKEN_CHANNEL) { + hidden.push(t); + } + } else { + if (t.channel === channel) { + hidden.push(t); + } + } + } + return hidden; } - if (ds0.isAcceptState) { - this.captureSimState(this.prevAccept, input, ds0); + get sourceName() { + return this.tokenSource.sourceName; } - let t = input.LA(1); - let s = ds0; - while (true) { - if (LexerATNSimulator2.debug) { - console.log("execATN loop starting closure: " + s.configs); - } - let target = this.getExistingTargetState(s, t); - if (target === null) { - target = this.computeTargetState(input, s, t); + getText(interval) { + if (interval === void 0) { + interval = Interval_1.Interval.of(0, this.size - 1); + } else if (!(interval instanceof Interval_1.Interval)) { + interval = interval.sourceInterval; } - if (target === ATNSimulator.ERROR) { - break; + let start = interval.a; + let stop = interval.b; + if (start < 0 || stop < 0) { + return ""; } - if (t !== Token2.EOF) { - this.consume(input); + this.fill(); + if (stop >= this.tokens.length) { + stop = this.tokens.length - 1; } - if (target.isAcceptState) { - this.captureSimState(this.prevAccept, input, target); - if (t === Token2.EOF) { + let buf = ""; + for (let i = start; i <= stop; i++) { + let t = this.tokens[i]; + if (t.type === Token_1.Token.EOF) { break; } + buf += t.text; } - t = input.LA(1); - s = target; + return buf.toString(); } - return this.failOrAccept(this.prevAccept, input, s.configs, t); - } - getExistingTargetState(s, t) { - if (s.edges === null || t < LexerATNSimulator2.MIN_DFA_EDGE || t > LexerATNSimulator2.MAX_DFA_EDGE) { - return null; + getTextFromRange(start, stop) { + if (this.isToken(start) && this.isToken(stop)) { + return this.getText(Interval_1.Interval.of(start.tokenIndex, stop.tokenIndex)); + } + return ""; } - let target = s.edges[t - LexerATNSimulator2.MIN_DFA_EDGE]; - if (target === void 0) { - target = null; + fill() { + this.lazyInit(); + const blockSize = 1e3; + while (true) { + let fetched = this.fetch(blockSize); + if (fetched < blockSize) { + return; + } + } } - if (LexerATNSimulator2.debug && target !== null) { - console.log("reuse state " + s.stateNumber + " edge to " + target.stateNumber); + isWritableToken(t) { + return t instanceof CommonToken_1.CommonToken; } - return target; - } - computeTargetState(input, s, t) { - const reach = new OrderedATNConfigSet(); - this.getReachableConfigSet(input, s.configs, reach, t); - if (reach.items.length === 0) { - if (!reach.hasSemanticContext) { - this.addDFAEdge(s, t, ATNSimulator.ERROR); - } - return ATNSimulator.ERROR; + isToken(t) { + return t instanceof CommonToken_1.CommonToken; } - return this.addDFAEdge(s, t, null, reach); - } - failOrAccept(prevAccept, input, reach, t) { - if (this.prevAccept.dfaState !== null) { - const lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor; - this.accept(input, lexerActionExecutor, this.startIndex, prevAccept.index, prevAccept.line, prevAccept.column); - return prevAccept.dfaState.prediction; - } else { - if (t === Token2.EOF && input.index === this.startIndex) { - return Token2.EOF; + }; + __decorate([ + Decorators_1.NotNull + ], BufferedTokenStream2.prototype, "_tokenSource", void 0); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "tokenSource", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "index", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "mark", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "release", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "seek", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "size", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "consume", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "get", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "LA", null); + __decorate([ + Decorators_1.NotNull, + Decorators_1.Override + ], BufferedTokenStream2.prototype, "LT", null); + __decorate([ + Decorators_1.Override + ], BufferedTokenStream2.prototype, "sourceName", null); + __decorate([ + Decorators_1.NotNull, + Decorators_1.Override + ], BufferedTokenStream2.prototype, "getText", null); + __decorate([ + Decorators_1.NotNull, + Decorators_1.Override + ], BufferedTokenStream2.prototype, "getTextFromRange", null); + BufferedTokenStream2 = __decorate([ + __param(0, Decorators_1.NotNull) + ], BufferedTokenStream2); + exports.BufferedTokenStream = BufferedTokenStream2; + } + }); + + // node_modules/antlr4ts/CommonTokenStream.js + var require_CommonTokenStream = __commonJS({ + "node_modules/antlr4ts/CommonTokenStream.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.CommonTokenStream = void 0; + var BufferedTokenStream_1 = require_BufferedTokenStream(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var CommonTokenStream3 = class CommonTokenStream extends BufferedTokenStream_1.BufferedTokenStream { + constructor(tokenSource, channel = Token_1.Token.DEFAULT_CHANNEL) { + super(tokenSource); + this.channel = channel; + } + adjustSeekIndex(i) { + return this.nextTokenOnChannel(i, this.channel); + } + tryLB(k) { + if (this.p - k < 0) { + return void 0; + } + let i = this.p; + let n = 1; + while (n <= k && i > 0) { + i = this.previousTokenOnChannel(i - 1, this.channel); + n++; + } + if (i < 0) { + return void 0; } - throw new LexerNoViableAltException(this.recog, input, this.startIndex, reach); + return this.tokens[i]; } - } - getReachableConfigSet(input, closure, reach, t) { - let skipAlt = ATN2.INVALID_ALT_NUMBER; - for (let i = 0; i < closure.items.length; i++) { - const cfg = closure.items[i]; - const currentAltReachedAcceptState = cfg.alt === skipAlt; - if (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) { - continue; + tryLT(k) { + this.lazyInit(); + if (k === 0) { + throw new RangeError("0 is not a valid lookahead index"); } - if (LexerATNSimulator2.debug) { - console.log("testing %s at %s\n", this.getTokenName(t), cfg.toString(this.recog, true)); + if (k < 0) { + return this.tryLB(-k); } - for (let j = 0; j < cfg.state.transitions.length; j++) { - const trans = cfg.state.transitions[j]; - const target = this.getReachableTarget(trans, t); - if (target !== null) { - let lexerActionExecutor = cfg.lexerActionExecutor; - if (lexerActionExecutor !== null) { - lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex); - } - const treatEofAsEpsilon = t === Token2.EOF; - const config = new LexerATNConfig({state: target, lexerActionExecutor}, cfg); - if (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) { - skipAlt = cfg.alt; - } + let i = this.p; + let n = 1; + while (n < k) { + if (this.sync(i + 1)) { + i = this.nextTokenOnChannel(i + 1, this.channel); } + n++; } + return this.tokens[i]; } - } - accept(input, lexerActionExecutor, startIndex, index, line, charPos) { - if (LexerATNSimulator2.debug) { - console.log("ACTION %s\n", lexerActionExecutor); - } - input.seek(index); - this.line = line; - this.column = charPos; - if (lexerActionExecutor !== null && this.recog !== null) { - lexerActionExecutor.execute(this.recog, input, startIndex); - } - } - getReachableTarget(trans, t) { - if (trans.matches(t, 0, Lexer2.MAX_CHAR_VALUE)) { - return trans.target; - } else { - return null; - } - } - computeStartState(input, p) { - const initialContext = PredictionContext.EMPTY; - const configs = new OrderedATNConfigSet(); - for (let i = 0; i < p.transitions.length; i++) { - const target = p.transitions[i].target; - const cfg = new LexerATNConfig({state: target, alt: i + 1, context: initialContext}, null); - this.closure(input, cfg, configs, false, false, false); - } - return configs; - } - closure(input, config, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon) { - let cfg = null; - if (LexerATNSimulator2.debug) { - console.log("closure(" + config.toString(this.recog, true) + ")"); - } - if (config.state instanceof RuleStopState) { - if (LexerATNSimulator2.debug) { - if (this.recog !== null) { - console.log("closure at %s rule stop %s\n", this.recog.ruleNames[config.state.ruleIndex], config); - } else { - console.log("closure at rule stop %s\n", config); + getNumberOfOnChannelTokens() { + let n = 0; + this.fill(); + for (let t of this.tokens) { + if (t.channel === this.channel) { + n++; } - } - if (config.context === null || config.context.hasEmptyPath()) { - if (config.context === null || config.context.isEmpty()) { - configs.add(config); - return true; - } else { - configs.add(new LexerATNConfig({state: config.state, context: PredictionContext.EMPTY}, config)); - currentAltReachedAcceptState = true; + if (t.type === Token_1.Token.EOF) { + break; } } - if (config.context !== null && !config.context.isEmpty()) { - for (let i = 0; i < config.context.length; i++) { - if (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) { - const newContext = config.context.getParent(i); - const returnState = this.atn.states[config.context.getReturnState(i)]; - cfg = new LexerATNConfig({state: returnState, context: newContext}, config); - currentAltReachedAcceptState = this.closure(input, cfg, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + return n; + } + }; + __decorate([ + Decorators_1.Override + ], CommonTokenStream3.prototype, "adjustSeekIndex", null); + __decorate([ + Decorators_1.Override + ], CommonTokenStream3.prototype, "tryLB", null); + __decorate([ + Decorators_1.Override + ], CommonTokenStream3.prototype, "tryLT", null); + CommonTokenStream3 = __decorate([ + __param(0, Decorators_1.NotNull) + ], CommonTokenStream3); + exports.CommonTokenStream = CommonTokenStream3; + } + }); + + // node_modules/antlr4ts/ListTokenSource.js + var require_ListTokenSource = __commonJS({ + "node_modules/antlr4ts/ListTokenSource.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ListTokenSource = void 0; + var CommonTokenFactory_1 = require_CommonTokenFactory(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var ListTokenSource = class ListTokenSource { + constructor(tokens2, sourceName) { + this.i = 0; + this._factory = CommonTokenFactory_1.CommonTokenFactory.DEFAULT; + if (tokens2 == null) { + throw new Error("tokens cannot be null"); + } + this.tokens = tokens2; + this._sourceName = sourceName; + } + get charPositionInLine() { + if (this.i < this.tokens.length) { + return this.tokens[this.i].charPositionInLine; + } else if (this.eofToken != null) { + return this.eofToken.charPositionInLine; + } else if (this.tokens.length > 0) { + let lastToken = this.tokens[this.tokens.length - 1]; + let tokenText = lastToken.text; + if (tokenText != null) { + let lastNewLine = tokenText.lastIndexOf("\n"); + if (lastNewLine >= 0) { + return tokenText.length - lastNewLine - 1; } } + return lastToken.charPositionInLine + lastToken.stopIndex - lastToken.startIndex + 1; } - return currentAltReachedAcceptState; + return 0; } - if (!config.state.epsilonOnlyTransitions) { - if (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) { - configs.add(config); + nextToken() { + if (this.i >= this.tokens.length) { + if (this.eofToken == null) { + let start = -1; + if (this.tokens.length > 0) { + let previousStop = this.tokens[this.tokens.length - 1].stopIndex; + if (previousStop !== -1) { + start = previousStop + 1; + } + } + let stop = Math.max(-1, start - 1); + this.eofToken = this._factory.create({source: this, stream: this.inputStream}, Token_1.Token.EOF, "EOF", Token_1.Token.DEFAULT_CHANNEL, start, stop, this.line, this.charPositionInLine); + } + return this.eofToken; } - } - for (let j = 0; j < config.state.transitions.length; j++) { - const trans = config.state.transitions[j]; - cfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon); - if (cfg !== null) { - currentAltReachedAcceptState = this.closure(input, cfg, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + let t = this.tokens[this.i]; + if (this.i === this.tokens.length - 1 && t.type === Token_1.Token.EOF) { + this.eofToken = t; } + this.i++; + return t; } - return currentAltReachedAcceptState; - } - getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon) { - let cfg = null; - if (trans.serializationType === Transition.RULE) { - const newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber); - cfg = new LexerATNConfig({state: trans.target, context: newContext}, config); - } else if (trans.serializationType === Transition.PRECEDENCE) { - throw "Precedence predicates are not supported in lexers."; - } else if (trans.serializationType === Transition.PREDICATE) { - if (LexerATNSimulator2.debug) { - console.log("EVAL rule " + trans.ruleIndex + ":" + trans.predIndex); - } - configs.hasSemanticContext = true; - if (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) { - cfg = new LexerATNConfig({state: trans.target}, config); - } - } else if (trans.serializationType === Transition.ACTION) { - if (config.context === null || config.context.hasEmptyPath()) { - const lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor, this.atn.lexerActions[trans.actionIndex]); - cfg = new LexerATNConfig({state: trans.target, lexerActionExecutor}, config); - } else { - cfg = new LexerATNConfig({state: trans.target}, config); - } - } else if (trans.serializationType === Transition.EPSILON) { - cfg = new LexerATNConfig({state: trans.target}, config); - } else if (trans.serializationType === Transition.ATOM || trans.serializationType === Transition.RANGE || trans.serializationType === Transition.SET) { - if (treatEofAsEpsilon) { - if (trans.matches(Token2.EOF, 0, Lexer2.MAX_CHAR_VALUE)) { - cfg = new LexerATNConfig({state: trans.target}, config); + get line() { + if (this.i < this.tokens.length) { + return this.tokens[this.i].line; + } else if (this.eofToken != null) { + return this.eofToken.line; + } else if (this.tokens.length > 0) { + let lastToken = this.tokens[this.tokens.length - 1]; + let line = lastToken.line; + let tokenText = lastToken.text; + if (tokenText != null) { + for (let i = 0; i < tokenText.length; i++) { + if (tokenText.charAt(i) === "\n") { + line++; + } + } } + return line; } + return 1; } - return cfg; - } - evaluatePredicate(input, ruleIndex, predIndex, speculative) { - if (this.recog === null) { - return true; + get inputStream() { + if (this.i < this.tokens.length) { + return this.tokens[this.i].inputStream; + } else if (this.eofToken != null) { + return this.eofToken.inputStream; + } else if (this.tokens.length > 0) { + return this.tokens[this.tokens.length - 1].inputStream; + } + return void 0; } - if (!speculative) { - return this.recog.sempred(null, ruleIndex, predIndex); + get sourceName() { + if (this._sourceName) { + return this._sourceName; + } + let inputStream = this.inputStream; + if (inputStream != null) { + return inputStream.sourceName; + } + return "List"; } - const savedcolumn = this.column; - const savedLine = this.line; - const index = input.index; - const marker = input.mark(); - try { - this.consume(input); - return this.recog.sempred(null, ruleIndex, predIndex); - } finally { - this.column = savedcolumn; - this.line = savedLine; - input.seek(index); - input.release(marker); + set tokenFactory(factory) { + this._factory = factory; } - } - captureSimState(settings, input, dfaState) { - settings.index = input.index; - settings.line = this.line; - settings.column = this.column; - settings.dfaState = dfaState; - } - addDFAEdge(from_, tk, to, cfgs) { - if (to === void 0) { - to = null; + get tokenFactory() { + return this._factory; } - if (cfgs === void 0) { - cfgs = null; + }; + __decorate([ + Decorators_1.Override + ], ListTokenSource.prototype, "charPositionInLine", null); + __decorate([ + Decorators_1.Override + ], ListTokenSource.prototype, "nextToken", null); + __decorate([ + Decorators_1.Override + ], ListTokenSource.prototype, "line", null); + __decorate([ + Decorators_1.Override + ], ListTokenSource.prototype, "inputStream", null); + __decorate([ + Decorators_1.Override + ], ListTokenSource.prototype, "sourceName", null); + __decorate([ + Decorators_1.Override, + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ListTokenSource.prototype, "tokenFactory", null); + ListTokenSource = __decorate([ + __param(0, Decorators_1.NotNull) + ], ListTokenSource); + exports.ListTokenSource = ListTokenSource; + } + }); + + // node_modules/antlr4ts/misc/MultiMap.js + var require_MultiMap = __commonJS({ + "node_modules/antlr4ts/misc/MultiMap.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.MultiMap = void 0; + var MultiMap = class extends Map { + constructor() { + super(); } - if (to === null && cfgs !== null) { - const suppressEdge = cfgs.hasSemanticContext; - cfgs.hasSemanticContext = false; - to = this.addDFAState(cfgs); - if (suppressEdge) { - return to; + map(key, value) { + let elementsForKey = super.get(key); + if (!elementsForKey) { + elementsForKey = []; + super.set(key, elementsForKey); } + elementsForKey.push(value); } - if (tk < LexerATNSimulator2.MIN_DFA_EDGE || tk > LexerATNSimulator2.MAX_DFA_EDGE) { - return to; - } - if (LexerATNSimulator2.debug) { - console.log("EDGE " + from_ + " -> " + to + " upon " + tk); - } - if (from_.edges === null) { - from_.edges = []; + getPairs() { + let pairs = []; + this.forEach((values, key) => { + values.forEach((v) => { + pairs.push([key, v]); + }); + }); + return pairs; } - from_.edges[tk - LexerATNSimulator2.MIN_DFA_EDGE] = to; - return to; - } - addDFAState(configs) { - const proposed = new DFAState(null, configs); - let firstConfigWithRuleStopState = null; - for (let i = 0; i < configs.items.length; i++) { - const cfg = configs.items[i]; - if (cfg.state instanceof RuleStopState) { - firstConfigWithRuleStopState = cfg; - break; - } - } - if (firstConfigWithRuleStopState !== null) { - proposed.isAcceptState = true; - proposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor; - proposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex]; - } - const dfa = this.decisionToDFA[this.mode]; - const existing = dfa.states.get(proposed); - if (existing !== null) { - return existing; - } - const newState = proposed; - newState.stateNumber = dfa.states.length; - configs.setReadonly(true); - newState.configs = configs; - dfa.states.add(newState); - return newState; - } - getDFA(mode) { - return this.decisionToDFA[mode]; - } - getText(input) { - return input.getText(this.startIndex, input.index - 1); - } - consume(input) { - const curChar = input.LA(1); - if (curChar === "\n".charCodeAt(0)) { - this.line += 1; - this.column = 0; - } else { - this.column += 1; - } - input.consume(); - } - getTokenName(tt) { - if (tt === -1) { - return "EOF"; - } else { - return "'" + String.fromCharCode(tt) + "'"; - } - } - }; - LexerATNSimulator2.debug = false; - LexerATNSimulator2.dfa_debug = false; - LexerATNSimulator2.MIN_DFA_EDGE = 0; - LexerATNSimulator2.MAX_DFA_EDGE = 127; - LexerATNSimulator2.match_calls = 0; - module.exports = LexerATNSimulator2; + }; + exports.MultiMap = MultiMap; + } }); - // node_modules/antlr4/src/antlr4/atn/PredictionMode.js - var require_PredictionMode2 = __commonJS((exports, module) => { - init_process_shim(); - var {Map: Map2, BitSet, AltDict, hashStuff} = require_Utils2(); - var ATN2 = require_ATN2(); - var {RuleStopState} = require_ATNState2(); - var {ATNConfigSet} = require_ATNConfigSet2(); - var {ATNConfig} = require_ATNConfig2(); - var {SemanticContext} = require_SemanticContext2(); - var PredictionMode = { - SLL: 0, - LL: 1, - LL_EXACT_AMBIG_DETECTION: 2, - hasSLLConflictTerminatingPrediction: function(mode, configs) { - if (PredictionMode.allConfigsInRuleStopStates(configs)) { - return true; - } - if (mode === PredictionMode.SLL) { - if (configs.hasSemanticContext) { - const dup = new ATNConfigSet(); - for (let i = 0; i < configs.items.length; i++) { - let c = configs.items[i]; - c = new ATNConfig({semanticContext: SemanticContext.NONE}, c); - dup.add(c); - } - configs = dup; - } - } - const altsets = PredictionMode.getConflictingAltSubsets(configs); - return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs); - }, - hasConfigInRuleStopState: function(configs) { - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (c.state instanceof RuleStopState) { - return true; - } - } - return false; - }, - allConfigsInRuleStopStates: function(configs) { - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (!(c.state instanceof RuleStopState)) { - return false; - } - } - return true; - }, - resolvesToJustOneViableAlt: function(altsets) { - return PredictionMode.getSingleViableAlt(altsets); - }, - allSubsetsConflict: function(altsets) { - return !PredictionMode.hasNonConflictingAltSet(altsets); - }, - hasNonConflictingAltSet: function(altsets) { - for (let i = 0; i < altsets.length; i++) { - const alts = altsets[i]; - if (alts.length === 1) { - return true; - } - } - return false; - }, - hasConflictingAltSet: function(altsets) { - for (let i = 0; i < altsets.length; i++) { - const alts = altsets[i]; - if (alts.length > 1) { - return true; - } - } - return false; - }, - allSubsetsEqual: function(altsets) { - let first = null; - for (let i = 0; i < altsets.length; i++) { - const alts = altsets[i]; - if (first === null) { - first = alts; - } else if (alts !== first) { - return false; - } - } - return true; - }, - getUniqueAlt: function(altsets) { - const all = PredictionMode.getAlts(altsets); - if (all.length === 1) { - return all.minValue(); - } else { - return ATN2.INVALID_ALT_NUMBER; + // node_modules/antlr4ts/misc/ParseCancellationException.js + var require_ParseCancellationException = __commonJS({ + "node_modules/antlr4ts/misc/ParseCancellationException.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParseCancellationException = void 0; + var ParseCancellationException2 = class extends Error { + constructor(cause) { + super(cause.message); + this.cause = cause; + this.stack = cause.stack; + } + getCause() { + return this.cause; } - }, - getAlts: function(altsets) { - const all = new BitSet(); - altsets.map(function(alts) { - all.or(alts); - }); - return all; - }, - getConflictingAltSubsets: function(configs) { - const configToAlts = new Map2(); - configToAlts.hashFunction = function(cfg) { - hashStuff(cfg.state.stateNumber, cfg.context); - }; - configToAlts.equalsFunction = function(c1, c2) { - return c1.state.stateNumber === c2.state.stateNumber && c1.context.equals(c2.context); - }; - configs.items.map(function(cfg) { - let alts = configToAlts.get(cfg); - if (alts === null) { - alts = new BitSet(); - configToAlts.put(cfg, alts); - } - alts.add(cfg.alt); - }); - return configToAlts.getValues(); - }, - getStateToAltMap: function(configs) { - const m = new AltDict(); - configs.items.map(function(c) { - let alts = m.get(c.state); - if (alts === null) { - alts = new BitSet(); - m.put(c.state, alts); - } - alts.add(c.alt); - }); - return m; - }, - hasStateAssociatedWithOneAlt: function(configs) { - const values = PredictionMode.getStateToAltMap(configs).values(); - for (let i = 0; i < values.length; i++) { - if (values[i].length === 1) { - return true; + }; + exports.ParseCancellationException = ParseCancellationException2; + } + }); + + // node_modules/antlr4ts/InterpreterRuleContext.js + var require_InterpreterRuleContext = __commonJS({ + "node_modules/antlr4ts/InterpreterRuleContext.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.InterpreterRuleContext = void 0; + var Decorators_1 = require_Decorators(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var InterpreterRuleContext = class extends ParserRuleContext_1.ParserRuleContext { + constructor(ruleIndex, parent, invokingStateNumber) { + if (invokingStateNumber !== void 0) { + super(parent, invokingStateNumber); + } else { + super(); } + this._ruleIndex = ruleIndex; } - return false; - }, - getSingleViableAlt: function(altsets) { - let result = null; - for (let i = 0; i < altsets.length; i++) { - const alts = altsets[i]; - const minAlt = alts.minValue(); - if (result === null) { - result = minAlt; - } else if (result !== minAlt) { - return ATN2.INVALID_ALT_NUMBER; - } + get ruleIndex() { + return this._ruleIndex; } - return result; - } - }; - module.exports = PredictionMode; + }; + __decorate([ + Decorators_1.Override + ], InterpreterRuleContext.prototype, "ruleIndex", null); + exports.InterpreterRuleContext = InterpreterRuleContext; + } }); - // node_modules/antlr4/src/antlr4/ParserRuleContext.js - var require_ParserRuleContext2 = __commonJS((exports, module) => { - init_process_shim(); - var RuleContext = require_RuleContext2(); - var Tree = require_Tree(); - var INVALID_INTERVAL = Tree.INVALID_INTERVAL; - var TerminalNode = Tree.TerminalNode; - var TerminalNodeImpl = Tree.TerminalNodeImpl; - var ErrorNodeImpl = Tree.ErrorNodeImpl; - var Interval = require_IntervalSet2().Interval; - var ParserRuleContext2 = class extends RuleContext { - constructor(parent, invokingStateNumber) { - parent = parent || null; - invokingStateNumber = invokingStateNumber || null; - super(parent, invokingStateNumber); - this.ruleIndex = -1; - this.children = null; - this.start = null; - this.stop = null; - this.exception = null; - } - copyFrom(ctx) { - this.parentCtx = ctx.parentCtx; - this.invokingState = ctx.invokingState; - this.children = null; - this.start = ctx.start; - this.stop = ctx.stop; - if (ctx.children) { - this.children = []; - ctx.children.map(function(child) { - if (child instanceof ErrorNodeImpl) { - this.children.push(child); - child.parentCtx = this; - } - }, this); - } - } - enterRule(listener) { - } - exitRule(listener) { - } - addChild(child) { - if (this.children === null) { - this.children = []; - } - this.children.push(child); - return child; - } - removeLastChild() { - if (this.children !== null) { - this.children.pop(); - } - } - addTokenNode(token) { - const node = new TerminalNodeImpl(token); - this.addChild(node); - node.parentCtx = this; - return node; - } - addErrorNode(badToken) { - const node = new ErrorNodeImpl(badToken); - this.addChild(node); - node.parentCtx = this; - return node; - } - getChild(i, type) { - type = type || null; - if (this.children === null || i < 0 || i >= this.children.length) { - return null; - } - if (type === null) { - return this.children[i]; - } else { - for (let j = 0; j < this.children.length; j++) { - const child = this.children[j]; - if (child instanceof type) { - if (i === 0) { - return child; - } else { - i -= 1; + // node_modules/antlr4ts/ParserInterpreter.js + var require_ParserInterpreter = __commonJS({ + "node_modules/antlr4ts/ParserInterpreter.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParserInterpreter = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var BitSet_1 = require_BitSet(); + var FailedPredicateException_1 = require_FailedPredicateException(); + var InputMismatchException_1 = require_InputMismatchException(); + var InterpreterRuleContext_1 = require_InterpreterRuleContext(); + var LoopEndState_1 = require_LoopEndState(); + var Decorators_1 = require_Decorators(); + var Decorators_2 = require_Decorators(); + var Parser_1 = require_Parser(); + var ParserATNSimulator_1 = require_ParserATNSimulator(); + var RecognitionException_1 = require_RecognitionException(); + var StarLoopEntryState_1 = require_StarLoopEntryState(); + var Token_1 = require_Token(); + var ParserInterpreter = class ParserInterpreter2 extends Parser_1.Parser { + constructor(grammarFileName, vocabulary, ruleNames, atn, input) { + super(grammarFileName instanceof ParserInterpreter2 ? grammarFileName.inputStream : input); + this._parentContextStack = []; + this.overrideDecision = -1; + this.overrideDecisionInputIndex = -1; + this.overrideDecisionAlt = -1; + this.overrideDecisionReached = false; + this._overrideDecisionRoot = void 0; + if (grammarFileName instanceof ParserInterpreter2) { + let old = grammarFileName; + this._grammarFileName = old._grammarFileName; + this._atn = old._atn; + this.pushRecursionContextStates = old.pushRecursionContextStates; + this._ruleNames = old._ruleNames; + this._vocabulary = old._vocabulary; + this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(this._atn, this); + } else { + vocabulary = vocabulary; + ruleNames = ruleNames; + atn = atn; + this._grammarFileName = grammarFileName; + this._atn = atn; + this._ruleNames = ruleNames.slice(0); + this._vocabulary = vocabulary; + this.pushRecursionContextStates = new BitSet_1.BitSet(atn.states.length); + for (let state of atn.states) { + if (!(state instanceof StarLoopEntryState_1.StarLoopEntryState)) { + continue; } - } - } - return null; - } - } - getToken(ttype, i) { - if (this.children === null || i < 0 || i >= this.children.length) { - return null; - } - for (let j = 0; j < this.children.length; j++) { - const child = this.children[j]; - if (child instanceof TerminalNode) { - if (child.symbol.type === ttype) { - if (i === 0) { - return child; - } else { - i -= 1; + if (state.precedenceRuleDecision) { + this.pushRecursionContextStates.set(state.stateNumber); } } + this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(atn, this); } } - return null; - } - getTokens(ttype) { - if (this.children === null) { - return []; - } else { - const tokens2 = []; - for (let j = 0; j < this.children.length; j++) { - const child = this.children[j]; - if (child instanceof TerminalNode) { - if (child.symbol.type === ttype) { - tokens2.push(child); - } - } + reset(resetInput) { + if (resetInput === void 0) { + super.reset(); + } else { + super.reset(resetInput); } - return tokens2; + this.overrideDecisionReached = false; + this._overrideDecisionRoot = void 0; } - } - getTypedRuleContext(ctxType, i) { - return this.getChild(i, ctxType); - } - getTypedRuleContexts(ctxType) { - if (this.children === null) { - return []; - } else { - const contexts = []; - for (let j = 0; j < this.children.length; j++) { - const child = this.children[j]; - if (child instanceof ctxType) { - contexts.push(child); - } - } - return contexts; + get atn() { + return this._atn; } - } - getChildCount() { - if (this.children === null) { - return 0; - } else { - return this.children.length; + get vocabulary() { + return this._vocabulary; } - } - getSourceInterval() { - if (this.start === null || this.stop === null) { - return INVALID_INTERVAL; - } else { - return new Interval(this.start.tokenIndex, this.stop.tokenIndex); + get ruleNames() { + return this._ruleNames; } - } - }; - RuleContext.EMPTY = new ParserRuleContext2(); - module.exports = ParserRuleContext2; - }); - - // node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js - var require_ParserATNSimulator2 = __commonJS((exports, module) => { - init_process_shim(); - var Utils3 = require_Utils2(); - var {Set: Set2, BitSet, DoubleDict} = Utils3; - var ATN2 = require_ATN2(); - var {ATNState, RuleStopState} = require_ATNState2(); - var {ATNConfig} = require_ATNConfig2(); - var {ATNConfigSet} = require_ATNConfigSet2(); - var {Token: Token2} = require_Token2(); - var {DFAState, PredPrediction} = require_DFAState2(); - var ATNSimulator = require_ATNSimulator2(); - var PredictionMode = require_PredictionMode2(); - var RuleContext = require_RuleContext2(); - var ParserRuleContext2 = require_ParserRuleContext2(); - var {SemanticContext} = require_SemanticContext2(); - var {PredictionContext} = require_PredictionContext2(); - var {Interval} = require_IntervalSet2(); - var {Transition, SetTransition, NotSetTransition, RuleTransition, ActionTransition} = require_Transition2(); - var {NoViableAltException: NoViableAltException2} = require_Errors(); - var {SingletonPredictionContext, predictionContextFromRuleContext} = require_PredictionContext2(); - var ParserATNSimulator2 = class extends ATNSimulator { - constructor(parser, atn, decisionToDFA, sharedContextCache) { - super(atn, sharedContextCache); - this.parser = parser; - this.decisionToDFA = decisionToDFA; - this.predictionMode = PredictionMode.LL; - this._input = null; - this._startIndex = 0; - this._outerContext = null; - this._dfa = null; - this.mergeCache = null; - this.debug = false; - this.debug_closure = false; - this.debug_add = false; - this.debug_list_atn_decisions = false; - this.dfa_debug = false; - this.retry_debug = false; - } - reset() { - } - adaptivePredict(input, decision, outerContext) { - if (this.debug || this.debug_list_atn_decisions) { - console.log("adaptivePredict decision " + decision + " exec LA(1)==" + this.getLookaheadName(input) + " line " + input.LT(1).line + ":" + input.LT(1).column); - } - this._input = input; - this._startIndex = input.index; - this._outerContext = outerContext; - const dfa = this.decisionToDFA[decision]; - this._dfa = dfa; - const m = input.mark(); - const index = input.index; - try { - let s0; - if (dfa.precedenceDfa) { - s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence()); + get grammarFileName() { + return this._grammarFileName; + } + parse(startRuleIndex) { + let startRuleStartState = this._atn.ruleToStartState[startRuleIndex]; + this._rootContext = this.createInterpreterRuleContext(void 0, ATNState_1.ATNState.INVALID_STATE_NUMBER, startRuleIndex); + if (startRuleStartState.isPrecedenceRule) { + this.enterRecursionRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex, 0); } else { - s0 = dfa.s0; - } - if (s0 === null) { - if (outerContext === null) { - outerContext = RuleContext.EMPTY; - } - if (this.debug || this.debug_list_atn_decisions) { - console.log("predictATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this.parser.ruleNames)); - } - const fullCtx = false; - let s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx); - if (dfa.precedenceDfa) { - dfa.s0.configs = s0_closure; - s0_closure = this.applyPrecedenceFilter(s0_closure); - s0 = this.addDFAState(dfa, new DFAState(null, s0_closure)); - dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0); - } else { - s0 = this.addDFAState(dfa, new DFAState(null, s0_closure)); - dfa.s0 = s0; - } + this.enterRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex); } - const alt = this.execATN(dfa, s0, input, index, outerContext); - if (this.debug) { - console.log("DFA after predictATN: " + dfa.toString(this.parser.literalNames)); + while (true) { + let p = this.atnState; + switch (p.stateType) { + case ATNStateType_1.ATNStateType.RULE_STOP: + if (this._ctx.isEmpty) { + if (startRuleStartState.isPrecedenceRule) { + let result = this._ctx; + let parentContext = this._parentContextStack.pop(); + this.unrollRecursionContexts(parentContext[0]); + return result; + } else { + this.exitRule(); + return this._rootContext; + } + } + this.visitRuleStopState(p); + break; + default: + try { + this.visitState(p); + } catch (e) { + if (e instanceof RecognitionException_1.RecognitionException) { + this.state = this._atn.ruleToStopState[p.ruleIndex].stateNumber; + this.context.exception = e; + this.errorHandler.reportError(this, e); + this.recover(e); + } else { + throw e; + } + } + break; + } } - return alt; - } finally { - this._dfa = null; - this.mergeCache = null; - input.seek(index); - input.release(m); } - } - execATN(dfa, s0, input, startIndex, outerContext) { - if (this.debug || this.debug_list_atn_decisions) { - console.log("execATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + " line " + input.LT(1).line + ":" + input.LT(1).column); + enterRecursionRule(localctx, state, ruleIndex, precedence) { + this._parentContextStack.push([this._ctx, localctx.invokingState]); + super.enterRecursionRule(localctx, state, ruleIndex, precedence); } - let alt; - let previousD = s0; - if (this.debug) { - console.log("s0 = " + s0); - } - let t = input.LA(1); - while (true) { - let D = this.getExistingTargetState(previousD, t); - if (D === null) { - D = this.computeTargetState(dfa, previousD, t); - } - if (D === ATNSimulator.ERROR) { - const e = this.noViableAlt(input, outerContext, previousD.configs, startIndex); - input.seek(startIndex); - alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext); - if (alt !== ATN2.INVALID_ALT_NUMBER) { - return alt; - } else { - throw e; - } + get atnState() { + return this._atn.states[this.state]; + } + visitState(p) { + let predictedAlt = 1; + if (p.numberOfTransitions > 1) { + predictedAlt = this.visitDecisionState(p); } - if (D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) { - let conflictingAlts = null; - if (D.predicates !== null) { - if (this.debug) { - console.log("DFA state has preds in DFA sim LL failover"); + let transition = p.transition(predictedAlt - 1); + switch (transition.serializationType) { + case 1: + if (this.pushRecursionContextStates.get(p.stateNumber) && !(transition.target instanceof LoopEndState_1.LoopEndState)) { + let parentContext = this._parentContextStack[this._parentContextStack.length - 1]; + let localctx = this.createInterpreterRuleContext(parentContext[0], parentContext[1], this._ctx.ruleIndex); + this.pushNewRecursionContext(localctx, this._atn.ruleToStartState[p.ruleIndex].stateNumber, this._ctx.ruleIndex); } - const conflictIndex = input.index; - if (conflictIndex !== startIndex) { - input.seek(startIndex); + break; + case 5: + this.match(transition._label); + break; + case 2: + case 7: + case 8: + if (!transition.matches(this._input.LA(1), Token_1.Token.MIN_USER_TOKEN_TYPE, 65535)) { + this.recoverInline(); } - conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true); - if (conflictingAlts.length === 1) { - if (this.debug) { - console.log("Full LL avoided"); - } - return conflictingAlts.minValue(); + this.matchWildcard(); + break; + case 9: + this.matchWildcard(); + break; + case 3: + let ruleStartState = transition.target; + let ruleIndex = ruleStartState.ruleIndex; + let newctx = this.createInterpreterRuleContext(this._ctx, p.stateNumber, ruleIndex); + if (ruleStartState.isPrecedenceRule) { + this.enterRecursionRule(newctx, ruleStartState.stateNumber, ruleIndex, transition.precedence); + } else { + this.enterRule(newctx, transition.target.stateNumber, ruleIndex); } - if (conflictIndex !== startIndex) { - input.seek(conflictIndex); + break; + case 4: + let predicateTransition = transition; + if (!this.sempred(this._ctx, predicateTransition.ruleIndex, predicateTransition.predIndex)) { + throw new FailedPredicateException_1.FailedPredicateException(this); } - } - if (this.dfa_debug) { - console.log("ctx sensitive state " + outerContext + " in " + D); - } - const fullCtx = true; - const s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx); - this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index); - alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext); - return alt; - } - if (D.isAcceptState) { - if (D.predicates === null) { - return D.prediction; - } - const stopIndex = input.index; - input.seek(startIndex); - const alts = this.evalSemanticContext(D.predicates, outerContext, true); - if (alts.length === 0) { - throw this.noViableAlt(input, outerContext, D.configs, startIndex); - } else if (alts.length === 1) { - return alts.minValue(); - } else { - this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs); - return alts.minValue(); - } - } - previousD = D; - if (t !== Token2.EOF) { - input.consume(); - t = input.LA(1); - } - } - } - getExistingTargetState(previousD, t) { - const edges = previousD.edges; - if (edges === null) { - return null; - } else { - return edges[t + 1] || null; - } - } - computeTargetState(dfa, previousD, t) { - const reach = this.computeReachSet(previousD.configs, t, false); - if (reach === null) { - this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR); - return ATNSimulator.ERROR; - } - let D = new DFAState(null, reach); - const predictedAlt = this.getUniqueAlt(reach); - if (this.debug) { - const altSubSets = PredictionMode.getConflictingAltSubsets(reach); - console.log("SLL altSubSets=" + Utils3.arrayToString(altSubSets) + ", previous=" + previousD.configs + ", configs=" + reach + ", predict=" + predictedAlt + ", allSubsetsConflict=" + PredictionMode.allSubsetsConflict(altSubSets) + ", conflictingAlts=" + this.getConflictingAlts(reach)); - } - if (predictedAlt !== ATN2.INVALID_ALT_NUMBER) { - D.isAcceptState = true; - D.configs.uniqueAlt = predictedAlt; - D.prediction = predictedAlt; - } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) { - D.configs.conflictingAlts = this.getConflictingAlts(reach); - D.requiresFullContext = true; - D.isAcceptState = true; - D.prediction = D.configs.conflictingAlts.minValue(); - } - if (D.isAcceptState && D.configs.hasSemanticContext) { - this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision)); - if (D.predicates !== null) { - D.prediction = ATN2.INVALID_ALT_NUMBER; - } - } - D = this.addDFAEdge(dfa, previousD, t, D); - return D; - } - predicateDFAState(dfaState, decisionState) { - const nalts = decisionState.transitions.length; - const altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs); - const altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts); - if (altToPred !== null) { - dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred); - dfaState.prediction = ATN2.INVALID_ALT_NUMBER; - } else { - dfaState.prediction = altsToCollectPredsFrom.minValue(); - } - } - execATNWithFullContext(dfa, D, s0, input, startIndex, outerContext) { - if (this.debug || this.debug_list_atn_decisions) { - console.log("execATNWithFullContext " + s0); - } - const fullCtx = true; - let foundExactAmbig = false; - let reach; - let previous = s0; - input.seek(startIndex); - let t = input.LA(1); - let predictedAlt = -1; - while (true) { - reach = this.computeReachSet(previous, t, fullCtx); - if (reach === null) { - const e = this.noViableAlt(input, outerContext, previous, startIndex); - input.seek(startIndex); - const alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext); - if (alt !== ATN2.INVALID_ALT_NUMBER) { - return alt; - } else { - throw e; - } - } - const altSubSets = PredictionMode.getConflictingAltSubsets(reach); - if (this.debug) { - console.log("LL altSubSets=" + altSubSets + ", predict=" + PredictionMode.getUniqueAlt(altSubSets) + ", resolvesToJustOneViableAlt=" + PredictionMode.resolvesToJustOneViableAlt(altSubSets)); - } - reach.uniqueAlt = this.getUniqueAlt(reach); - if (reach.uniqueAlt !== ATN2.INVALID_ALT_NUMBER) { - predictedAlt = reach.uniqueAlt; - break; - } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) { - predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets); - if (predictedAlt !== ATN2.INVALID_ALT_NUMBER) { break; - } - } else { - if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) { - foundExactAmbig = true; - predictedAlt = PredictionMode.getSingleViableAlt(altSubSets); + case 6: + let actionTransition = transition; + this.action(this._ctx, actionTransition.ruleIndex, actionTransition.actionIndex); break; - } - } - previous = reach; - if (t !== Token2.EOF) { - input.consume(); - t = input.LA(1); + case 10: + if (!this.precpred(this._ctx, transition.precedence)) { + let precedence = transition.precedence; + throw new FailedPredicateException_1.FailedPredicateException(this, `precpred(_ctx, ${precedence})`); + } + break; + default: + throw new Error("UnsupportedOperationException: Unrecognized ATN transition type."); } + this.state = transition.target.stateNumber; } - if (reach.uniqueAlt !== ATN2.INVALID_ALT_NUMBER) { - this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index); + visitDecisionState(p) { + let predictedAlt; + this.errorHandler.sync(this); + let decision = p.decision; + if (decision === this.overrideDecision && this._input.index === this.overrideDecisionInputIndex && !this.overrideDecisionReached) { + predictedAlt = this.overrideDecisionAlt; + this.overrideDecisionReached = true; + } else { + predictedAlt = this.interpreter.adaptivePredict(this._input, decision, this._ctx); + } return predictedAlt; } - this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach); - return predictedAlt; - } - computeReachSet(closure, t, fullCtx) { - if (this.debug) { - console.log("in computeReachSet, starting closure: " + closure); - } - if (this.mergeCache === null) { - this.mergeCache = new DoubleDict(); + createInterpreterRuleContext(parent, invokingStateNumber, ruleIndex) { + return new InterpreterRuleContext_1.InterpreterRuleContext(ruleIndex, parent, invokingStateNumber); } - const intermediate = new ATNConfigSet(fullCtx); - let skippedStopStates = null; - for (let i = 0; i < closure.items.length; i++) { - const c = closure.items[i]; - if (this.debug) { - console.log("testing " + this.getTokenName(t) + " at " + c); - } - if (c.state instanceof RuleStopState) { - if (fullCtx || t === Token2.EOF) { - if (skippedStopStates === null) { - skippedStopStates = []; - } - skippedStopStates.push(c); - if (this.debug_add) { - console.log("added " + c + " to skippedStopStates"); + visitRuleStopState(p) { + let ruleStartState = this._atn.ruleToStartState[p.ruleIndex]; + if (ruleStartState.isPrecedenceRule) { + let parentContext = this._parentContextStack.pop(); + this.unrollRecursionContexts(parentContext[0]); + this.state = parentContext[1]; + } else { + this.exitRule(); + } + let ruleTransition = this._atn.states[this.state].transition(0); + this.state = ruleTransition.followState.stateNumber; + } + addDecisionOverride(decision, tokenIndex, forcedAlt) { + this.overrideDecision = decision; + this.overrideDecisionInputIndex = tokenIndex; + this.overrideDecisionAlt = forcedAlt; + } + get overrideDecisionRoot() { + return this._overrideDecisionRoot; + } + recover(e) { + let i = this._input.index; + this.errorHandler.recover(this, e); + if (this._input.index === i) { + let tok = e.getOffendingToken(); + if (!tok) { + throw new Error("Expected exception to have an offending token"); + } + let source = tok.tokenSource; + let stream = source !== void 0 ? source.inputStream : void 0; + let sourcePair = {source, stream}; + if (e instanceof InputMismatchException_1.InputMismatchException) { + let expectedTokens = e.expectedTokens; + if (expectedTokens === void 0) { + throw new Error("Expected the exception to provide expected tokens"); } - } - continue; - } - for (let j = 0; j < c.state.transitions.length; j++) { - const trans = c.state.transitions[j]; - const target = this.getReachableTarget(trans, t); - if (target !== null) { - const cfg = new ATNConfig({state: target}, c); - intermediate.add(cfg, this.mergeCache); - if (this.debug_add) { - console.log("added " + cfg + " to intermediate"); + let expectedTokenType = Token_1.Token.INVALID_TYPE; + if (!expectedTokens.isNil) { + expectedTokenType = expectedTokens.minElement; } + let errToken = this.tokenFactory.create(sourcePair, expectedTokenType, tok.text, Token_1.Token.DEFAULT_CHANNEL, -1, -1, tok.line, tok.charPositionInLine); + this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken)); + } else { + let source2 = tok.tokenSource; + let errToken = this.tokenFactory.create(sourcePair, Token_1.Token.INVALID_TYPE, tok.text, Token_1.Token.DEFAULT_CHANNEL, -1, -1, tok.line, tok.charPositionInLine); + this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken)); } } } - let reach = null; - if (skippedStopStates === null && t !== Token2.EOF) { - if (intermediate.items.length === 1) { - reach = intermediate; - } else if (this.getUniqueAlt(intermediate) !== ATN2.INVALID_ALT_NUMBER) { - reach = intermediate; + recoverInline() { + return this._errHandler.recoverInline(this); + } + get rootContext() { + return this._rootContext; + } + }; + __decorate([ + Decorators_1.NotNull + ], ParserInterpreter.prototype, "_vocabulary", void 0); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "reset", null); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "atn", null); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "vocabulary", null); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "ruleNames", null); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "grammarFileName", null); + __decorate([ + Decorators_2.Override + ], ParserInterpreter.prototype, "enterRecursionRule", null); + ParserInterpreter = __decorate([ + __param(1, Decorators_1.NotNull) + ], ParserInterpreter); + exports.ParserInterpreter = ParserInterpreter; + } + }); + + // node_modules/antlr4ts/tree/pattern/ParseTreeMatch.js + var require_ParseTreeMatch = __commonJS({ + "node_modules/antlr4ts/tree/pattern/ParseTreeMatch.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParseTreeMatch = void 0; + var Decorators_1 = require_Decorators(); + var ParseTreeMatch = class ParseTreeMatch { + constructor(tree, pattern, labels, mismatchedNode) { + if (!tree) { + throw new Error("tree cannot be null"); + } + if (!pattern) { + throw new Error("pattern cannot be null"); + } + if (!labels) { + throw new Error("labels cannot be null"); + } + this._tree = tree; + this._pattern = pattern; + this._labels = labels; + this._mismatchedNode = mismatchedNode; + } + get(label) { + let parseTrees = this._labels.get(label); + if (!parseTrees || parseTrees.length === 0) { + return void 0; } + return parseTrees[parseTrees.length - 1]; } - if (reach === null) { - reach = new ATNConfigSet(fullCtx); - const closureBusy = new Set2(); - const treatEofAsEpsilon = t === Token2.EOF; - for (let k = 0; k < intermediate.items.length; k++) { - this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon); + getAll(label) { + const nodes = this._labels.get(label); + if (!nodes) { + return []; } + return nodes; } - if (t === Token2.EOF) { - reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate); + get labels() { + return this._labels; } - if (skippedStopStates !== null && (!fullCtx || !PredictionMode.hasConfigInRuleStopState(reach))) { - for (let l = 0; l < skippedStopStates.length; l++) { - reach.add(skippedStopStates[l], this.mergeCache); - } + get mismatchedNode() { + return this._mismatchedNode; } - if (reach.items.length === 0) { - return null; - } else { - return reach; + get succeeded() { + return !this._mismatchedNode; } - } - removeAllConfigsNotInRuleStopState(configs, lookToEndOfRule) { - if (PredictionMode.allConfigsInRuleStopStates(configs)) { - return configs; + get pattern() { + return this._pattern; } - const result = new ATNConfigSet(configs.fullCtx); - for (let i = 0; i < configs.items.length; i++) { - const config = configs.items[i]; - if (config.state instanceof RuleStopState) { - result.add(config, this.mergeCache); - continue; - } - if (lookToEndOfRule && config.state.epsilonOnlyTransitions) { - const nextTokens = this.atn.nextTokens(config.state); - if (nextTokens.contains(Token2.EPSILON)) { - const endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex]; - result.add(new ATNConfig({state: endOfRuleState}, config), this.mergeCache); - } - } + get tree() { + return this._tree; } - return result; - } - computeStartState(p, ctx, fullCtx) { - const initialContext = predictionContextFromRuleContext(this.atn, ctx); - const configs = new ATNConfigSet(fullCtx); - for (let i = 0; i < p.transitions.length; i++) { - const target = p.transitions[i].target; - const c = new ATNConfig({state: target, alt: i + 1, context: initialContext}, null); - const closureBusy = new Set2(); - this.closure(c, configs, closureBusy, true, fullCtx, false); + toString() { + return `Match ${this.succeeded ? "succeeded" : "failed"}; found ${this.labels.size} labels`; } - return configs; - } - applyPrecedenceFilter(configs) { - let config; - const statesFromAlt1 = []; - const configSet = new ATNConfigSet(configs.fullCtx); - for (let i = 0; i < configs.items.length; i++) { - config = configs.items[i]; - if (config.alt !== 1) { - continue; - } - const updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext); - if (updatedContext === null) { - continue; - } - statesFromAlt1[config.state.stateNumber] = config.context; - if (updatedContext !== config.semanticContext) { - configSet.add(new ATNConfig({semanticContext: updatedContext}, config), this.mergeCache); - } else { - configSet.add(config, this.mergeCache); - } - } - for (let i = 0; i < configs.items.length; i++) { - config = configs.items[i]; - if (config.alt === 1) { - continue; - } - if (!config.precedenceFilterSuppressed) { - const context = statesFromAlt1[config.state.stateNumber] || null; - if (context !== null && context.equals(config.context)) { - continue; - } + }; + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ParseTreeMatch.prototype, "getAll", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreeMatch.prototype, "labels", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreeMatch.prototype, "pattern", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreeMatch.prototype, "tree", null); + __decorate([ + Decorators_1.Override + ], ParseTreeMatch.prototype, "toString", null); + ParseTreeMatch = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParseTreeMatch); + exports.ParseTreeMatch = ParseTreeMatch; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathLexer.js + var require_XPathLexer = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathLexer.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathLexer = void 0; + var ATNDeserializer_1 = require_ATNDeserializer(); + var Lexer_1 = require_Lexer(); + var LexerATNSimulator_1 = require_LexerATNSimulator(); + var VocabularyImpl_1 = require_VocabularyImpl(); + var Utils3 = require_Utils(); + var XPathLexer = class extends Lexer_1.Lexer { + constructor(input) { + super(input); + this._interp = new LexerATNSimulator_1.LexerATNSimulator(XPathLexer._ATN, this); + } + get vocabulary() { + return XPathLexer.VOCABULARY; + } + get grammarFileName() { + return "XPathLexer.g4"; + } + get ruleNames() { + return XPathLexer.ruleNames; + } + get serializedATN() { + return XPathLexer._serializedATN; + } + get channelNames() { + return XPathLexer.channelNames; + } + get modeNames() { + return XPathLexer.modeNames; + } + action(_localctx, ruleIndex, actionIndex) { + switch (ruleIndex) { + case 4: + this.ID_action(_localctx, actionIndex); + break; } - configSet.add(config, this.mergeCache); } - return configSet; - } - getReachableTarget(trans, ttype) { - if (trans.matches(ttype, 0, this.atn.maxTokenType)) { - return trans.target; - } else { - return null; - } - } - getPredsForAmbigAlts(ambigAlts, configs, nalts) { - let altToPred = []; - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (ambigAlts.contains(c.alt)) { - altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext); + ID_action(_localctx, actionIndex) { + switch (actionIndex) { + case 0: + let text = this.text; + if (text.charAt(0) === text.charAt(0).toUpperCase()) { + this.type = XPathLexer.TOKEN_REF; + } else { + this.type = XPathLexer.RULE_REF; + } + break; } } - let nPredAlts = 0; - for (let i = 1; i < nalts + 1; i++) { - const pred = altToPred[i] || null; - if (pred === null) { - altToPred[i] = SemanticContext.NONE; - } else if (pred !== SemanticContext.NONE) { - nPredAlts += 1; + static get _ATN() { + if (!XPathLexer.__ATN) { + XPathLexer.__ATN = new ATNDeserializer_1.ATNDeserializer().deserialize(Utils3.toCharArray(XPathLexer._serializedATN)); } + return XPathLexer.__ATN; } - if (nPredAlts === 0) { - altToPred = null; + }; + exports.XPathLexer = XPathLexer; + XPathLexer.TOKEN_REF = 1; + XPathLexer.RULE_REF = 2; + XPathLexer.ANYWHERE = 3; + XPathLexer.ROOT = 4; + XPathLexer.WILDCARD = 5; + XPathLexer.BANG = 6; + XPathLexer.ID = 7; + XPathLexer.STRING = 8; + XPathLexer.channelNames = [ + "DEFAULT_TOKEN_CHANNEL", + "HIDDEN" + ]; + XPathLexer.modeNames = [ + "DEFAULT_MODE" + ]; + XPathLexer.ruleNames = [ + "ANYWHERE", + "ROOT", + "WILDCARD", + "BANG", + "ID", + "NameChar", + "NameStartChar", + "STRING" + ]; + XPathLexer._LITERAL_NAMES = [ + void 0, + void 0, + void 0, + "'//'", + "'/'", + "'*'", + "'!'" + ]; + XPathLexer._SYMBOLIC_NAMES = [ + void 0, + "TOKEN_REF", + "RULE_REF", + "ANYWHERE", + "ROOT", + "WILDCARD", + "BANG", + "ID", + "STRING" + ]; + XPathLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(XPathLexer._LITERAL_NAMES, XPathLexer._SYMBOLIC_NAMES, []); + XPathLexer._serializedATNSegments = 2; + XPathLexer._serializedATNSegment0 = '\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\n2\b     \x07 \x07\b \b \x07\n\f"\v\x07\x07\b\b  \x07 ,\n \f  /\v   -\n\x07\x07 \b\v \r\n\u02B6\n2;C\\aac|\x81\xA1\xAC\xAC\xAF\xAF\xB7\xB7\xBC\xBC\xC2\xD8\xDA\xF8\xFA\u02C3\u02C8\u02D3\u02E2\u02E6\u02EE\u02EE\u02F0\u02F0\u0302\u0376\u0378\u0379\u037C\u037F\u0381\u0381\u0388\u0388\u038A\u038C\u038E\u038E\u0390\u03A3\u03A5\u03F7\u03F9\u0483\u0485\u0489\u048C\u0531\u0533\u0558\u055B\u055B\u0563\u0589\u0593\u05BF\u05C1\u05C1\u05C3\u05C4\u05C6\u05C7\u05C9\u05C9\u05D2\u05EC\u05F2\u05F4\u0602\u0607\u0612\u061C\u061E\u061E\u0622\u066B\u0670\u06D5\u06D7\u06DF\u06E1\u06EA\u06EC\u06FE\u0701\u0701\u0711\u074C\u074F\u07B3\u07C2\u07F7\u07FC\u07FC\u0802\u082F\u0842\u085D\u08A2\u08B6\u08B8\u08BF\u08D6\u0965\u0968\u0971\u0973\u0985\u0987\u098E\u0991\u0992\u0995\u09AA\u09AC\u09B2\u09B4\u09B4\u09B8\u09BB\u09BE\u09C6\u09C9\u09CA\u09CD\u09D0\u09D9\u09D9\u09DE\u09DF\u09E1\u09E5\u09E8\u09F3\u0A03\u0A05\u0A07\u0A0C\u0A11\u0A12\u0A15\u0A2A\u0A2C\u0A32\u0A34\u0A35\u0A37\u0A38\u0A3A\u0A3B\u0A3E\u0A3E\u0A40\u0A44\u0A49\u0A4A\u0A4D\u0A4F\u0A53\u0A53\u0A5B\u0A5E\u0A60\u0A60\u0A68\u0A77\u0A83\u0A85\u0A87\u0A8F\u0A91\u0A93\u0A95\u0AAA\u0AAC\u0AB2\u0AB4\u0AB5\u0AB7\u0ABB\u0ABE\u0AC7\u0AC9\u0ACB\u0ACD\u0ACF\u0AD2\u0AD2\u0AE2\u0AE5\u0AE8\u0AF1\u0AFB\u0AFB\u0B03\u0B05\u0B07\u0B0E\u0B11\u0B12\u0B15\u0B2A\u0B2C\u0B32\u0B34\u0B35\u0B37\u0B3B\u0B3E\u0B46\u0B49\u0B4A\u0B4D\u0B4F\u0B58\u0B59\u0B5E\u0B5F\u0B61\u0B65\u0B68\u0B71\u0B73\u0B73\u0B84\u0B85\u0B87\u0B8C\u0B90\u0B92\u0B94\u0B97\u0B9B\u0B9C\u0B9E\u0B9E\u0BA0\u0BA1\u0BA5\u0BA6\u0BAA\u0BAC\u0BB0\u0BBB\u0BC0\u0BC4\u0BC8\u0BCA\u0BCC\u0BCF\u0BD2\u0BD2\u0BD9\u0BD9\u0BE8\u0BF1\u0C02\u0C05\u0C07\u0C0E\u0C10\u0C12\u0C14\u0C2A\u0C2C\u0C3B\u0C3F\u0C46\u0C48\u0C4A\u0C4C\u0C4F\u0C57\u0C58\u0C5A\u0C5C\u0C62\u0C65\u0C68\u0C71\u0C82\u0C85\u0C87\u0C8E\u0C90\u0C92\u0C94\u0CAA\u0CAC\u0CB5\u0CB7\u0CBB\u0CBE\u0CC6\u0CC8\u0CCA\u0CCC\u0CCF\u0CD7\u0CD8\u0CE0\u0CE0\u0CE2\u0CE5\u0CE8\u0CF1\u0CF3\u0CF4\u0D03\u0D05\u0D07\u0D0E\u0D10\u0D12\u0D14\u0D3C\u0D3F\u0D46\u0D48\u0D4A\u0D4C\u0D50\u0D56\u0D59\u0D61\u0D65\u0D68\u0D71\u0D7C\u0D81\u0D84\u0D85\u0D87\u0D98\u0D9C\u0DB3\u0DB5\u0DBD\u0DBF\u0DBF\u0DC2\u0DC8\u0DCC\u0DCC\u0DD1\u0DD6\u0DD8\u0DD8\u0DDA\u0DE1\u0DE8\u0DF1\u0DF4\u0DF5\u0E03\u0E3C\u0E42\u0E50\u0E52\u0E5B\u0E83\u0E84\u0E86\u0E86\u0E89\u0E8A\u0E8C\u0E8C\u0E8F\u0E8F\u0E96\u0E99\u0E9B\u0EA1\u0EA3\u0EA5\u0EA7\u0EA7\u0EA9\u0EA9\u0EAC\u0EAD\u0EAF\u0EBB\u0EBD\u0EBF\u0EC2\u0EC6\u0EC8\u0EC8\u0ECA\u0ECF\u0ED2\u0EDB\u0EDE\u0EE1\u0F02\u0F02\u0F1A\u0F1B\u0F22\u0F2B\u0F37\u0F37\u0F39\u0F39\u0F3B\u0F3B\u0F40\u0F49\u0F4B\u0F6E\u0F73\u0F86\u0F88\u0F99\u0F9B\u0FBE\u0FC8\u0FC8\u1002\u104B\u1052\u109F\u10A2\u10C7\u10C9\u10C9\u10CF\u10CF\u10D2\u10FC\u10FE\u124A\u124C\u124F\u1252\u1258\u125A\u125A\u125C\u125F\u1262\u128A\u128C\u128F\u1292\u12B2\u12B4\u12B7\u12BA\u12C0\u12C2\u12C2\u12C4\u12C7\u12CA\u12D8\u12DA\u1312\u1314\u1317\u131A\u135C\u135F\u1361\u1382\u1391\u13A2\u13F7\u13FA\u13FF\u1403\u166E\u1671\u1681\u1683\u169C\u16A2\u16EC\u16F0\u16FA\u1702\u170E\u1710\u1716\u1722\u1736\u1742\u1755\u1762\u176E\u1770\u1772\u1774\u1775\u1782\u17D5\u17D9\u17D9\u17DE\u17DF\u17E2\u17EB\u180D\u1810\u1812\u181B\u1822\u1879\u1882\u18AC\u18B2\u18F7\u1902\u1920\u1922\u192D\u1932\u193D\u1948\u196F\u1972\u1976\u1982\u19AD\u19B2\u19CB\u19D2\u19DB\u1A02\u1A1D\u1A22\u1A60\u1A62\u1A7E\u1A81\u1A8B\u1A92\u1A9B\u1AA9\u1AA9\u1AB2\u1ABF\u1B02\u1B4D\u1B52\u1B5B\u1B6D\u1B75\u1B82\u1BF5\u1C02\u1C39\u1C42\u1C4B\u1C4F\u1C7F\u1C82\u1C8A\u1CD2\u1CD4\u1CD6\u1CF8\u1CFA\u1CFB\u1D02\u1DF7\u1DFD\u1F17\u1F1A\u1F1F\u1F22\u1F47\u1F4A\u1F4F\u1F52\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F61\u1F7F\u1F82\u1FB6\u1FB8\u1FBE\u1FC0\u1FC0\u1FC4\u1FC6\u1FC8\u1FCE\u1FD2\u1FD5\u1FD8\u1FDD\u1FE2\u1FEE\u1FF4\u1FF6\u1FF8\u1FFE\u200D\u2011\u202C\u2030\u2041\u2042\u2056\u2056\u2062\u2066\u2068\u2071\u2073\u2073\u2081\u2081\u2092\u209E\u20D2\u20DE\u20E3\u20E3\u20E7\u20F2\u2104\u2104\u2109\u2109\u210C\u2115\u2117\u2117\u211B\u211F\u2126\u2126\u2128\u2128\u212A\u212A\u212C\u212F\u2131\u213B\u213E\u2141\u2147\u214B\u2150\u2150\u2162\u218A\u2C02\u2C30\u2C32\u2C60\u2C62\u2CE6\u2CED\u2CF5\u2D02\u2D27\u2D29\u2D29\u2D2F\u2D2F\u2D32\u2D69\u2D71\u2D71\u2D81\u2D98\u2DA2\u2DA8\u2DAA\u2DB0\u2DB2\u2DB8\u2DBA\u2DC0\u2DC2\u2DC8\u2DCA\u2DD0\u2DD2\u2DD8\u2DDA\u2DE0\u2DE2\u2E01\u2E31\u2E31\u3007\u3009\u3023\u3031\u3033\u3037\u303A\u303E\u3043\u3098\u309B\u309C\u309F\u30A1\u30A3\u30FC\u30FE\u3101\u3107\u312F\u3133\u3190\u31A2\u31BC\u31F2\u3201\u3402\u4DB7\u4E02\u9FD7\uA002\uA48E\uA4D2\uA4FF\uA502\uA60E\uA612\uA62D\uA642\uA671\uA676\uA67F\uA681\uA6F3\uA719\uA721\uA724\uA78A\uA78D\uA7B0\uA7B2\uA7B9\uA7F9\uA829\uA842\uA875\uA882\uA8C7\uA8D2\uA8DB\uA8E2\uA8F9\uA8FD\uA8FD\uA8FF\uA8FF\uA902\uA92F\uA932\uA955\uA962\uA97E\uA982\uA9C2\uA9D1\uA9DB\uA9E2\uAA00\uAA02\uAA38\uAA42\uAA4F\uAA52\uAA5B\uAA62\uAA78\uAA7C\uAAC4\uAADD\uAADF\uAAE2\uAAF1\uAAF4\uAAF8\uAB03\uAB08\uAB0B\uAB10\uAB13\uAB18\uAB22\uAB28\uAB2A\uAB30\uAB32\uAB5C\uAB5E\uAB67\uAB72\uABEC\uABEE\uABEF\uABF2\uABFB\uAC02\uD7A5\uD7B2\uD7C8\uD7CD\uD7FD\uF902\uFA6F\uFA72\uFADB\uFB02\uFB08\uFB15\uFB19\uFB1F\uFB2A\uFB2C\uFB38\uFB3A\uFB3E\uFB40\uFB40\uFB42\uFB43\uFB45\uFB46\uFB48\uFBB3\uFBD5\uFD3F\uFD52\uFD91\uFD94\uFDC9\uFDF2\uFDFD\uFE02\uFE11\uFE22\uFE31\uFE35\uFE36\uFE4F\uFE51\uFE72\uFE76\uFE78\uFEFE\uFF01\uFF01\uFF12\uFF1B\uFF23\uFF3C\uFF41\uFF41\uFF43\uFF5C\uFF68\uFFC0\uFFC4\uFFC9\uFFCC\uFFD1\uFFD4\uFFD9\uFFDC\uFFDE\uFFFB\uFFFD\r(*<>?AOR_\x82\xFC\u0142\u0176\u01FF\u01FF\u0282\u029E\u02A2\u02D2\u02E2\u02E2\u0302\u0321\u0332\u034C\u0352\u037C\u0382\u039F\u03A2\u03C5\u03CA\u03D1\u03D3\u03D7\u0402\u049F\u04A2\u04AB\u04B2\u04D5\u04DA\u04FD\u0502\u0529\u0532\u0565\u0602\u0738\u0742\u0757\u0762\u0769\u0802\u0807\u080A\u080A\u080C\u0837\u0839\u083A\u083E\u083E\u0841\u0857\u0862\u0878\u0882\u08A0\u08E2\u08F4\u08F6\u08F7\u0902\u0917\u0922\u093B\u0982\u09B9\u09C0\u09C1\u0A02\u0A05\u0A07\u0A08\u0A0E\u0A15\u0A17\u0A19\u0A1B\u0A35\u0A3A\u0A3C\u0A41\u0A41\u0A62\u0A7E\u0A82\u0A9E\u0AC2\u0AC9\u0ACB\u0AE8\u0B02\u0B37\u0B42\u0B57\u0B62\u0B74\u0B82\u0B93\u0C02\u0C4A\u0C82\u0CB4\u0CC2\u0CF4\u1002\u1048\u1068\u1071\u1081\u10BC\u10BF\u10BF\u10D2\u10EA\u10F2\u10FB\u1102\u1136\u1138\u1141\u1152\u1175\u1178\u1178\u1182\u11C6\u11CC\u11CE\u11D2\u11DC\u11DE\u11DE\u1202\u1213\u1215\u1239\u1240\u1240\u1282\u1288\u128A\u128A\u128C\u128F\u1291\u129F\u12A1\u12AA\u12B2\u12EC\u12F2\u12FB\u1302\u1305\u1307\u130E\u1311\u1312\u1315\u132A\u132C\u1332\u1334\u1335\u1337\u133B\u133E\u1346\u1349\u134A\u134D\u134F\u1352\u1352\u1359\u1359\u135F\u1365\u1368\u136E\u1372\u1376\u1402\u144C\u1452\u145B\u1482\u14C7\u14C9\u14C9\u14D2\u14DB\u1582\u15B7\u15BA\u15C2\u15DA\u15DF\u1602\u1642\u1646\u1646\u1652\u165B\u1682\u16B9\u16C2\u16CB\u1702\u171B\u171F\u172D\u1732\u173B\u18A2\u18EB\u1901\u1901\u1AC2\u1AFA\u1C02\u1C0A\u1C0C\u1C38\u1C3A\u1C42\u1C52\u1C5B\u1C74\u1C91\u1C94\u1CA9\u1CAB\u1CB8\u2002\u239B\u2402\u2470\u2482\u2545\u3002\u3430\u4402\u4648\u6802\u6A3A\u6A42\u6A60\u6A62\u6A6B\u6AD2\u6AEF\u6AF2\u6AF6\u6B02\u6B38\u6B42\u6B45\u6B52\u6B5B\u6B65\u6B79\u6B7F\u6B91\u6F02\u6F46\u6F52\u6F80\u6F91\u6FA1\u6FE2\u6FE2\u7002\u87EE\u8802\u8AF4\uB002\uB003\uBC02\uBC6C\uBC72\uBC7E\uBC82\uBC8A\uBC92\uBC9B\uBC9F\uBCA0\uBCA2\uBCA5\uD167\uD16B\uD16F\uD184\uD187\uD18D\uD1AC\uD1AF\uD244\uD246\uD402\uD456\uD458\uD49E\uD4A0\uD4A1\uD4A4\uD4A4\uD4A7\uD4A8\uD4AB\uD4AE\uD4B0\uD4BB\uD4BD\uD4BD\uD4BF\uD4C5\uD4C7\uD507\uD509\uD50C\uD50F\uD516\uD518\uD51E\uD520\uD53B\uD53D\uD540\uD542\uD546\uD548\uD548\uD54C\uD552\uD554\uD6A7\uD6AA\uD6C2\uD6C4\uD6DC\uD6DE\uD6FC\uD6FE\uD716\uD718\uD736\uD738\uD750\uD752\uD770\uD772\uD78A\uD78C\uD7AA\uD7AC\uD7C4\uD7C6\uD7CD\uD7D0\uD801\uDA02\uDA38\uDA3D\uDA6E\uDA77\uDA77\uDA86\uDA86\uDA9D\uDAA1\uDAA3\uDAB1\uE002\uE008\uE00A\uE01A\uE01D\uE023\uE025\uE026\uE028\uE02C\uE802\uE8C6\uE8D2\uE8D8\uE902\uE94C\uE952\uE95B\uEE02\uEE05\uEE07\uEE21\uEE23\uEE24\uEE26\uEE26\uEE29\uEE29\uEE2B\uEE34\uEE36\uEE39\uEE3B\uEE3B\uEE3D\uEE3D\uEE44\uEE44\uEE49\uEE49\uEE4B\uEE4B\uEE4D\uEE4D\uEE4F\uEE51\uEE53\uEE54\uEE56\uEE56\uEE59\uEE59\uEE5B\uEE5B\uEE5D\uEE5D\uEE5F\uEE5F\uEE61\uEE61\uEE63\uEE64\uEE66\uEE66\uEE69\uEE6C\uEE6E\uEE74\uEE76\uEE79\uEE7B\uEE7E\uEE80\uEE80\uEE82\uEE8B\uEE8D\uEE9D\uEEA3\uEEA5\uEEA7\uEEAB\uEEAD\uEEBD\uA6D8\uA702\uB736\uB742\uB81F\uB822\uCEA3\uF802\uFA1F"\x81\u0102\u01F1\u0240C\\c|\xAC\xAC\xB7\xB7\xBC\xBC\xC2\xD8\xDA\xF8\xFA\u02C3\u02C8\u02D3\u02E2\u02E6\u02EE\u02EE\u02F0\u02F0\u0372\u0376\u0378\u0379\u037C\u037F\u0381\u0381\u0388\u0388\u038A\u038C\u038E\u038E\u0390\u03A3\u03A5\u03F7\u03F9\u0483\u048C\u0531\u0533\u0558\u055B\u055B\u0563\u0589\u05D2\u05EC\u05F2\u05F4\u0622\u064C\u0670\u0671\u0673\u06D5\u06D7\u06D7\u06E7\u06E8\u06F0\u06F1\u06FC\u06FE\u0701\u0701\u0712\u0712\u0714\u0731\u074F\u07A7\u07B3\u07B3\u07CC\u07EC\u07F6\u07F7\u07FC\u07FC\u0802\u0817\u081C\u081C\u0826\u0826\u082A\u082A\u0842\u085A\u08A2\u08B6\u08B8\u08BF\u0906\u093B\u093F\u093F\u0952\u0952\u095A\u0963\u0973\u0982\u0987\u098E\u0991\u0992\u0995\u09AA\u09AC\u09B2\u09B4\u09B4\u09B8\u09BB\u09BF\u09BF\u09D0\u09D0\u09DE\u09DF\u09E1\u09E3\u09F2\u09F3\u0A07\u0A0C\u0A11\u0A12\u0A15\u0A2A\u0A2C\u0A32\u0A34\u0A35\u0A37\u0A38\u0A3A\u0A3B\u0A5B\u0A5E\u0A60\u0A60\u0A74\u0A76\u0A87\u0A8F\u0A91\u0A93\u0A95\u0AAA\u0AAC\u0AB2\u0AB4\u0AB5\u0AB7\u0ABB\u0ABF\u0ABF\u0AD2\u0AD2\u0AE2\u0AE3\u0AFB\u0AFB\u0B07\u0B0E\u0B11\u0B12\u0B15\u0B2A\u0B2C\u0B32\u0B34\u0B35\u0B37\u0B3B\u0B3F\u0B3F\u0B5E\u0B5F\u0B61\u0B63\u0B73\u0B73\u0B85\u0B85\u0B87\u0B8C\u0B90\u0B92\u0B94\u0B97\u0B9B\u0B9C\u0B9E\u0B9E\u0BA0\u0BA1\u0BA5\u0BA6\u0BAA\u0BAC\u0BB0\u0BBB\u0BD2\u0BD2\u0C07\u0C0E\u0C10\u0C12\u0C14\u0C2A\u0C2C\u0C3B\u0C3F\u0C3F\u0C5A\u0C5C\u0C62\u0C63\u0C82\u0C82\u0C87\u0C8E\u0C90\u0C92\u0C94\u0CAA\u0CAC\u0CB5\u0CB7\u0CBB\u0CBF\u0CBF\u0CE0\u0CE0\u0CE2\u0CE3\u0CF3\u0CF4\u0D07\u0D0E\u0D10\u0D12\u0D14\u0D3C\u0D3F\u0D3F\u0D50\u0D50\u0D56\u0D58\u0D61\u0D63\u0D7C\u0D81\u0D87\u0D98\u0D9C\u0DB3\u0DB5\u0DBD\u0DBF\u0DBF\u0DC2\u0DC8\u0E03\u0E32\u0E34\u0E35\u0E42\u0E48\u0E83\u0E84\u0E86\u0E86\u0E89\u0E8A\u0E8C\u0E8C\u0E8F\u0E8F\u0E96\u0E99\u0E9B\u0EA1\u0EA3\u0EA5\u0EA7\u0EA7\u0EA9\u0EA9\u0EAC\u0EAD\u0EAF\u0EB2\u0EB4\u0EB5\u0EBF\u0EBF\u0EC2\u0EC6\u0EC8\u0EC8\u0EDE\u0EE1\u0F02\u0F02\u0F42\u0F49\u0F4B\u0F6E\u0F8A\u0F8E\u1002\u102C\u1041\u1041\u1052\u1057\u105C\u105F\u1063\u1063\u1067\u1068\u1070\u1072\u1077\u1083\u1090\u1090\u10A2\u10C7\u10C9\u10C9\u10CF\u10CF\u10D2\u10FC\u10FE\u124A\u124C\u124F\u1252\u1258\u125A\u125A\u125C\u125F\u1262\u128A\u128C\u128F\u1292\u12B2\u12B4\u12B7\u12BA\u12C0\u12C2\u12C2\u12C4\u12C7\u12CA\u12D8\u12DA\u1312\u1314\u1317\u131A\u135C\u1382\u1391\u13A2\u13F7\u13FA\u13FF\u1403\u166E\u1671\u1681\u1683\u169C\u16A2\u16EC\u16F0\u16FA\u1702\u170E\u1710\u1713\u1722\u1733\u1742\u1753\u1762\u176E\u1770\u1772\u1782\u17B5\u17D9\u17D9\u17DE\u17DE\u1822\u1879\u1882\u1886\u1889\u18AA\u18AC\u18AC\u18B2\u18F7\u1902\u1920\u1952\u196F\u1972\u1976\u1982\u19AD\u19B2\u19CB\u1A02\u1A18\u1A22\u1A56\u1AA9\u1AA9\u1B07\u1B35\u1B47\u1B4D\u1B85\u1BA2\u1BB0\u1BB1\u1BBC\u1BE7\u1C02\u1C25\u1C4F\u1C51\u1C5C\u1C7F\u1C82\u1C8A\u1CEB\u1CEE\u1CF0\u1CF3\u1CF7\u1CF8\u1D02\u1DC1\u1E02\u1F17\u1F1A\u1F1F\u1F22\u1F47\u1F4A\u1F4F\u1F52\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F61\u1F7F\u1F82\u1FB6\u1FB8\u1FBE\u1FC0\u1FC0\u1FC4\u1FC6\u1FC8\u1FCE\u1FD2\u1FD5\u1FD8\u1FDD\u1FE2\u1FEE\u1FF4\u1FF6\u1FF8\u1FFE\u2073\u2073\u2081\u2081\u2092\u209E\u2104\u2104\u2109\u2109\u210C\u2115\u2117\u2117\u211B\u211F\u2126\u2126\u2128\u2128\u212A\u212A\u212C\u212F\u2131\u213B\u213E\u2141\u2147\u214B\u2150\u2150\u2162\u218A\u2C02\u2C30\u2C32\u2C60\u2C62\u2CE6\u2CED\u2CF0\u2CF4\u2CF5\u2D02\u2D27\u2D29\u2D29\u2D2F\u2D2F\u2D32\u2D69\u2D71\u2D71\u2D82\u2D98\u2DA2\u2DA8\u2DAA\u2DB0\u2DB2\u2DB8\u2DBA\u2DC0\u2DC2\u2DC8\u2DCA\u2DD0\u2DD2\u2DD8\u2DDA\u2DE0\u2E31\u2E31\u3007\u3009\u3023\u302B\u3033\u3037\u303A\u303E\u3043\u3098\u309F\u30A1\u30A3\u30FC\u30FE\u3101\u3107\u312F\u3133\u3190\u31A2\u31BC\u31F2\u3201\u3402\u4DB7\u4E02\u9FD7\uA002\uA48E\uA4D2\uA4FF\uA502\uA60E\uA612\uA621\uA62C\uA62D\uA642\uA670\uA681\uA69F\uA6A2\uA6F1\uA719\uA721\uA724\uA78A\uA78D\uA7B0\uA7B2\uA7B9\uA7F9\uA803\uA805\uA807\uA809\uA80C\uA80E\uA824\uA842\uA875\uA884\uA8B5\uA8F4\uA8F9\uA8FD\uA8FD\uA8FF\uA8FF\uA90C\uA927\uA932\uA948\uA962\uA97E\uA986\uA9B4\uA9D1\uA9D1\uA9E2\uA9E6\uA9E8\uA9F1\uA9FC\uAA00\uAA02\uAA2A\uAA42\uAA44\uAA46\uAA4D\uAA62\uAA78\uAA7C\uAA7C\uAA80\uAAB1\uAAB3\uAAB3\uAAB7\uAAB8\uAABB\uAABF\uAAC2\uAAC2\uAAC4\uAAC4\uAADD\uAADF\uAAE2\uAAEC\uAAF4\uAAF6\uAB03\uAB08\uAB0B\uAB10\uAB13\uAB18\uAB22\uAB28\uAB2A\uAB30\uAB32\uAB5C\uAB5E\uAB67\uAB72\uABE4\uAC02\uD7A5\uD7B2\uD7C8\uD7CD\uD7FD\uF902\uFA6F\uFA72\uFADB\uFB02\uFB08\uFB15\uFB19\uFB1F\uFB1F\uFB21\uFB2A\uFB2C\uFB38\uFB3A\uFB3E\uFB40\uFB40\uFB42\uFB43\uFB45\uFB46\uFB48\uFBB3\uFBD5\uFD3F\uFD52\uFD91\uFD94\uFDC9\uFDF2\uFDFD\uFE72\uFE76\uFE78\uFEFE\uFF23\uFF3C\uFF43\uFF5C\uFF68\uFFC0\uFFC4\uFFC9\uFFCC\uFFD1\uFFD4\uFFD9\uFFDC\uFFDE\r(*<>?AOR_\x82\xFC\u0142\u0176\u0282\u029E\u02A2\u02D2\u0302\u0321\u0332\u034C\u0352\u0377\u0382\u039F\u03A2\u03C5\u03CA\u03D1\u03D3\u03D7\u0402\u049F\u04B2\u04D5\u04DA\u04FD\u0502\u0529\u0532\u0565\u0602\u0738\u0742\u0757\u0762\u0769\u0802\u0807\u080A\u080A\u080C\u0837\u0839\u083A\u083E\u083E\u0841\u0857\u0862\u0878\u0882\u08A0\u08E2\u08F4\u08F6\u08F7\u0902\u0917\u0922\u093B\u0982\u09B9\u09C0\u09C1\u0A02\u0A02\u0A12\u0A15\u0A17\u0A19\u0A1B\u0A35\u0A62\u0A7E\u0A82\u0A9E\u0AC2\u0AC9\u0ACB\u0AE6\u0B02\u0B37\u0B42\u0B57\u0B62\u0B74\u0B82\u0B93\u0C02\u0C4A\u0C82\u0CB4\u0CC2\u0CF4\u1005\u1039\u1085\u10B1\u10D2\u10EA\u1105\u1128\u1152\u1174\u1178\u1178\u1185\u11B4\u11C3\u11C6\u11DC\u11DC\u11DE\u11DE\u1202\u1213\u1215\u122D\u1282\u1288\u128A\u128A\u128C\u128F\u1291\u129F\u12A1\u12AA\u12B2\u12E0\u1307\u130E\u1311\u1312\u1315\u132A\u132C\u1332\u1334\u1335\u1337\u133B\u133F\u133F\u1352\u1352\u135F\u1363\u1402\u1436\u1449\u144C\u1482\u14B1\u14C6\u14C7\u14C9\u14C9\u1582\u15B0\u15DA\u15DD\u1602\u1631\u1646\u1646\u1682\u16AC\u1702\u171B\u18A2\u18E1\u1901\u1901\u1AC2\u1AFA\u1C02\u1C0A\u1C0C\u1C30\u1C42\u1C42\u1C74\u1C91\u2002\u239B\u2402\u2470\u2482\u2545\u3002\u3430\u4402\u4648\u6802\u6A3A\u6A42\u6A60\u6AD2\u6AEF\u6B02\u6B31\u6B42\u6B45\u6B65\u6B79\u6B7F\u6B91\u6F02\u6F46\u6F52\u6F52\u6F95\u6FA1\u6FE2\u6FE2\u7002\u87EE\u8802\u8AF4\uB002\uB003\uBC02\uBC6C\uBC72\uBC7E\uBC82\uBC8A\uBC92\uBC9B\uD402\uD456\uD458\uD49E\uD4A0\uD4A1\uD4A4\uD4A4\uD4A7\uD4A8\uD4AB\uD4AE\uD4B0\uD4BB\uD4BD\uD4BD\uD4BF\uD4C5\uD4C7\uD507\uD509\uD50C\uD50F\uD516\uD518\uD51E\uD520\uD53B\uD53D\uD540\uD542\uD546\uD548\uD548'; + XPathLexer._serializedATNSegment1 = `\uD54C\uD552\uD554\uD6A7\uD6AA\uD6C2\uD6C4\uD6DC\uD6DE\uD6FC\uD6FE\uD716\uD718\uD736\uD738\uD750\uD752\uD770\uD772\uD78A\uD78C\uD7AA\uD7AC\uD7C4\uD7C6\uD7CD\uE802\uE8C6\uE902\uE945\uEE02\uEE05\uEE07\uEE21\uEE23\uEE24\uEE26\uEE26\uEE29\uEE29\uEE2B\uEE34\uEE36\uEE39\uEE3B\uEE3B\uEE3D\uEE3D\uEE44\uEE44\uEE49\uEE49\uEE4B\uEE4B\uEE4D\uEE4D\uEE4F\uEE51\uEE53\uEE54\uEE56\uEE56\uEE59\uEE59\uEE5B\uEE5B\uEE5D\uEE5D\uEE5F\uEE5F\uEE61\uEE61\uEE63\uEE64\uEE66\uEE66\uEE69\uEE6C\uEE6E\uEE74\uEE76\uEE79\uEE7B\uEE7E\uEE80\uEE80\uEE82\uEE8B\uEE8D\uEE9D\uEEA3\uEEA5\uEEA7\uEEAB\uEEAD\uEEBD\uA6D8\uA702\uB736\uB742\uB81F\uB822\uCEA3\uF802\uFA1F1\x07 \v\x07 \v\r%')\x071\x071\x071\x07,\b\x07# + \b\r\x07"  !!#" #$\b$\f%& &'( ()-\x07)*,\v+*,/-.-+.0/-01\x07)1 -`; + XPathLexer._serializedATN = Utils3.join([ + XPathLexer._serializedATNSegment0, + XPathLexer._serializedATNSegment1 + ], ""); + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathLexerErrorListener.js + var require_XPathLexerErrorListener = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathLexerErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathLexerErrorListener = void 0; + var Decorators_1 = require_Decorators(); + var XPathLexerErrorListener = class { + syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { } - if (this.debug) { - console.log("getPredsForAmbigAlts result " + Utils3.arrayToString(altToPred)); + }; + __decorate([ + Decorators_1.Override + ], XPathLexerErrorListener.prototype, "syntaxError", null); + exports.XPathLexerErrorListener = XPathLexerErrorListener; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathElement.js + var require_XPathElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathElement = void 0; + var Decorators_1 = require_Decorators(); + var XPathElement = class { + constructor(nodeName) { + this.nodeName = nodeName; + this.invert = false; } - return altToPred; - } - getPredicatePredictions(ambigAlts, altToPred) { - const pairs = []; - let containsPredicate = false; - for (let i = 1; i < altToPred.length; i++) { - const pred = altToPred[i]; - if (ambigAlts !== null && ambigAlts.contains(i)) { - pairs.push(new PredPrediction(pred, i)); - } - if (pred !== SemanticContext.NONE) { - containsPredicate = true; - } + toString() { + let inv = this.invert ? "!" : ""; + let className = Object.constructor.name; + return className + "[" + inv + this.nodeName + "]"; } - if (!containsPredicate) { - return null; + }; + __decorate([ + Decorators_1.Override + ], XPathElement.prototype, "toString", null); + exports.XPathElement = XPathElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathRuleAnywhereElement.js + var require_XPathRuleAnywhereElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathRuleAnywhereElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathRuleAnywhereElement = void 0; + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var XPathElement_1 = require_XPathElement(); + var XPathRuleAnywhereElement = class extends XPathElement_1.XPathElement { + constructor(ruleName, ruleIndex) { + super(ruleName); + this.ruleIndex = ruleIndex; } - return pairs; - } - getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs, outerContext) { - const cfgs = this.splitAccordingToSemanticValidity(configs, outerContext); - const semValidConfigs = cfgs[0]; - const semInvalidConfigs = cfgs[1]; - let alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs); - if (alt !== ATN2.INVALID_ALT_NUMBER) { - return alt; + evaluate(t) { + return Trees_1.Trees.findAllRuleNodes(t, this.ruleIndex); } - if (semInvalidConfigs.items.length > 0) { - alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs); - if (alt !== ATN2.INVALID_ALT_NUMBER) { - return alt; - } + }; + __decorate([ + Decorators_1.Override + ], XPathRuleAnywhereElement.prototype, "evaluate", null); + exports.XPathRuleAnywhereElement = XPathRuleAnywhereElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathRuleElement.js + var require_XPathRuleElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathRuleElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathRuleElement = void 0; + var ParserRuleContext_1 = require_ParserRuleContext(); + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var XPathElement_1 = require_XPathElement(); + var XPathRuleElement = class extends XPathElement_1.XPathElement { + constructor(ruleName, ruleIndex) { + super(ruleName); + this.ruleIndex = ruleIndex; } - return ATN2.INVALID_ALT_NUMBER; - } - getAltThatFinishedDecisionEntryRule(configs) { - const alts = []; - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (c.reachesIntoOuterContext > 0 || c.state instanceof RuleStopState && c.context.hasEmptyPath()) { - if (alts.indexOf(c.alt) < 0) { - alts.push(c.alt); + evaluate(t) { + let nodes = []; + for (let c of Trees_1.Trees.getChildren(t)) { + if (c instanceof ParserRuleContext_1.ParserRuleContext) { + if (c.ruleIndex === this.ruleIndex && !this.invert || c.ruleIndex !== this.ruleIndex && this.invert) { + nodes.push(c); + } } } + return nodes; } - if (alts.length === 0) { - return ATN2.INVALID_ALT_NUMBER; - } else { - return Math.min.apply(null, alts); - } - } - splitAccordingToSemanticValidity(configs, outerContext) { - const succeeded = new ATNConfigSet(configs.fullCtx); - const failed = new ATNConfigSet(configs.fullCtx); - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (c.semanticContext !== SemanticContext.NONE) { - const predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext); - if (predicateEvaluationResult) { - succeeded.add(c); - } else { - failed.add(c); + }; + __decorate([ + Decorators_1.Override + ], XPathRuleElement.prototype, "evaluate", null); + exports.XPathRuleElement = XPathRuleElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathTokenAnywhereElement.js + var require_XPathTokenAnywhereElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathTokenAnywhereElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathTokenAnywhereElement = void 0; + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var XPathElement_1 = require_XPathElement(); + var XPathTokenAnywhereElement = class extends XPathElement_1.XPathElement { + constructor(tokenName, tokenType) { + super(tokenName); + this.tokenType = tokenType; + } + evaluate(t) { + return Trees_1.Trees.findAllTokenNodes(t, this.tokenType); + } + }; + __decorate([ + Decorators_1.Override + ], XPathTokenAnywhereElement.prototype, "evaluate", null); + exports.XPathTokenAnywhereElement = XPathTokenAnywhereElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathTokenElement.js + var require_XPathTokenElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathTokenElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathTokenElement = void 0; + var Decorators_1 = require_Decorators(); + var TerminalNode_1 = require_TerminalNode(); + var Trees_1 = require_Trees(); + var XPathElement_1 = require_XPathElement(); + var XPathTokenElement = class extends XPathElement_1.XPathElement { + constructor(tokenName, tokenType) { + super(tokenName); + this.tokenType = tokenType; + } + evaluate(t) { + let nodes = []; + for (let c of Trees_1.Trees.getChildren(t)) { + if (c instanceof TerminalNode_1.TerminalNode) { + if (c.symbol.type === this.tokenType && !this.invert || c.symbol.type !== this.tokenType && this.invert) { + nodes.push(c); + } } - } else { - succeeded.add(c); } + return nodes; } - return [succeeded, failed]; - } - evalSemanticContext(predPredictions, outerContext, complete) { - const predictions = new BitSet(); - for (let i = 0; i < predPredictions.length; i++) { - const pair = predPredictions[i]; - if (pair.pred === SemanticContext.NONE) { - predictions.add(pair.alt); - if (!complete) { - break; - } - continue; + }; + __decorate([ + Decorators_1.Override + ], XPathTokenElement.prototype, "evaluate", null); + exports.XPathTokenElement = XPathTokenElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathWildcardAnywhereElement.js + var require_XPathWildcardAnywhereElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathWildcardAnywhereElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathWildcardAnywhereElement = void 0; + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var XPath_1 = require_XPath(); + var XPathElement_1 = require_XPathElement(); + var XPathWildcardAnywhereElement = class extends XPathElement_1.XPathElement { + constructor() { + super(XPath_1.XPath.WILDCARD); + } + evaluate(t) { + if (this.invert) { + return []; } - const predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext); - if (this.debug || this.dfa_debug) { - console.log("eval pred " + pair + "=" + predicateEvaluationResult); + return Trees_1.Trees.getDescendants(t); + } + }; + __decorate([ + Decorators_1.Override + ], XPathWildcardAnywhereElement.prototype, "evaluate", null); + exports.XPathWildcardAnywhereElement = XPathWildcardAnywhereElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPathWildcardElement.js + var require_XPathWildcardElement = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPathWildcardElement.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPathWildcardElement = void 0; + var Decorators_1 = require_Decorators(); + var Trees_1 = require_Trees(); + var XPath_1 = require_XPath(); + var XPathElement_1 = require_XPathElement(); + var XPathWildcardElement = class extends XPathElement_1.XPathElement { + constructor() { + super(XPath_1.XPath.WILDCARD); + } + evaluate(t) { + let kids = []; + if (this.invert) { + return kids; } - if (predicateEvaluationResult) { - if (this.debug || this.dfa_debug) { - console.log("PREDICT " + pair.alt); - } - predictions.add(pair.alt); - if (!complete) { - break; - } + for (let c of Trees_1.Trees.getChildren(t)) { + kids.push(c); } + return kids; } - return predictions; - } - closure(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) { - const initialDepth = 0; - this.closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, initialDepth, treatEofAsEpsilon); - } - closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) { - if (this.debug || this.debug_closure) { - console.log("closure(" + config.toString(this.parser, true) + ")"); - if (config.reachesIntoOuterContext > 50) { - throw "problem"; + }; + __decorate([ + Decorators_1.Override + ], XPathWildcardElement.prototype, "evaluate", null); + exports.XPathWildcardElement = XPathWildcardElement; + } + }); + + // node_modules/antlr4ts/tree/xpath/XPath.js + var require_XPath = __commonJS({ + "node_modules/antlr4ts/tree/xpath/XPath.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.XPath = void 0; + var CharStreams_1 = require_CharStreams(); + var CommonTokenStream_1 = require_CommonTokenStream(); + var LexerNoViableAltException_1 = require_LexerNoViableAltException(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var Token_1 = require_Token(); + var XPathLexer_1 = require_XPathLexer(); + var XPathLexerErrorListener_1 = require_XPathLexerErrorListener(); + var XPathRuleAnywhereElement_1 = require_XPathRuleAnywhereElement(); + var XPathRuleElement_1 = require_XPathRuleElement(); + var XPathTokenAnywhereElement_1 = require_XPathTokenAnywhereElement(); + var XPathTokenElement_1 = require_XPathTokenElement(); + var XPathWildcardAnywhereElement_1 = require_XPathWildcardAnywhereElement(); + var XPathWildcardElement_1 = require_XPathWildcardElement(); + var XPath = class { + constructor(parser, path) { + this.parser = parser; + this.path = path; + this.elements = this.split(path); + } + split(path) { + let lexer = new XPathLexer_1.XPathLexer(CharStreams_1.CharStreams.fromString(path)); + lexer.recover = (e) => { + throw e; + }; + lexer.removeErrorListeners(); + lexer.addErrorListener(new XPathLexerErrorListener_1.XPathLexerErrorListener()); + let tokenStream = new CommonTokenStream_1.CommonTokenStream(lexer); + try { + tokenStream.fill(); + } catch (e) { + if (e instanceof LexerNoViableAltException_1.LexerNoViableAltException) { + let pos = lexer.charPositionInLine; + let msg = "Invalid tokens or characters at index " + pos + " in path '" + path + "' -- " + e.message; + throw new RangeError(msg); + } + throw e; } - } - if (config.state instanceof RuleStopState) { - if (!config.context.isEmpty()) { - for (let i = 0; i < config.context.length; i++) { - if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) { - if (fullCtx) { - configs.add(new ATNConfig({state: config.state, context: PredictionContext.EMPTY}, config), this.mergeCache); - continue; - } else { - if (this.debug) { - console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); + let tokens2 = tokenStream.getTokens(); + let elements = []; + let n = tokens2.length; + let i = 0; + loop: + while (i < n) { + let el = tokens2[i]; + let next; + switch (el.type) { + case XPathLexer_1.XPathLexer.ROOT: + case XPathLexer_1.XPathLexer.ANYWHERE: + let anywhere = el.type === XPathLexer_1.XPathLexer.ANYWHERE; + i++; + next = tokens2[i]; + let invert = next.type === XPathLexer_1.XPathLexer.BANG; + if (invert) { + i++; + next = tokens2[i]; } - this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon); - } - continue; + let pathElement = this.getXPathElement(next, anywhere); + pathElement.invert = invert; + elements.push(pathElement); + i++; + break; + case XPathLexer_1.XPathLexer.TOKEN_REF: + case XPathLexer_1.XPathLexer.RULE_REF: + case XPathLexer_1.XPathLexer.WILDCARD: + elements.push(this.getXPathElement(el, false)); + i++; + break; + case Token_1.Token.EOF: + break loop; + default: + throw new Error("Unknowth path element " + el); } - const returnState = this.atn.states[config.context.getReturnState(i)]; - const newContext = config.context.getParent(i); - const parms = {state: returnState, alt: config.alt, context: newContext, semanticContext: config.semanticContext}; - const c = new ATNConfig(parms, null); - c.reachesIntoOuterContext = config.reachesIntoOuterContext; - this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon); - } - return; - } else if (fullCtx) { - configs.add(config, this.mergeCache); - return; - } else { - if (this.debug) { - console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); } - } + return elements; } - this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon); - } - closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) { - const p = config.state; - if (!p.epsilonOnlyTransitions) { - configs.add(config, this.mergeCache); - } - for (let i = 0; i < p.transitions.length; i++) { - if (i === 0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config)) - continue; - const t = p.transitions[i]; - const continueCollecting = collectPredicates && !(t instanceof ActionTransition); - const c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon); - if (c !== null) { - let newDepth = depth; - if (config.state instanceof RuleStopState) { - if (this._dfa !== null && this._dfa.precedenceDfa) { - if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) { - c.precedenceFilterSuppressed = true; - } - } - c.reachesIntoOuterContext += 1; - if (closureBusy.add(c) !== c) { - continue; - } - configs.dipsIntoOuterContext = true; - newDepth -= 1; - if (this.debug) { - console.log("dips into outer ctx: " + c); - } - } else { - if (!t.isEpsilon && closureBusy.add(c) !== c) { - continue; + getXPathElement(wordToken, anywhere) { + if (wordToken.type === Token_1.Token.EOF) { + throw new Error("Missing path element at end of path"); + } + let word = wordToken.text; + if (word == null) { + throw new Error("Expected wordToken to have text content."); + } + let ttype = this.parser.getTokenType(word); + let ruleIndex = this.parser.getRuleIndex(word); + switch (wordToken.type) { + case XPathLexer_1.XPathLexer.WILDCARD: + return anywhere ? new XPathWildcardAnywhereElement_1.XPathWildcardAnywhereElement() : new XPathWildcardElement_1.XPathWildcardElement(); + case XPathLexer_1.XPathLexer.TOKEN_REF: + case XPathLexer_1.XPathLexer.STRING: + if (ttype === Token_1.Token.INVALID_TYPE) { + throw new Error(word + " at index " + wordToken.startIndex + " isn't a valid token name"); } - if (t instanceof RuleTransition) { - if (newDepth >= 0) { - newDepth += 1; - } + return anywhere ? new XPathTokenAnywhereElement_1.XPathTokenAnywhereElement(word, ttype) : new XPathTokenElement_1.XPathTokenElement(word, ttype); + default: + if (ruleIndex === -1) { + throw new Error(word + " at index " + wordToken.startIndex + " isn't a valid rule name"); } - } - this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon); - } - } - } - canDropLoopEntryEdgeInLeftRecursiveRule(config) { - const p = config.state; - if (p.stateType !== ATNState.STAR_LOOP_ENTRY) - return false; - if (p.stateType !== ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision || config.context.isEmpty() || config.context.hasEmptyPath()) - return false; - const numCtxs = config.context.length; - for (let i = 0; i < numCtxs; i++) { - const returnState = this.atn.states[config.context.getReturnState(i)]; - if (returnState.ruleIndex !== p.ruleIndex) - return false; - } - const decisionStartState = p.transitions[0].target; - const blockEndStateNum = decisionStartState.endState.stateNumber; - const blockEndState = this.atn.states[blockEndStateNum]; - for (let i = 0; i < numCtxs; i++) { - const returnStateNumber = config.context.getReturnState(i); - const returnState = this.atn.states[returnStateNumber]; - if (returnState.transitions.length !== 1 || !returnState.transitions[0].isEpsilon) - return false; - const returnStateTarget = returnState.transitions[0].target; - if (returnState.stateType === ATNState.BLOCK_END && returnStateTarget === p) - continue; - if (returnState === blockEndState) - continue; - if (returnStateTarget === blockEndState) - continue; - if (returnStateTarget.stateType === ATNState.BLOCK_END && returnStateTarget.transitions.length === 1 && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target === p) - continue; - return false; - } - return true; - } - getRuleName(index) { - if (this.parser !== null && index >= 0) { - return this.parser.ruleNames[index]; - } else { - return ""; - } - } - getEpsilonTarget(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) { - switch (t.serializationType) { - case Transition.RULE: - return this.ruleTransition(config, t); - case Transition.PRECEDENCE: - return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx); - case Transition.PREDICATE: - return this.predTransition(config, t, collectPredicates, inContext, fullCtx); - case Transition.ACTION: - return this.actionTransition(config, t); - case Transition.EPSILON: - return new ATNConfig({state: t.target}, config); - case Transition.ATOM: - case Transition.RANGE: - case Transition.SET: - if (treatEofAsEpsilon) { - if (t.matches(Token2.EOF, 0, 1)) { - return new ATNConfig({state: t.target}, config); + return anywhere ? new XPathRuleAnywhereElement_1.XPathRuleAnywhereElement(word, ruleIndex) : new XPathRuleElement_1.XPathRuleElement(word, ruleIndex); + } + } + static findAll(tree, xpath, parser) { + let p = new XPath(parser, xpath); + return p.evaluate(tree); + } + evaluate(t) { + let dummyRoot = new ParserRuleContext_1.ParserRuleContext(); + dummyRoot.addChild(t); + let work = new Set([dummyRoot]); + let i = 0; + while (i < this.elements.length) { + let next = new Set(); + for (let node of work) { + if (node.childCount > 0) { + let matching = this.elements[i].evaluate(node); + matching.forEach(next.add, next); } } - return null; - default: - return null; - } - } - actionTransition(config, t) { - if (this.debug) { - const index = t.actionIndex === -1 ? 65535 : t.actionIndex; - console.log("ACTION edge " + t.ruleIndex + ":" + index); - } - return new ATNConfig({state: t.target}, config); - } - precedenceTransition(config, pt, collectPredicates, inContext, fullCtx) { - if (this.debug) { - console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.precedence + ">=_p, ctx dependent=true"); - if (this.parser !== null) { - console.log("context surrounding pred is " + Utils3.arrayToString(this.parser.getRuleInvocationStack())); + i++; + work = next; } + return work; } - let c = null; - if (collectPredicates && inContext) { - if (fullCtx) { - const currentPosition = this._input.index; - this._input.seek(this._startIndex); - const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext); - this._input.seek(currentPosition); - if (predSucceeds) { - c = new ATNConfig({state: pt.target}, config); - } - } else { - const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate()); - c = new ATNConfig({state: pt.target, semanticContext: newSemCtx}, config); - } - } else { - c = new ATNConfig({state: pt.target}, config); + }; + exports.XPath = XPath; + XPath.WILDCARD = "*"; + XPath.NOT = "!"; + } + }); + + // node_modules/antlr4ts/tree/pattern/ParseTreePattern.js + var require_ParseTreePattern = __commonJS({ + "node_modules/antlr4ts/tree/pattern/ParseTreePattern.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParseTreePattern = void 0; + var Decorators_1 = require_Decorators(); + var XPath_1 = require_XPath(); + var ParseTreePattern = class ParseTreePattern { + constructor(matcher, pattern, patternRuleIndex, patternTree) { + this._matcher = matcher; + this._patternRuleIndex = patternRuleIndex; + this._pattern = pattern; + this._patternTree = patternTree; } - if (this.debug) { - console.log("config from pred transition=" + c); + match(tree) { + return this._matcher.match(tree, this); } - return c; - } - predTransition(config, pt, collectPredicates, inContext, fullCtx) { - if (this.debug) { - console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.ruleIndex + ":" + pt.predIndex + ", ctx dependent=" + pt.isCtxDependent); - if (this.parser !== null) { - console.log("context surrounding pred is " + Utils3.arrayToString(this.parser.getRuleInvocationStack())); - } + matches(tree) { + return this._matcher.match(tree, this).succeeded; } - let c = null; - if (collectPredicates && (pt.isCtxDependent && inContext || !pt.isCtxDependent)) { - if (fullCtx) { - const currentPosition = this._input.index; - this._input.seek(this._startIndex); - const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext); - this._input.seek(currentPosition); - if (predSucceeds) { - c = new ATNConfig({state: pt.target}, config); + findAll(tree, xpath) { + let subtrees = XPath_1.XPath.findAll(tree, xpath, this._matcher.parser); + let matches = []; + for (let t of subtrees) { + let match = this.match(t); + if (match.succeeded) { + matches.push(match); } - } else { - const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate()); - c = new ATNConfig({state: pt.target, semanticContext: newSemCtx}, config); } - } else { - c = new ATNConfig({state: pt.target}, config); + return matches; } - if (this.debug) { - console.log("config from pred transition=" + c); + get matcher() { + return this._matcher; } - return c; - } - ruleTransition(config, t) { - if (this.debug) { - console.log("CALL rule " + this.getRuleName(t.target.ruleIndex) + ", ctx=" + config.context); + get pattern() { + return this._pattern; } - const returnState = t.followState; - const newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber); - return new ATNConfig({state: t.target, context: newContext}, config); - } - getConflictingAlts(configs) { - const altsets = PredictionMode.getConflictingAltSubsets(configs); - return PredictionMode.getAlts(altsets); - } - getConflictingAltsOrUniqueAlt(configs) { - let conflictingAlts = null; - if (configs.uniqueAlt !== ATN2.INVALID_ALT_NUMBER) { - conflictingAlts = new BitSet(); - conflictingAlts.add(configs.uniqueAlt); - } else { - conflictingAlts = configs.conflictingAlts; + get patternRuleIndex() { + return this._patternRuleIndex; } - return conflictingAlts; - } - getTokenName(t) { - if (t === Token2.EOF) { - return "EOF"; + get patternTree() { + return this._patternTree; } - if (this.parser !== null && this.parser.literalNames !== null) { - if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) { - console.log("" + t + " ttype out of range: " + this.parser.literalNames); - console.log("" + this.parser.getInputStream().getTokens()); - } else { - const name = this.parser.literalNames[t] || this.parser.symbolicNames[t]; - return name + "<" + t + ">"; - } - } - return "" + t; - } - getLookaheadName(input) { - return this.getTokenName(input.LA(1)); - } - dumpDeadEndConfigs(nvae) { - console.log("dead end configs: "); - const decs = nvae.getDeadEndConfigs(); - for (let i = 0; i < decs.length; i++) { - const c = decs[i]; - let trans = "no edges"; - if (c.state.transitions.length > 0) { - const t = c.state.transitions[0]; - if (t instanceof AtomTransition) { - trans = "Atom " + this.getTokenName(t.label); - } else if (t instanceof SetTransition) { - const neg = t instanceof NotSetTransition; - trans = (neg ? "~" : "") + "Set " + t.set; - } - } - console.error(c.toString(this.parser, true) + ":" + trans); - } - } - noViableAlt(input, outerContext, configs, startIndex) { - return new NoViableAltException2(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext); - } - getUniqueAlt(configs) { - let alt = ATN2.INVALID_ALT_NUMBER; - for (let i = 0; i < configs.items.length; i++) { - const c = configs.items[i]; - if (alt === ATN2.INVALID_ALT_NUMBER) { - alt = c.alt; - } else if (c.alt !== alt) { - return ATN2.INVALID_ALT_NUMBER; + }; + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "_pattern", void 0); + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "_patternTree", void 0); + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "_matcher", void 0); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], ParseTreePattern.prototype, "match", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], ParseTreePattern.prototype, "matches", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], ParseTreePattern.prototype, "findAll", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "matcher", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "pattern", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreePattern.prototype, "patternTree", null); + ParseTreePattern = __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], ParseTreePattern); + exports.ParseTreePattern = ParseTreePattern; + } + }); + + // node_modules/antlr4ts/tree/pattern/RuleTagToken.js + var require_RuleTagToken = __commonJS({ + "node_modules/antlr4ts/tree/pattern/RuleTagToken.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleTagToken = void 0; + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var RuleTagToken = class RuleTagToken { + constructor(ruleName, bypassTokenType, label) { + if (ruleName == null || ruleName.length === 0) { + throw new Error("ruleName cannot be null or empty."); } + this._ruleName = ruleName; + this.bypassTokenType = bypassTokenType; + this._label = label; } - return alt; - } - addDFAEdge(dfa, from_, t, to) { - if (this.debug) { - console.log("EDGE " + from_ + " -> " + to + " upon " + this.getTokenName(t)); - } - if (to === null) { - return null; - } - to = this.addDFAState(dfa, to); - if (from_ === null || t < -1 || t > this.atn.maxTokenType) { - return to; + get ruleName() { + return this._ruleName; } - if (from_.edges === null) { - from_.edges = []; + get label() { + return this._label; } - from_.edges[t + 1] = to; - if (this.debug) { - const literalNames = this.parser === null ? null : this.parser.literalNames; - const symbolicNames = this.parser === null ? null : this.parser.symbolicNames; - console.log("DFA=\n" + dfa.toString(literalNames, symbolicNames)); + get channel() { + return Token_1.Token.DEFAULT_CHANNEL; } - return to; - } - addDFAState(dfa, D) { - if (D === ATNSimulator.ERROR) { - return D; + get text() { + if (this._label != null) { + return "<" + this._label + ":" + this._ruleName + ">"; + } + return "<" + this._ruleName + ">"; } - const existing = dfa.states.get(D); - if (existing !== null) { - return existing; + get type() { + return this.bypassTokenType; } - D.stateNumber = dfa.states.length; - if (!D.configs.readOnly) { - D.configs.optimizeConfigs(this); - D.configs.setReadonly(true); + get line() { + return 0; } - dfa.states.add(D); - if (this.debug) { - console.log("adding new DFA state: " + D); + get charPositionInLine() { + return -1; } - return D; - } - reportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex) { - if (this.debug || this.retry_debug) { - const interval = new Interval(startIndex, stopIndex + 1); - console.log("reportAttemptingFullContext decision=" + dfa.decision + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + get tokenIndex() { + return -1; } - if (this.parser !== null) { - this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs); + get startIndex() { + return -1; } - } - reportContextSensitivity(dfa, prediction, configs, startIndex, stopIndex) { - if (this.debug || this.retry_debug) { - const interval = new Interval(startIndex, stopIndex + 1); - console.log("reportContextSensitivity decision=" + dfa.decision + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + get stopIndex() { + return -1; } - if (this.parser !== null) { - this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs); + get tokenSource() { + return void 0; } - } - reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { - if (this.debug || this.retry_debug) { - const interval = new Interval(startIndex, stopIndex + 1); - console.log("reportAmbiguity " + ambigAlts + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + get inputStream() { + return void 0; } - if (this.parser !== null) { - this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + toString() { + return this._ruleName + ":" + this.bypassTokenType; } - } - }; - module.exports = ParserATNSimulator2; + }; + __decorate([ + Decorators_1.NotNull + ], RuleTagToken.prototype, "ruleName", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "channel", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "type", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "line", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "charPositionInLine", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "tokenIndex", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "startIndex", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "stopIndex", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "tokenSource", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "inputStream", null); + __decorate([ + Decorators_1.Override + ], RuleTagToken.prototype, "toString", null); + RuleTagToken = __decorate([ + __param(0, Decorators_1.NotNull) + ], RuleTagToken); + exports.RuleTagToken = RuleTagToken; + } }); - // node_modules/antlr4/src/antlr4/atn/index.js - var require_atn = __commonJS((exports) => { - init_process_shim(); - exports.ATN = require_ATN2(); - exports.ATNDeserializer = require_ATNDeserializer2(); - exports.LexerATNSimulator = require_LexerATNSimulator2(); - exports.ParserATNSimulator = require_ParserATNSimulator2(); - exports.PredictionMode = require_PredictionMode2(); + // node_modules/antlr4ts/tree/pattern/Chunk.js + var require_Chunk = __commonJS({ + "node_modules/antlr4ts/tree/pattern/Chunk.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Chunk = void 0; + var Chunk = class { + }; + exports.Chunk = Chunk; + } }); - // node_modules/antlr4/src/antlr4/polyfills/codepointat.js - var require_codepointat = __commonJS(() => { - init_process_shim(); - if (!String.prototype.codePointAt) { - (function() { - "use strict"; - var defineProperty = function() { - let result; - try { - const object = {}; - const $defineProperty = Object.defineProperty; - result = $defineProperty(object, object, object) && $defineProperty; - } catch (error) { - } - return result; - }(); - const codePointAt = function(position) { - if (this == null) { - throw TypeError(); - } - const string = String(this); - const size = string.length; - let index = position ? Number(position) : 0; - if (index !== index) { - index = 0; - } - if (index < 0 || index >= size) { - return void 0; + // node_modules/antlr4ts/tree/pattern/TagChunk.js + var require_TagChunk = __commonJS({ + "node_modules/antlr4ts/tree/pattern/TagChunk.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.TagChunk = void 0; + var Chunk_1 = require_Chunk(); + var Decorators_1 = require_Decorators(); + var TagChunk = class extends Chunk_1.Chunk { + constructor(tag, label) { + super(); + if (tag == null || tag.length === 0) { + throw new Error("tag cannot be null or empty"); } - const first = string.charCodeAt(index); - let second; - if (first >= 55296 && first <= 56319 && size > index + 1) { - second = string.charCodeAt(index + 1); - if (second >= 56320 && second <= 57343) { - return (first - 55296) * 1024 + second - 56320 + 65536; - } + this._tag = tag; + this._label = label; + } + get tag() { + return this._tag; + } + get label() { + return this._label; + } + toString() { + if (this._label != null) { + return this._label + ":" + this._tag; } - return first; - }; - if (defineProperty) { - defineProperty(String.prototype, "codePointAt", { - value: codePointAt, - configurable: true, - writable: true - }); - } else { - String.prototype.codePointAt = codePointAt; + return this._tag; } - })(); + }; + __decorate([ + Decorators_1.NotNull + ], TagChunk.prototype, "tag", null); + __decorate([ + Decorators_1.Override + ], TagChunk.prototype, "toString", null); + exports.TagChunk = TagChunk; } }); - // node_modules/antlr4/src/antlr4/dfa/DFASerializer.js - var require_DFASerializer2 = __commonJS((exports, module) => { - init_process_shim(); - var DFASerializer = class { - constructor(dfa, literalNames, symbolicNames) { - this.dfa = dfa; - this.literalNames = literalNames || []; - this.symbolicNames = symbolicNames || []; - } - toString() { - if (this.dfa.s0 === null) { - return null; + // node_modules/antlr4ts/tree/pattern/TextChunk.js + var require_TextChunk = __commonJS({ + "node_modules/antlr4ts/tree/pattern/TextChunk.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.TextChunk = void 0; + var Chunk_1 = require_Chunk(); + var Decorators_1 = require_Decorators(); + var TextChunk = class TextChunk extends Chunk_1.Chunk { + constructor(text) { + super(); + if (text == null) { + throw new Error("text cannot be null"); + } + this._text = text; } - let buf = ""; - const states = this.dfa.sortedStates(); - for (let i = 0; i < states.length; i++) { - const s = states[i]; - if (s.edges !== null) { - const n = s.edges.length; - for (let j = 0; j < n; j++) { - const t = s.edges[j] || null; - if (t !== null && t.stateNumber !== 2147483647) { - buf = buf.concat(this.getStateString(s)); - buf = buf.concat("-"); - buf = buf.concat(this.getEdgeLabel(j)); - buf = buf.concat("->"); - buf = buf.concat(this.getStateString(t)); - buf = buf.concat("\n"); - } - } - } - } - return buf.length === 0 ? null : buf; - } - getEdgeLabel(i) { - if (i === 0) { - return "EOF"; - } else if (this.literalNames !== null || this.symbolicNames !== null) { - return this.literalNames[i - 1] || this.symbolicNames[i - 1]; - } else { - return String.fromCharCode(i - 1); + get text() { + return this._text; } - } - getStateString(s) { - const baseStateStr = (s.isAcceptState ? ":" : "") + "s" + s.stateNumber + (s.requiresFullContext ? "^" : ""); - if (s.isAcceptState) { - if (s.predicates !== null) { - return baseStateStr + "=>" + s.predicates.toString(); - } else { - return baseStateStr + "=>" + s.prediction.toString(); - } - } else { - return baseStateStr; + toString() { + return "'" + this._text + "'"; } - } - }; - var LexerDFASerializer = class extends DFASerializer { - constructor(dfa) { - super(dfa, null); - } - getEdgeLabel(i) { - return "'" + String.fromCharCode(i) + "'"; - } - }; - module.exports = {DFASerializer, LexerDFASerializer}; + }; + __decorate([ + Decorators_1.NotNull + ], TextChunk.prototype, "_text", void 0); + __decorate([ + Decorators_1.NotNull + ], TextChunk.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], TextChunk.prototype, "toString", null); + TextChunk = __decorate([ + __param(0, Decorators_1.NotNull) + ], TextChunk); + exports.TextChunk = TextChunk; + } }); - // node_modules/antlr4/src/antlr4/dfa/DFA.js - var require_DFA2 = __commonJS((exports, module) => { - init_process_shim(); - var {Set: Set2} = require_Utils2(); - var {DFAState} = require_DFAState2(); - var {StarLoopEntryState} = require_ATNState2(); - var {ATNConfigSet} = require_ATNConfigSet2(); - var {DFASerializer} = require_DFASerializer2(); - var {LexerDFASerializer} = require_DFASerializer2(); - var DFA = class { - constructor(atnStartState, decision) { - if (decision === void 0) { - decision = 0; - } - this.atnStartState = atnStartState; - this.decision = decision; - this._states = new Set2(); - this.s0 = null; - this.precedenceDfa = false; - if (atnStartState instanceof StarLoopEntryState) { - if (atnStartState.isPrecedenceDecision) { - this.precedenceDfa = true; - const precedenceState = new DFAState(null, new ATNConfigSet()); - precedenceState.edges = []; - precedenceState.isAcceptState = false; - precedenceState.requiresFullContext = false; - this.s0 = precedenceState; - } - } - } - getPrecedenceStartState(precedence) { - if (!this.precedenceDfa) { - throw "Only precedence DFAs may contain a precedence start state."; - } - if (precedence < 0 || precedence >= this.s0.edges.length) { - return null; + // node_modules/antlr4ts/tree/pattern/TokenTagToken.js + var require_TokenTagToken = __commonJS({ + "node_modules/antlr4ts/tree/pattern/TokenTagToken.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.TokenTagToken = void 0; + var CommonToken_1 = require_CommonToken(); + var Decorators_1 = require_Decorators(); + var TokenTagToken = class TokenTagToken extends CommonToken_1.CommonToken { + constructor(tokenName, type, label) { + super(type); + this._tokenName = tokenName; + this._label = label; } - return this.s0.edges[precedence] || null; - } - setPrecedenceStartState(precedence, startState) { - if (!this.precedenceDfa) { - throw "Only precedence DFAs may contain a precedence start state."; + get tokenName() { + return this._tokenName; } - if (precedence < 0) { - return; + get label() { + return this._label; } - this.s0.edges[precedence] = startState; - } - setPrecedenceDfa(precedenceDfa) { - if (this.precedenceDfa !== precedenceDfa) { - this._states = new Set2(); - if (precedenceDfa) { - const precedenceState = new DFAState(null, new ATNConfigSet()); - precedenceState.edges = []; - precedenceState.isAcceptState = false; - precedenceState.requiresFullContext = false; - this.s0 = precedenceState; - } else { - this.s0 = null; + get text() { + if (this._label != null) { + return "<" + this._label + ":" + this._tokenName + ">"; } - this.precedenceDfa = precedenceDfa; - } - } - sortedStates() { - const list = this._states.values(); - return list.sort(function(a, b) { - return a.stateNumber - b.stateNumber; - }); - } - toString(literalNames, symbolicNames) { - literalNames = literalNames || null; - symbolicNames = symbolicNames || null; - if (this.s0 === null) { - return ""; + return "<" + this._tokenName + ">"; } - const serializer = new DFASerializer(this, literalNames, symbolicNames); - return serializer.toString(); - } - toLexerString() { - if (this.s0 === null) { - return ""; + toString() { + return this._tokenName + ":" + this.type; } - const serializer = new LexerDFASerializer(this); - return serializer.toString(); - } - get states() { - return this._states; - } - }; - module.exports = DFA; - }); - - // node_modules/antlr4/src/antlr4/dfa/index.js - var require_dfa = __commonJS((exports) => { - init_process_shim(); - exports.DFA = require_DFA2(); - exports.DFASerializer = require_DFASerializer2().DFASerializer; - exports.LexerDFASerializer = require_DFASerializer2().LexerDFASerializer; - exports.PredPrediction = require_DFAState2().PredPrediction; + }; + __decorate([ + Decorators_1.NotNull + ], TokenTagToken.prototype, "_tokenName", void 0); + __decorate([ + Decorators_1.NotNull + ], TokenTagToken.prototype, "tokenName", null); + __decorate([ + Decorators_1.Override + ], TokenTagToken.prototype, "text", null); + __decorate([ + Decorators_1.Override + ], TokenTagToken.prototype, "toString", null); + TokenTagToken = __decorate([ + __param(0, Decorators_1.NotNull) + ], TokenTagToken); + exports.TokenTagToken = TokenTagToken; + } }); - // node_modules/antlr4/src/antlr4/polyfills/fromcodepoint.js - var require_fromcodepoint = __commonJS(() => { - init_process_shim(); - if (!String.fromCodePoint) { - (function() { - const defineProperty = function() { - let result; - try { - const object = {}; - const $defineProperty = Object.defineProperty; - result = $defineProperty(object, object, object) && $defineProperty; - } catch (error) { - } - return result; - }(); - const stringFromCharCode = String.fromCharCode; - const floor = Math.floor; - const fromCodePoint = function(_) { - const MAX_SIZE = 16384; - const codeUnits = []; - let highSurrogate; - let lowSurrogate; - let index = -1; - const length = arguments.length; - if (!length) { - return ""; + // node_modules/antlr4ts/tree/pattern/ParseTreePatternMatcher.js + var require_ParseTreePatternMatcher = __commonJS({ + "node_modules/antlr4ts/tree/pattern/ParseTreePatternMatcher.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ParseTreePatternMatcher = void 0; + var BailErrorStrategy_1 = require_BailErrorStrategy(); + var CharStreams_1 = require_CharStreams(); + var CommonTokenStream_1 = require_CommonTokenStream(); + var ListTokenSource_1 = require_ListTokenSource(); + var MultiMap_1 = require_MultiMap(); + var Decorators_1 = require_Decorators(); + var ParseCancellationException_1 = require_ParseCancellationException(); + var ParserInterpreter_1 = require_ParserInterpreter(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var ParseTreeMatch_1 = require_ParseTreeMatch(); + var ParseTreePattern_1 = require_ParseTreePattern(); + var RecognitionException_1 = require_RecognitionException(); + var RuleNode_1 = require_RuleNode(); + var RuleTagToken_1 = require_RuleTagToken(); + var TagChunk_1 = require_TagChunk(); + var TerminalNode_1 = require_TerminalNode(); + var TextChunk_1 = require_TextChunk(); + var Token_1 = require_Token(); + var TokenTagToken_1 = require_TokenTagToken(); + var ParseTreePatternMatcher = class { + constructor(lexer, parser) { + this.start = "<"; + this.stop = ">"; + this.escape = "\\"; + this.escapeRE = /\\/g; + this._lexer = lexer; + this._parser = parser; + } + setDelimiters(start, stop, escapeLeft) { + if (!start) { + throw new Error("start cannot be null or empty"); + } + if (!stop) { + throw new Error("stop cannot be null or empty"); + } + this.start = start; + this.stop = stop; + this.escape = escapeLeft; + this.escapeRE = new RegExp(escapeLeft.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"); + } + matches(tree, pattern, patternRuleIndex = 0) { + if (typeof pattern === "string") { + let p = this.compile(pattern, patternRuleIndex); + return this.matches(tree, p); + } else { + let labels = new MultiMap_1.MultiMap(); + let mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels); + return !mismatchedNode; } - let result = ""; - while (++index < length) { - let codePoint = Number(arguments[index]); - if (!isFinite(codePoint) || codePoint < 0 || codePoint > 1114111 || floor(codePoint) !== codePoint) { - throw RangeError("Invalid code point: " + codePoint); - } - if (codePoint <= 65535) { - codeUnits.push(codePoint); + } + match(tree, pattern, patternRuleIndex = 0) { + if (typeof pattern === "string") { + let p = this.compile(pattern, patternRuleIndex); + return this.match(tree, p); + } else { + let labels = new MultiMap_1.MultiMap(); + let mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels); + return new ParseTreeMatch_1.ParseTreeMatch(tree, pattern, labels, mismatchedNode); + } + } + compile(pattern, patternRuleIndex) { + let tokenList = this.tokenize(pattern); + let tokenSrc = new ListTokenSource_1.ListTokenSource(tokenList); + let tokens2 = new CommonTokenStream_1.CommonTokenStream(tokenSrc); + const parser = this._parser; + let parserInterp = new ParserInterpreter_1.ParserInterpreter(parser.grammarFileName, parser.vocabulary, parser.ruleNames, parser.getATNWithBypassAlts(), tokens2); + let tree; + try { + parserInterp.errorHandler = new BailErrorStrategy_1.BailErrorStrategy(); + tree = parserInterp.parse(patternRuleIndex); + } catch (e) { + if (e instanceof ParseCancellationException_1.ParseCancellationException) { + throw e.getCause(); + } else if (e instanceof RecognitionException_1.RecognitionException) { + throw e; + } else if (e instanceof Error) { + throw new ParseTreePatternMatcher.CannotInvokeStartRule(e); } else { - codePoint -= 65536; - highSurrogate = (codePoint >> 10) + 55296; - lowSurrogate = codePoint % 1024 + 56320; - codeUnits.push(highSurrogate, lowSurrogate); - } - if (index + 1 === length || codeUnits.length > MAX_SIZE) { - result += stringFromCharCode.apply(null, codeUnits); - codeUnits.length = 0; + throw e; } } - return result; - }; - if (defineProperty) { - defineProperty(String, "fromCodePoint", { - value: fromCodePoint, - configurable: true, - writable: true - }); - } else { - String.fromCodePoint = fromCodePoint; - } - })(); - } - }); - - // node_modules/antlr4/src/antlr4/tree/index.js - var require_tree = __commonJS((exports, module) => { - init_process_shim(); - var Tree = require_Tree(); - var Trees = require_Trees2(); - module.exports = {...Tree, Trees}; - }); - - // node_modules/antlr4/src/antlr4/error/DiagnosticErrorListener.js - var require_DiagnosticErrorListener2 = __commonJS((exports, module) => { - init_process_shim(); - var {BitSet} = require_Utils2(); - var {ErrorListener: ErrorListener2} = require_ErrorListener(); - var {Interval} = require_IntervalSet2(); - var DiagnosticErrorListener = class extends ErrorListener2 { - constructor(exactOnly) { - super(); - exactOnly = exactOnly || true; - this.exactOnly = exactOnly; - } - reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { - if (this.exactOnly && !exact) { - return; + if (tokens2.LA(1) !== Token_1.Token.EOF) { + throw new ParseTreePatternMatcher.StartRuleDoesNotConsumeFullPattern(); + } + return new ParseTreePattern_1.ParseTreePattern(this, pattern, patternRuleIndex, tree); } - const msg = "reportAmbiguity d=" + this.getDecisionDescription(recognizer, dfa) + ": ambigAlts=" + this.getConflictingAlts(ambigAlts, configs) + ", input='" + recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'"; - recognizer.notifyErrorListeners(msg); - } - reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { - const msg = "reportAttemptingFullContext d=" + this.getDecisionDescription(recognizer, dfa) + ", input='" + recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'"; - recognizer.notifyErrorListeners(msg); - } - reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { - const msg = "reportContextSensitivity d=" + this.getDecisionDescription(recognizer, dfa) + ", input='" + recognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + "'"; - recognizer.notifyErrorListeners(msg); - } - getDecisionDescription(recognizer, dfa) { - const decision = dfa.decision; - const ruleIndex = dfa.atnStartState.ruleIndex; - const ruleNames = recognizer.ruleNames; - if (ruleIndex < 0 || ruleIndex >= ruleNames.length) { - return "" + decision; + get lexer() { + return this._lexer; } - const ruleName = ruleNames[ruleIndex] || null; - if (ruleName === null || ruleName.length === 0) { - return "" + decision; + get parser() { + return this._parser; } - return `${decision} (${ruleName})`; - } - getConflictingAlts(reportedAlts, configs) { - if (reportedAlts !== null) { - return reportedAlts; + matchImpl(tree, patternTree, labels) { + if (!tree) { + throw new TypeError("tree cannot be null"); + } + if (!patternTree) { + throw new TypeError("patternTree cannot be null"); + } + if (tree instanceof TerminalNode_1.TerminalNode && patternTree instanceof TerminalNode_1.TerminalNode) { + let mismatchedNode; + if (tree.symbol.type === patternTree.symbol.type) { + if (patternTree.symbol instanceof TokenTagToken_1.TokenTagToken) { + let tokenTagToken = patternTree.symbol; + labels.map(tokenTagToken.tokenName, tree); + const l = tokenTagToken.label; + if (l) { + labels.map(l, tree); + } + } else if (tree.text === patternTree.text) { + } else { + if (!mismatchedNode) { + mismatchedNode = tree; + } + } + } else { + if (!mismatchedNode) { + mismatchedNode = tree; + } + } + return mismatchedNode; + } + if (tree instanceof ParserRuleContext_1.ParserRuleContext && patternTree instanceof ParserRuleContext_1.ParserRuleContext) { + let mismatchedNode; + let ruleTagToken = this.getRuleTagToken(patternTree); + if (ruleTagToken) { + let m; + if (tree.ruleContext.ruleIndex === patternTree.ruleContext.ruleIndex) { + labels.map(ruleTagToken.ruleName, tree); + const l = ruleTagToken.label; + if (l) { + labels.map(l, tree); + } + } else { + if (!mismatchedNode) { + mismatchedNode = tree; + } + } + return mismatchedNode; + } + if (tree.childCount !== patternTree.childCount) { + if (!mismatchedNode) { + mismatchedNode = tree; + } + return mismatchedNode; + } + let n = tree.childCount; + for (let i = 0; i < n; i++) { + let childMatch = this.matchImpl(tree.getChild(i), patternTree.getChild(i), labels); + if (childMatch) { + return childMatch; + } + } + return mismatchedNode; + } + return tree; } - const result = new BitSet(); - for (let i = 0; i < configs.items.length; i++) { - result.add(configs.items[i].alt); + getRuleTagToken(t) { + if (t instanceof RuleNode_1.RuleNode) { + if (t.childCount === 1 && t.getChild(0) instanceof TerminalNode_1.TerminalNode) { + let c = t.getChild(0); + if (c.symbol instanceof RuleTagToken_1.RuleTagToken) { + return c.symbol; + } + } + } + return void 0; } - return `{${result.values().join(", ")}}`; - } - }; - module.exports = DiagnosticErrorListener; - }); - - // node_modules/antlr4/src/antlr4/error/ErrorStrategy.js - var require_ErrorStrategy = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var {NoViableAltException: NoViableAltException2, InputMismatchException, FailedPredicateException: FailedPredicateException2, ParseCancellationException} = require_Errors(); - var {ATNState} = require_ATNState2(); - var {Interval, IntervalSet} = require_IntervalSet2(); - var ErrorStrategy = class { - reset(recognizer) { - } - recoverInline(recognizer) { - } - recover(recognizer, e) { - } - sync(recognizer) { - } - inErrorRecoveryMode(recognizer) { - } - reportError(recognizer) { - } - }; - var DefaultErrorStrategy = class extends ErrorStrategy { - constructor() { - super(); - this.errorRecoveryMode = false; - this.lastErrorIndex = -1; - this.lastErrorStates = null; - this.nextTokensContext = null; - this.nextTokenState = 0; - } - reset(recognizer) { - this.endErrorCondition(recognizer); - } - beginErrorCondition(recognizer) { - this.errorRecoveryMode = true; - } - inErrorRecoveryMode(recognizer) { - return this.errorRecoveryMode; - } - endErrorCondition(recognizer) { - this.errorRecoveryMode = false; - this.lastErrorStates = null; - this.lastErrorIndex = -1; - } - reportMatch(recognizer) { - this.endErrorCondition(recognizer); - } - reportError(recognizer, e) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - if (e instanceof NoViableAltException2) { - this.reportNoViableAlternative(recognizer, e); - } else if (e instanceof InputMismatchException) { - this.reportInputMismatch(recognizer, e); - } else if (e instanceof FailedPredicateException2) { - this.reportFailedPredicate(recognizer, e); - } else { - console.log("unknown recognition error type: " + e.constructor.name); - console.log(e.stack); - recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e); - } - } - recover(recognizer, e) { - if (this.lastErrorIndex === recognizer.getInputStream().index && this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state) >= 0) { - recognizer.consume(); - } - this.lastErrorIndex = recognizer._input.index; - if (this.lastErrorStates === null) { - this.lastErrorStates = []; - } - this.lastErrorStates.push(recognizer.state); - const followSet = this.getErrorRecoverySet(recognizer); - this.consumeUntil(recognizer, followSet); - } - sync(recognizer) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - const s = recognizer._interp.atn.states[recognizer.state]; - const la = recognizer.getTokenStream().LA(1); - const nextTokens = recognizer.atn.nextTokens(s); - if (nextTokens.contains(la)) { - this.nextTokensContext = null; - this.nextTokenState = ATNState.INVALID_STATE_NUMBER; - return; - } else if (nextTokens.contains(Token2.EPSILON)) { - if (this.nextTokensContext === null) { - this.nextTokensContext = recognizer._ctx; - this.nextTokensState = recognizer._stateNumber; + tokenize(pattern) { + let chunks = this.split(pattern); + let tokens2 = []; + for (let chunk of chunks) { + if (chunk instanceof TagChunk_1.TagChunk) { + let tagChunk = chunk; + const firstChar = tagChunk.tag.substr(0, 1); + if (firstChar === firstChar.toUpperCase()) { + let ttype = this._parser.getTokenType(tagChunk.tag); + if (ttype === Token_1.Token.INVALID_TYPE) { + throw new Error("Unknown token " + tagChunk.tag + " in pattern: " + pattern); + } + let t = new TokenTagToken_1.TokenTagToken(tagChunk.tag, ttype, tagChunk.label); + tokens2.push(t); + } else if (firstChar === firstChar.toLowerCase()) { + let ruleIndex = this._parser.getRuleIndex(tagChunk.tag); + if (ruleIndex === -1) { + throw new Error("Unknown rule " + tagChunk.tag + " in pattern: " + pattern); + } + let ruleImaginaryTokenType = this._parser.getATNWithBypassAlts().ruleToTokenType[ruleIndex]; + tokens2.push(new RuleTagToken_1.RuleTagToken(tagChunk.tag, ruleImaginaryTokenType, tagChunk.label)); + } else { + throw new Error("invalid tag: " + tagChunk.tag + " in pattern: " + pattern); + } + } else { + let textChunk = chunk; + this._lexer.inputStream = CharStreams_1.CharStreams.fromString(textChunk.text); + let t = this._lexer.nextToken(); + while (t.type !== Token_1.Token.EOF) { + tokens2.push(t); + t = this._lexer.nextToken(); + } + } } - return; + return tokens2; } - switch (s.stateType) { - case ATNState.BLOCK_START: - case ATNState.STAR_BLOCK_START: - case ATNState.PLUS_BLOCK_START: - case ATNState.STAR_LOOP_ENTRY: - if (this.singleTokenDeletion(recognizer) !== null) { - return; + split(pattern) { + let p = 0; + let n = pattern.length; + let chunks = []; + let buf; + let starts = []; + let stops = []; + while (p < n) { + if (p === pattern.indexOf(this.escape + this.start, p)) { + p += this.escape.length + this.start.length; + } else if (p === pattern.indexOf(this.escape + this.stop, p)) { + p += this.escape.length + this.stop.length; + } else if (p === pattern.indexOf(this.start, p)) { + starts.push(p); + p += this.start.length; + } else if (p === pattern.indexOf(this.stop, p)) { + stops.push(p); + p += this.stop.length; } else { - throw new InputMismatchException(recognizer); + p++; } - case ATNState.PLUS_LOOP_BACK: - case ATNState.STAR_LOOP_BACK: - this.reportUnwantedToken(recognizer); - const expecting = new IntervalSet(); - expecting.addSet(recognizer.getExpectedTokens()); - const whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer)); - this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule); - break; - default: - } - } - reportNoViableAlternative(recognizer, e) { - const tokens2 = recognizer.getTokenStream(); - let input; - if (tokens2 !== null) { - if (e.startToken.type === Token2.EOF) { - input = ""; - } else { - input = tokens2.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex)); } - } else { - input = ""; - } - const msg = "no viable alternative at input " + this.escapeWSAndQuote(input); - recognizer.notifyErrorListeners(msg, e.offendingToken, e); - } - reportInputMismatch(recognizer, e) { - const msg = "mismatched input " + this.getTokenErrorDisplay(e.offendingToken) + " expecting " + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames); - recognizer.notifyErrorListeners(msg, e.offendingToken, e); - } - reportFailedPredicate(recognizer, e) { - const ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex]; - const msg = "rule " + ruleName + " " + e.message; - recognizer.notifyErrorListeners(msg, e.offendingToken, e); - } - reportUnwantedToken(recognizer) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - const t = recognizer.getCurrentToken(); - const tokenName = this.getTokenErrorDisplay(t); - const expecting = this.getExpectedTokens(recognizer); - const msg = "extraneous input " + tokenName + " expecting " + expecting.toString(recognizer.literalNames, recognizer.symbolicNames); - recognizer.notifyErrorListeners(msg, t, null); - } - reportMissingToken(recognizer) { - if (this.inErrorRecoveryMode(recognizer)) { - return; - } - this.beginErrorCondition(recognizer); - const t = recognizer.getCurrentToken(); - const expecting = this.getExpectedTokens(recognizer); - const msg = "missing " + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) + " at " + this.getTokenErrorDisplay(t); - recognizer.notifyErrorListeners(msg, t, null); - } - recoverInline(recognizer) { - const matchedSymbol = this.singleTokenDeletion(recognizer); - if (matchedSymbol !== null) { - recognizer.consume(); - return matchedSymbol; - } - if (this.singleTokenInsertion(recognizer)) { - return this.getMissingSymbol(recognizer); - } - throw new InputMismatchException(recognizer); - } - singleTokenInsertion(recognizer) { - const currentSymbolType = recognizer.getTokenStream().LA(1); - const atn = recognizer._interp.atn; - const currentState = atn.states[recognizer.state]; - const next = currentState.transitions[0].target; - const expectingAtLL2 = atn.nextTokens(next, recognizer._ctx); - if (expectingAtLL2.contains(currentSymbolType)) { - this.reportMissingToken(recognizer); - return true; - } else { - return false; - } - } - singleTokenDeletion(recognizer) { - const nextTokenType = recognizer.getTokenStream().LA(2); - const expecting = this.getExpectedTokens(recognizer); - if (expecting.contains(nextTokenType)) { - this.reportUnwantedToken(recognizer); - recognizer.consume(); - const matchedSymbol = recognizer.getCurrentToken(); - this.reportMatch(recognizer); - return matchedSymbol; - } else { - return null; - } - } - getMissingSymbol(recognizer) { - const currentSymbol = recognizer.getCurrentToken(); - const expecting = this.getExpectedTokens(recognizer); - const expectedTokenType = expecting.first(); - let tokenText; - if (expectedTokenType === Token2.EOF) { - tokenText = ""; - } else { - tokenText = ""; - } - let current = currentSymbol; - const lookback = recognizer.getTokenStream().LT(-1); - if (current.type === Token2.EOF && lookback !== null) { - current = lookback; - } - return recognizer.getTokenFactory().create(current.source, expectedTokenType, tokenText, Token2.DEFAULT_CHANNEL, -1, -1, current.line, current.column); - } - getExpectedTokens(recognizer) { - return recognizer.getExpectedTokens(); - } - getTokenErrorDisplay(t) { - if (t === null) { - return ""; - } - let s = t.text; - if (s === null) { - if (t.type === Token2.EOF) { - s = ""; - } else { - s = "<" + t.type + ">"; + if (starts.length > stops.length) { + throw new Error("unterminated tag in pattern: " + pattern); } + if (starts.length < stops.length) { + throw new Error("missing start tag in pattern: " + pattern); + } + let ntags = starts.length; + for (let i = 0; i < ntags; i++) { + if (starts[i] >= stops[i]) { + throw new Error("tag delimiters out of order in pattern: " + pattern); + } + } + if (ntags === 0) { + let text = pattern.substring(0, n); + chunks.push(new TextChunk_1.TextChunk(text)); + } + if (ntags > 0 && starts[0] > 0) { + let text = pattern.substring(0, starts[0]); + chunks.push(new TextChunk_1.TextChunk(text)); + } + for (let i = 0; i < ntags; i++) { + let tag = pattern.substring(starts[i] + this.start.length, stops[i]); + let ruleOrToken = tag; + let label; + let colon = tag.indexOf(":"); + if (colon >= 0) { + label = tag.substring(0, colon); + ruleOrToken = tag.substring(colon + 1, tag.length); + } + chunks.push(new TagChunk_1.TagChunk(ruleOrToken, label)); + if (i + 1 < ntags) { + let text = pattern.substring(stops[i] + this.stop.length, starts[i + 1]); + chunks.push(new TextChunk_1.TextChunk(text)); + } + } + if (ntags > 0) { + let afterLastTag = stops[ntags - 1] + this.stop.length; + if (afterLastTag < n) { + let text = pattern.substring(afterLastTag, n); + chunks.push(new TextChunk_1.TextChunk(text)); + } + } + for (let i = 0; i < chunks.length; i++) { + let c = chunks[i]; + if (c instanceof TextChunk_1.TextChunk) { + let unescaped = c.text.replace(this.escapeRE, ""); + if (unescaped.length < c.text.length) { + chunks[i] = new TextChunk_1.TextChunk(unescaped); + } + } + } + return chunks; } - return this.escapeWSAndQuote(s); - } - escapeWSAndQuote(s) { - s = s.replace(/\n/g, "\\n"); - s = s.replace(/\r/g, "\\r"); - s = s.replace(/\t/g, "\\t"); - return "'" + s + "'"; - } - getErrorRecoverySet(recognizer) { - const atn = recognizer._interp.atn; - let ctx = recognizer._ctx; - const recoverSet = new IntervalSet(); - while (ctx !== null && ctx.invokingState >= 0) { - const invokingState = atn.states[ctx.invokingState]; - const rt = invokingState.transitions[0]; - const follow = atn.nextTokens(rt.followState); - recoverSet.addSet(follow); - ctx = ctx.parentCtx; - } - recoverSet.removeOne(Token2.EPSILON); - return recoverSet; - } - consumeUntil(recognizer, set) { - let ttype = recognizer.getTokenStream().LA(1); - while (ttype !== Token2.EOF && !set.contains(ttype)) { - recognizer.consume(); - ttype = recognizer.getTokenStream().LA(1); + }; + __decorate([ + Decorators_1.NotNull, + __param(1, Decorators_1.NotNull) + ], ParseTreePatternMatcher.prototype, "match", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreePatternMatcher.prototype, "lexer", null); + __decorate([ + Decorators_1.NotNull + ], ParseTreePatternMatcher.prototype, "parser", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ParseTreePatternMatcher.prototype, "matchImpl", null); + exports.ParseTreePatternMatcher = ParseTreePatternMatcher; + (function(ParseTreePatternMatcher2) { + class CannotInvokeStartRule extends Error { + constructor(error) { + super(`CannotInvokeStartRule: ${error}`); + this.error = error; + } } - } - }; - var BailErrorStrategy = class extends DefaultErrorStrategy { - constructor() { - super(); - } - recover(recognizer, e) { - let context = recognizer._ctx; - while (context !== null) { - context.exception = e; - context = context.parentCtx; + ParseTreePatternMatcher2.CannotInvokeStartRule = CannotInvokeStartRule; + class StartRuleDoesNotConsumeFullPattern extends Error { + constructor() { + super("StartRuleDoesNotConsumeFullPattern"); + } } - throw new ParseCancellationException(e); - } - recoverInline(recognizer) { - this.recover(recognizer, new InputMismatchException(recognizer)); - } - sync(recognizer) { - } - }; - module.exports = {BailErrorStrategy, DefaultErrorStrategy}; + ParseTreePatternMatcher2.StartRuleDoesNotConsumeFullPattern = StartRuleDoesNotConsumeFullPattern; + })(ParseTreePatternMatcher = exports.ParseTreePatternMatcher || (exports.ParseTreePatternMatcher = {})); + } }); - // node_modules/antlr4/src/antlr4/error/index.js - var require_error = __commonJS((exports, module) => { - init_process_shim(); - module.exports.RecognitionException = require_Errors().RecognitionException; - module.exports.NoViableAltException = require_Errors().NoViableAltException; - module.exports.LexerNoViableAltException = require_Errors().LexerNoViableAltException; - module.exports.InputMismatchException = require_Errors().InputMismatchException; - module.exports.FailedPredicateException = require_Errors().FailedPredicateException; - module.exports.DiagnosticErrorListener = require_DiagnosticErrorListener2(); - module.exports.BailErrorStrategy = require_ErrorStrategy().BailErrorStrategy; - module.exports.DefaultErrorStrategy = require_ErrorStrategy().DefaultErrorStrategy; - module.exports.ErrorListener = require_ErrorListener().ErrorListener; + // node_modules/antlr4ts/atn/DecisionEventInfo.js + var require_DecisionEventInfo = __commonJS({ + "node_modules/antlr4ts/atn/DecisionEventInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DecisionEventInfo = void 0; + var Decorators_1 = require_Decorators(); + var DecisionEventInfo = class DecisionEventInfo { + constructor(decision, state, input, startIndex, stopIndex, fullCtx) { + this.decision = decision; + this.fullCtx = fullCtx; + this.stopIndex = stopIndex; + this.input = input; + this.startIndex = startIndex; + this.state = state; + } + }; + __decorate([ + Decorators_1.NotNull + ], DecisionEventInfo.prototype, "input", void 0); + DecisionEventInfo = __decorate([ + __param(2, Decorators_1.NotNull) + ], DecisionEventInfo); + exports.DecisionEventInfo = DecisionEventInfo; + } }); - // node_modules/antlr4/src/antlr4/InputStream.js - var require_InputStream = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - require_codepointat(); - require_fromcodepoint(); - var InputStream = class { - constructor(data, decodeToUnicodeCodePoints) { - this.name = ""; - this.strdata = data; - this.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false; - this._index = 0; - this.data = []; - if (this.decodeToUnicodeCodePoints) { - for (let i = 0; i < this.strdata.length; ) { - const codePoint = this.strdata.codePointAt(i); - this.data.push(codePoint); - i += codePoint <= 65535 ? 1 : 2; - } - } else { - for (let i = 0; i < this.strdata.length; i++) { - const codeUnit = this.strdata.charCodeAt(i); - this.data.push(codeUnit); - } - } - this._size = this.data.length; - } - reset() { - this._index = 0; - } - consume() { - if (this._index >= this._size) { - throw "cannot consume EOF"; - } - this._index += 1; - } - LA(offset) { - if (offset === 0) { - return 0; - } - if (offset < 0) { - offset += 1; - } - const pos = this._index + offset - 1; - if (pos < 0 || pos >= this._size) { - return Token2.EOF; + // node_modules/antlr4ts/atn/AmbiguityInfo.js + var require_AmbiguityInfo = __commonJS({ + "node_modules/antlr4ts/atn/AmbiguityInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.AmbiguityInfo = void 0; + var DecisionEventInfo_1 = require_DecisionEventInfo(); + var Decorators_1 = require_Decorators(); + var AmbiguityInfo = class AmbiguityInfo extends DecisionEventInfo_1.DecisionEventInfo { + constructor(decision, state, ambigAlts, input, startIndex, stopIndex) { + super(decision, state, input, startIndex, stopIndex, state.useContext); + this.ambigAlts = ambigAlts; + } + get ambiguousAlternatives() { + return this.ambigAlts; } - return this.data[pos]; - } - LT(offset) { - return this.LA(offset); - } - mark() { - return -1; - } - release(marker) { - } - seek(_index) { - if (_index <= this._index) { - this._index = _index; - return; + }; + __decorate([ + Decorators_1.NotNull + ], AmbiguityInfo.prototype, "ambigAlts", void 0); + __decorate([ + Decorators_1.NotNull + ], AmbiguityInfo.prototype, "ambiguousAlternatives", null); + AmbiguityInfo = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull), + __param(3, Decorators_1.NotNull) + ], AmbiguityInfo); + exports.AmbiguityInfo = AmbiguityInfo; + } + }); + + // node_modules/antlr4ts/atn/ContextSensitivityInfo.js + var require_ContextSensitivityInfo = __commonJS({ + "node_modules/antlr4ts/atn/ContextSensitivityInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ContextSensitivityInfo = void 0; + var DecisionEventInfo_1 = require_DecisionEventInfo(); + var Decorators_1 = require_Decorators(); + var ContextSensitivityInfo = class ContextSensitivityInfo extends DecisionEventInfo_1.DecisionEventInfo { + constructor(decision, state, input, startIndex, stopIndex) { + super(decision, state, input, startIndex, stopIndex, true); } - this._index = Math.min(_index, this._size); - } - getText(start, stop) { - if (stop >= this._size) { - stop = this._size - 1; + }; + ContextSensitivityInfo = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ContextSensitivityInfo); + exports.ContextSensitivityInfo = ContextSensitivityInfo; + } + }); + + // node_modules/antlr4ts/atn/DecisionInfo.js + var require_DecisionInfo = __commonJS({ + "node_modules/antlr4ts/atn/DecisionInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DecisionInfo = void 0; + var Decorators_1 = require_Decorators(); + var DecisionInfo = class { + constructor(decision) { + this.invocations = 0; + this.timeInPrediction = 0; + this.SLL_TotalLook = 0; + this.SLL_MinLook = 0; + this.SLL_MaxLook = 0; + this.LL_TotalLook = 0; + this.LL_MinLook = 0; + this.LL_MaxLook = 0; + this.contextSensitivities = []; + this.errors = []; + this.ambiguities = []; + this.predicateEvals = []; + this.SLL_ATNTransitions = 0; + this.SLL_DFATransitions = 0; + this.LL_Fallback = 0; + this.LL_ATNTransitions = 0; + this.LL_DFATransitions = 0; + this.decision = decision; } - if (start >= this._size) { - return ""; - } else { - if (this.decodeToUnicodeCodePoints) { - let result = ""; - for (let i = start; i <= stop; i++) { - result += String.fromCodePoint(this.data[i]); - } - return result; - } else { - return this.strdata.slice(start, stop + 1); - } + toString() { + return "{decision=" + this.decision + ", contextSensitivities=" + this.contextSensitivities.length + ", errors=" + this.errors.length + ", ambiguities=" + this.ambiguities.length + ", SLL_lookahead=" + this.SLL_TotalLook + ", SLL_ATNTransitions=" + this.SLL_ATNTransitions + ", SLL_DFATransitions=" + this.SLL_DFATransitions + ", LL_Fallback=" + this.LL_Fallback + ", LL_lookahead=" + this.LL_TotalLook + ", LL_ATNTransitions=" + this.LL_ATNTransitions + "}"; } - } - toString() { - return this.strdata; - } - get index() { - return this._index; - } - get size() { - return this._size; - } - }; - module.exports = InputStream; + }; + __decorate([ + Decorators_1.Override + ], DecisionInfo.prototype, "toString", null); + exports.DecisionInfo = DecisionInfo; + } }); - // (disabled):fs - var require_fs = __commonJS(() => { - init_process_shim(); + // node_modules/antlr4ts/atn/ErrorInfo.js + var require_ErrorInfo = __commonJS({ + "node_modules/antlr4ts/atn/ErrorInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ErrorInfo = void 0; + var DecisionEventInfo_1 = require_DecisionEventInfo(); + var Decorators_1 = require_Decorators(); + var ErrorInfo = class ErrorInfo extends DecisionEventInfo_1.DecisionEventInfo { + constructor(decision, state, input, startIndex, stopIndex) { + super(decision, state, input, startIndex, stopIndex, state.useContext); + } + }; + ErrorInfo = __decorate([ + __param(1, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull) + ], ErrorInfo); + exports.ErrorInfo = ErrorInfo; + } }); - // node_modules/antlr4/src/antlr4/CharStreams.js - var require_CharStreams2 = __commonJS((exports, module) => { - init_process_shim(); - var InputStream = require_InputStream(); - var fs = require_fs(); - var CharStreams = { - fromString: function(str) { - return new InputStream(str, true); - }, - fromBlob: function(blob, encoding, onLoad, onError) { - const reader = new window.FileReader(); - reader.onload = function(e) { - const is = new InputStream(e.target.result, true); - onLoad(is); + // node_modules/antlr4ts/atn/LookaheadEventInfo.js + var require_LookaheadEventInfo = __commonJS({ + "node_modules/antlr4ts/atn/LookaheadEventInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); }; - reader.onerror = onError; - reader.readAsText(blob, encoding); - }, - fromBuffer: function(buffer, encoding) { - return new InputStream(buffer.toString(encoding), true); - }, - fromPath: function(path, encoding, callback) { - fs.readFile(path, encoding, function(err, data) { - let is = null; - if (data !== null) { - is = new InputStream(data, true); - } - callback(err, is); - }); - }, - fromPathSync: function(path, encoding) { - const data = fs.readFileSync(path, encoding); - return new InputStream(data, true); - } - }; - module.exports = CharStreams; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LookaheadEventInfo = void 0; + var DecisionEventInfo_1 = require_DecisionEventInfo(); + var Decorators_1 = require_Decorators(); + var LookaheadEventInfo = class LookaheadEventInfo extends DecisionEventInfo_1.DecisionEventInfo { + constructor(decision, state, predictedAlt, input, startIndex, stopIndex, fullCtx) { + super(decision, state, input, startIndex, stopIndex, fullCtx); + this.predictedAlt = predictedAlt; + } + }; + LookaheadEventInfo = __decorate([ + __param(3, Decorators_1.NotNull) + ], LookaheadEventInfo); + exports.LookaheadEventInfo = LookaheadEventInfo; + } }); - // node_modules/antlr4/src/antlr4/FileStream.js - var require_FileStream = __commonJS((exports, module) => { - init_process_shim(); - var InputStream = require_InputStream(); - var fs = require_fs(); - var FileStream = class extends InputStream { - constructor(fileName, decodeToUnicodeCodePoints) { - const data = fs.readFileSync(fileName, "utf8"); - super(data, decodeToUnicodeCodePoints); - this.fileName = fileName; - } - }; - module.exports = FileStream; + // node_modules/antlr4ts/atn/PredicateEvalInfo.js + var require_PredicateEvalInfo = __commonJS({ + "node_modules/antlr4ts/atn/PredicateEvalInfo.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.PredicateEvalInfo = void 0; + var DecisionEventInfo_1 = require_DecisionEventInfo(); + var Decorators_1 = require_Decorators(); + var PredicateEvalInfo = class PredicateEvalInfo extends DecisionEventInfo_1.DecisionEventInfo { + constructor(state, decision, input, startIndex, stopIndex, semctx, evalResult, predictedAlt) { + super(decision, state, input, startIndex, stopIndex, state.useContext); + this.semctx = semctx; + this.evalResult = evalResult; + this.predictedAlt = predictedAlt; + } + }; + PredicateEvalInfo = __decorate([ + __param(0, Decorators_1.NotNull), + __param(2, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull) + ], PredicateEvalInfo); + exports.PredicateEvalInfo = PredicateEvalInfo; + } }); - // node_modules/antlr4/src/antlr4/BufferedTokenStream.js - var require_BufferedTokenStream2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var Lexer2 = require_Lexer2(); - var {Interval} = require_IntervalSet2(); - var TokenStream = class { - }; - var BufferedTokenStream = class extends TokenStream { - constructor(tokenSource) { - super(); - this.tokenSource = tokenSource; - this.tokens = []; - this.index = -1; - this.fetchedEOF = false; - } - mark() { - return 0; - } - release(marker) { - } - reset() { - this.seek(0); - } - seek(index) { - this.lazyInit(); - this.index = this.adjustSeekIndex(index); - } - get(index) { - this.lazyInit(); - return this.tokens[index]; - } - consume() { - let skipEofCheck = false; - if (this.index >= 0) { - if (this.fetchedEOF) { - skipEofCheck = this.index < this.tokens.length - 1; - } else { - skipEofCheck = this.index < this.tokens.length; + // node_modules/antlr4ts/atn/ProfilingATNSimulator.js + var require_ProfilingATNSimulator = __commonJS({ + "node_modules/antlr4ts/atn/ProfilingATNSimulator.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.ProfilingATNSimulator = void 0; + var AmbiguityInfo_1 = require_AmbiguityInfo(); + var ATN_1 = require_ATN(); + var ATNSimulator_1 = require_ATNSimulator(); + var ContextSensitivityInfo_1 = require_ContextSensitivityInfo(); + var DecisionInfo_1 = require_DecisionInfo(); + var ErrorInfo_1 = require_ErrorInfo(); + var Decorators_1 = require_Decorators(); + var LookaheadEventInfo_1 = require_LookaheadEventInfo(); + var ParserATNSimulator_1 = require_ParserATNSimulator(); + var PredicateEvalInfo_1 = require_PredicateEvalInfo(); + var SemanticContext_1 = require_SemanticContext(); + var SimulatorState_1 = require_SimulatorState(); + var ProfilingATNSimulator = class extends ParserATNSimulator_1.ParserATNSimulator { + constructor(parser) { + super(parser.interpreter.atn, parser); + this._startIndex = 0; + this._sllStopIndex = 0; + this._llStopIndex = 0; + this.currentDecision = 0; + this.conflictingAltResolvedBySLL = 0; + this.optimize_ll1 = false; + this.reportAmbiguities = true; + this.numDecisions = this.atn.decisionToState.length; + this.decisions = []; + for (let i = 0; i < this.numDecisions; i++) { + this.decisions.push(new DecisionInfo_1.DecisionInfo(i)); + } + } + adaptivePredict(input, decision, outerContext, useContext) { + if (useContext !== void 0) { + return super.adaptivePredict(input, decision, outerContext, useContext); + } + try { + this._input = input; + this._startIndex = input.index; + this._sllStopIndex = this._startIndex - 1; + this._llStopIndex = -1; + this.currentDecision = decision; + this.currentState = void 0; + this.conflictingAltResolvedBySLL = ATN_1.ATN.INVALID_ALT_NUMBER; + let start = process.hrtime(); + let alt = super.adaptivePredict(input, decision, outerContext); + let stop = process.hrtime(); + let nanoseconds = (stop[0] - start[0]) * 1e9; + if (nanoseconds === 0) { + nanoseconds = stop[1] - start[1]; + } else { + nanoseconds += 1e9 - start[1] + stop[1]; + } + this.decisions[decision].timeInPrediction += nanoseconds; + this.decisions[decision].invocations++; + let SLL_k = this._sllStopIndex - this._startIndex + 1; + this.decisions[decision].SLL_TotalLook += SLL_k; + this.decisions[decision].SLL_MinLook = this.decisions[decision].SLL_MinLook === 0 ? SLL_k : Math.min(this.decisions[decision].SLL_MinLook, SLL_k); + if (SLL_k > this.decisions[decision].SLL_MaxLook) { + this.decisions[decision].SLL_MaxLook = SLL_k; + this.decisions[decision].SLL_MaxLookEvent = new LookaheadEventInfo_1.LookaheadEventInfo(decision, void 0, alt, input, this._startIndex, this._sllStopIndex, false); + } + if (this._llStopIndex >= 0) { + let LL_k = this._llStopIndex - this._startIndex + 1; + this.decisions[decision].LL_TotalLook += LL_k; + this.decisions[decision].LL_MinLook = this.decisions[decision].LL_MinLook === 0 ? LL_k : Math.min(this.decisions[decision].LL_MinLook, LL_k); + if (LL_k > this.decisions[decision].LL_MaxLook) { + this.decisions[decision].LL_MaxLook = LL_k; + this.decisions[decision].LL_MaxLookEvent = new LookaheadEventInfo_1.LookaheadEventInfo(decision, void 0, alt, input, this._startIndex, this._llStopIndex, true); + } + } + return alt; + } finally { + this._input = void 0; + this.currentDecision = -1; } - } else { - skipEofCheck = false; } - if (!skipEofCheck && this.LA(1) === Token2.EOF) { - throw "cannot consume EOF"; + getStartState(dfa, input, outerContext, useContext) { + let state = super.getStartState(dfa, input, outerContext, useContext); + this.currentState = state; + return state; } - if (this.sync(this.index + 1)) { - this.index = this.adjustSeekIndex(this.index + 1); + computeStartState(dfa, globalContext, useContext) { + let state = super.computeStartState(dfa, globalContext, useContext); + this.currentState = state; + return state; } - } - sync(i) { - const n = i - this.tokens.length + 1; - if (n > 0) { - const fetched = this.fetch(n); - return fetched >= n; + computeReachSet(dfa, previous, t, contextCache) { + if (this._input === void 0) { + throw new Error("Invalid state"); + } + let reachState = super.computeReachSet(dfa, previous, t, contextCache); + if (reachState == null) { + this.decisions[this.currentDecision].errors.push(new ErrorInfo_1.ErrorInfo(this.currentDecision, previous, this._input, this._startIndex, this._input.index)); + } + this.currentState = reachState; + return reachState; } - return true; - } - fetch(n) { - if (this.fetchedEOF) { - return 0; + getExistingTargetState(previousD, t) { + if (this.currentState === void 0 || this._input === void 0) { + throw new Error("Invalid state"); + } + if (this.currentState.useContext) { + this._llStopIndex = this._input.index; + } else { + this._sllStopIndex = this._input.index; + } + let existingTargetState = super.getExistingTargetState(previousD, t); + if (existingTargetState != null) { + this.currentState = new SimulatorState_1.SimulatorState(this.currentState.outerContext, existingTargetState, this.currentState.useContext, this.currentState.remainingOuterContext); + if (this.currentState.useContext) { + this.decisions[this.currentDecision].LL_DFATransitions++; + } else { + this.decisions[this.currentDecision].SLL_DFATransitions++; + } + if (existingTargetState === ATNSimulator_1.ATNSimulator.ERROR) { + let state = new SimulatorState_1.SimulatorState(this.currentState.outerContext, previousD, this.currentState.useContext, this.currentState.remainingOuterContext); + this.decisions[this.currentDecision].errors.push(new ErrorInfo_1.ErrorInfo(this.currentDecision, state, this._input, this._startIndex, this._input.index)); + } + } + return existingTargetState; } - for (let i = 0; i < n; i++) { - const t = this.tokenSource.nextToken(); - t.tokenIndex = this.tokens.length; - this.tokens.push(t); - if (t.type === Token2.EOF) { - this.fetchedEOF = true; - return i + 1; + computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache) { + let targetState = super.computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache); + if (useContext) { + this.decisions[this.currentDecision].LL_ATNTransitions++; + } else { + this.decisions[this.currentDecision].SLL_ATNTransitions++; } + return targetState; } - return n; - } - getTokens(start, stop, types) { - if (types === void 0) { - types = null; + evalSemanticContextImpl(pred, parserCallStack, alt) { + if (this.currentState === void 0 || this._input === void 0) { + throw new Error("Invalid state"); + } + let result = super.evalSemanticContextImpl(pred, parserCallStack, alt); + if (!(pred instanceof SemanticContext_1.SemanticContext.PrecedencePredicate)) { + let fullContext = this._llStopIndex >= 0; + let stopIndex = fullContext ? this._llStopIndex : this._sllStopIndex; + this.decisions[this.currentDecision].predicateEvals.push(new PredicateEvalInfo_1.PredicateEvalInfo(this.currentState, this.currentDecision, this._input, this._startIndex, stopIndex, pred, result, alt)); + } + return result; } - if (start < 0 || stop < 0) { - return null; + reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex) { + if (this._input === void 0) { + throw new Error("Invalid state"); + } + if (prediction !== this.conflictingAltResolvedBySLL) { + this.decisions[this.currentDecision].contextSensitivities.push(new ContextSensitivityInfo_1.ContextSensitivityInfo(this.currentDecision, acceptState, this._input, startIndex, stopIndex)); + } + super.reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex); } - this.lazyInit(); - const subset = []; - if (stop >= this.tokens.length) { - stop = this.tokens.length - 1; + reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex) { + if (conflictingAlts != null) { + this.conflictingAltResolvedBySLL = conflictingAlts.nextSetBit(0); + } else { + this.conflictingAltResolvedBySLL = conflictState.s0.configs.getRepresentedAlternatives().nextSetBit(0); + } + this.decisions[this.currentDecision].LL_Fallback++; + super.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex); } - for (let i = start; i < stop; i++) { - const t = this.tokens[i]; - if (t.type === Token2.EOF) { - break; + reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { + if (this.currentState === void 0 || this._input === void 0) { + throw new Error("Invalid state"); } - if (types === null || types.contains(t.type)) { - subset.push(t); + let prediction; + if (ambigAlts != null) { + prediction = ambigAlts.nextSetBit(0); + } else { + prediction = configs.getRepresentedAlternatives().nextSetBit(0); } + if (this.conflictingAltResolvedBySLL !== ATN_1.ATN.INVALID_ALT_NUMBER && prediction !== this.conflictingAltResolvedBySLL) { + this.decisions[this.currentDecision].contextSensitivities.push(new ContextSensitivityInfo_1.ContextSensitivityInfo(this.currentDecision, this.currentState, this._input, startIndex, stopIndex)); + } + this.decisions[this.currentDecision].ambiguities.push(new AmbiguityInfo_1.AmbiguityInfo(this.currentDecision, this.currentState, ambigAlts, this._input, startIndex, stopIndex)); + super.reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs); } - return subset; - } - LA(i) { - return this.LT(i).type; - } - LB(k) { - if (this.index - k < 0) { - return null; - } - return this.tokens[this.index - k]; - } - LT(k) { - this.lazyInit(); - if (k === 0) { - return null; + getDecisionInfo() { + return this.decisions; } - if (k < 0) { - return this.LB(-k); + getCurrentState() { + return this.currentState; } - const i = this.index + k - 1; - this.sync(i); - if (i >= this.tokens.length) { - return this.tokens[this.tokens.length - 1]; + }; + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], ProfilingATNSimulator.prototype, "adaptivePredict", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "getStartState", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "computeStartState", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "computeReachSet", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "getExistingTargetState", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "computeTargetState", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "evalSemanticContextImpl", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "reportContextSensitivity", null); + __decorate([ + Decorators_1.Override + ], ProfilingATNSimulator.prototype, "reportAttemptingFullContext", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull), + __param(6, Decorators_1.NotNull) + ], ProfilingATNSimulator.prototype, "reportAmbiguity", null); + exports.ProfilingATNSimulator = ProfilingATNSimulator; + } + }); + + // node_modules/antlr4ts/Parser.js + var require_Parser = __commonJS({ + "node_modules/antlr4ts/Parser.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); } - return this.tokens[i]; - } - adjustSeekIndex(i) { - return i; - } - lazyInit() { - if (this.index === -1) { - this.setup(); + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Parser = void 0; + var Utils3 = require_Utils(); + var ATNDeserializationOptions_1 = require_ATNDeserializationOptions(); + var ATNDeserializer_1 = require_ATNDeserializer(); + var DefaultErrorStrategy_1 = require_DefaultErrorStrategy(); + var ErrorNode_1 = require_ErrorNode(); + var IntegerStack_1 = require_IntegerStack(); + var Lexer_1 = require_Lexer(); + var Decorators_1 = require_Decorators(); + var ParseInfo_1 = require_ParseInfo(); + var ParserATNSimulator_1 = require_ParserATNSimulator(); + var ProxyParserErrorListener_1 = require_ProxyParserErrorListener(); + var Recognizer_1 = require_Recognizer(); + var TerminalNode_1 = require_TerminalNode(); + var Token_1 = require_Token(); + var TraceListener2 = class { + constructor(ruleNames, tokenStream) { + this.ruleNames = ruleNames; + this.tokenStream = tokenStream; + } + enterEveryRule(ctx) { + console.log("enter " + this.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.tokenStream.LT(1).text); + } + exitEveryRule(ctx) { + console.log("exit " + this.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.tokenStream.LT(1).text); + } + visitErrorNode(node) { + } + visitTerminal(node) { + let parent = node.parent.ruleContext; + let token = node.symbol; + console.log("consume " + token + " rule " + this.ruleNames[parent.ruleIndex]); } - } - setup() { - this.sync(0); - this.index = this.adjustSeekIndex(0); - } - setTokenSource(tokenSource) { - this.tokenSource = tokenSource; - this.tokens = []; - this.index = -1; - this.fetchedEOF = false; - } - nextTokenOnChannel(i, channel) { - this.sync(i); - if (i >= this.tokens.length) { - return -1; + }; + __decorate([ + Decorators_1.Override + ], TraceListener2.prototype, "enterEveryRule", null); + __decorate([ + Decorators_1.Override + ], TraceListener2.prototype, "exitEveryRule", null); + __decorate([ + Decorators_1.Override + ], TraceListener2.prototype, "visitErrorNode", null); + __decorate([ + Decorators_1.Override + ], TraceListener2.prototype, "visitTerminal", null); + var Parser3 = class extends Recognizer_1.Recognizer { + constructor(input) { + super(); + this._errHandler = new DefaultErrorStrategy_1.DefaultErrorStrategy(); + this._precedenceStack = new IntegerStack_1.IntegerStack(); + this._buildParseTrees = true; + this._parseListeners = []; + this._syntaxErrors = 0; + this.matchedEOF = false; + this._precedenceStack.push(0); + this.inputStream = input; + } + reset(resetInput) { + if (resetInput === void 0 || resetInput) { + this.inputStream.seek(0); + } + this._errHandler.reset(this); + this._ctx = void 0; + this._syntaxErrors = 0; + this.matchedEOF = false; + this.isTrace = false; + this._precedenceStack.clear(); + this._precedenceStack.push(0); + let interpreter = this.interpreter; + if (interpreter != null) { + interpreter.reset(); + } + } + match(ttype) { + let t = this.currentToken; + if (t.type === ttype) { + if (ttype === Token_1.Token.EOF) { + this.matchedEOF = true; + } + this._errHandler.reportMatch(this); + this.consume(); + } else { + t = this._errHandler.recoverInline(this); + if (this._buildParseTrees && t.tokenIndex === -1) { + this._ctx.addErrorNode(this.createErrorNode(this._ctx, t)); + } + } + return t; } - let token = this.tokens[i]; - while (token.channel !== this.channel) { - if (token.type === Token2.EOF) { - return -1; + matchWildcard() { + let t = this.currentToken; + if (t.type > 0) { + this._errHandler.reportMatch(this); + this.consume(); + } else { + t = this._errHandler.recoverInline(this); + if (this._buildParseTrees && t.tokenIndex === -1) { + this._ctx.addErrorNode(this.createErrorNode(this._ctx, t)); + } } - i += 1; - this.sync(i); - token = this.tokens[i]; + return t; } - return i; - } - previousTokenOnChannel(i, channel) { - while (i >= 0 && this.tokens[i].channel !== channel) { - i -= 1; + set buildParseTree(buildParseTrees) { + this._buildParseTrees = buildParseTrees; } - return i; - } - getHiddenTokensToRight(tokenIndex, channel) { - if (channel === void 0) { - channel = -1; + get buildParseTree() { + return this._buildParseTrees; } - this.lazyInit(); - if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { - throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1; + getParseListeners() { + return this._parseListeners; } - const nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer2.DEFAULT_TOKEN_CHANNEL); - const from_ = tokenIndex + 1; - const to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel; - return this.filterForChannel(from_, to, channel); - } - getHiddenTokensToLeft(tokenIndex, channel) { - if (channel === void 0) { - channel = -1; + addParseListener(listener) { + if (listener == null) { + throw new TypeError("listener cannot be null"); + } + this._parseListeners.push(listener); } - this.lazyInit(); - if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { - throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1; + removeParseListener(listener) { + let index = this._parseListeners.findIndex((l) => l === listener); + if (index !== -1) { + this._parseListeners.splice(index, 1); + } } - const prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer2.DEFAULT_TOKEN_CHANNEL); - if (prevOnChannel === tokenIndex - 1) { - return null; + removeParseListeners() { + this._parseListeners.length = 0; } - const from_ = prevOnChannel + 1; - const to = tokenIndex - 1; - return this.filterForChannel(from_, to, channel); - } - filterForChannel(left, right, channel) { - const hidden = []; - for (let i = left; i < right + 1; i++) { - const t = this.tokens[i]; - if (channel === -1) { - if (t.channel !== Lexer2.DEFAULT_TOKEN_CHANNEL) { - hidden.push(t); + triggerEnterRuleEvent() { + for (let listener of this._parseListeners) { + if (listener.enterEveryRule) { + listener.enterEveryRule(this._ctx); } - } else if (t.channel === channel) { - hidden.push(t); + this._ctx.enterRule(listener); } } - if (hidden.length === 0) { - return null; - } - return hidden; - } - getSourceName() { - return this.tokenSource.getSourceName(); - } - getText(interval) { - this.lazyInit(); - this.fill(); - if (interval === void 0 || interval === null) { - interval = new Interval(0, this.tokens.length - 1); - } - let start = interval.start; - if (start instanceof Token2) { - start = start.tokenIndex; - } - let stop = interval.stop; - if (stop instanceof Token2) { - stop = stop.tokenIndex; + triggerExitRuleEvent() { + for (let i = this._parseListeners.length - 1; i >= 0; i--) { + let listener = this._parseListeners[i]; + this._ctx.exitRule(listener); + if (listener.exitEveryRule) { + listener.exitEveryRule(this._ctx); + } + } } - if (start === null || stop === null || start < 0 || stop < 0) { - return ""; + get numberOfSyntaxErrors() { + return this._syntaxErrors; } - if (stop >= this.tokens.length) { - stop = this.tokens.length - 1; + get tokenFactory() { + return this._input.tokenSource.tokenFactory; } - let s = ""; - for (let i = start; i < stop + 1; i++) { - const t = this.tokens[i]; - if (t.type === Token2.EOF) { - break; + getATNWithBypassAlts() { + let serializedAtn = this.serializedATN; + if (serializedAtn == null) { + throw new Error("The current parser does not support an ATN with bypass alternatives."); + } + let result = Parser3.bypassAltsAtnCache.get(serializedAtn); + if (result == null) { + let deserializationOptions = new ATNDeserializationOptions_1.ATNDeserializationOptions(); + deserializationOptions.isGenerateRuleBypassTransitions = true; + result = new ATNDeserializer_1.ATNDeserializer(deserializationOptions).deserialize(Utils3.toCharArray(serializedAtn)); + Parser3.bypassAltsAtnCache.set(serializedAtn, result); } - s = s + t.text; + return result; } - return s; - } - fill() { - this.lazyInit(); - while (this.fetch(1e3) === 1e3) { - continue; + compileParseTreePattern(pattern, patternRuleIndex, lexer) { + return __awaiter(this, void 0, void 0, function* () { + if (!lexer) { + if (this.inputStream) { + let tokenSource = this.inputStream.tokenSource; + if (tokenSource instanceof Lexer_1.Lexer) { + lexer = tokenSource; + } + } + if (!lexer) { + throw new Error("Parser can't discover a lexer to use"); + } + } + let currentLexer = lexer; + let m = yield Promise.resolve().then(() => require_ParseTreePatternMatcher()); + let matcher = new m.ParseTreePatternMatcher(currentLexer, this); + return matcher.compile(pattern, patternRuleIndex); + }); } - } - }; - module.exports = BufferedTokenStream; - }); - - // node_modules/antlr4/src/antlr4/CommonTokenStream.js - var require_CommonTokenStream2 = __commonJS((exports, module) => { - init_process_shim(); - var Token2 = require_Token2().Token; - var BufferedTokenStream = require_BufferedTokenStream2(); - var CommonTokenStream2 = class extends BufferedTokenStream { - constructor(lexer, channel) { - super(lexer); - this.channel = channel === void 0 ? Token2.DEFAULT_CHANNEL : channel; - } - adjustSeekIndex(i) { - return this.nextTokenOnChannel(i, this.channel); - } - LB(k) { - if (k === 0 || this.index - k < 0) { - return null; + get errorHandler() { + return this._errHandler; } - let i = this.index; - let n = 1; - while (n <= k) { - i = this.previousTokenOnChannel(i - 1, this.channel); - n += 1; + set errorHandler(handler) { + this._errHandler = handler; } - if (i < 0) { - return null; + get inputStream() { + return this._input; } - return this.tokens[i]; - } - LT(k) { - this.lazyInit(); - if (k === 0) { - return null; + set inputStream(input) { + this.reset(false); + this._input = input; } - if (k < 0) { - return this.LB(-k); + get currentToken() { + return this._input.LT(1); } - let i = this.index; - let n = 1; - while (n < k) { - if (this.sync(i + 1)) { - i = this.nextTokenOnChannel(i + 1, this.channel); + notifyErrorListeners(msg, offendingToken, e) { + if (offendingToken === void 0) { + offendingToken = this.currentToken; + } else if (offendingToken === null) { + offendingToken = void 0; + } + this._syntaxErrors++; + let line = -1; + let charPositionInLine = -1; + if (offendingToken != null) { + line = offendingToken.line; + charPositionInLine = offendingToken.charPositionInLine; + } + let listener = this.getErrorListenerDispatch(); + if (listener.syntaxError) { + listener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e); + } + } + consume() { + let o = this.currentToken; + if (o.type !== Parser3.EOF) { + this.inputStream.consume(); + } + let hasListener = this._parseListeners.length !== 0; + if (this._buildParseTrees || hasListener) { + if (this._errHandler.inErrorRecoveryMode(this)) { + let node = this._ctx.addErrorNode(this.createErrorNode(this._ctx, o)); + if (hasListener) { + for (let listener of this._parseListeners) { + if (listener.visitErrorNode) { + listener.visitErrorNode(node); + } + } + } + } else { + let node = this.createTerminalNode(this._ctx, o); + this._ctx.addChild(node); + if (hasListener) { + for (let listener of this._parseListeners) { + if (listener.visitTerminal) { + listener.visitTerminal(node); + } + } + } + } } - n += 1; + return o; } - return this.tokens[i]; - } - getNumberOfOnChannelTokens() { - let n = 0; - this.fill(); - for (let i = 0; i < this.tokens.length; i++) { - const t = this.tokens[i]; - if (t.channel === this.channel) { - n += 1; - } - if (t.type === Token2.EOF) { - break; - } + createTerminalNode(parent, t) { + return new TerminalNode_1.TerminalNode(t); } - return n; - } - }; - module.exports = CommonTokenStream2; - }); - - // node_modules/antlr4/src/antlr4/Parser.js - var require_Parser2 = __commonJS((exports, module) => { - init_process_shim(); - var {Token: Token2} = require_Token2(); - var {ParseTreeListener, TerminalNode, ErrorNode: ErrorNode2} = require_Tree(); - var Recognizer = require_Recognizer2(); - var {DefaultErrorStrategy} = require_ErrorStrategy(); - var ATNDeserializer3 = require_ATNDeserializer2(); - var ATNDeserializationOptions = require_ATNDeserializationOptions2(); - var Lexer2 = require_Lexer2(); - var TraceListener = class extends ParseTreeListener { - constructor(parser) { - super(); - this.parser = parser; - } - enterEveryRule(ctx) { - console.log("enter " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text); - } - visitTerminal(node) { - console.log("consume " + node.symbol + " rule " + this.parser.ruleNames[this.parser._ctx.ruleIndex]); - } - exitEveryRule(ctx) { - console.log("exit " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text); - } - }; - var Parser2 = class extends Recognizer { - constructor(input) { - super(); - this._input = null; - this._errHandler = new DefaultErrorStrategy(); - this._precedenceStack = []; - this._precedenceStack.push(0); - this._ctx = null; - this.buildParseTrees = true; - this._tracer = null; - this._parseListeners = null; - this._syntaxErrors = 0; - this.setInputStream(input); - } - reset() { - if (this._input !== null) { - this._input.seek(0); - } - this._errHandler.reset(this); - this._ctx = null; - this._syntaxErrors = 0; - this.setTrace(false); - this._precedenceStack = []; - this._precedenceStack.push(0); - if (this._interp !== null) { - this._interp.reset(); - } - } - match(ttype) { - let t = this.getCurrentToken(); - if (t.type === ttype) { - this._errHandler.reportMatch(this); - this.consume(); - } else { - t = this._errHandler.recoverInline(this); - if (this.buildParseTrees && t.tokenIndex === -1) { - this._ctx.addErrorNode(t); - } + createErrorNode(parent, t) { + return new ErrorNode_1.ErrorNode(t); } - return t; - } - matchWildcard() { - let t = this.getCurrentToken(); - if (t.type > 0) { - this._errHandler.reportMatch(this); - this.consume(); - } else { - t = this._errHandler.recoverInline(this); - if (this._buildParseTrees && t.tokenIndex === -1) { - this._ctx.addErrorNode(t); + addContextToParseTree() { + let parent = this._ctx._parent; + if (parent != null) { + parent.addChild(this._ctx); } } - return t; - } - getParseListeners() { - return this._parseListeners || []; - } - addParseListener(listener) { - if (listener === null) { - throw "listener"; - } - if (this._parseListeners === null) { - this._parseListeners = []; + enterRule(localctx, state, ruleIndex) { + this.state = state; + this._ctx = localctx; + this._ctx._start = this._input.LT(1); + if (this._buildParseTrees) { + this.addContextToParseTree(); + } + this.triggerEnterRuleEvent(); } - this._parseListeners.push(listener); - } - removeParseListener(listener) { - if (this._parseListeners !== null) { - const idx = this._parseListeners.indexOf(listener); - if (idx >= 0) { - this._parseListeners.splice(idx, 1); + enterLeftFactoredRule(localctx, state, ruleIndex) { + this.state = state; + if (this._buildParseTrees) { + let factoredContext = this._ctx.getChild(this._ctx.childCount - 1); + this._ctx.removeLastChild(); + factoredContext._parent = localctx; + localctx.addChild(factoredContext); } - if (this._parseListeners.length === 0) { - this._parseListeners = null; + this._ctx = localctx; + this._ctx._start = this._input.LT(1); + if (this._buildParseTrees) { + this.addContextToParseTree(); } + this.triggerEnterRuleEvent(); } - } - removeParseListeners() { - this._parseListeners = null; - } - triggerEnterRuleEvent() { - if (this._parseListeners !== null) { - const ctx = this._ctx; - this._parseListeners.map(function(listener) { - listener.enterEveryRule(ctx); - ctx.enterRule(listener); - }); - } - } - triggerExitRuleEvent() { - if (this._parseListeners !== null) { - const ctx = this._ctx; - this._parseListeners.slice(0).reverse().map(function(listener) { - ctx.exitRule(listener); - listener.exitEveryRule(ctx); - }); - } - } - getTokenFactory() { - return this._input.tokenSource._factory; - } - setTokenFactory(factory) { - this._input.tokenSource._factory = factory; - } - getATNWithBypassAlts() { - const serializedAtn = this.getSerializedATN(); - if (serializedAtn === null) { - throw "The current parser does not support an ATN with bypass alternatives."; - } - let result = this.bypassAltsAtnCache[serializedAtn]; - if (result === null) { - const deserializationOptions = new ATNDeserializationOptions(); - deserializationOptions.generateRuleBypassTransitions = true; - result = new ATNDeserializer3(deserializationOptions).deserialize(serializedAtn); - this.bypassAltsAtnCache[serializedAtn] = result; + exitRule() { + if (this.matchedEOF) { + this._ctx._stop = this._input.LT(1); + } else { + this._ctx._stop = this._input.tryLT(-1); + } + this.triggerExitRuleEvent(); + this.state = this._ctx.invokingState; + this._ctx = this._ctx._parent; } - return result; - } - compileParseTreePattern(pattern, patternRuleIndex, lexer) { - lexer = lexer || null; - if (lexer === null) { - if (this.getTokenStream() !== null) { - const tokenSource = this.getTokenStream().tokenSource; - if (tokenSource instanceof Lexer2) { - lexer = tokenSource; + enterOuterAlt(localctx, altNum) { + localctx.altNumber = altNum; + if (this._buildParseTrees && this._ctx !== localctx) { + let parent = this._ctx._parent; + if (parent != null) { + parent.removeLastChild(); + parent.addChild(localctx); } } + this._ctx = localctx; } - if (lexer === null) { - throw "Parser can't discover a lexer to use"; + get precedence() { + if (this._precedenceStack.isEmpty) { + return -1; + } + return this._precedenceStack.peek(); } - const m = new ParseTreePatternMatcher(lexer, this); - return m.compile(pattern, patternRuleIndex); - } - getInputStream() { - return this.getTokenStream(); - } - setInputStream(input) { - this.setTokenStream(input); - } - getTokenStream() { - return this._input; - } - setTokenStream(input) { - this._input = null; - this.reset(); - this._input = input; - } - getCurrentToken() { - return this._input.LT(1); - } - notifyErrorListeners(msg, offendingToken, err) { - offendingToken = offendingToken || null; - err = err || null; - if (offendingToken === null) { - offendingToken = this.getCurrentToken(); + enterRecursionRule(localctx, state, ruleIndex, precedence) { + this.state = state; + this._precedenceStack.push(precedence); + this._ctx = localctx; + this._ctx._start = this._input.LT(1); + this.triggerEnterRuleEvent(); } - this._syntaxErrors += 1; - const line = offendingToken.line; - const column = offendingToken.column; - const listener = this.getErrorListenerDispatch(); - listener.syntaxError(this, offendingToken, line, column, msg, err); - } - consume() { - const o = this.getCurrentToken(); - if (o.type !== Token2.EOF) { - this.getInputStream().consume(); + pushNewRecursionContext(localctx, state, ruleIndex) { + let previous = this._ctx; + previous._parent = localctx; + previous.invokingState = state; + previous._stop = this._input.tryLT(-1); + this._ctx = localctx; + this._ctx._start = previous._start; + if (this._buildParseTrees) { + this._ctx.addChild(previous); + } + this.triggerEnterRuleEvent(); } - const hasListener = this._parseListeners !== null && this._parseListeners.length > 0; - if (this.buildParseTrees || hasListener) { - let node; - if (this._errHandler.inErrorRecoveryMode(this)) { - node = this._ctx.addErrorNode(o); + unrollRecursionContexts(_parentctx) { + this._precedenceStack.pop(); + this._ctx._stop = this._input.tryLT(-1); + let retctx = this._ctx; + if (this._parseListeners.length > 0) { + while (this._ctx !== _parentctx) { + this.triggerExitRuleEvent(); + this._ctx = this._ctx._parent; + } } else { - node = this._ctx.addTokenNode(o); + this._ctx = _parentctx; } - node.invokingState = this.state; - if (hasListener) { - this._parseListeners.map(function(listener) { - if (node instanceof ErrorNode2 || node.isErrorNode !== void 0 && node.isErrorNode()) { - listener.visitErrorNode(node); - } else if (node instanceof TerminalNode) { - listener.visitTerminal(node); - } - }); + retctx._parent = _parentctx; + if (this._buildParseTrees && _parentctx != null) { + _parentctx.addChild(retctx); } } - return o; - } - addContextToParseTree() { - if (this._ctx.parentCtx !== null) { - this._ctx.parentCtx.addChild(this._ctx); + getInvokingContext(ruleIndex) { + let p = this._ctx; + while (p && p.ruleIndex !== ruleIndex) { + p = p._parent; + } + return p; } - } - enterRule(localctx, state, ruleIndex) { - this.state = state; - this._ctx = localctx; - this._ctx.start = this._input.LT(1); - if (this.buildParseTrees) { - this.addContextToParseTree(); + get context() { + return this._ctx; } - if (this._parseListeners !== null) { - this.triggerEnterRuleEvent(); + set context(ctx) { + this._ctx = ctx; } - } - exitRule() { - this._ctx.stop = this._input.LT(-1); - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); + precpred(localctx, precedence) { + return precedence >= this._precedenceStack.peek(); } - this.state = this._ctx.invokingState; - this._ctx = this._ctx.parentCtx; - } - enterOuterAlt(localctx, altNum) { - localctx.setAltNumber(altNum); - if (this.buildParseTrees && this._ctx !== localctx) { - if (this._ctx.parentCtx !== null) { - this._ctx.parentCtx.removeLastChild(); - this._ctx.parentCtx.addChild(localctx); - } + getErrorListenerDispatch() { + return new ProxyParserErrorListener_1.ProxyParserErrorListener(this.getErrorListeners()); } - this._ctx = localctx; - } - getPrecedence() { - if (this._precedenceStack.length === 0) { - return -1; - } else { - return this._precedenceStack[this._precedenceStack.length - 1]; + inContext(context) { + return false; } - } - enterRecursionRule(localctx, state, ruleIndex, precedence) { - this.state = state; - this._precedenceStack.push(precedence); - this._ctx = localctx; - this._ctx.start = this._input.LT(1); - if (this._parseListeners !== null) { - this.triggerEnterRuleEvent(); + isExpectedToken(symbol) { + let atn = this.interpreter.atn; + let ctx = this._ctx; + let s = atn.states[this.state]; + let following = atn.nextTokens(s); + if (following.contains(symbol)) { + return true; + } + if (!following.contains(Token_1.Token.EPSILON)) { + return false; + } + while (ctx != null && ctx.invokingState >= 0 && following.contains(Token_1.Token.EPSILON)) { + let invokingState = atn.states[ctx.invokingState]; + let rt = invokingState.transition(0); + following = atn.nextTokens(rt.followState); + if (following.contains(symbol)) { + return true; + } + ctx = ctx._parent; + } + if (following.contains(Token_1.Token.EPSILON) && symbol === Token_1.Token.EOF) { + return true; + } + return false; } - } - pushNewRecursionContext(localctx, state, ruleIndex) { - const previous = this._ctx; - previous.parentCtx = localctx; - previous.invokingState = state; - previous.stop = this._input.LT(-1); - this._ctx = localctx; - this._ctx.start = previous.start; - if (this.buildParseTrees) { - this._ctx.addChild(previous); + get isMatchedEOF() { + return this.matchedEOF; } - if (this._parseListeners !== null) { - this.triggerEnterRuleEvent(); + getExpectedTokens() { + return this.atn.getExpectedTokens(this.state, this.context); } - } - unrollRecursionContexts(parentCtx) { - this._precedenceStack.pop(); - this._ctx.stop = this._input.LT(-1); - const retCtx = this._ctx; - if (this._parseListeners !== null) { - while (this._ctx !== parentCtx) { - this.triggerExitRuleEvent(); - this._ctx = this._ctx.parentCtx; + getExpectedTokensWithinCurrentRule() { + let atn = this.interpreter.atn; + let s = atn.states[this.state]; + return atn.nextTokens(s); + } + getRuleIndex(ruleName) { + let ruleIndex = this.getRuleIndexMap().get(ruleName); + if (ruleIndex != null) { + return ruleIndex; } - } else { - this._ctx = parentCtx; + return -1; } - retCtx.parentCtx = parentCtx; - if (this.buildParseTrees && parentCtx !== null) { - parentCtx.addChild(retCtx); + get ruleContext() { + return this._ctx; } - } - getInvokingContext(ruleIndex) { - let ctx = this._ctx; - while (ctx !== null) { - if (ctx.ruleIndex === ruleIndex) { - return ctx; + getRuleInvocationStack(ctx = this._ctx) { + let p = ctx; + let ruleNames = this.ruleNames; + let stack = []; + while (p != null) { + let ruleIndex = p.ruleIndex; + if (ruleIndex < 0) { + stack.push("n/a"); + } else { + stack.push(ruleNames[ruleIndex]); + } + p = p._parent; } - ctx = ctx.parentCtx; - } - return null; - } - precpred(localctx, precedence) { - return precedence >= this._precedenceStack[this._precedenceStack.length - 1]; - } - inContext(context) { - return false; - } - isExpectedToken(symbol) { - const atn = this._interp.atn; - let ctx = this._ctx; - const s = atn.states[this.state]; - let following = atn.nextTokens(s); - if (following.contains(symbol)) { - return true; + return stack; } - if (!following.contains(Token2.EPSILON)) { - return false; + getDFAStrings() { + let s = []; + for (let dfa of this._interp.atn.decisionToDFA) { + s.push(dfa.toString(this.vocabulary, this.ruleNames)); + } + return s; } - while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token2.EPSILON)) { - const invokingState = atn.states[ctx.invokingState]; - const rt = invokingState.transitions[0]; - following = atn.nextTokens(rt.followState); - if (following.contains(symbol)) { - return true; + dumpDFA() { + let seenOne = false; + for (let dfa of this._interp.atn.decisionToDFA) { + if (!dfa.isEmpty) { + if (seenOne) { + console.log(); + } + console.log("Decision " + dfa.decision + ":"); + process.stdout.write(dfa.toString(this.vocabulary, this.ruleNames)); + seenOne = true; + } } - ctx = ctx.parentCtx; } - if (following.contains(Token2.EPSILON) && symbol === Token2.EOF) { - return true; - } else { - return false; + get sourceName() { + return this._input.sourceName; } - } - getExpectedTokens() { - return this._interp.atn.getExpectedTokens(this.state, this._ctx); - } - getExpectedTokensWithinCurrentRule() { - const atn = this._interp.atn; - const s = atn.states[this.state]; - return atn.nextTokens(s); - } - getRuleIndex(ruleName) { - const ruleIndex = this.getRuleIndexMap()[ruleName]; - if (ruleIndex !== null) { - return ruleIndex; - } else { - return -1; + get parseInfo() { + return Promise.resolve().then(() => require_ProfilingATNSimulator()).then((m) => { + let interp = this.interpreter; + if (interp instanceof m.ProfilingATNSimulator) { + return new ParseInfo_1.ParseInfo(interp); + } + return void 0; + }); } - } - getRuleInvocationStack(p) { - p = p || null; - if (p === null) { - p = this._ctx; + setProfile(profile) { + return __awaiter(this, void 0, void 0, function* () { + let m = yield Promise.resolve().then(() => require_ProfilingATNSimulator()); + let interp = this.interpreter; + if (profile) { + if (!(interp instanceof m.ProfilingATNSimulator)) { + this.interpreter = new m.ProfilingATNSimulator(this); + } + } else if (interp instanceof m.ProfilingATNSimulator) { + this.interpreter = new ParserATNSimulator_1.ParserATNSimulator(this.atn, this); + } + this.interpreter.setPredictionMode(interp.getPredictionMode()); + }); } - const stack = []; - while (p !== null) { - const ruleIndex = p.ruleIndex; - if (ruleIndex < 0) { - stack.push("n/a"); + set isTrace(trace) { + if (!trace) { + if (this._tracer) { + this.removeParseListener(this._tracer); + this._tracer = void 0; + } } else { - stack.push(this.ruleNames[ruleIndex]); - } - p = p.parentCtx; - } - return stack; - } - getDFAStrings() { - return this._interp.decisionToDFA.toString(); - } - dumpDFA() { - let seenOne = false; - for (let i = 0; i < this._interp.decisionToDFA.length; i++) { - const dfa = this._interp.decisionToDFA[i]; - if (dfa.states.length > 0) { - if (seenOne) { - console.log(); + if (this._tracer) { + this.removeParseListener(this._tracer); + } else { + this._tracer = new TraceListener2(this.ruleNames, this._input); } - this.printer.println("Decision " + dfa.decision + ":"); - this.printer.print(dfa.toString(this.literalNames, this.symbolicNames)); - seenOne = true; + this.addParseListener(this._tracer); } } - } - getSourceName() { - return this._input.sourceName; - } - setTrace(trace) { - if (!trace) { - this.removeParseListener(this._tracer); - this._tracer = null; - } else { - if (this._tracer !== null) { - this.removeParseListener(this._tracer); - } - this._tracer = new TraceListener(this); - this.addParseListener(this._tracer); + get isTrace() { + return this._tracer != null; } - } - }; - Parser2.bypassAltsAtnCache = {}; - module.exports = Parser2; + }; + Parser3.bypassAltsAtnCache = new Map(); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "_errHandler", void 0); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "match", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "matchWildcard", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "getParseListeners", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], Parser3.prototype, "addParseListener", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "getATNWithBypassAlts", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], Parser3.prototype, "errorHandler", null); + __decorate([ + Decorators_1.Override + ], Parser3.prototype, "inputStream", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "currentToken", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], Parser3.prototype, "enterRule", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.Nullable) + ], Parser3.prototype, "precpred", null); + __decorate([ + Decorators_1.Override + ], Parser3.prototype, "getErrorListenerDispatch", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "getExpectedTokens", null); + __decorate([ + Decorators_1.NotNull + ], Parser3.prototype, "getExpectedTokensWithinCurrentRule", null); + __decorate([ + Decorators_1.Override + ], Parser3.prototype, "parseInfo", null); + exports.Parser = Parser3; + } }); - // node_modules/antlr4/src/antlr4/index.js - var require_antlr4 = __commonJS((exports) => { - init_process_shim(); - exports.atn = require_atn(); - exports.codepointat = require_codepointat(); - exports.dfa = require_dfa(); - exports.fromcodepoint = require_fromcodepoint(); - exports.tree = require_tree(); - exports.error = require_error(); - exports.Token = require_Token2().Token; - exports.CharStreams = require_CharStreams2(); - exports.CommonToken = require_Token2().CommonToken; - exports.InputStream = require_InputStream(); - exports.FileStream = require_FileStream(); - exports.CommonTokenStream = require_CommonTokenStream2(); - exports.Lexer = require_Lexer2(); - exports.Parser = require_Parser2(); - var pc = require_PredictionContext2(); - exports.PredictionContextCache = pc.PredictionContextCache; - exports.ParserRuleContext = require_ParserRuleContext2(); - exports.Interval = require_IntervalSet2().Interval; - exports.IntervalSet = require_IntervalSet2().IntervalSet; - exports.Utils = require_Utils2(); - exports.LL1Analyzer = require_LL1Analyzer2().LL1Analyzer; + // node_modules/antlr4ts/NoViableAltException.js + var require_NoViableAltException = __commonJS({ + "node_modules/antlr4ts/NoViableAltException.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.NoViableAltException = void 0; + var Parser_1 = require_Parser(); + var RecognitionException_1 = require_RecognitionException(); + var Decorators_1 = require_Decorators(); + var NoViableAltException3 = class extends RecognitionException_1.RecognitionException { + constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) { + if (recognizer instanceof Parser_1.Parser) { + if (input === void 0) { + input = recognizer.inputStream; + } + if (startToken === void 0) { + startToken = recognizer.currentToken; + } + if (offendingToken === void 0) { + offendingToken = recognizer.currentToken; + } + if (ctx === void 0) { + ctx = recognizer.context; + } + } + super(recognizer, input, ctx); + this._deadEndConfigs = deadEndConfigs; + this._startToken = startToken; + this.setOffendingToken(recognizer, offendingToken); + } + get startToken() { + return this._startToken; + } + get deadEndConfigs() { + return this._deadEndConfigs; + } + }; + __decorate([ + Decorators_1.NotNull + ], NoViableAltException3.prototype, "_startToken", void 0); + exports.NoViableAltException = NoViableAltException3; + } }); - // src/antlr/Solidity.tokens - var require_Solidity = __commonJS((exports, module) => { - module.exports = "./Solidity-EZVQ6AE4.tokens"; + // node_modules/antlr4ts/DefaultErrorStrategy.js + var require_DefaultErrorStrategy = __commonJS({ + "node_modules/antlr4ts/DefaultErrorStrategy.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DefaultErrorStrategy = void 0; + var ATNState_1 = require_ATNState(); + var ATNStateType_1 = require_ATNStateType(); + var FailedPredicateException_1 = require_FailedPredicateException(); + var InputMismatchException_1 = require_InputMismatchException(); + var IntervalSet_1 = require_IntervalSet(); + var NoViableAltException_1 = require_NoViableAltException(); + var PredictionContext_1 = require_PredictionContext(); + var Token_1 = require_Token(); + var Decorators_1 = require_Decorators(); + var DefaultErrorStrategy2 = class { + constructor() { + this.errorRecoveryMode = false; + this.lastErrorIndex = -1; + this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER; + } + reset(recognizer) { + this.endErrorCondition(recognizer); + } + beginErrorCondition(recognizer) { + this.errorRecoveryMode = true; + } + inErrorRecoveryMode(recognizer) { + return this.errorRecoveryMode; + } + endErrorCondition(recognizer) { + this.errorRecoveryMode = false; + this.lastErrorStates = void 0; + this.lastErrorIndex = -1; + } + reportMatch(recognizer) { + this.endErrorCondition(recognizer); + } + reportError(recognizer, e) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + this.beginErrorCondition(recognizer); + if (e instanceof NoViableAltException_1.NoViableAltException) { + this.reportNoViableAlternative(recognizer, e); + } else if (e instanceof InputMismatchException_1.InputMismatchException) { + this.reportInputMismatch(recognizer, e); + } else if (e instanceof FailedPredicateException_1.FailedPredicateException) { + this.reportFailedPredicate(recognizer, e); + } else { + console.error(`unknown recognition error type: ${e}`); + this.notifyErrorListeners(recognizer, e.toString(), e); + } + } + notifyErrorListeners(recognizer, message, e) { + let offendingToken = e.getOffendingToken(recognizer); + if (offendingToken === void 0) { + offendingToken = null; + } + recognizer.notifyErrorListeners(message, offendingToken, e); + } + recover(recognizer, e) { + if (this.lastErrorIndex === recognizer.inputStream.index && this.lastErrorStates && this.lastErrorStates.contains(recognizer.state)) { + recognizer.consume(); + } + this.lastErrorIndex = recognizer.inputStream.index; + if (!this.lastErrorStates) { + this.lastErrorStates = new IntervalSet_1.IntervalSet(); + } + this.lastErrorStates.add(recognizer.state); + let followSet = this.getErrorRecoverySet(recognizer); + this.consumeUntil(recognizer, followSet); + } + sync(recognizer) { + let s = recognizer.interpreter.atn.states[recognizer.state]; + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + let tokens2 = recognizer.inputStream; + let la = tokens2.LA(1); + let nextTokens = recognizer.atn.nextTokens(s); + if (nextTokens.contains(la)) { + this.nextTokensContext = void 0; + this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER; + return; + } + if (nextTokens.contains(Token_1.Token.EPSILON)) { + if (this.nextTokensContext === void 0) { + this.nextTokensContext = recognizer.context; + this.nextTokensState = recognizer.state; + } + return; + } + switch (s.stateType) { + case ATNStateType_1.ATNStateType.BLOCK_START: + case ATNStateType_1.ATNStateType.STAR_BLOCK_START: + case ATNStateType_1.ATNStateType.PLUS_BLOCK_START: + case ATNStateType_1.ATNStateType.STAR_LOOP_ENTRY: + if (this.singleTokenDeletion(recognizer)) { + return; + } + throw new InputMismatchException_1.InputMismatchException(recognizer); + case ATNStateType_1.ATNStateType.PLUS_LOOP_BACK: + case ATNStateType_1.ATNStateType.STAR_LOOP_BACK: + this.reportUnwantedToken(recognizer); + let expecting = recognizer.getExpectedTokens(); + let whatFollowsLoopIterationOrRule = expecting.or(this.getErrorRecoverySet(recognizer)); + this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule); + break; + default: + break; + } + } + reportNoViableAlternative(recognizer, e) { + let tokens2 = recognizer.inputStream; + let input; + if (tokens2) { + if (e.startToken.type === Token_1.Token.EOF) { + input = ""; + } else { + input = tokens2.getTextFromRange(e.startToken, e.getOffendingToken()); + } + } else { + input = ""; + } + let msg = "no viable alternative at input " + this.escapeWSAndQuote(input); + this.notifyErrorListeners(recognizer, msg, e); + } + reportInputMismatch(recognizer, e) { + let expected = e.expectedTokens; + let expectedString = expected ? expected.toStringVocabulary(recognizer.vocabulary) : ""; + let msg = "mismatched input " + this.getTokenErrorDisplay(e.getOffendingToken(recognizer)) + " expecting " + expectedString; + this.notifyErrorListeners(recognizer, msg, e); + } + reportFailedPredicate(recognizer, e) { + let ruleName = recognizer.ruleNames[recognizer.context.ruleIndex]; + let msg = "rule " + ruleName + " " + e.message; + this.notifyErrorListeners(recognizer, msg, e); + } + reportUnwantedToken(recognizer) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + this.beginErrorCondition(recognizer); + let t = recognizer.currentToken; + let tokenName = this.getTokenErrorDisplay(t); + let expecting = this.getExpectedTokens(recognizer); + let msg = "extraneous input " + tokenName + " expecting " + expecting.toStringVocabulary(recognizer.vocabulary); + recognizer.notifyErrorListeners(msg, t, void 0); + } + reportMissingToken(recognizer) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + this.beginErrorCondition(recognizer); + let t = recognizer.currentToken; + let expecting = this.getExpectedTokens(recognizer); + let msg = "missing " + expecting.toStringVocabulary(recognizer.vocabulary) + " at " + this.getTokenErrorDisplay(t); + recognizer.notifyErrorListeners(msg, t, void 0); + } + recoverInline(recognizer) { + let matchedSymbol = this.singleTokenDeletion(recognizer); + if (matchedSymbol) { + recognizer.consume(); + return matchedSymbol; + } + if (this.singleTokenInsertion(recognizer)) { + return this.getMissingSymbol(recognizer); + } + if (this.nextTokensContext === void 0) { + throw new InputMismatchException_1.InputMismatchException(recognizer); + } else { + throw new InputMismatchException_1.InputMismatchException(recognizer, this.nextTokensState, this.nextTokensContext); + } + } + singleTokenInsertion(recognizer) { + let currentSymbolType = recognizer.inputStream.LA(1); + let currentState = recognizer.interpreter.atn.states[recognizer.state]; + let next = currentState.transition(0).target; + let atn = recognizer.interpreter.atn; + let expectingAtLL2 = atn.nextTokens(next, PredictionContext_1.PredictionContext.fromRuleContext(atn, recognizer.context)); + if (expectingAtLL2.contains(currentSymbolType)) { + this.reportMissingToken(recognizer); + return true; + } + return false; + } + singleTokenDeletion(recognizer) { + let nextTokenType = recognizer.inputStream.LA(2); + let expecting = this.getExpectedTokens(recognizer); + if (expecting.contains(nextTokenType)) { + this.reportUnwantedToken(recognizer); + recognizer.consume(); + let matchedSymbol = recognizer.currentToken; + this.reportMatch(recognizer); + return matchedSymbol; + } + return void 0; + } + getMissingSymbol(recognizer) { + let currentSymbol = recognizer.currentToken; + let expecting = this.getExpectedTokens(recognizer); + let expectedTokenType = Token_1.Token.INVALID_TYPE; + if (!expecting.isNil) { + expectedTokenType = expecting.minElement; + } + let tokenText; + if (expectedTokenType === Token_1.Token.EOF) { + tokenText = ""; + } else { + tokenText = ""; + } + let current = currentSymbol; + let lookback = recognizer.inputStream.tryLT(-1); + if (current.type === Token_1.Token.EOF && lookback != null) { + current = lookback; + } + return this.constructToken(recognizer.inputStream.tokenSource, expectedTokenType, tokenText, current); + } + constructToken(tokenSource, expectedTokenType, tokenText, current) { + let factory = tokenSource.tokenFactory; + let x = current.tokenSource; + let stream = x ? x.inputStream : void 0; + return factory.create({source: tokenSource, stream}, expectedTokenType, tokenText, Token_1.Token.DEFAULT_CHANNEL, -1, -1, current.line, current.charPositionInLine); + } + getExpectedTokens(recognizer) { + return recognizer.getExpectedTokens(); + } + getTokenErrorDisplay(t) { + if (!t) { + return ""; + } + let s = this.getSymbolText(t); + if (!s) { + if (this.getSymbolType(t) === Token_1.Token.EOF) { + s = ""; + } else { + s = `<${this.getSymbolType(t)}>`; + } + } + return this.escapeWSAndQuote(s); + } + getSymbolText(symbol) { + return symbol.text; + } + getSymbolType(symbol) { + return symbol.type; + } + escapeWSAndQuote(s) { + s = s.replace("\n", "\\n"); + s = s.replace("\r", "\\r"); + s = s.replace(" ", "\\t"); + return "'" + s + "'"; + } + getErrorRecoverySet(recognizer) { + let atn = recognizer.interpreter.atn; + let ctx = recognizer.context; + let recoverSet = new IntervalSet_1.IntervalSet(); + while (ctx && ctx.invokingState >= 0) { + let invokingState = atn.states[ctx.invokingState]; + let rt = invokingState.transition(0); + let follow = atn.nextTokens(rt.followState); + recoverSet.addAll(follow); + ctx = ctx._parent; + } + recoverSet.remove(Token_1.Token.EPSILON); + return recoverSet; + } + consumeUntil(recognizer, set) { + let ttype = recognizer.inputStream.LA(1); + while (ttype !== Token_1.Token.EOF && !set.contains(ttype)) { + recognizer.consume(); + ttype = recognizer.inputStream.LA(1); + } + } + }; + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "reset", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "beginErrorCondition", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "inErrorRecoveryMode", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "endErrorCondition", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "reportMatch", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "reportError", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "notifyErrorListeners", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "recover", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "sync", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "reportNoViableAlternative", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "reportInputMismatch", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "reportFailedPredicate", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "reportUnwantedToken", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "reportMissingToken", null); + __decorate([ + Decorators_1.Override + ], DefaultErrorStrategy2.prototype, "recoverInline", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "singleTokenInsertion", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "singleTokenDeletion", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "getMissingSymbol", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "getExpectedTokens", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "getSymbolText", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "getSymbolType", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "escapeWSAndQuote", null); + __decorate([ + Decorators_1.NotNull, + __param(0, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "getErrorRecoverySet", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], DefaultErrorStrategy2.prototype, "consumeUntil", null); + exports.DefaultErrorStrategy = DefaultErrorStrategy2; + } }); - // src/tokens-string.js - var require_tokens_string = __commonJS((exports, module) => { - init_process_shim(); - if (true) { - module.exports = require_Solidity(); - } else { - module.exports = null.readFileSync(null.join(true, "./antlr/Solidity.tokens")).toString(); + // node_modules/antlr4ts/BailErrorStrategy.js + var require_BailErrorStrategy = __commonJS({ + "node_modules/antlr4ts/BailErrorStrategy.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.BailErrorStrategy = void 0; + var DefaultErrorStrategy_1 = require_DefaultErrorStrategy(); + var InputMismatchException_1 = require_InputMismatchException(); + var Decorators_1 = require_Decorators(); + var ParseCancellationException_1 = require_ParseCancellationException(); + var BailErrorStrategy2 = class extends DefaultErrorStrategy_1.DefaultErrorStrategy { + recover(recognizer, e) { + for (let context = recognizer.context; context; context = context.parent) { + context.exception = e; + } + throw new ParseCancellationException_1.ParseCancellationException(e); + } + recoverInline(recognizer) { + let e = new InputMismatchException_1.InputMismatchException(recognizer); + for (let context = recognizer.context; context; context = context.parent) { + context.exception = e; + } + throw new ParseCancellationException_1.ParseCancellationException(e); + } + sync(recognizer) { + } + }; + __decorate([ + Decorators_1.Override + ], BailErrorStrategy2.prototype, "recover", null); + __decorate([ + Decorators_1.Override + ], BailErrorStrategy2.prototype, "recoverInline", null); + __decorate([ + Decorators_1.Override + ], BailErrorStrategy2.prototype, "sync", null); + exports.BailErrorStrategy = BailErrorStrategy2; } }); - // src/index.ts - var src_exports = {}; - __export(src_exports, { - ParserError: () => ParserError, - parse: () => parse, - tokenize: () => tokenize, - visit: () => visit + // node_modules/antlr4ts/CharStream.js + var require_CharStream = __commonJS({ + "node_modules/antlr4ts/CharStream.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } }); - init_process_shim(); - // src/parser.ts - init_process_shim(); - var import_antlr4ts = __toModule(require_antlr4ts()); + // node_modules/antlr4ts/Dependents.js + var require_Dependents = __commonJS({ + "node_modules/antlr4ts/Dependents.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.Dependents = void 0; + var Dependents; + (function(Dependents2) { + Dependents2[Dependents2["SELF"] = 0] = "SELF"; + Dependents2[Dependents2["PARENTS"] = 1] = "PARENTS"; + Dependents2[Dependents2["CHILDREN"] = 2] = "CHILDREN"; + Dependents2[Dependents2["ANCESTORS"] = 3] = "ANCESTORS"; + Dependents2[Dependents2["DESCENDANTS"] = 4] = "DESCENDANTS"; + Dependents2[Dependents2["SIBLINGS"] = 5] = "SIBLINGS"; + Dependents2[Dependents2["PRECEEDING_SIBLINGS"] = 6] = "PRECEEDING_SIBLINGS"; + Dependents2[Dependents2["FOLLOWING_SIBLINGS"] = 7] = "FOLLOWING_SIBLINGS"; + Dependents2[Dependents2["PRECEEDING"] = 8] = "PRECEEDING"; + Dependents2[Dependents2["FOLLOWING"] = 9] = "FOLLOWING"; + })(Dependents = exports.Dependents || (exports.Dependents = {})); + } + }); - // src/antlr/SolidityLexer.ts - init_process_shim(); - var import_ATNDeserializer = __toModule(require_ATNDeserializer()); - var import_Lexer = __toModule(require_Lexer()); - var import_LexerATNSimulator = __toModule(require_LexerATNSimulator()); - var import_VocabularyImpl = __toModule(require_VocabularyImpl()); - var Utils = __toModule(require_Utils()); - var _SolidityLexer = class extends import_Lexer.Lexer { - get vocabulary() { - return _SolidityLexer.VOCABULARY; + // node_modules/antlr4ts/DiagnosticErrorListener.js + var require_DiagnosticErrorListener = __commonJS({ + "node_modules/antlr4ts/DiagnosticErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.DiagnosticErrorListener = void 0; + var BitSet_1 = require_BitSet(); + var Decorators_1 = require_Decorators(); + var Interval_1 = require_Interval(); + var DiagnosticErrorListener2 = class { + constructor(exactOnly = true) { + this.exactOnly = exactOnly; + this.exactOnly = exactOnly; + } + syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { + } + reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { + if (this.exactOnly && !exact) { + return; + } + let decision = this.getDecisionDescription(recognizer, dfa); + let conflictingAlts = this.getConflictingAlts(ambigAlts, configs); + let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); + let message = `reportAmbiguity d=${decision}: ambigAlts=${conflictingAlts}, input='${text}'`; + recognizer.notifyErrorListeners(message); + } + reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, conflictState) { + let format = "reportAttemptingFullContext d=%s, input='%s'"; + let decision = this.getDecisionDescription(recognizer, dfa); + let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); + let message = `reportAttemptingFullContext d=${decision}, input='${text}'`; + recognizer.notifyErrorListeners(message); + } + reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, acceptState) { + let format = "reportContextSensitivity d=%s, input='%s'"; + let decision = this.getDecisionDescription(recognizer, dfa); + let text = recognizer.inputStream.getText(Interval_1.Interval.of(startIndex, stopIndex)); + let message = `reportContextSensitivity d=${decision}, input='${text}'`; + recognizer.notifyErrorListeners(message); + } + getDecisionDescription(recognizer, dfa) { + let decision = dfa.decision; + let ruleIndex = dfa.atnStartState.ruleIndex; + let ruleNames = recognizer.ruleNames; + if (ruleIndex < 0 || ruleIndex >= ruleNames.length) { + return decision.toString(); + } + let ruleName = ruleNames[ruleIndex]; + if (!ruleName) { + return decision.toString(); + } + return `${decision} (${ruleName})`; + } + getConflictingAlts(reportedAlts, configs) { + if (reportedAlts != null) { + return reportedAlts; + } + let result = new BitSet_1.BitSet(); + for (let config of configs) { + result.set(config.alt); + } + return result; + } + }; + __decorate([ + Decorators_1.Override + ], DiagnosticErrorListener2.prototype, "syntaxError", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(6, Decorators_1.NotNull) + ], DiagnosticErrorListener2.prototype, "reportAmbiguity", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull) + ], DiagnosticErrorListener2.prototype, "reportAttemptingFullContext", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull), + __param(5, Decorators_1.NotNull) + ], DiagnosticErrorListener2.prototype, "reportContextSensitivity", null); + __decorate([ + __param(0, Decorators_1.NotNull), + __param(1, Decorators_1.NotNull) + ], DiagnosticErrorListener2.prototype, "getDecisionDescription", null); + __decorate([ + Decorators_1.NotNull, + __param(1, Decorators_1.NotNull) + ], DiagnosticErrorListener2.prototype, "getConflictingAlts", null); + exports.DiagnosticErrorListener = DiagnosticErrorListener2; } - constructor(input) { - super(input); - this._interp = new import_LexerATNSimulator.LexerATNSimulator(_SolidityLexer._ATN, this); + }); + + // node_modules/antlr4ts/LexerInterpreter.js + var require_LexerInterpreter = __commonJS({ + "node_modules/antlr4ts/LexerInterpreter.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.LexerInterpreter = void 0; + var Lexer_1 = require_Lexer(); + var LexerATNSimulator_1 = require_LexerATNSimulator(); + var Decorators_1 = require_Decorators(); + var Decorators_2 = require_Decorators(); + var LexerInterpreter = class LexerInterpreter extends Lexer_1.Lexer { + constructor(grammarFileName, vocabulary, ruleNames, channelNames, modeNames, atn, input) { + super(input); + if (atn.grammarType !== 0) { + throw new Error("IllegalArgumentException: The ATN must be a lexer ATN."); + } + this._grammarFileName = grammarFileName; + this._atn = atn; + this._ruleNames = ruleNames.slice(0); + this._channelNames = channelNames.slice(0); + this._modeNames = modeNames.slice(0); + this._vocabulary = vocabulary; + this._interp = new LexerATNSimulator_1.LexerATNSimulator(atn, this); + } + get atn() { + return this._atn; + } + get grammarFileName() { + return this._grammarFileName; + } + get ruleNames() { + return this._ruleNames; + } + get channelNames() { + return this._channelNames; + } + get modeNames() { + return this._modeNames; + } + get vocabulary() { + return this._vocabulary; + } + }; + __decorate([ + Decorators_1.NotNull + ], LexerInterpreter.prototype, "_vocabulary", void 0); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "atn", null); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "grammarFileName", null); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "ruleNames", null); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "channelNames", null); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "modeNames", null); + __decorate([ + Decorators_2.Override + ], LexerInterpreter.prototype, "vocabulary", null); + LexerInterpreter = __decorate([ + __param(1, Decorators_1.NotNull) + ], LexerInterpreter); + exports.LexerInterpreter = LexerInterpreter; } - get grammarFileName() { - return "Solidity.g4"; + }); + + // node_modules/antlr4ts/ParserErrorListener.js + var require_ParserErrorListener = __commonJS({ + "node_modules/antlr4ts/ParserErrorListener.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); } - get ruleNames() { - return _SolidityLexer.ruleNames; + }); + + // node_modules/antlr4ts/RuleContextWithAltNum.js + var require_RuleContextWithAltNum = __commonJS({ + "node_modules/antlr4ts/RuleContextWithAltNum.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleContextWithAltNum = void 0; + var ATN_1 = require_ATN(); + var Decorators_1 = require_Decorators(); + var ParserRuleContext_1 = require_ParserRuleContext(); + var RuleContextWithAltNum = class extends ParserRuleContext_1.ParserRuleContext { + constructor(parent, invokingStateNumber) { + if (invokingStateNumber !== void 0) { + super(parent, invokingStateNumber); + } else { + super(); + } + this._altNumber = ATN_1.ATN.INVALID_ALT_NUMBER; + } + get altNumber() { + return this._altNumber; + } + set altNumber(altNum) { + this._altNumber = altNum; + } + }; + __decorate([ + Decorators_1.Override + ], RuleContextWithAltNum.prototype, "altNumber", null); + exports.RuleContextWithAltNum = RuleContextWithAltNum; } - get serializedATN() { - return _SolidityLexer._serializedATN; + }); + + // node_modules/antlr4ts/RuleDependency.js + var require_RuleDependency = __commonJS({ + "node_modules/antlr4ts/RuleDependency.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleDependency = void 0; + function RuleDependency(dependency) { + return (target, propertyKey, propertyDescriptor) => { + }; + } + exports.RuleDependency = RuleDependency; } - get channelNames() { - return _SolidityLexer.channelNames; + }); + + // node_modules/antlr4ts/RuleVersion.js + var require_RuleVersion = __commonJS({ + "node_modules/antlr4ts/RuleVersion.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RuleVersion = void 0; + function RuleVersion(version) { + return (target, propertyKey, propertyDescriptor) => { + }; + } + exports.RuleVersion = RuleVersion; } - get modeNames() { - return _SolidityLexer.modeNames; + }); + + // node_modules/antlr4ts/TokenFactory.js + var require_TokenFactory = __commonJS({ + "node_modules/antlr4ts/TokenFactory.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); } - static get _ATN() { - if (!_SolidityLexer.__ATN) { - _SolidityLexer.__ATN = new import_ATNDeserializer.ATNDeserializer().deserialize(Utils.toCharArray(_SolidityLexer._serializedATN)); + }); + + // node_modules/antlr4ts/TokenSource.js + var require_TokenSource = __commonJS({ + "node_modules/antlr4ts/TokenSource.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } + }); + + // node_modules/antlr4ts/TokenStream.js + var require_TokenStream = __commonJS({ + "node_modules/antlr4ts/TokenStream.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } + }); + + // node_modules/antlr4ts/TokenStreamRewriter.js + var require_TokenStreamRewriter = __commonJS({ + "node_modules/antlr4ts/TokenStreamRewriter.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.RewriteOperation = exports.TokenStreamRewriter = void 0; + var Interval_1 = require_Interval(); + var Decorators_1 = require_Decorators(); + var Token_1 = require_Token(); + var TokenStreamRewriter = class { + constructor(tokens2) { + this.tokens = tokens2; + this.programs = new Map(); + this.programs.set(TokenStreamRewriter.DEFAULT_PROGRAM_NAME, []); + this.lastRewriteTokenIndexes = new Map(); + } + getTokenStream() { + return this.tokens; + } + rollback(instructionIndex, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + let is = this.programs.get(programName); + if (is != null) { + this.programs.set(programName, is.slice(TokenStreamRewriter.MIN_TOKEN_INDEX, instructionIndex)); + } + } + deleteProgram(programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + this.rollback(TokenStreamRewriter.MIN_TOKEN_INDEX, programName); + } + insertAfter(tokenOrIndex, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + let index; + if (typeof tokenOrIndex === "number") { + index = tokenOrIndex; + } else { + index = tokenOrIndex.tokenIndex; + } + let rewrites = this.getProgram(programName); + let op = new InsertAfterOp(this.tokens, index, rewrites.length, text); + rewrites.push(op); + } + insertBefore(tokenOrIndex, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + let index; + if (typeof tokenOrIndex === "number") { + index = tokenOrIndex; + } else { + index = tokenOrIndex.tokenIndex; + } + let rewrites = this.getProgram(programName); + let op = new InsertBeforeOp(this.tokens, index, rewrites.length, text); + rewrites.push(op); + } + replaceSingle(index, text) { + if (typeof index === "number") { + this.replace(index, index, text); + } else { + this.replace(index, index, text); + } + } + replace(from, to, text, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + if (typeof from !== "number") { + from = from.tokenIndex; + } + if (typeof to !== "number") { + to = to.tokenIndex; + } + if (from > to || from < 0 || to < 0 || to >= this.tokens.size) { + throw new RangeError(`replace: range invalid: ${from}..${to}(size=${this.tokens.size})`); + } + let rewrites = this.getProgram(programName); + let op = new ReplaceOp(this.tokens, from, to, rewrites.length, text); + rewrites.push(op); + } + delete(from, to, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + if (to === void 0) { + to = from; + } + if (typeof from === "number") { + this.replace(from, to, "", programName); + } else { + this.replace(from, to, "", programName); + } + } + getLastRewriteTokenIndex(programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + let I = this.lastRewriteTokenIndexes.get(programName); + if (I == null) { + return -1; + } + return I; + } + setLastRewriteTokenIndex(programName, i) { + this.lastRewriteTokenIndexes.set(programName, i); + } + getProgram(name) { + let is = this.programs.get(name); + if (is == null) { + is = this.initializeProgram(name); + } + return is; + } + initializeProgram(name) { + let is = []; + this.programs.set(name, is); + return is; + } + getText(intervalOrProgram, programName = TokenStreamRewriter.DEFAULT_PROGRAM_NAME) { + let interval; + if (intervalOrProgram instanceof Interval_1.Interval) { + interval = intervalOrProgram; + } else { + interval = Interval_1.Interval.of(0, this.tokens.size - 1); + } + if (typeof intervalOrProgram === "string") { + programName = intervalOrProgram; + } + let rewrites = this.programs.get(programName); + let start = interval.a; + let stop = interval.b; + if (stop > this.tokens.size - 1) { + stop = this.tokens.size - 1; + } + if (start < 0) { + start = 0; + } + if (rewrites == null || rewrites.length === 0) { + return this.tokens.getText(interval); + } + let buf = []; + let indexToOp = this.reduceToSingleOperationPerIndex(rewrites); + let i = start; + while (i <= stop && i < this.tokens.size) { + let op = indexToOp.get(i); + indexToOp.delete(i); + let t = this.tokens.get(i); + if (op == null) { + if (t.type !== Token_1.Token.EOF) { + buf.push(String(t.text)); + } + i++; + } else { + i = op.execute(buf); + } + } + if (stop === this.tokens.size - 1) { + for (let op of indexToOp.values()) { + if (op.index >= this.tokens.size - 1) { + buf.push(op.text.toString()); + } + } + } + return buf.join(""); + } + reduceToSingleOperationPerIndex(rewrites) { + for (let i = 0; i < rewrites.length; i++) { + let op = rewrites[i]; + if (op == null) { + continue; + } + if (!(op instanceof ReplaceOp)) { + continue; + } + let rop = op; + let inserts = this.getKindOfOps(rewrites, InsertBeforeOp, i); + for (let iop of inserts) { + if (iop.index === rop.index) { + rewrites[iop.instructionIndex] = void 0; + rop.text = iop.text.toString() + (rop.text != null ? rop.text.toString() : ""); + } else if (iop.index > rop.index && iop.index <= rop.lastIndex) { + rewrites[iop.instructionIndex] = void 0; + } + } + let prevReplaces = this.getKindOfOps(rewrites, ReplaceOp, i); + for (let prevRop of prevReplaces) { + if (prevRop.index >= rop.index && prevRop.lastIndex <= rop.lastIndex) { + rewrites[prevRop.instructionIndex] = void 0; + continue; + } + let disjoint = prevRop.lastIndex < rop.index || prevRop.index > rop.lastIndex; + if (prevRop.text == null && rop.text == null && !disjoint) { + rewrites[prevRop.instructionIndex] = void 0; + rop.index = Math.min(prevRop.index, rop.index); + rop.lastIndex = Math.max(prevRop.lastIndex, rop.lastIndex); + } else if (!disjoint) { + throw new Error(`replace op boundaries of ${rop} overlap with previous ${prevRop}`); + } + } + } + for (let i = 0; i < rewrites.length; i++) { + let op = rewrites[i]; + if (op == null) { + continue; + } + if (!(op instanceof InsertBeforeOp)) { + continue; + } + let iop = op; + let prevInserts = this.getKindOfOps(rewrites, InsertBeforeOp, i); + for (let prevIop of prevInserts) { + if (prevIop.index === iop.index) { + if (prevIop instanceof InsertAfterOp) { + iop.text = this.catOpText(prevIop.text, iop.text); + rewrites[prevIop.instructionIndex] = void 0; + } else if (prevIop instanceof InsertBeforeOp) { + iop.text = this.catOpText(iop.text, prevIop.text); + rewrites[prevIop.instructionIndex] = void 0; + } + } + } + let prevReplaces = this.getKindOfOps(rewrites, ReplaceOp, i); + for (let rop of prevReplaces) { + if (iop.index === rop.index) { + rop.text = this.catOpText(iop.text, rop.text); + rewrites[i] = void 0; + continue; + } + if (iop.index >= rop.index && iop.index <= rop.lastIndex) { + throw new Error(`insert op ${iop} within boundaries of previous ${rop}`); + } + } + } + let m = new Map(); + for (let op of rewrites) { + if (op == null) { + continue; + } + if (m.get(op.index) != null) { + throw new Error("should only be one op per index"); + } + m.set(op.index, op); + } + return m; + } + catOpText(a, b) { + let x = ""; + let y = ""; + if (a != null) { + x = a.toString(); + } + if (b != null) { + y = b.toString(); + } + return x + y; + } + getKindOfOps(rewrites, kind, before) { + let ops = []; + for (let i = 0; i < before && i < rewrites.length; i++) { + let op = rewrites[i]; + if (op == null) { + continue; + } + if (op instanceof kind) { + ops.push(op); + } + } + return ops; + } + }; + exports.TokenStreamRewriter = TokenStreamRewriter; + TokenStreamRewriter.DEFAULT_PROGRAM_NAME = "default"; + TokenStreamRewriter.PROGRAM_INIT_SIZE = 100; + TokenStreamRewriter.MIN_TOKEN_INDEX = 0; + var RewriteOperation = class { + constructor(tokens2, index, instructionIndex, text) { + this.tokens = tokens2; + this.instructionIndex = instructionIndex; + this.index = index; + this.text = text === void 0 ? "" : text; + } + execute(buf) { + return this.index; + } + toString() { + let opName = this.constructor.name; + let $index = opName.indexOf("$"); + opName = opName.substring($index + 1, opName.length); + return "<" + opName + "@" + this.tokens.get(this.index) + ':"' + this.text + '">'; + } + }; + __decorate([ + Decorators_1.Override + ], RewriteOperation.prototype, "toString", null); + exports.RewriteOperation = RewriteOperation; + var InsertBeforeOp = class extends RewriteOperation { + constructor(tokens2, index, instructionIndex, text) { + super(tokens2, index, instructionIndex, text); + } + execute(buf) { + buf.push(this.text.toString()); + if (this.tokens.get(this.index).type !== Token_1.Token.EOF) { + buf.push(String(this.tokens.get(this.index).text)); + } + return this.index + 1; + } + }; + __decorate([ + Decorators_1.Override + ], InsertBeforeOp.prototype, "execute", null); + var InsertAfterOp = class extends InsertBeforeOp { + constructor(tokens2, index, instructionIndex, text) { + super(tokens2, index + 1, instructionIndex, text); + } + }; + var ReplaceOp = class extends RewriteOperation { + constructor(tokens2, from, to, instructionIndex, text) { + super(tokens2, from, instructionIndex, text); + this.lastIndex = to; + } + execute(buf) { + if (this.text != null) { + buf.push(this.text.toString()); + } + return this.lastIndex + 1; + } + toString() { + if (this.text == null) { + return ""; + } + return "'; + } + }; + __decorate([ + Decorators_1.Override + ], ReplaceOp.prototype, "execute", null); + __decorate([ + Decorators_1.Override + ], ReplaceOp.prototype, "toString", null); + } + }); + + // node_modules/antlr4ts/Vocabulary.js + var require_Vocabulary = __commonJS({ + "node_modules/antlr4ts/Vocabulary.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } + }); + + // node_modules/antlr4ts/WritableToken.js + var require_WritableToken = __commonJS({ + "node_modules/antlr4ts/WritableToken.js"(exports) { + init_process_shim(); + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + } + }); + + // node_modules/antlr4ts/index.js + var require_antlr4ts = __commonJS({ + "node_modules/antlr4ts/index.js"(exports) { + init_process_shim(); + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, {enumerable: true, get: function() { + return m[k]; + }}); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", {value: true}); + __exportStar(require_ANTLRErrorListener(), exports); + __exportStar(require_ANTLRErrorStrategy(), exports); + __exportStar(require_ANTLRInputStream(), exports); + __exportStar(require_BailErrorStrategy(), exports); + __exportStar(require_BufferedTokenStream(), exports); + __exportStar(require_CharStream(), exports); + __exportStar(require_CharStreams(), exports); + __exportStar(require_CodePointBuffer(), exports); + __exportStar(require_CodePointCharStream(), exports); + __exportStar(require_CommonToken(), exports); + __exportStar(require_CommonTokenFactory(), exports); + __exportStar(require_CommonTokenStream(), exports); + __exportStar(require_ConsoleErrorListener(), exports); + __exportStar(require_DefaultErrorStrategy(), exports); + __exportStar(require_Dependents(), exports); + __exportStar(require_DiagnosticErrorListener(), exports); + __exportStar(require_FailedPredicateException(), exports); + __exportStar(require_InputMismatchException(), exports); + __exportStar(require_InterpreterRuleContext(), exports); + __exportStar(require_IntStream(), exports); + __exportStar(require_Lexer(), exports); + __exportStar(require_LexerInterpreter(), exports); + __exportStar(require_LexerNoViableAltException(), exports); + __exportStar(require_ListTokenSource(), exports); + __exportStar(require_NoViableAltException(), exports); + __exportStar(require_Parser(), exports); + __exportStar(require_ParserErrorListener(), exports); + __exportStar(require_ParserInterpreter(), exports); + __exportStar(require_ParserRuleContext(), exports); + __exportStar(require_ProxyErrorListener(), exports); + __exportStar(require_ProxyParserErrorListener(), exports); + __exportStar(require_RecognitionException(), exports); + __exportStar(require_Recognizer(), exports); + __exportStar(require_RuleContext(), exports); + __exportStar(require_RuleContextWithAltNum(), exports); + __exportStar(require_RuleDependency(), exports); + __exportStar(require_RuleVersion(), exports); + __exportStar(require_Token(), exports); + __exportStar(require_TokenFactory(), exports); + __exportStar(require_TokenSource(), exports); + __exportStar(require_TokenStream(), exports); + __exportStar(require_TokenStreamRewriter(), exports); + __exportStar(require_Vocabulary(), exports); + __exportStar(require_VocabularyImpl(), exports); + __exportStar(require_WritableToken(), exports); + } + }); + + // node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js + var require_AbstractParseTreeVisitor = __commonJS({ + "node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js"(exports) { + init_process_shim(); + "use strict"; + var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __param = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports, "__esModule", {value: true}); + exports.AbstractParseTreeVisitor = void 0; + var Decorators_1 = require_Decorators(); + var AbstractParseTreeVisitor2 = class { + visit(tree) { + return tree.accept(this); + } + visitChildren(node) { + let result = this.defaultResult(); + let n = node.childCount; + for (let i = 0; i < n; i++) { + if (!this.shouldVisitNextChild(node, result)) { + break; + } + let c = node.getChild(i); + let childResult = c.accept(this); + result = this.aggregateResult(result, childResult); + } + return result; + } + visitTerminal(node) { + return this.defaultResult(); + } + visitErrorNode(node) { + return this.defaultResult(); + } + aggregateResult(aggregate, nextResult) { + return nextResult; + } + shouldVisitNextChild(node, currentResult) { + return true; + } + }; + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], AbstractParseTreeVisitor2.prototype, "visit", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], AbstractParseTreeVisitor2.prototype, "visitChildren", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], AbstractParseTreeVisitor2.prototype, "visitTerminal", null); + __decorate([ + Decorators_1.Override, + __param(0, Decorators_1.NotNull) + ], AbstractParseTreeVisitor2.prototype, "visitErrorNode", null); + __decorate([ + __param(0, Decorators_1.NotNull) + ], AbstractParseTreeVisitor2.prototype, "shouldVisitNextChild", null); + exports.AbstractParseTreeVisitor = AbstractParseTreeVisitor2; + } + }); + + // (disabled):fs + var require_fs = __commonJS({ + "(disabled):fs"() { + init_process_shim(); + } + }); + + // src/antlr/Solidity.tokens + var require_Solidity = __commonJS({ + "src/antlr/Solidity.tokens"(exports, module) { + module.exports = "./Solidity-EZVQ6AE4.tokens"; + } + }); + + // src/tokens-string.js + var require_tokens_string = __commonJS({ + "src/tokens-string.js"(exports, module) { + init_process_shim(); + if (true) { + module.exports = require_Solidity(); + } else { + module.exports = null.readFileSync(null.join(true, "./antlr/Solidity.tokens")).toString(); } - return _SolidityLexer.__ATN; } - }; - var SolidityLexer = _SolidityLexer; - SolidityLexer.T__0 = 1; - SolidityLexer.T__1 = 2; - SolidityLexer.T__2 = 3; - SolidityLexer.T__3 = 4; - SolidityLexer.T__4 = 5; - SolidityLexer.T__5 = 6; - SolidityLexer.T__6 = 7; - SolidityLexer.T__7 = 8; - SolidityLexer.T__8 = 9; - SolidityLexer.T__9 = 10; - SolidityLexer.T__10 = 11; + }); + + // src/index.ts + var src_exports = {}; + __export(src_exports, { + ParserError: () => ParserError, + parse: () => parse, + tokenize: () => tokenize, + visit: () => visit + }); + init_process_shim(); + + // src/parser.ts + init_process_shim(); + var import_antlr4ts = __toModule(require_antlr4ts()); + + // src/antlr/SolidityLexer.ts + init_process_shim(); + var import_ATNDeserializer = __toModule(require_ATNDeserializer()); + var import_Lexer = __toModule(require_Lexer()); + var import_LexerATNSimulator = __toModule(require_LexerATNSimulator()); + var import_VocabularyImpl = __toModule(require_VocabularyImpl()); + var Utils = __toModule(require_Utils()); + var _SolidityLexer = class extends import_Lexer.Lexer { + get vocabulary() { + return _SolidityLexer.VOCABULARY; + } + constructor(input) { + super(input); + this._interp = new import_LexerATNSimulator.LexerATNSimulator(_SolidityLexer._ATN, this); + } + get grammarFileName() { + return "Solidity.g4"; + } + get ruleNames() { + return _SolidityLexer.ruleNames; + } + get serializedATN() { + return _SolidityLexer._serializedATN; + } + get channelNames() { + return _SolidityLexer.channelNames; + } + get modeNames() { + return _SolidityLexer.modeNames; + } + static get _ATN() { + if (!_SolidityLexer.__ATN) { + _SolidityLexer.__ATN = new import_ATNDeserializer.ATNDeserializer().deserialize(Utils.toCharArray(_SolidityLexer._serializedATN)); + } + return _SolidityLexer.__ATN; + } + }; + var SolidityLexer = _SolidityLexer; + SolidityLexer.T__0 = 1; + SolidityLexer.T__1 = 2; + SolidityLexer.T__2 = 3; + SolidityLexer.T__3 = 4; + SolidityLexer.T__4 = 5; + SolidityLexer.T__5 = 6; + SolidityLexer.T__6 = 7; + SolidityLexer.T__7 = 8; + SolidityLexer.T__8 = 9; + SolidityLexer.T__9 = 10; + SolidityLexer.T__10 = 11; SolidityLexer.T__11 = 12; SolidityLexer.T__12 = 13; SolidityLexer.T__13 = 14; @@ -35595,282 +28735,2801 @@ qrrrrrrrrrrsssssstttttttttuuuuuuuuuuvvvv EOF() { return this.getToken(SolidityParser.EOF, 0); } - pragmaDirective(i) { - if (i === void 0) { - return this.getRuleContexts(PragmaDirectiveContext); + pragmaDirective(i) { + if (i === void 0) { + return this.getRuleContexts(PragmaDirectiveContext); + } else { + return this.getRuleContext(i, PragmaDirectiveContext); + } + } + importDirective(i) { + if (i === void 0) { + return this.getRuleContexts(ImportDirectiveContext); + } else { + return this.getRuleContext(i, ImportDirectiveContext); + } + } + contractDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(ContractDefinitionContext); + } else { + return this.getRuleContext(i, ContractDefinitionContext); + } + } + enumDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(EnumDefinitionContext); + } else { + return this.getRuleContext(i, EnumDefinitionContext); + } + } + structDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(StructDefinitionContext); + } else { + return this.getRuleContext(i, StructDefinitionContext); + } + } + functionDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(FunctionDefinitionContext); + } else { + return this.getRuleContext(i, FunctionDefinitionContext); + } + } + fileLevelConstant(i) { + if (i === void 0) { + return this.getRuleContexts(FileLevelConstantContext); + } else { + return this.getRuleContext(i, FileLevelConstantContext); + } + } + customErrorDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(CustomErrorDefinitionContext); + } else { + return this.getRuleContext(i, CustomErrorDefinitionContext); + } + } + typeDefinition(i) { + if (i === void 0) { + return this.getRuleContexts(TypeDefinitionContext); + } else { + return this.getRuleContext(i, TypeDefinitionContext); + } + } + usingForDeclaration(i) { + if (i === void 0) { + return this.getRuleContexts(UsingForDeclarationContext); + } else { + return this.getRuleContext(i, UsingForDeclarationContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_sourceUnit; + } + enterRule(listener) { + if (listener.enterSourceUnit) { + listener.enterSourceUnit(this); + } + } + exitRule(listener) { + if (listener.exitSourceUnit) { + listener.exitSourceUnit(this); + } + } + accept(visitor) { + if (visitor.visitSourceUnit) { + return visitor.visitSourceUnit(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var PragmaDirectiveContext = class extends import_ParserRuleContext.ParserRuleContext { + pragmaName() { + return this.getRuleContext(0, PragmaNameContext); + } + pragmaValue() { + return this.getRuleContext(0, PragmaValueContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_pragmaDirective; + } + enterRule(listener) { + if (listener.enterPragmaDirective) { + listener.enterPragmaDirective(this); + } + } + exitRule(listener) { + if (listener.exitPragmaDirective) { + listener.exitPragmaDirective(this); + } + } + accept(visitor) { + if (visitor.visitPragmaDirective) { + return visitor.visitPragmaDirective(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var PragmaNameContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_pragmaName; + } + enterRule(listener) { + if (listener.enterPragmaName) { + listener.enterPragmaName(this); + } + } + exitRule(listener) { + if (listener.exitPragmaName) { + listener.exitPragmaName(this); + } + } + accept(visitor) { + if (visitor.visitPragmaName) { + return visitor.visitPragmaName(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var PragmaValueContext = class extends import_ParserRuleContext.ParserRuleContext { + version() { + return this.tryGetRuleContext(0, VersionContext); + } + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_pragmaValue; + } + enterRule(listener) { + if (listener.enterPragmaValue) { + listener.enterPragmaValue(this); + } + } + exitRule(listener) { + if (listener.exitPragmaValue) { + listener.exitPragmaValue(this); + } + } + accept(visitor) { + if (visitor.visitPragmaValue) { + return visitor.visitPragmaValue(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var VersionContext = class extends import_ParserRuleContext.ParserRuleContext { + versionConstraint(i) { + if (i === void 0) { + return this.getRuleContexts(VersionConstraintContext); + } else { + return this.getRuleContext(i, VersionConstraintContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_version; + } + enterRule(listener) { + if (listener.enterVersion) { + listener.enterVersion(this); + } + } + exitRule(listener) { + if (listener.exitVersion) { + listener.exitVersion(this); + } + } + accept(visitor) { + if (visitor.visitVersion) { + return visitor.visitVersion(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var VersionOperatorContext = class extends import_ParserRuleContext.ParserRuleContext { + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_versionOperator; + } + enterRule(listener) { + if (listener.enterVersionOperator) { + listener.enterVersionOperator(this); + } + } + exitRule(listener) { + if (listener.exitVersionOperator) { + listener.exitVersionOperator(this); + } + } + accept(visitor) { + if (visitor.visitVersionOperator) { + return visitor.visitVersionOperator(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var VersionConstraintContext = class extends import_ParserRuleContext.ParserRuleContext { + VersionLiteral() { + return this.tryGetToken(SolidityParser.VersionLiteral, 0); + } + versionOperator() { + return this.tryGetRuleContext(0, VersionOperatorContext); + } + DecimalNumber() { + return this.tryGetToken(SolidityParser.DecimalNumber, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_versionConstraint; + } + enterRule(listener) { + if (listener.enterVersionConstraint) { + listener.enterVersionConstraint(this); + } + } + exitRule(listener) { + if (listener.exitVersionConstraint) { + listener.exitVersionConstraint(this); + } + } + accept(visitor) { + if (visitor.visitVersionConstraint) { + return visitor.visitVersionConstraint(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ImportDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier(i) { + if (i === void 0) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_importDeclaration; + } + enterRule(listener) { + if (listener.enterImportDeclaration) { + listener.enterImportDeclaration(this); + } + } + exitRule(listener) { + if (listener.exitImportDeclaration) { + listener.exitImportDeclaration(this); + } + } + accept(visitor) { + if (visitor.visitImportDeclaration) { + return visitor.visitImportDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ImportDirectiveContext = class extends import_ParserRuleContext.ParserRuleContext { + importPath() { + return this.getRuleContext(0, ImportPathContext); + } + identifier(i) { + if (i === void 0) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } + } + importDeclaration(i) { + if (i === void 0) { + return this.getRuleContexts(ImportDeclarationContext); + } else { + return this.getRuleContext(i, ImportDeclarationContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_importDirective; + } + enterRule(listener) { + if (listener.enterImportDirective) { + listener.enterImportDirective(this); + } + } + exitRule(listener) { + if (listener.exitImportDirective) { + listener.exitImportDirective(this); + } + } + accept(visitor) { + if (visitor.visitImportDirective) { + return visitor.visitImportDirective(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ImportPathContext = class extends import_ParserRuleContext.ParserRuleContext { + StringLiteralFragment() { + return this.getToken(SolidityParser.StringLiteralFragment, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_importPath; + } + enterRule(listener) { + if (listener.enterImportPath) { + listener.enterImportPath(this); + } + } + exitRule(listener) { + if (listener.exitImportPath) { + listener.exitImportPath(this); + } + } + accept(visitor) { + if (visitor.visitImportPath) { + return visitor.visitImportPath(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ContractDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + inheritanceSpecifier(i) { + if (i === void 0) { + return this.getRuleContexts(InheritanceSpecifierContext); + } else { + return this.getRuleContext(i, InheritanceSpecifierContext); + } + } + contractPart(i) { + if (i === void 0) { + return this.getRuleContexts(ContractPartContext); + } else { + return this.getRuleContext(i, ContractPartContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_contractDefinition; + } + enterRule(listener) { + if (listener.enterContractDefinition) { + listener.enterContractDefinition(this); + } + } + exitRule(listener) { + if (listener.exitContractDefinition) { + listener.exitContractDefinition(this); + } + } + accept(visitor) { + if (visitor.visitContractDefinition) { + return visitor.visitContractDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var InheritanceSpecifierContext = class extends import_ParserRuleContext.ParserRuleContext { + userDefinedTypeName() { + return this.getRuleContext(0, UserDefinedTypeNameContext); + } + expressionList() { + return this.tryGetRuleContext(0, ExpressionListContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_inheritanceSpecifier; + } + enterRule(listener) { + if (listener.enterInheritanceSpecifier) { + listener.enterInheritanceSpecifier(this); + } + } + exitRule(listener) { + if (listener.exitInheritanceSpecifier) { + listener.exitInheritanceSpecifier(this); + } + } + accept(visitor) { + if (visitor.visitInheritanceSpecifier) { + return visitor.visitInheritanceSpecifier(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ContractPartContext = class extends import_ParserRuleContext.ParserRuleContext { + stateVariableDeclaration() { + return this.tryGetRuleContext(0, StateVariableDeclarationContext); + } + usingForDeclaration() { + return this.tryGetRuleContext(0, UsingForDeclarationContext); + } + structDefinition() { + return this.tryGetRuleContext(0, StructDefinitionContext); + } + modifierDefinition() { + return this.tryGetRuleContext(0, ModifierDefinitionContext); + } + functionDefinition() { + return this.tryGetRuleContext(0, FunctionDefinitionContext); + } + eventDefinition() { + return this.tryGetRuleContext(0, EventDefinitionContext); + } + enumDefinition() { + return this.tryGetRuleContext(0, EnumDefinitionContext); + } + customErrorDefinition() { + return this.tryGetRuleContext(0, CustomErrorDefinitionContext); + } + typeDefinition() { + return this.tryGetRuleContext(0, TypeDefinitionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_contractPart; + } + enterRule(listener) { + if (listener.enterContractPart) { + listener.enterContractPart(this); + } + } + exitRule(listener) { + if (listener.exitContractPart) { + listener.exitContractPart(this); + } + } + accept(visitor) { + if (visitor.visitContractPart) { + return visitor.visitContractPart(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var StateVariableDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + PublicKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.PublicKeyword); + } else { + return this.getToken(SolidityParser.PublicKeyword, i); + } + } + InternalKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.InternalKeyword); + } else { + return this.getToken(SolidityParser.InternalKeyword, i); + } + } + PrivateKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.PrivateKeyword); + } else { + return this.getToken(SolidityParser.PrivateKeyword, i); + } + } + ConstantKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.ConstantKeyword); + } else { + return this.getToken(SolidityParser.ConstantKeyword, i); + } + } + ImmutableKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.ImmutableKeyword); + } else { + return this.getToken(SolidityParser.ImmutableKeyword, i); + } + } + overrideSpecifier(i) { + if (i === void 0) { + return this.getRuleContexts(OverrideSpecifierContext); + } else { + return this.getRuleContext(i, OverrideSpecifierContext); + } + } + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_stateVariableDeclaration; + } + enterRule(listener) { + if (listener.enterStateVariableDeclaration) { + listener.enterStateVariableDeclaration(this); + } + } + exitRule(listener) { + if (listener.exitStateVariableDeclaration) { + listener.exitStateVariableDeclaration(this); + } + } + accept(visitor) { + if (visitor.visitStateVariableDeclaration) { + return visitor.visitStateVariableDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FileLevelConstantContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + ConstantKeyword() { + return this.getToken(SolidityParser.ConstantKeyword, 0); + } + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + expression() { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_fileLevelConstant; + } + enterRule(listener) { + if (listener.enterFileLevelConstant) { + listener.enterFileLevelConstant(this); + } + } + exitRule(listener) { + if (listener.exitFileLevelConstant) { + listener.exitFileLevelConstant(this); + } + } + accept(visitor) { + if (visitor.visitFileLevelConstant) { + return visitor.visitFileLevelConstant(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var CustomErrorDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + parameterList() { + return this.getRuleContext(0, ParameterListContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_customErrorDefinition; + } + enterRule(listener) { + if (listener.enterCustomErrorDefinition) { + listener.enterCustomErrorDefinition(this); + } + } + exitRule(listener) { + if (listener.exitCustomErrorDefinition) { + listener.exitCustomErrorDefinition(this); + } + } + accept(visitor) { + if (visitor.visitCustomErrorDefinition) { + return visitor.visitCustomErrorDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var TypeDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + TypeKeyword() { + return this.getToken(SolidityParser.TypeKeyword, 0); + } + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + elementaryTypeName() { + return this.getRuleContext(0, ElementaryTypeNameContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_typeDefinition; + } + enterRule(listener) { + if (listener.enterTypeDefinition) { + listener.enterTypeDefinition(this); + } + } + exitRule(listener) { + if (listener.exitTypeDefinition) { + listener.exitTypeDefinition(this); + } + } + accept(visitor) { + if (visitor.visitTypeDefinition) { + return visitor.visitTypeDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var UsingForDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { + usingForObject() { + return this.getRuleContext(0, UsingForObjectContext); + } + typeName() { + return this.tryGetRuleContext(0, TypeNameContext); + } + GlobalKeyword() { + return this.tryGetToken(SolidityParser.GlobalKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_usingForDeclaration; + } + enterRule(listener) { + if (listener.enterUsingForDeclaration) { + listener.enterUsingForDeclaration(this); + } + } + exitRule(listener) { + if (listener.exitUsingForDeclaration) { + listener.exitUsingForDeclaration(this); + } + } + accept(visitor) { + if (visitor.visitUsingForDeclaration) { + return visitor.visitUsingForDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var UsingForObjectContext = class extends import_ParserRuleContext.ParserRuleContext { + userDefinedTypeName(i) { + if (i === void 0) { + return this.getRuleContexts(UserDefinedTypeNameContext); + } else { + return this.getRuleContext(i, UserDefinedTypeNameContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_usingForObject; + } + enterRule(listener) { + if (listener.enterUsingForObject) { + listener.enterUsingForObject(this); + } + } + exitRule(listener) { + if (listener.exitUsingForObject) { + listener.exitUsingForObject(this); + } + } + accept(visitor) { + if (visitor.visitUsingForObject) { + return visitor.visitUsingForObject(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var StructDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + variableDeclaration(i) { + if (i === void 0) { + return this.getRuleContexts(VariableDeclarationContext); + } else { + return this.getRuleContext(i, VariableDeclarationContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_structDefinition; + } + enterRule(listener) { + if (listener.enterStructDefinition) { + listener.enterStructDefinition(this); + } + } + exitRule(listener) { + if (listener.exitStructDefinition) { + listener.exitStructDefinition(this); + } + } + accept(visitor) { + if (visitor.visitStructDefinition) { + return visitor.visitStructDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ModifierDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + block() { + return this.tryGetRuleContext(0, BlockContext); + } + parameterList() { + return this.tryGetRuleContext(0, ParameterListContext); + } + VirtualKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.VirtualKeyword); + } else { + return this.getToken(SolidityParser.VirtualKeyword, i); + } + } + overrideSpecifier(i) { + if (i === void 0) { + return this.getRuleContexts(OverrideSpecifierContext); + } else { + return this.getRuleContext(i, OverrideSpecifierContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_modifierDefinition; + } + enterRule(listener) { + if (listener.enterModifierDefinition) { + listener.enterModifierDefinition(this); + } + } + exitRule(listener) { + if (listener.exitModifierDefinition) { + listener.exitModifierDefinition(this); + } + } + accept(visitor) { + if (visitor.visitModifierDefinition) { + return visitor.visitModifierDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ModifierInvocationContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + expressionList() { + return this.tryGetRuleContext(0, ExpressionListContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_modifierInvocation; + } + enterRule(listener) { + if (listener.enterModifierInvocation) { + listener.enterModifierInvocation(this); + } + } + exitRule(listener) { + if (listener.exitModifierInvocation) { + listener.exitModifierInvocation(this); + } + } + accept(visitor) { + if (visitor.visitModifierInvocation) { + return visitor.visitModifierInvocation(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FunctionDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + functionDescriptor() { + return this.getRuleContext(0, FunctionDescriptorContext); + } + parameterList() { + return this.getRuleContext(0, ParameterListContext); + } + modifierList() { + return this.getRuleContext(0, ModifierListContext); + } + block() { + return this.tryGetRuleContext(0, BlockContext); + } + returnParameters() { + return this.tryGetRuleContext(0, ReturnParametersContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_functionDefinition; + } + enterRule(listener) { + if (listener.enterFunctionDefinition) { + listener.enterFunctionDefinition(this); + } + } + exitRule(listener) { + if (listener.exitFunctionDefinition) { + listener.exitFunctionDefinition(this); + } + } + accept(visitor) { + if (visitor.visitFunctionDefinition) { + return visitor.visitFunctionDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FunctionDescriptorContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + ConstructorKeyword() { + return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); + } + FallbackKeyword() { + return this.tryGetToken(SolidityParser.FallbackKeyword, 0); + } + ReceiveKeyword() { + return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_functionDescriptor; + } + enterRule(listener) { + if (listener.enterFunctionDescriptor) { + listener.enterFunctionDescriptor(this); + } + } + exitRule(listener) { + if (listener.exitFunctionDescriptor) { + listener.exitFunctionDescriptor(this); + } + } + accept(visitor) { + if (visitor.visitFunctionDescriptor) { + return visitor.visitFunctionDescriptor(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ReturnParametersContext = class extends import_ParserRuleContext.ParserRuleContext { + parameterList() { + return this.getRuleContext(0, ParameterListContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_returnParameters; + } + enterRule(listener) { + if (listener.enterReturnParameters) { + listener.enterReturnParameters(this); + } + } + exitRule(listener) { + if (listener.exitReturnParameters) { + listener.exitReturnParameters(this); + } + } + accept(visitor) { + if (visitor.visitReturnParameters) { + return visitor.visitReturnParameters(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ModifierListContext = class extends import_ParserRuleContext.ParserRuleContext { + ExternalKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.ExternalKeyword); + } else { + return this.getToken(SolidityParser.ExternalKeyword, i); + } + } + PublicKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.PublicKeyword); + } else { + return this.getToken(SolidityParser.PublicKeyword, i); + } + } + InternalKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.InternalKeyword); + } else { + return this.getToken(SolidityParser.InternalKeyword, i); + } + } + PrivateKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.PrivateKeyword); + } else { + return this.getToken(SolidityParser.PrivateKeyword, i); + } + } + VirtualKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.VirtualKeyword); + } else { + return this.getToken(SolidityParser.VirtualKeyword, i); + } + } + stateMutability(i) { + if (i === void 0) { + return this.getRuleContexts(StateMutabilityContext); + } else { + return this.getRuleContext(i, StateMutabilityContext); + } + } + modifierInvocation(i) { + if (i === void 0) { + return this.getRuleContexts(ModifierInvocationContext); + } else { + return this.getRuleContext(i, ModifierInvocationContext); + } + } + overrideSpecifier(i) { + if (i === void 0) { + return this.getRuleContexts(OverrideSpecifierContext); + } else { + return this.getRuleContext(i, OverrideSpecifierContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_modifierList; + } + enterRule(listener) { + if (listener.enterModifierList) { + listener.enterModifierList(this); + } + } + exitRule(listener) { + if (listener.exitModifierList) { + listener.exitModifierList(this); + } + } + accept(visitor) { + if (visitor.visitModifierList) { + return visitor.visitModifierList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EventDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + eventParameterList() { + return this.getRuleContext(0, EventParameterListContext); + } + AnonymousKeyword() { + return this.tryGetToken(SolidityParser.AnonymousKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_eventDefinition; + } + enterRule(listener) { + if (listener.enterEventDefinition) { + listener.enterEventDefinition(this); + } + } + exitRule(listener) { + if (listener.exitEventDefinition) { + listener.exitEventDefinition(this); + } + } + accept(visitor) { + if (visitor.visitEventDefinition) { + return visitor.visitEventDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EnumValueContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_enumValue; + } + enterRule(listener) { + if (listener.enterEnumValue) { + listener.enterEnumValue(this); + } + } + exitRule(listener) { + if (listener.exitEnumValue) { + listener.exitEnumValue(this); + } + } + accept(visitor) { + if (visitor.visitEnumValue) { + return visitor.visitEnumValue(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EnumDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + enumValue(i) { + if (i === void 0) { + return this.getRuleContexts(EnumValueContext); + } else { + return this.getRuleContext(i, EnumValueContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_enumDefinition; + } + enterRule(listener) { + if (listener.enterEnumDefinition) { + listener.enterEnumDefinition(this); + } + } + exitRule(listener) { + if (listener.exitEnumDefinition) { + listener.exitEnumDefinition(this); + } + } + accept(visitor) { + if (visitor.visitEnumDefinition) { + return visitor.visitEnumDefinition(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { + parameter(i) { + if (i === void 0) { + return this.getRuleContexts(ParameterContext); + } else { + return this.getRuleContext(i, ParameterContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_parameterList; + } + enterRule(listener) { + if (listener.enterParameterList) { + listener.enterParameterList(this); + } + } + exitRule(listener) { + if (listener.exitParameterList) { + listener.exitParameterList(this); + } + } + accept(visitor) { + if (visitor.visitParameterList) { + return visitor.visitParameterList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ParameterContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + storageLocation() { + return this.tryGetRuleContext(0, StorageLocationContext); + } + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_parameter; + } + enterRule(listener) { + if (listener.enterParameter) { + listener.enterParameter(this); + } + } + exitRule(listener) { + if (listener.exitParameter) { + listener.exitParameter(this); + } + } + accept(visitor) { + if (visitor.visitParameter) { + return visitor.visitParameter(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EventParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { + eventParameter(i) { + if (i === void 0) { + return this.getRuleContexts(EventParameterContext); + } else { + return this.getRuleContext(i, EventParameterContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_eventParameterList; + } + enterRule(listener) { + if (listener.enterEventParameterList) { + listener.enterEventParameterList(this); + } + } + exitRule(listener) { + if (listener.exitEventParameterList) { + listener.exitEventParameterList(this); + } + } + accept(visitor) { + if (visitor.visitEventParameterList) { + return visitor.visitEventParameterList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EventParameterContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + IndexedKeyword() { + return this.tryGetToken(SolidityParser.IndexedKeyword, 0); + } + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_eventParameter; + } + enterRule(listener) { + if (listener.enterEventParameter) { + listener.enterEventParameter(this); + } + } + exitRule(listener) { + if (listener.exitEventParameter) { + listener.exitEventParameter(this); + } + } + accept(visitor) { + if (visitor.visitEventParameter) { + return visitor.visitEventParameter(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FunctionTypeParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { + functionTypeParameter(i) { + if (i === void 0) { + return this.getRuleContexts(FunctionTypeParameterContext); + } else { + return this.getRuleContext(i, FunctionTypeParameterContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_functionTypeParameterList; + } + enterRule(listener) { + if (listener.enterFunctionTypeParameterList) { + listener.enterFunctionTypeParameterList(this); + } + } + exitRule(listener) { + if (listener.exitFunctionTypeParameterList) { + listener.exitFunctionTypeParameterList(this); + } + } + accept(visitor) { + if (visitor.visitFunctionTypeParameterList) { + return visitor.visitFunctionTypeParameterList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FunctionTypeParameterContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + storageLocation() { + return this.tryGetRuleContext(0, StorageLocationContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_functionTypeParameter; + } + enterRule(listener) { + if (listener.enterFunctionTypeParameter) { + listener.enterFunctionTypeParameter(this); + } + } + exitRule(listener) { + if (listener.exitFunctionTypeParameter) { + listener.exitFunctionTypeParameter(this); + } + } + accept(visitor) { + if (visitor.visitFunctionTypeParameter) { + return visitor.visitFunctionTypeParameter(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var VariableDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + identifier() { + return this.getRuleContext(0, IdentifierContext); + } + storageLocation() { + return this.tryGetRuleContext(0, StorageLocationContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_variableDeclaration; + } + enterRule(listener) { + if (listener.enterVariableDeclaration) { + listener.enterVariableDeclaration(this); + } + } + exitRule(listener) { + if (listener.exitVariableDeclaration) { + listener.exitVariableDeclaration(this); + } + } + accept(visitor) { + if (visitor.visitVariableDeclaration) { + return visitor.visitVariableDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var TypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { + elementaryTypeName() { + return this.tryGetRuleContext(0, ElementaryTypeNameContext); + } + userDefinedTypeName() { + return this.tryGetRuleContext(0, UserDefinedTypeNameContext); + } + mapping() { + return this.tryGetRuleContext(0, MappingContext); + } + typeName() { + return this.tryGetRuleContext(0, TypeNameContext); + } + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + functionTypeName() { + return this.tryGetRuleContext(0, FunctionTypeNameContext); + } + PayableKeyword() { + return this.tryGetToken(SolidityParser.PayableKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_typeName; + } + enterRule(listener) { + if (listener.enterTypeName) { + listener.enterTypeName(this); + } + } + exitRule(listener) { + if (listener.exitTypeName) { + listener.exitTypeName(this); + } + } + accept(visitor) { + if (visitor.visitTypeName) { + return visitor.visitTypeName(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var UserDefinedTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier(i) { + if (i === void 0) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_userDefinedTypeName; + } + enterRule(listener) { + if (listener.enterUserDefinedTypeName) { + listener.enterUserDefinedTypeName(this); + } + } + exitRule(listener) { + if (listener.exitUserDefinedTypeName) { + listener.exitUserDefinedTypeName(this); + } + } + accept(visitor) { + if (visitor.visitUserDefinedTypeName) { + return visitor.visitUserDefinedTypeName(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var MappingKeyContext = class extends import_ParserRuleContext.ParserRuleContext { + elementaryTypeName() { + return this.tryGetRuleContext(0, ElementaryTypeNameContext); + } + userDefinedTypeName() { + return this.tryGetRuleContext(0, UserDefinedTypeNameContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_mappingKey; + } + enterRule(listener) { + if (listener.enterMappingKey) { + listener.enterMappingKey(this); + } + } + exitRule(listener) { + if (listener.exitMappingKey) { + listener.exitMappingKey(this); + } + } + accept(visitor) { + if (visitor.visitMappingKey) { + return visitor.visitMappingKey(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var MappingContext = class extends import_ParserRuleContext.ParserRuleContext { + mappingKey() { + return this.getRuleContext(0, MappingKeyContext); + } + typeName() { + return this.getRuleContext(0, TypeNameContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_mapping; + } + enterRule(listener) { + if (listener.enterMapping) { + listener.enterMapping(this); + } + } + exitRule(listener) { + if (listener.exitMapping) { + listener.exitMapping(this); + } + } + accept(visitor) { + if (visitor.visitMapping) { + return visitor.visitMapping(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var FunctionTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { + functionTypeParameterList(i) { + if (i === void 0) { + return this.getRuleContexts(FunctionTypeParameterListContext); + } else { + return this.getRuleContext(i, FunctionTypeParameterListContext); + } + } + InternalKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.InternalKeyword); + } else { + return this.getToken(SolidityParser.InternalKeyword, i); + } + } + ExternalKeyword(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.ExternalKeyword); + } else { + return this.getToken(SolidityParser.ExternalKeyword, i); + } + } + stateMutability(i) { + if (i === void 0) { + return this.getRuleContexts(StateMutabilityContext); + } else { + return this.getRuleContext(i, StateMutabilityContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_functionTypeName; + } + enterRule(listener) { + if (listener.enterFunctionTypeName) { + listener.enterFunctionTypeName(this); + } + } + exitRule(listener) { + if (listener.exitFunctionTypeName) { + listener.exitFunctionTypeName(this); + } + } + accept(visitor) { + if (visitor.visitFunctionTypeName) { + return visitor.visitFunctionTypeName(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var StorageLocationContext = class extends import_ParserRuleContext.ParserRuleContext { + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_storageLocation; + } + enterRule(listener) { + if (listener.enterStorageLocation) { + listener.enterStorageLocation(this); + } + } + exitRule(listener) { + if (listener.exitStorageLocation) { + listener.exitStorageLocation(this); + } + } + accept(visitor) { + if (visitor.visitStorageLocation) { + return visitor.visitStorageLocation(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var StateMutabilityContext = class extends import_ParserRuleContext.ParserRuleContext { + PureKeyword() { + return this.tryGetToken(SolidityParser.PureKeyword, 0); + } + ConstantKeyword() { + return this.tryGetToken(SolidityParser.ConstantKeyword, 0); + } + ViewKeyword() { + return this.tryGetToken(SolidityParser.ViewKeyword, 0); + } + PayableKeyword() { + return this.tryGetToken(SolidityParser.PayableKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_stateMutability; + } + enterRule(listener) { + if (listener.enterStateMutability) { + listener.enterStateMutability(this); + } + } + exitRule(listener) { + if (listener.exitStateMutability) { + listener.exitStateMutability(this); + } + } + accept(visitor) { + if (visitor.visitStateMutability) { + return visitor.visitStateMutability(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var BlockContext = class extends import_ParserRuleContext.ParserRuleContext { + statement(i) { + if (i === void 0) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_block; + } + enterRule(listener) { + if (listener.enterBlock) { + listener.enterBlock(this); + } + } + exitRule(listener) { + if (listener.exitBlock) { + listener.exitBlock(this); + } + } + accept(visitor) { + if (visitor.visitBlock) { + return visitor.visitBlock(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var StatementContext = class extends import_ParserRuleContext.ParserRuleContext { + ifStatement() { + return this.tryGetRuleContext(0, IfStatementContext); + } + tryStatement() { + return this.tryGetRuleContext(0, TryStatementContext); + } + whileStatement() { + return this.tryGetRuleContext(0, WhileStatementContext); + } + forStatement() { + return this.tryGetRuleContext(0, ForStatementContext); + } + block() { + return this.tryGetRuleContext(0, BlockContext); + } + inlineAssemblyStatement() { + return this.tryGetRuleContext(0, InlineAssemblyStatementContext); + } + doWhileStatement() { + return this.tryGetRuleContext(0, DoWhileStatementContext); + } + continueStatement() { + return this.tryGetRuleContext(0, ContinueStatementContext); + } + breakStatement() { + return this.tryGetRuleContext(0, BreakStatementContext); + } + returnStatement() { + return this.tryGetRuleContext(0, ReturnStatementContext); + } + throwStatement() { + return this.tryGetRuleContext(0, ThrowStatementContext); + } + emitStatement() { + return this.tryGetRuleContext(0, EmitStatementContext); + } + simpleStatement() { + return this.tryGetRuleContext(0, SimpleStatementContext); + } + uncheckedStatement() { + return this.tryGetRuleContext(0, UncheckedStatementContext); + } + revertStatement() { + return this.tryGetRuleContext(0, RevertStatementContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_statement; + } + enterRule(listener) { + if (listener.enterStatement) { + listener.enterStatement(this); + } + } + exitRule(listener) { + if (listener.exitStatement) { + listener.exitStatement(this); + } + } + accept(visitor) { + if (visitor.visitStatement) { + return visitor.visitStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ExpressionStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + expression() { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_expressionStatement; + } + enterRule(listener) { + if (listener.enterExpressionStatement) { + listener.enterExpressionStatement(this); + } + } + exitRule(listener) { + if (listener.exitExpressionStatement) { + listener.exitExpressionStatement(this); + } + } + accept(visitor) { + if (visitor.visitExpressionStatement) { + return visitor.visitExpressionStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var IfStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + expression() { + return this.getRuleContext(0, ExpressionContext); + } + statement(i) { + if (i === void 0) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_ifStatement; + } + enterRule(listener) { + if (listener.enterIfStatement) { + listener.enterIfStatement(this); + } + } + exitRule(listener) { + if (listener.exitIfStatement) { + listener.exitIfStatement(this); + } + } + accept(visitor) { + if (visitor.visitIfStatement) { + return visitor.visitIfStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var TryStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + expression() { + return this.getRuleContext(0, ExpressionContext); + } + block() { + return this.getRuleContext(0, BlockContext); + } + returnParameters() { + return this.tryGetRuleContext(0, ReturnParametersContext); + } + catchClause(i) { + if (i === void 0) { + return this.getRuleContexts(CatchClauseContext); + } else { + return this.getRuleContext(i, CatchClauseContext); + } + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_tryStatement; + } + enterRule(listener) { + if (listener.enterTryStatement) { + listener.enterTryStatement(this); + } + } + exitRule(listener) { + if (listener.exitTryStatement) { + listener.exitTryStatement(this); + } + } + accept(visitor) { + if (visitor.visitTryStatement) { + return visitor.visitTryStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var CatchClauseContext = class extends import_ParserRuleContext.ParserRuleContext { + block() { + return this.getRuleContext(0, BlockContext); + } + parameterList() { + return this.tryGetRuleContext(0, ParameterListContext); + } + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_catchClause; + } + enterRule(listener) { + if (listener.enterCatchClause) { + listener.enterCatchClause(this); + } + } + exitRule(listener) { + if (listener.exitCatchClause) { + listener.exitCatchClause(this); + } + } + accept(visitor) { + if (visitor.visitCatchClause) { + return visitor.visitCatchClause(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var WhileStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + expression() { + return this.getRuleContext(0, ExpressionContext); + } + statement() { + return this.getRuleContext(0, StatementContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_whileStatement; + } + enterRule(listener) { + if (listener.enterWhileStatement) { + listener.enterWhileStatement(this); + } + } + exitRule(listener) { + if (listener.exitWhileStatement) { + listener.exitWhileStatement(this); + } + } + accept(visitor) { + if (visitor.visitWhileStatement) { + return visitor.visitWhileStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var SimpleStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + variableDeclarationStatement() { + return this.tryGetRuleContext(0, VariableDeclarationStatementContext); + } + expressionStatement() { + return this.tryGetRuleContext(0, ExpressionStatementContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_simpleStatement; + } + enterRule(listener) { + if (listener.enterSimpleStatement) { + listener.enterSimpleStatement(this); + } + } + exitRule(listener) { + if (listener.exitSimpleStatement) { + listener.exitSimpleStatement(this); + } + } + accept(visitor) { + if (visitor.visitSimpleStatement) { + return visitor.visitSimpleStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var UncheckedStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + block() { + return this.getRuleContext(0, BlockContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_uncheckedStatement; + } + enterRule(listener) { + if (listener.enterUncheckedStatement) { + listener.enterUncheckedStatement(this); + } + } + exitRule(listener) { + if (listener.exitUncheckedStatement) { + listener.exitUncheckedStatement(this); + } + } + accept(visitor) { + if (visitor.visitUncheckedStatement) { + return visitor.visitUncheckedStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ForStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + statement() { + return this.getRuleContext(0, StatementContext); + } + simpleStatement() { + return this.tryGetRuleContext(0, SimpleStatementContext); + } + expressionStatement() { + return this.tryGetRuleContext(0, ExpressionStatementContext); + } + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_forStatement; + } + enterRule(listener) { + if (listener.enterForStatement) { + listener.enterForStatement(this); + } + } + exitRule(listener) { + if (listener.exitForStatement) { + listener.exitForStatement(this); + } + } + accept(visitor) { + if (visitor.visitForStatement) { + return visitor.visitForStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var InlineAssemblyStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyBlock() { + return this.getRuleContext(0, AssemblyBlockContext); + } + StringLiteralFragment() { + return this.tryGetToken(SolidityParser.StringLiteralFragment, 0); + } + inlineAssemblyStatementFlag() { + return this.tryGetRuleContext(0, InlineAssemblyStatementFlagContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_inlineAssemblyStatement; + } + enterRule(listener) { + if (listener.enterInlineAssemblyStatement) { + listener.enterInlineAssemblyStatement(this); + } + } + exitRule(listener) { + if (listener.exitInlineAssemblyStatement) { + listener.exitInlineAssemblyStatement(this); + } + } + accept(visitor) { + if (visitor.visitInlineAssemblyStatement) { + return visitor.visitInlineAssemblyStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var InlineAssemblyStatementFlagContext = class extends import_ParserRuleContext.ParserRuleContext { + stringLiteral() { + return this.getRuleContext(0, StringLiteralContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_inlineAssemblyStatementFlag; + } + enterRule(listener) { + if (listener.enterInlineAssemblyStatementFlag) { + listener.enterInlineAssemblyStatementFlag(this); + } + } + exitRule(listener) { + if (listener.exitInlineAssemblyStatementFlag) { + listener.exitInlineAssemblyStatementFlag(this); + } + } + accept(visitor) { + if (visitor.visitInlineAssemblyStatementFlag) { + return visitor.visitInlineAssemblyStatementFlag(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var DoWhileStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + statement() { + return this.getRuleContext(0, StatementContext); + } + expression() { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_doWhileStatement; + } + enterRule(listener) { + if (listener.enterDoWhileStatement) { + listener.enterDoWhileStatement(this); + } + } + exitRule(listener) { + if (listener.exitDoWhileStatement) { + listener.exitDoWhileStatement(this); + } + } + accept(visitor) { + if (visitor.visitDoWhileStatement) { + return visitor.visitDoWhileStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ContinueStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + ContinueKeyword() { + return this.getToken(SolidityParser.ContinueKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_continueStatement; + } + enterRule(listener) { + if (listener.enterContinueStatement) { + listener.enterContinueStatement(this); + } + } + exitRule(listener) { + if (listener.exitContinueStatement) { + listener.exitContinueStatement(this); + } + } + accept(visitor) { + if (visitor.visitContinueStatement) { + return visitor.visitContinueStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var BreakStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + BreakKeyword() { + return this.getToken(SolidityParser.BreakKeyword, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_breakStatement; + } + enterRule(listener) { + if (listener.enterBreakStatement) { + listener.enterBreakStatement(this); + } + } + exitRule(listener) { + if (listener.exitBreakStatement) { + listener.exitBreakStatement(this); + } + } + accept(visitor) { + if (visitor.visitBreakStatement) { + return visitor.visitBreakStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ReturnStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_returnStatement; + } + enterRule(listener) { + if (listener.enterReturnStatement) { + listener.enterReturnStatement(this); + } + } + exitRule(listener) { + if (listener.exitReturnStatement) { + listener.exitReturnStatement(this); + } + } + accept(visitor) { + if (visitor.visitReturnStatement) { + return visitor.visitReturnStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ThrowStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_throwStatement; + } + enterRule(listener) { + if (listener.enterThrowStatement) { + listener.enterThrowStatement(this); + } + } + exitRule(listener) { + if (listener.exitThrowStatement) { + listener.exitThrowStatement(this); + } + } + accept(visitor) { + if (visitor.visitThrowStatement) { + return visitor.visitThrowStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var EmitStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + functionCall() { + return this.getRuleContext(0, FunctionCallContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_emitStatement; + } + enterRule(listener) { + if (listener.enterEmitStatement) { + listener.enterEmitStatement(this); + } + } + exitRule(listener) { + if (listener.exitEmitStatement) { + listener.exitEmitStatement(this); + } + } + accept(visitor) { + if (visitor.visitEmitStatement) { + return visitor.visitEmitStatement(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var RevertStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + functionCall() { + return this.getRuleContext(0, FunctionCallContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_revertStatement; + } + enterRule(listener) { + if (listener.enterRevertStatement) { + listener.enterRevertStatement(this); + } + } + exitRule(listener) { + if (listener.exitRevertStatement) { + listener.exitRevertStatement(this); + } + } + accept(visitor) { + if (visitor.visitRevertStatement) { + return visitor.visitRevertStatement(this); } else { - return this.getRuleContext(i, PragmaDirectiveContext); + return visitor.visitChildren(this); } } - importDirective(i) { - if (i === void 0) { - return this.getRuleContexts(ImportDirectiveContext); + }; + var VariableDeclarationStatementContext = class extends import_ParserRuleContext.ParserRuleContext { + identifierList() { + return this.tryGetRuleContext(0, IdentifierListContext); + } + variableDeclaration() { + return this.tryGetRuleContext(0, VariableDeclarationContext); + } + variableDeclarationList() { + return this.tryGetRuleContext(0, VariableDeclarationListContext); + } + expression() { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_variableDeclarationStatement; + } + enterRule(listener) { + if (listener.enterVariableDeclarationStatement) { + listener.enterVariableDeclarationStatement(this); + } + } + exitRule(listener) { + if (listener.exitVariableDeclarationStatement) { + listener.exitVariableDeclarationStatement(this); + } + } + accept(visitor) { + if (visitor.visitVariableDeclarationStatement) { + return visitor.visitVariableDeclarationStatement(this); } else { - return this.getRuleContext(i, ImportDirectiveContext); + return visitor.visitChildren(this); } } - contractDefinition(i) { + }; + var VariableDeclarationListContext = class extends import_ParserRuleContext.ParserRuleContext { + variableDeclaration(i) { if (i === void 0) { - return this.getRuleContexts(ContractDefinitionContext); + return this.getRuleContexts(VariableDeclarationContext); } else { - return this.getRuleContext(i, ContractDefinitionContext); + return this.getRuleContext(i, VariableDeclarationContext); } } - enumDefinition(i) { + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_variableDeclarationList; + } + enterRule(listener) { + if (listener.enterVariableDeclarationList) { + listener.enterVariableDeclarationList(this); + } + } + exitRule(listener) { + if (listener.exitVariableDeclarationList) { + listener.exitVariableDeclarationList(this); + } + } + accept(visitor) { + if (visitor.visitVariableDeclarationList) { + return visitor.visitVariableDeclarationList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var IdentifierListContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier(i) { if (i === void 0) { - return this.getRuleContexts(EnumDefinitionContext); + return this.getRuleContexts(IdentifierContext); } else { - return this.getRuleContext(i, EnumDefinitionContext); + return this.getRuleContext(i, IdentifierContext); } } - structDefinition(i) { + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_identifierList; + } + enterRule(listener) { + if (listener.enterIdentifierList) { + listener.enterIdentifierList(this); + } + } + exitRule(listener) { + if (listener.exitIdentifierList) { + listener.exitIdentifierList(this); + } + } + accept(visitor) { + if (visitor.visitIdentifierList) { + return visitor.visitIdentifierList(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ElementaryTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { + Int() { + return this.tryGetToken(SolidityParser.Int, 0); + } + Uint() { + return this.tryGetToken(SolidityParser.Uint, 0); + } + Byte() { + return this.tryGetToken(SolidityParser.Byte, 0); + } + Fixed() { + return this.tryGetToken(SolidityParser.Fixed, 0); + } + Ufixed() { + return this.tryGetToken(SolidityParser.Ufixed, 0); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_elementaryTypeName; + } + enterRule(listener) { + if (listener.enterElementaryTypeName) { + listener.enterElementaryTypeName(this); + } + } + exitRule(listener) { + if (listener.exitElementaryTypeName) { + listener.exitElementaryTypeName(this); + } + } + accept(visitor) { + if (visitor.visitElementaryTypeName) { + return visitor.visitElementaryTypeName(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var ExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { + expression(i) { if (i === void 0) { - return this.getRuleContexts(StructDefinitionContext); + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + typeName() { + return this.tryGetRuleContext(0, TypeNameContext); + } + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + nameValueList() { + return this.tryGetRuleContext(0, NameValueListContext); + } + functionCallArguments() { + return this.tryGetRuleContext(0, FunctionCallArgumentsContext); + } + primaryExpression() { + return this.tryGetRuleContext(0, PrimaryExpressionContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_expression; + } + enterRule(listener) { + if (listener.enterExpression) { + listener.enterExpression(this); + } + } + exitRule(listener) { + if (listener.exitExpression) { + listener.exitExpression(this); + } + } + accept(visitor) { + if (visitor.visitExpression) { + return visitor.visitExpression(this); + } else { + return visitor.visitChildren(this); + } + } + }; + var PrimaryExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { + BooleanLiteral() { + return this.tryGetToken(SolidityParser.BooleanLiteral, 0); + } + numberLiteral() { + return this.tryGetRuleContext(0, NumberLiteralContext); + } + hexLiteral() { + return this.tryGetRuleContext(0, HexLiteralContext); + } + stringLiteral() { + return this.tryGetRuleContext(0, StringLiteralContext); + } + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + TypeKeyword() { + return this.tryGetToken(SolidityParser.TypeKeyword, 0); + } + PayableKeyword() { + return this.tryGetToken(SolidityParser.PayableKeyword, 0); + } + tupleExpression() { + return this.tryGetRuleContext(0, TupleExpressionContext); + } + typeName() { + return this.tryGetRuleContext(0, TypeNameContext); + } + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_primaryExpression; + } + enterRule(listener) { + if (listener.enterPrimaryExpression) { + listener.enterPrimaryExpression(this); + } + } + exitRule(listener) { + if (listener.exitPrimaryExpression) { + listener.exitPrimaryExpression(this); + } + } + accept(visitor) { + if (visitor.visitPrimaryExpression) { + return visitor.visitPrimaryExpression(this); } else { - return this.getRuleContext(i, StructDefinitionContext); + return visitor.visitChildren(this); } } - functionDefinition(i) { + }; + var ExpressionListContext = class extends import_ParserRuleContext.ParserRuleContext { + expression(i) { if (i === void 0) { - return this.getRuleContexts(FunctionDefinitionContext); + return this.getRuleContexts(ExpressionContext); } else { - return this.getRuleContext(i, FunctionDefinitionContext); + return this.getRuleContext(i, ExpressionContext); } } - fileLevelConstant(i) { - if (i === void 0) { - return this.getRuleContexts(FileLevelConstantContext); - } else { - return this.getRuleContext(i, FileLevelConstantContext); + constructor(parent, invokingState) { + super(parent, invokingState); + } + get ruleIndex() { + return SolidityParser.RULE_expressionList; + } + enterRule(listener) { + if (listener.enterExpressionList) { + listener.enterExpressionList(this); } } - customErrorDefinition(i) { - if (i === void 0) { - return this.getRuleContexts(CustomErrorDefinitionContext); - } else { - return this.getRuleContext(i, CustomErrorDefinitionContext); + exitRule(listener) { + if (listener.exitExpressionList) { + listener.exitExpressionList(this); } } - typeDefinition(i) { - if (i === void 0) { - return this.getRuleContexts(TypeDefinitionContext); + accept(visitor) { + if (visitor.visitExpressionList) { + return visitor.visitExpressionList(this); } else { - return this.getRuleContext(i, TypeDefinitionContext); + return visitor.visitChildren(this); } } - usingForDeclaration(i) { + }; + var NameValueListContext = class extends import_ParserRuleContext.ParserRuleContext { + nameValue(i) { if (i === void 0) { - return this.getRuleContexts(UsingForDeclarationContext); + return this.getRuleContexts(NameValueContext); } else { - return this.getRuleContext(i, UsingForDeclarationContext); + return this.getRuleContext(i, NameValueContext); } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_sourceUnit; + return SolidityParser.RULE_nameValueList; } enterRule(listener) { - if (listener.enterSourceUnit) { - listener.enterSourceUnit(this); + if (listener.enterNameValueList) { + listener.enterNameValueList(this); } } exitRule(listener) { - if (listener.exitSourceUnit) { - listener.exitSourceUnit(this); + if (listener.exitNameValueList) { + listener.exitNameValueList(this); } } accept(visitor) { - if (visitor.visitSourceUnit) { - return visitor.visitSourceUnit(this); + if (visitor.visitNameValueList) { + return visitor.visitNameValueList(this); } else { return visitor.visitChildren(this); } } }; - var PragmaDirectiveContext = class extends import_ParserRuleContext.ParserRuleContext { - pragmaName() { - return this.getRuleContext(0, PragmaNameContext); + var NameValueContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.getRuleContext(0, IdentifierContext); } - pragmaValue() { - return this.getRuleContext(0, PragmaValueContext); + expression() { + return this.getRuleContext(0, ExpressionContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_pragmaDirective; + return SolidityParser.RULE_nameValue; } enterRule(listener) { - if (listener.enterPragmaDirective) { - listener.enterPragmaDirective(this); + if (listener.enterNameValue) { + listener.enterNameValue(this); } } exitRule(listener) { - if (listener.exitPragmaDirective) { - listener.exitPragmaDirective(this); + if (listener.exitNameValue) { + listener.exitNameValue(this); } } accept(visitor) { - if (visitor.visitPragmaDirective) { - return visitor.visitPragmaDirective(this); + if (visitor.visitNameValue) { + return visitor.visitNameValue(this); } else { return visitor.visitChildren(this); } } }; - var PragmaNameContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + var FunctionCallArgumentsContext = class extends import_ParserRuleContext.ParserRuleContext { + nameValueList() { + return this.tryGetRuleContext(0, NameValueListContext); + } + expressionList() { + return this.tryGetRuleContext(0, ExpressionListContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_pragmaName; + return SolidityParser.RULE_functionCallArguments; } enterRule(listener) { - if (listener.enterPragmaName) { - listener.enterPragmaName(this); + if (listener.enterFunctionCallArguments) { + listener.enterFunctionCallArguments(this); } } exitRule(listener) { - if (listener.exitPragmaName) { - listener.exitPragmaName(this); + if (listener.exitFunctionCallArguments) { + listener.exitFunctionCallArguments(this); } } accept(visitor) { - if (visitor.visitPragmaName) { - return visitor.visitPragmaName(this); + if (visitor.visitFunctionCallArguments) { + return visitor.visitFunctionCallArguments(this); } else { return visitor.visitChildren(this); } } }; - var PragmaValueContext = class extends import_ParserRuleContext.ParserRuleContext { - version() { - return this.tryGetRuleContext(0, VersionContext); - } + var FunctionCallContext = class extends import_ParserRuleContext.ParserRuleContext { expression() { - return this.tryGetRuleContext(0, ExpressionContext); + return this.getRuleContext(0, ExpressionContext); + } + functionCallArguments() { + return this.getRuleContext(0, FunctionCallArgumentsContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_pragmaValue; + return SolidityParser.RULE_functionCall; } enterRule(listener) { - if (listener.enterPragmaValue) { - listener.enterPragmaValue(this); + if (listener.enterFunctionCall) { + listener.enterFunctionCall(this); } } exitRule(listener) { - if (listener.exitPragmaValue) { - listener.exitPragmaValue(this); + if (listener.exitFunctionCall) { + listener.exitFunctionCall(this); } } accept(visitor) { - if (visitor.visitPragmaValue) { - return visitor.visitPragmaValue(this); + if (visitor.visitFunctionCall) { + return visitor.visitFunctionCall(this); } else { return visitor.visitChildren(this); } } }; - var VersionContext = class extends import_ParserRuleContext.ParserRuleContext { - versionConstraint(i) { + var AssemblyBlockContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyItem(i) { if (i === void 0) { - return this.getRuleContexts(VersionConstraintContext); + return this.getRuleContexts(AssemblyItemContext); } else { - return this.getRuleContext(i, VersionConstraintContext); + return this.getRuleContext(i, AssemblyItemContext); } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_version; + return SolidityParser.RULE_assemblyBlock; } enterRule(listener) { - if (listener.enterVersion) { - listener.enterVersion(this); + if (listener.enterAssemblyBlock) { + listener.enterAssemblyBlock(this); } } exitRule(listener) { - if (listener.exitVersion) { - listener.exitVersion(this); + if (listener.exitAssemblyBlock) { + listener.exitAssemblyBlock(this); } } accept(visitor) { - if (visitor.visitVersion) { - return visitor.visitVersion(this); + if (visitor.visitAssemblyBlock) { + return visitor.visitAssemblyBlock(this); } else { return visitor.visitChildren(this); } } }; - var VersionOperatorContext = class extends import_ParserRuleContext.ParserRuleContext { + var AssemblyItemContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); + } + assemblyBlock() { + return this.tryGetRuleContext(0, AssemblyBlockContext); + } + assemblyExpression() { + return this.tryGetRuleContext(0, AssemblyExpressionContext); + } + assemblyLocalDefinition() { + return this.tryGetRuleContext(0, AssemblyLocalDefinitionContext); + } + assemblyAssignment() { + return this.tryGetRuleContext(0, AssemblyAssignmentContext); + } + assemblyStackAssignment() { + return this.tryGetRuleContext(0, AssemblyStackAssignmentContext); + } + labelDefinition() { + return this.tryGetRuleContext(0, LabelDefinitionContext); + } + assemblySwitch() { + return this.tryGetRuleContext(0, AssemblySwitchContext); + } + assemblyFunctionDefinition() { + return this.tryGetRuleContext(0, AssemblyFunctionDefinitionContext); + } + assemblyFor() { + return this.tryGetRuleContext(0, AssemblyForContext); + } + assemblyIf() { + return this.tryGetRuleContext(0, AssemblyIfContext); + } + BreakKeyword() { + return this.tryGetToken(SolidityParser.BreakKeyword, 0); + } + ContinueKeyword() { + return this.tryGetToken(SolidityParser.ContinueKeyword, 0); + } + LeaveKeyword() { + return this.tryGetToken(SolidityParser.LeaveKeyword, 0); + } + subAssembly() { + return this.tryGetRuleContext(0, SubAssemblyContext); + } + numberLiteral() { + return this.tryGetRuleContext(0, NumberLiteralContext); + } + stringLiteral() { + return this.tryGetRuleContext(0, StringLiteralContext); + } + hexLiteral() { + return this.tryGetRuleContext(0, HexLiteralContext); + } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_versionOperator; + return SolidityParser.RULE_assemblyItem; } enterRule(listener) { - if (listener.enterVersionOperator) { - listener.enterVersionOperator(this); + if (listener.enterAssemblyItem) { + listener.enterAssemblyItem(this); } } exitRule(listener) { - if (listener.exitVersionOperator) { - listener.exitVersionOperator(this); + if (listener.exitAssemblyItem) { + listener.exitAssemblyItem(this); } } accept(visitor) { - if (visitor.visitVersionOperator) { - return visitor.visitVersionOperator(this); + if (visitor.visitAssemblyItem) { + return visitor.visitAssemblyItem(this); } else { return visitor.visitChildren(this); } } }; - var VersionConstraintContext = class extends import_ParserRuleContext.ParserRuleContext { - VersionLiteral() { - return this.tryGetToken(SolidityParser.VersionLiteral, 0); + var AssemblyExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyCall() { + return this.tryGetRuleContext(0, AssemblyCallContext); } - versionOperator() { - return this.tryGetRuleContext(0, VersionOperatorContext); + assemblyLiteral() { + return this.tryGetRuleContext(0, AssemblyLiteralContext); } - DecimalNumber() { - return this.tryGetToken(SolidityParser.DecimalNumber, 0); + assemblyMember() { + return this.tryGetRuleContext(0, AssemblyMemberContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_versionConstraint; + return SolidityParser.RULE_assemblyExpression; } enterRule(listener) { - if (listener.enterVersionConstraint) { - listener.enterVersionConstraint(this); + if (listener.enterAssemblyExpression) { + listener.enterAssemblyExpression(this); } } exitRule(listener) { - if (listener.exitVersionConstraint) { - listener.exitVersionConstraint(this); + if (listener.exitAssemblyExpression) { + listener.exitAssemblyExpression(this); } } accept(visitor) { - if (visitor.visitVersionConstraint) { - return visitor.visitVersionConstraint(this); + if (visitor.visitAssemblyExpression) { + return visitor.visitAssemblyExpression(this); } else { return visitor.visitChildren(this); } } }; - var ImportDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { + var AssemblyMemberContext = class extends import_ParserRuleContext.ParserRuleContext { identifier(i) { if (i === void 0) { return this.getRuleContexts(IdentifierContext); @@ -35882,4793 +31541,9644 @@ qrrrrrrrrrrsssssstttttttttuuuuuuuuuuvvvv super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_importDeclaration; + return SolidityParser.RULE_assemblyMember; } enterRule(listener) { - if (listener.enterImportDeclaration) { - listener.enterImportDeclaration(this); + if (listener.enterAssemblyMember) { + listener.enterAssemblyMember(this); } } exitRule(listener) { - if (listener.exitImportDeclaration) { - listener.exitImportDeclaration(this); + if (listener.exitAssemblyMember) { + listener.exitAssemblyMember(this); } } accept(visitor) { - if (visitor.visitImportDeclaration) { - return visitor.visitImportDeclaration(this); + if (visitor.visitAssemblyMember) { + return visitor.visitAssemblyMember(this); } else { return visitor.visitChildren(this); } } }; - var ImportDirectiveContext = class extends import_ParserRuleContext.ParserRuleContext { - importPath() { - return this.getRuleContext(0, ImportPathContext); - } - identifier(i) { - if (i === void 0) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } + var AssemblyCallContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); } - importDeclaration(i) { + assemblyExpression(i) { if (i === void 0) { - return this.getRuleContexts(ImportDeclarationContext); + return this.getRuleContexts(AssemblyExpressionContext); } else { - return this.getRuleContext(i, ImportDeclarationContext); + return this.getRuleContext(i, AssemblyExpressionContext); } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_importDirective; + return SolidityParser.RULE_assemblyCall; } enterRule(listener) { - if (listener.enterImportDirective) { - listener.enterImportDirective(this); + if (listener.enterAssemblyCall) { + listener.enterAssemblyCall(this); } } exitRule(listener) { - if (listener.exitImportDirective) { - listener.exitImportDirective(this); + if (listener.exitAssemblyCall) { + listener.exitAssemblyCall(this); } } accept(visitor) { - if (visitor.visitImportDirective) { - return visitor.visitImportDirective(this); + if (visitor.visitAssemblyCall) { + return visitor.visitAssemblyCall(this); } else { return visitor.visitChildren(this); } } }; - var ImportPathContext = class extends import_ParserRuleContext.ParserRuleContext { - StringLiteralFragment() { - return this.getToken(SolidityParser.StringLiteralFragment, 0); + var AssemblyLocalDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyIdentifierOrList() { + return this.getRuleContext(0, AssemblyIdentifierOrListContext); + } + assemblyExpression() { + return this.tryGetRuleContext(0, AssemblyExpressionContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_importPath; + return SolidityParser.RULE_assemblyLocalDefinition; } enterRule(listener) { - if (listener.enterImportPath) { - listener.enterImportPath(this); + if (listener.enterAssemblyLocalDefinition) { + listener.enterAssemblyLocalDefinition(this); } } exitRule(listener) { - if (listener.exitImportPath) { - listener.exitImportPath(this); + if (listener.exitAssemblyLocalDefinition) { + listener.exitAssemblyLocalDefinition(this); } } accept(visitor) { - if (visitor.visitImportPath) { - return visitor.visitImportPath(this); + if (visitor.visitAssemblyLocalDefinition) { + return visitor.visitAssemblyLocalDefinition(this); } else { return visitor.visitChildren(this); } } }; - var ContractDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - inheritanceSpecifier(i) { - if (i === void 0) { - return this.getRuleContexts(InheritanceSpecifierContext); - } else { - return this.getRuleContext(i, InheritanceSpecifierContext); - } + var AssemblyAssignmentContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyIdentifierOrList() { + return this.getRuleContext(0, AssemblyIdentifierOrListContext); } - contractPart(i) { - if (i === void 0) { - return this.getRuleContexts(ContractPartContext); - } else { - return this.getRuleContext(i, ContractPartContext); - } + assemblyExpression() { + return this.getRuleContext(0, AssemblyExpressionContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_contractDefinition; + return SolidityParser.RULE_assemblyAssignment; } enterRule(listener) { - if (listener.enterContractDefinition) { - listener.enterContractDefinition(this); + if (listener.enterAssemblyAssignment) { + listener.enterAssemblyAssignment(this); } } exitRule(listener) { - if (listener.exitContractDefinition) { - listener.exitContractDefinition(this); + if (listener.exitAssemblyAssignment) { + listener.exitAssemblyAssignment(this); } } accept(visitor) { - if (visitor.visitContractDefinition) { - return visitor.visitContractDefinition(this); + if (visitor.visitAssemblyAssignment) { + return visitor.visitAssemblyAssignment(this); } else { return visitor.visitChildren(this); } } }; - var InheritanceSpecifierContext = class extends import_ParserRuleContext.ParserRuleContext { - userDefinedTypeName() { - return this.getRuleContext(0, UserDefinedTypeNameContext); + var AssemblyIdentifierOrListContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier() { + return this.tryGetRuleContext(0, IdentifierContext); } - expressionList() { - return this.tryGetRuleContext(0, ExpressionListContext); + assemblyMember() { + return this.tryGetRuleContext(0, AssemblyMemberContext); + } + assemblyIdentifierList() { + return this.tryGetRuleContext(0, AssemblyIdentifierListContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_inheritanceSpecifier; + return SolidityParser.RULE_assemblyIdentifierOrList; } enterRule(listener) { - if (listener.enterInheritanceSpecifier) { - listener.enterInheritanceSpecifier(this); + if (listener.enterAssemblyIdentifierOrList) { + listener.enterAssemblyIdentifierOrList(this); } } exitRule(listener) { - if (listener.exitInheritanceSpecifier) { - listener.exitInheritanceSpecifier(this); + if (listener.exitAssemblyIdentifierOrList) { + listener.exitAssemblyIdentifierOrList(this); } } accept(visitor) { - if (visitor.visitInheritanceSpecifier) { - return visitor.visitInheritanceSpecifier(this); + if (visitor.visitAssemblyIdentifierOrList) { + return visitor.visitAssemblyIdentifierOrList(this); } else { return visitor.visitChildren(this); } } }; - var ContractPartContext = class extends import_ParserRuleContext.ParserRuleContext { - stateVariableDeclaration() { - return this.tryGetRuleContext(0, StateVariableDeclarationContext); - } - usingForDeclaration() { - return this.tryGetRuleContext(0, UsingForDeclarationContext); + var AssemblyIdentifierListContext = class extends import_ParserRuleContext.ParserRuleContext { + identifier(i) { + if (i === void 0) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } } - structDefinition() { - return this.tryGetRuleContext(0, StructDefinitionContext); + constructor(parent, invokingState) { + super(parent, invokingState); } - modifierDefinition() { - return this.tryGetRuleContext(0, ModifierDefinitionContext); + get ruleIndex() { + return SolidityParser.RULE_assemblyIdentifierList; } - functionDefinition() { - return this.tryGetRuleContext(0, FunctionDefinitionContext); + enterRule(listener) { + if (listener.enterAssemblyIdentifierList) { + listener.enterAssemblyIdentifierList(this); + } } - eventDefinition() { - return this.tryGetRuleContext(0, EventDefinitionContext); + exitRule(listener) { + if (listener.exitAssemblyIdentifierList) { + listener.exitAssemblyIdentifierList(this); + } } - enumDefinition() { - return this.tryGetRuleContext(0, EnumDefinitionContext); + accept(visitor) { + if (visitor.visitAssemblyIdentifierList) { + return visitor.visitAssemblyIdentifierList(this); + } else { + return visitor.visitChildren(this); + } } - customErrorDefinition() { - return this.tryGetRuleContext(0, CustomErrorDefinitionContext); + }; + var AssemblyStackAssignmentContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyExpression() { + return this.getRuleContext(0, AssemblyExpressionContext); } - typeDefinition() { - return this.tryGetRuleContext(0, TypeDefinitionContext); + identifier() { + return this.getRuleContext(0, IdentifierContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_contractPart; + return SolidityParser.RULE_assemblyStackAssignment; } enterRule(listener) { - if (listener.enterContractPart) { - listener.enterContractPart(this); + if (listener.enterAssemblyStackAssignment) { + listener.enterAssemblyStackAssignment(this); } } exitRule(listener) { - if (listener.exitContractPart) { - listener.exitContractPart(this); + if (listener.exitAssemblyStackAssignment) { + listener.exitAssemblyStackAssignment(this); } } accept(visitor) { - if (visitor.visitContractPart) { - return visitor.visitContractPart(this); + if (visitor.visitAssemblyStackAssignment) { + return visitor.visitAssemblyStackAssignment(this); } else { return visitor.visitChildren(this); } } }; - var StateVariableDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } + var LabelDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { identifier() { return this.getRuleContext(0, IdentifierContext); } - PublicKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.PublicKeyword); - } else { - return this.getToken(SolidityParser.PublicKeyword, i); - } + constructor(parent, invokingState) { + super(parent, invokingState); } - InternalKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); - } + get ruleIndex() { + return SolidityParser.RULE_labelDefinition; } - PrivateKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.PrivateKeyword); - } else { - return this.getToken(SolidityParser.PrivateKeyword, i); + enterRule(listener) { + if (listener.enterLabelDefinition) { + listener.enterLabelDefinition(this); } } - ConstantKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.ConstantKeyword); - } else { - return this.getToken(SolidityParser.ConstantKeyword, i); + exitRule(listener) { + if (listener.exitLabelDefinition) { + listener.exitLabelDefinition(this); } } - ImmutableKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.ImmutableKeyword); + accept(visitor) { + if (visitor.visitLabelDefinition) { + return visitor.visitLabelDefinition(this); } else { - return this.getToken(SolidityParser.ImmutableKeyword, i); + return visitor.visitChildren(this); } } - overrideSpecifier(i) { + }; + var AssemblySwitchContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyExpression() { + return this.getRuleContext(0, AssemblyExpressionContext); + } + assemblyCase(i) { if (i === void 0) { - return this.getRuleContexts(OverrideSpecifierContext); + return this.getRuleContexts(AssemblyCaseContext); } else { - return this.getRuleContext(i, OverrideSpecifierContext); - } - } - expression() { - return this.tryGetRuleContext(0, ExpressionContext); + return this.getRuleContext(i, AssemblyCaseContext); + } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_stateVariableDeclaration; + return SolidityParser.RULE_assemblySwitch; } enterRule(listener) { - if (listener.enterStateVariableDeclaration) { - listener.enterStateVariableDeclaration(this); + if (listener.enterAssemblySwitch) { + listener.enterAssemblySwitch(this); } } exitRule(listener) { - if (listener.exitStateVariableDeclaration) { - listener.exitStateVariableDeclaration(this); + if (listener.exitAssemblySwitch) { + listener.exitAssemblySwitch(this); } } accept(visitor) { - if (visitor.visitStateVariableDeclaration) { - return visitor.visitStateVariableDeclaration(this); + if (visitor.visitAssemblySwitch) { + return visitor.visitAssemblySwitch(this); } else { return visitor.visitChildren(this); } } }; - var FileLevelConstantContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - ConstantKeyword() { - return this.getToken(SolidityParser.ConstantKeyword, 0); - } - identifier() { - return this.getRuleContext(0, IdentifierContext); + var AssemblyCaseContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyLiteral() { + return this.tryGetRuleContext(0, AssemblyLiteralContext); } - expression() { - return this.getRuleContext(0, ExpressionContext); + assemblyBlock() { + return this.getRuleContext(0, AssemblyBlockContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_fileLevelConstant; + return SolidityParser.RULE_assemblyCase; } enterRule(listener) { - if (listener.enterFileLevelConstant) { - listener.enterFileLevelConstant(this); + if (listener.enterAssemblyCase) { + listener.enterAssemblyCase(this); } } exitRule(listener) { - if (listener.exitFileLevelConstant) { - listener.exitFileLevelConstant(this); + if (listener.exitAssemblyCase) { + listener.exitAssemblyCase(this); } } accept(visitor) { - if (visitor.visitFileLevelConstant) { - return visitor.visitFileLevelConstant(this); + if (visitor.visitAssemblyCase) { + return visitor.visitAssemblyCase(this); } else { return visitor.visitChildren(this); } } }; - var CustomErrorDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + var AssemblyFunctionDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { identifier() { return this.getRuleContext(0, IdentifierContext); } - parameterList() { - return this.getRuleContext(0, ParameterListContext); + assemblyBlock() { + return this.getRuleContext(0, AssemblyBlockContext); + } + assemblyIdentifierList() { + return this.tryGetRuleContext(0, AssemblyIdentifierListContext); + } + assemblyFunctionReturns() { + return this.tryGetRuleContext(0, AssemblyFunctionReturnsContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_customErrorDefinition; + return SolidityParser.RULE_assemblyFunctionDefinition; } enterRule(listener) { - if (listener.enterCustomErrorDefinition) { - listener.enterCustomErrorDefinition(this); + if (listener.enterAssemblyFunctionDefinition) { + listener.enterAssemblyFunctionDefinition(this); } } exitRule(listener) { - if (listener.exitCustomErrorDefinition) { - listener.exitCustomErrorDefinition(this); + if (listener.exitAssemblyFunctionDefinition) { + listener.exitAssemblyFunctionDefinition(this); } } accept(visitor) { - if (visitor.visitCustomErrorDefinition) { - return visitor.visitCustomErrorDefinition(this); + if (visitor.visitAssemblyFunctionDefinition) { + return visitor.visitAssemblyFunctionDefinition(this); } else { return visitor.visitChildren(this); } } }; - var TypeDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - TypeKeyword() { - return this.getToken(SolidityParser.TypeKeyword, 0); - } - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - elementaryTypeName() { - return this.getRuleContext(0, ElementaryTypeNameContext); + var AssemblyFunctionReturnsContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyIdentifierList() { + return this.tryGetRuleContext(0, AssemblyIdentifierListContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_typeDefinition; + return SolidityParser.RULE_assemblyFunctionReturns; } enterRule(listener) { - if (listener.enterTypeDefinition) { - listener.enterTypeDefinition(this); + if (listener.enterAssemblyFunctionReturns) { + listener.enterAssemblyFunctionReturns(this); } } exitRule(listener) { - if (listener.exitTypeDefinition) { - listener.exitTypeDefinition(this); + if (listener.exitAssemblyFunctionReturns) { + listener.exitAssemblyFunctionReturns(this); } } accept(visitor) { - if (visitor.visitTypeDefinition) { - return visitor.visitTypeDefinition(this); + if (visitor.visitAssemblyFunctionReturns) { + return visitor.visitAssemblyFunctionReturns(this); } else { return visitor.visitChildren(this); } } }; - var UsingForDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { - usingForObject() { - return this.getRuleContext(0, UsingForObjectContext); - } - typeName() { - return this.tryGetRuleContext(0, TypeNameContext); + var AssemblyForContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyExpression(i) { + if (i === void 0) { + return this.getRuleContexts(AssemblyExpressionContext); + } else { + return this.getRuleContext(i, AssemblyExpressionContext); + } } - GlobalKeyword() { - return this.tryGetToken(SolidityParser.GlobalKeyword, 0); + assemblyBlock(i) { + if (i === void 0) { + return this.getRuleContexts(AssemblyBlockContext); + } else { + return this.getRuleContext(i, AssemblyBlockContext); + } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_usingForDeclaration; + return SolidityParser.RULE_assemblyFor; } enterRule(listener) { - if (listener.enterUsingForDeclaration) { - listener.enterUsingForDeclaration(this); + if (listener.enterAssemblyFor) { + listener.enterAssemblyFor(this); } } exitRule(listener) { - if (listener.exitUsingForDeclaration) { - listener.exitUsingForDeclaration(this); + if (listener.exitAssemblyFor) { + listener.exitAssemblyFor(this); } } accept(visitor) { - if (visitor.visitUsingForDeclaration) { - return visitor.visitUsingForDeclaration(this); + if (visitor.visitAssemblyFor) { + return visitor.visitAssemblyFor(this); } else { return visitor.visitChildren(this); } } }; - var UsingForObjectContext = class extends import_ParserRuleContext.ParserRuleContext { - userDefinedTypeName(i) { - if (i === void 0) { - return this.getRuleContexts(UserDefinedTypeNameContext); - } else { - return this.getRuleContext(i, UserDefinedTypeNameContext); - } + var AssemblyIfContext = class extends import_ParserRuleContext.ParserRuleContext { + assemblyExpression() { + return this.getRuleContext(0, AssemblyExpressionContext); + } + assemblyBlock() { + return this.getRuleContext(0, AssemblyBlockContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_usingForObject; + return SolidityParser.RULE_assemblyIf; } enterRule(listener) { - if (listener.enterUsingForObject) { - listener.enterUsingForObject(this); + if (listener.enterAssemblyIf) { + listener.enterAssemblyIf(this); } } exitRule(listener) { - if (listener.exitUsingForObject) { - listener.exitUsingForObject(this); + if (listener.exitAssemblyIf) { + listener.exitAssemblyIf(this); } } accept(visitor) { - if (visitor.visitUsingForObject) { - return visitor.visitUsingForObject(this); + if (visitor.visitAssemblyIf) { + return visitor.visitAssemblyIf(this); } else { return visitor.visitChildren(this); } } }; - var StructDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + var AssemblyLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { + stringLiteral() { + return this.tryGetRuleContext(0, StringLiteralContext); } - variableDeclaration(i) { - if (i === void 0) { - return this.getRuleContexts(VariableDeclarationContext); - } else { - return this.getRuleContext(i, VariableDeclarationContext); - } + DecimalNumber() { + return this.tryGetToken(SolidityParser.DecimalNumber, 0); + } + HexNumber() { + return this.tryGetToken(SolidityParser.HexNumber, 0); + } + hexLiteral() { + return this.tryGetRuleContext(0, HexLiteralContext); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_structDefinition; + return SolidityParser.RULE_assemblyLiteral; } enterRule(listener) { - if (listener.enterStructDefinition) { - listener.enterStructDefinition(this); + if (listener.enterAssemblyLiteral) { + listener.enterAssemblyLiteral(this); } } exitRule(listener) { - if (listener.exitStructDefinition) { - listener.exitStructDefinition(this); + if (listener.exitAssemblyLiteral) { + listener.exitAssemblyLiteral(this); } } accept(visitor) { - if (visitor.visitStructDefinition) { - return visitor.visitStructDefinition(this); + if (visitor.visitAssemblyLiteral) { + return visitor.visitAssemblyLiteral(this); } else { return visitor.visitChildren(this); } } }; - var ModifierDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { + var SubAssemblyContext = class extends import_ParserRuleContext.ParserRuleContext { identifier() { return this.getRuleContext(0, IdentifierContext); } - block() { - return this.tryGetRuleContext(0, BlockContext); + assemblyBlock() { + return this.getRuleContext(0, AssemblyBlockContext); } - parameterList() { - return this.tryGetRuleContext(0, ParameterListContext); + constructor(parent, invokingState) { + super(parent, invokingState); } - VirtualKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.VirtualKeyword); + get ruleIndex() { + return SolidityParser.RULE_subAssembly; + } + enterRule(listener) { + if (listener.enterSubAssembly) { + listener.enterSubAssembly(this); + } + } + exitRule(listener) { + if (listener.exitSubAssembly) { + listener.exitSubAssembly(this); + } + } + accept(visitor) { + if (visitor.visitSubAssembly) { + return visitor.visitSubAssembly(this); } else { - return this.getToken(SolidityParser.VirtualKeyword, i); + return visitor.visitChildren(this); } } - overrideSpecifier(i) { + }; + var TupleExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { + expression(i) { if (i === void 0) { - return this.getRuleContexts(OverrideSpecifierContext); + return this.getRuleContexts(ExpressionContext); } else { - return this.getRuleContext(i, OverrideSpecifierContext); + return this.getRuleContext(i, ExpressionContext); } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_modifierDefinition; + return SolidityParser.RULE_tupleExpression; } enterRule(listener) { - if (listener.enterModifierDefinition) { - listener.enterModifierDefinition(this); + if (listener.enterTupleExpression) { + listener.enterTupleExpression(this); } } exitRule(listener) { - if (listener.exitModifierDefinition) { - listener.exitModifierDefinition(this); + if (listener.exitTupleExpression) { + listener.exitTupleExpression(this); } } accept(visitor) { - if (visitor.visitModifierDefinition) { - return visitor.visitModifierDefinition(this); + if (visitor.visitTupleExpression) { + return visitor.visitTupleExpression(this); } else { return visitor.visitChildren(this); } } }; - var ModifierInvocationContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + var NumberLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { + DecimalNumber() { + return this.tryGetToken(SolidityParser.DecimalNumber, 0); + } + HexNumber() { + return this.tryGetToken(SolidityParser.HexNumber, 0); } - expressionList() { - return this.tryGetRuleContext(0, ExpressionListContext); + NumberUnit() { + return this.tryGetToken(SolidityParser.NumberUnit, 0); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_modifierInvocation; + return SolidityParser.RULE_numberLiteral; } enterRule(listener) { - if (listener.enterModifierInvocation) { - listener.enterModifierInvocation(this); + if (listener.enterNumberLiteral) { + listener.enterNumberLiteral(this); } } exitRule(listener) { - if (listener.exitModifierInvocation) { - listener.exitModifierInvocation(this); + if (listener.exitNumberLiteral) { + listener.exitNumberLiteral(this); } } accept(visitor) { - if (visitor.visitModifierInvocation) { - return visitor.visitModifierInvocation(this); + if (visitor.visitNumberLiteral) { + return visitor.visitNumberLiteral(this); } else { return visitor.visitChildren(this); } } }; - var FunctionDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - functionDescriptor() { - return this.getRuleContext(0, FunctionDescriptorContext); + var IdentifierContext = class extends import_ParserRuleContext.ParserRuleContext { + ReceiveKeyword() { + return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); } - parameterList() { - return this.getRuleContext(0, ParameterListContext); + ConstructorKeyword() { + return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); } - modifierList() { - return this.getRuleContext(0, ModifierListContext); + PayableKeyword() { + return this.tryGetToken(SolidityParser.PayableKeyword, 0); } - block() { - return this.tryGetRuleContext(0, BlockContext); + LeaveKeyword() { + return this.tryGetToken(SolidityParser.LeaveKeyword, 0); } - returnParameters() { - return this.tryGetRuleContext(0, ReturnParametersContext); + Identifier() { + return this.tryGetToken(SolidityParser.Identifier, 0); } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_functionDefinition; + return SolidityParser.RULE_identifier; } enterRule(listener) { - if (listener.enterFunctionDefinition) { - listener.enterFunctionDefinition(this); + if (listener.enterIdentifier) { + listener.enterIdentifier(this); } } exitRule(listener) { - if (listener.exitFunctionDefinition) { - listener.exitFunctionDefinition(this); + if (listener.exitIdentifier) { + listener.exitIdentifier(this); } } accept(visitor) { - if (visitor.visitFunctionDefinition) { - return visitor.visitFunctionDefinition(this); + if (visitor.visitIdentifier) { + return visitor.visitIdentifier(this); } else { return visitor.visitChildren(this); } } }; - var FunctionDescriptorContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - ConstructorKeyword() { - return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); - } - FallbackKeyword() { - return this.tryGetToken(SolidityParser.FallbackKeyword, 0); - } - ReceiveKeyword() { - return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); + var HexLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { + HexLiteralFragment(i) { + if (i === void 0) { + return this.getTokens(SolidityParser.HexLiteralFragment); + } else { + return this.getToken(SolidityParser.HexLiteralFragment, i); + } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_functionDescriptor; + return SolidityParser.RULE_hexLiteral; } enterRule(listener) { - if (listener.enterFunctionDescriptor) { - listener.enterFunctionDescriptor(this); + if (listener.enterHexLiteral) { + listener.enterHexLiteral(this); } } exitRule(listener) { - if (listener.exitFunctionDescriptor) { - listener.exitFunctionDescriptor(this); + if (listener.exitHexLiteral) { + listener.exitHexLiteral(this); } } accept(visitor) { - if (visitor.visitFunctionDescriptor) { - return visitor.visitFunctionDescriptor(this); + if (visitor.visitHexLiteral) { + return visitor.visitHexLiteral(this); } else { return visitor.visitChildren(this); } } }; - var ReturnParametersContext = class extends import_ParserRuleContext.ParserRuleContext { - parameterList() { - return this.getRuleContext(0, ParameterListContext); + var OverrideSpecifierContext = class extends import_ParserRuleContext.ParserRuleContext { + userDefinedTypeName(i) { + if (i === void 0) { + return this.getRuleContexts(UserDefinedTypeNameContext); + } else { + return this.getRuleContext(i, UserDefinedTypeNameContext); + } } constructor(parent, invokingState) { super(parent, invokingState); } get ruleIndex() { - return SolidityParser.RULE_returnParameters; + return SolidityParser.RULE_overrideSpecifier; } enterRule(listener) { - if (listener.enterReturnParameters) { - listener.enterReturnParameters(this); + if (listener.enterOverrideSpecifier) { + listener.enterOverrideSpecifier(this); } } exitRule(listener) { - if (listener.exitReturnParameters) { - listener.exitReturnParameters(this); + if (listener.exitOverrideSpecifier) { + listener.exitOverrideSpecifier(this); } } accept(visitor) { - if (visitor.visitReturnParameters) { - return visitor.visitReturnParameters(this); + if (visitor.visitOverrideSpecifier) { + return visitor.visitOverrideSpecifier(this); } else { return visitor.visitChildren(this); } } }; - var ModifierListContext = class extends import_ParserRuleContext.ParserRuleContext { - ExternalKeyword(i) { + var StringLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { + StringLiteralFragment(i) { if (i === void 0) { - return this.getTokens(SolidityParser.ExternalKeyword); + return this.getTokens(SolidityParser.StringLiteralFragment); } else { - return this.getToken(SolidityParser.ExternalKeyword, i); + return this.getToken(SolidityParser.StringLiteralFragment, i); } } - PublicKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.PublicKeyword); - } else { - return this.getToken(SolidityParser.PublicKeyword, i); - } + constructor(parent, invokingState) { + super(parent, invokingState); } - InternalKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); - } + get ruleIndex() { + return SolidityParser.RULE_stringLiteral; } - PrivateKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.PrivateKeyword); - } else { - return this.getToken(SolidityParser.PrivateKeyword, i); + enterRule(listener) { + if (listener.enterStringLiteral) { + listener.enterStringLiteral(this); } } - VirtualKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.VirtualKeyword); - } else { - return this.getToken(SolidityParser.VirtualKeyword, i); + exitRule(listener) { + if (listener.exitStringLiteral) { + listener.exitStringLiteral(this); } } - stateMutability(i) { - if (i === void 0) { - return this.getRuleContexts(StateMutabilityContext); + accept(visitor) { + if (visitor.visitStringLiteral) { + return visitor.visitStringLiteral(this); } else { - return this.getRuleContext(i, StateMutabilityContext); + return visitor.visitChildren(this); } } - modifierInvocation(i) { - if (i === void 0) { - return this.getRuleContexts(ModifierInvocationContext); - } else { - return this.getRuleContext(i, ModifierInvocationContext); - } + }; + + // src/ast-types.ts + init_process_shim(); + var astNodeTypes = [ + "SourceUnit", + "PragmaDirective", + "ImportDirective", + "ContractDefinition", + "InheritanceSpecifier", + "StateVariableDeclaration", + "UsingForDeclaration", + "StructDefinition", + "ModifierDefinition", + "ModifierInvocation", + "FunctionDefinition", + "EventDefinition", + "CustomErrorDefinition", + "RevertStatement", + "EnumValue", + "EnumDefinition", + "VariableDeclaration", + "UserDefinedTypeName", + "Mapping", + "ArrayTypeName", + "FunctionTypeName", + "Block", + "ExpressionStatement", + "IfStatement", + "WhileStatement", + "ForStatement", + "InlineAssemblyStatement", + "DoWhileStatement", + "ContinueStatement", + "Break", + "Continue", + "BreakStatement", + "ReturnStatement", + "EmitStatement", + "ThrowStatement", + "VariableDeclarationStatement", + "ElementaryTypeName", + "FunctionCall", + "AssemblyBlock", + "AssemblyCall", + "AssemblyLocalDefinition", + "AssemblyAssignment", + "AssemblyStackAssignment", + "LabelDefinition", + "AssemblySwitch", + "AssemblyCase", + "AssemblyFunctionDefinition", + "AssemblyFunctionReturns", + "AssemblyFor", + "AssemblyIf", + "SubAssembly", + "TupleExpression", + "NameValueExpression", + "BooleanLiteral", + "NumberLiteral", + "Identifier", + "BinaryOperation", + "UnaryOperation", + "NewExpression", + "Conditional", + "StringLiteral", + "HexLiteral", + "HexNumber", + "DecimalNumber", + "MemberAccess", + "IndexAccess", + "IndexRangeAccess", + "NameValueList", + "UncheckedStatement", + "TryStatement", + "CatchClause", + "FileLevelConstant", + "AssemblyMemberAccess", + "TypeDefinition", + "InvalidNode" + ]; + var binaryOpValues = [ + "+", + "-", + "*", + "/", + "**", + "%", + "<<", + ">>", + "&&", + "||", + ",,", + "&", + ",", + "^", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "=", + ",=", + "^=", + "&=", + "<<=", + ">>=", + "+=", + "-=", + "*=", + "/=", + "%=", + "|", + "|=" + ]; + var unaryOpValues = [ + "-", + "+", + "++", + "--", + "~", + "after", + "delete", + "!" + ]; + + // src/ASTBuilder.ts + init_process_shim(); + var import_AbstractParseTreeVisitor = __toModule(require_AbstractParseTreeVisitor()); + var import_ErrorNode = __toModule(require_ErrorNode()); + var ASTBuilder = class extends import_AbstractParseTreeVisitor.AbstractParseTreeVisitor { + constructor(options) { + super(); + this.options = options; + this.result = null; } - overrideSpecifier(i) { - if (i === void 0) { - return this.getRuleContexts(OverrideSpecifierContext); - } else { - return this.getRuleContext(i, OverrideSpecifierContext); - } + defaultResult() { + throw new Error("Unknown node"); } - constructor(parent, invokingState) { - super(parent, invokingState); + aggregateResult() { + return {type: ""}; } - get ruleIndex() { - return SolidityParser.RULE_modifierList; + visitSourceUnit(ctx) { + const children = (ctx.children ?? []).filter((x) => !(x instanceof import_ErrorNode.ErrorNode)); + const node = { + type: "SourceUnit", + children: children.slice(0, -1).map((child) => this.visit(child)) + }; + const result = this._addMeta(node, ctx); + this.result = result; + return result; } - enterRule(listener) { - if (listener.enterModifierList) { - listener.enterModifierList(this); - } + visitContractPart(ctx) { + return this.visit(ctx.getChild(0)); } - exitRule(listener) { - if (listener.exitModifierList) { - listener.exitModifierList(this); - } + visitContractDefinition(ctx) { + const name = this._toText(ctx.identifier()); + const kind = this._toText(ctx.getChild(0)); + this._currentContract = name; + const node = { + type: "ContractDefinition", + name, + baseContracts: ctx.inheritanceSpecifier().map((x) => this.visitInheritanceSpecifier(x)), + subNodes: ctx.contractPart().map((x) => this.visit(x)), + kind + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitModifierList) { - return visitor.visitModifierList(this); - } else { - return visitor.visitChildren(this); + visitStateVariableDeclaration(ctx) { + const type = this.visitTypeName(ctx.typeName()); + const iden = ctx.identifier(); + const name = this._toText(iden); + let expression = null; + const ctxExpression = ctx.expression(); + if (ctxExpression) { + expression = this.visitExpression(ctxExpression); } - } - }; - var EventDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - eventParameterList() { - return this.getRuleContext(0, EventParameterListContext); - } - AnonymousKeyword() { - return this.tryGetToken(SolidityParser.AnonymousKeyword, 0); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_eventDefinition; - } - enterRule(listener) { - if (listener.enterEventDefinition) { - listener.enterEventDefinition(this); + let visibility = "default"; + if (ctx.InternalKeyword().length > 0) { + visibility = "internal"; + } else if (ctx.PublicKeyword().length > 0) { + visibility = "public"; + } else if (ctx.PrivateKeyword().length > 0) { + visibility = "private"; } - } - exitRule(listener) { - if (listener.exitEventDefinition) { - listener.exitEventDefinition(this); + let isDeclaredConst = false; + if (ctx.ConstantKeyword().length > 0) { + isDeclaredConst = true; } - } - accept(visitor) { - if (visitor.visitEventDefinition) { - return visitor.visitEventDefinition(this); + let override; + const overrideSpecifier = ctx.overrideSpecifier(); + if (overrideSpecifier.length === 0) { + override = null; } else { - return visitor.visitChildren(this); - } - } - }; - var EnumValueContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_enumValue; - } - enterRule(listener) { - if (listener.enterEnumValue) { - listener.enterEnumValue(this); - } - } - exitRule(listener) { - if (listener.exitEnumValue) { - listener.exitEnumValue(this); + override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); } - } - accept(visitor) { - if (visitor.visitEnumValue) { - return visitor.visitEnumValue(this); - } else { - return visitor.visitChildren(this); + let isImmutable = false; + if (ctx.ImmutableKeyword().length > 0) { + isImmutable = true; } + const decl = { + type: "VariableDeclaration", + typeName: type, + name, + identifier: this.visitIdentifier(iden), + expression, + visibility, + isStateVar: true, + isDeclaredConst, + isIndexed: false, + isImmutable, + override, + storageLocation: null + }; + const node = { + type: "StateVariableDeclaration", + variables: [this._addMeta(decl, ctx)], + initialValue: expression + }; + return this._addMeta(node, ctx); } - }; - var EnumDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - enumValue(i) { - if (i === void 0) { - return this.getRuleContexts(EnumValueContext); - } else { - return this.getRuleContext(i, EnumValueContext); + visitVariableDeclaration(ctx) { + let storageLocation = null; + const ctxStorageLocation = ctx.storageLocation(); + if (ctxStorageLocation) { + storageLocation = this._toText(ctxStorageLocation); } + const identifierCtx = ctx.identifier(); + const node = { + type: "VariableDeclaration", + typeName: this.visitTypeName(ctx.typeName()), + name: this._toText(identifierCtx), + identifier: this.visitIdentifier(identifierCtx), + storageLocation, + isStateVar: false, + isIndexed: false, + expression: null + }; + return this._addMeta(node, ctx); } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_enumDefinition; - } - enterRule(listener) { - if (listener.enterEnumDefinition) { - listener.enterEnumDefinition(this); + visitVariableDeclarationStatement(ctx) { + let variables = []; + const ctxVariableDeclaration = ctx.variableDeclaration(); + const ctxIdentifierList = ctx.identifierList(); + const ctxVariableDeclarationList = ctx.variableDeclarationList(); + if (ctxVariableDeclaration !== void 0) { + variables = [this.visitVariableDeclaration(ctxVariableDeclaration)]; + } else if (ctxIdentifierList !== void 0) { + variables = this.buildIdentifierList(ctxIdentifierList); + } else if (ctxVariableDeclarationList) { + variables = this.buildVariableDeclarationList(ctxVariableDeclarationList); } - } - exitRule(listener) { - if (listener.exitEnumDefinition) { - listener.exitEnumDefinition(this); + let initialValue = null; + const ctxExpression = ctx.expression(); + if (ctxExpression) { + initialValue = this.visitExpression(ctxExpression); } + const node = { + type: "VariableDeclarationStatement", + variables, + initialValue + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitEnumDefinition) { - return visitor.visitEnumDefinition(this); - } else { - return visitor.visitChildren(this); + visitStatement(ctx) { + try { + return this.visit(ctx.getChild(0)); + } catch (e) { + const node = {type: "InvalidNode"}; + return this._addMeta(node, ctx); } } - }; - var ParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { - parameter(i) { - if (i === void 0) { - return this.getRuleContexts(ParameterContext); - } else { - return this.getRuleContext(i, ParameterContext); + visitSimpleStatement(ctx) { + try { + return this.visit(ctx.getChild(0)); + } catch (e) { + const node = {type: "InvalidNode"}; + return this._addMeta(node, ctx); } } - constructor(parent, invokingState) { - super(parent, invokingState); + visitEventDefinition(ctx) { + const parameters = ctx.eventParameterList().eventParameter().map((paramCtx) => { + const type = this.visitTypeName(paramCtx.typeName()); + let name = null; + const paramCtxIdentifier = paramCtx.identifier(); + if (paramCtxIdentifier) { + name = this._toText(paramCtxIdentifier); + } + const node2 = { + type: "VariableDeclaration", + typeName: type, + name, + identifier: paramCtxIdentifier !== void 0 ? this.visitIdentifier(paramCtxIdentifier) : null, + isStateVar: false, + isIndexed: paramCtx.IndexedKeyword() !== void 0, + storageLocation: null, + expression: null + }; + return this._addMeta(node2, paramCtx); + }); + const node = { + type: "EventDefinition", + name: this._toText(ctx.identifier()), + parameters, + isAnonymous: ctx.AnonymousKeyword() !== void 0 + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_parameterList; + visitBlock(ctx) { + const node = { + type: "Block", + statements: ctx.statement().map((x) => this.visitStatement(x)) + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterParameterList) { - listener.enterParameterList(this); + visitParameter(ctx) { + let storageLocation = null; + const ctxStorageLocation = ctx.storageLocation(); + if (ctxStorageLocation !== void 0) { + storageLocation = this._toText(ctxStorageLocation); } - } - exitRule(listener) { - if (listener.exitParameterList) { - listener.exitParameterList(this); + let name = null; + const ctxIdentifier = ctx.identifier(); + if (ctxIdentifier !== void 0) { + name = this._toText(ctxIdentifier); } + const node = { + type: "VariableDeclaration", + typeName: this.visitTypeName(ctx.typeName()), + name, + identifier: ctxIdentifier !== void 0 ? this.visitIdentifier(ctxIdentifier) : null, + storageLocation, + isStateVar: false, + isIndexed: false, + expression: null + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitParameterList) { - return visitor.visitParameterList(this); + visitFunctionDefinition(ctx) { + let isConstructor = false; + let isFallback = false; + let isReceiveEther = false; + let isVirtual = false; + let name = null; + let parameters = []; + let returnParameters = null; + let visibility = "default"; + let block = null; + const ctxBlock = ctx.block(); + if (ctxBlock !== void 0) { + block = this.visitBlock(ctxBlock); + } + const modifiers = ctx.modifierList().modifierInvocation().map((mod) => this.visitModifierInvocation(mod)); + let stateMutability = null; + if (ctx.modifierList().stateMutability().length > 0) { + stateMutability = this._stateMutabilityToText(ctx.modifierList().stateMutability(0)); + } + const ctxReturnParameters = ctx.returnParameters(); + switch (this._toText(ctx.functionDescriptor().getChild(0))) { + case "constructor": + parameters = ctx.parameterList().parameter().map((x) => this.visit(x)); + if (ctx.modifierList().InternalKeyword().length > 0) { + visibility = "internal"; + } else if (ctx.modifierList().PublicKeyword().length > 0) { + visibility = "public"; + } else { + visibility = "default"; + } + isConstructor = true; + break; + case "fallback": + visibility = "external"; + isFallback = true; + break; + case "receive": + visibility = "external"; + isReceiveEther = true; + break; + case "function": { + const identifier = ctx.functionDescriptor().identifier(); + name = identifier !== void 0 ? this._toText(identifier) : ""; + parameters = ctx.parameterList().parameter().map((x) => this.visit(x)); + returnParameters = ctxReturnParameters !== void 0 ? this.visitReturnParameters(ctxReturnParameters) : null; + if (ctx.modifierList().ExternalKeyword().length > 0) { + visibility = "external"; + } else if (ctx.modifierList().InternalKeyword().length > 0) { + visibility = "internal"; + } else if (ctx.modifierList().PublicKeyword().length > 0) { + visibility = "public"; + } else if (ctx.modifierList().PrivateKeyword().length > 0) { + visibility = "private"; + } + isConstructor = name === this._currentContract; + isFallback = name === ""; + break; + } + } + if (ctx.modifierList().VirtualKeyword().length > 0) { + isVirtual = true; + } + let override; + const overrideSpecifier = ctx.modifierList().overrideSpecifier(); + if (overrideSpecifier.length === 0) { + override = null; } else { - return visitor.visitChildren(this); + override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); } + const node = { + type: "FunctionDefinition", + name, + parameters, + returnParameters, + body: block, + visibility, + modifiers, + override, + isConstructor, + isReceiveEther, + isFallback, + isVirtual, + stateMutability + }; + return this._addMeta(node, ctx); } - }; - var ParameterContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - storageLocation() { - return this.tryGetRuleContext(0, StorageLocationContext); - } - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); + visitEnumDefinition(ctx) { + const node = { + type: "EnumDefinition", + name: this._toText(ctx.identifier()), + members: ctx.enumValue().map((x) => this.visitEnumValue(x)) + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_parameter; + visitEnumValue(ctx) { + const node = { + type: "EnumValue", + name: this._toText(ctx.identifier()) + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterParameter) { - listener.enterParameter(this); - } + visitElementaryTypeName(ctx) { + const node = { + type: "ElementaryTypeName", + name: this._toText(ctx), + stateMutability: null + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitParameter) { - listener.exitParameter(this); - } + visitIdentifier(ctx) { + const node = { + type: "Identifier", + name: this._toText(ctx) + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitParameter) { - return visitor.visitParameter(this); - } else { - return visitor.visitChildren(this); + visitTypeName(ctx) { + if (ctx.children !== void 0 && ctx.children.length > 2) { + let length = null; + if (ctx.children.length === 4) { + const expression = ctx.expression(); + if (expression === void 0) { + throw new Error("Assertion error: a typeName with 4 children should have an expression"); + } + length = this.visitExpression(expression); + } + const ctxTypeName = ctx.typeName(); + const node = { + type: "ArrayTypeName", + baseTypeName: this.visitTypeName(ctxTypeName), + length + }; + return this._addMeta(node, ctx); } - } - }; - var EventParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { - eventParameter(i) { - if (i === void 0) { - return this.getRuleContexts(EventParameterContext); - } else { - return this.getRuleContext(i, EventParameterContext); + if (ctx.children?.length === 2) { + const node = { + type: "ElementaryTypeName", + name: this._toText(ctx.getChild(0)), + stateMutability: this._toText(ctx.getChild(1)) + }; + return this._addMeta(node, ctx); } - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_eventParameterList; - } - enterRule(listener) { - if (listener.enterEventParameterList) { - listener.enterEventParameterList(this); + if (ctx.elementaryTypeName() !== void 0) { + return this.visitElementaryTypeName(ctx.elementaryTypeName()); } - } - exitRule(listener) { - if (listener.exitEventParameterList) { - listener.exitEventParameterList(this); + if (ctx.userDefinedTypeName() !== void 0) { + return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()); } - } - accept(visitor) { - if (visitor.visitEventParameterList) { - return visitor.visitEventParameterList(this); - } else { - return visitor.visitChildren(this); + if (ctx.mapping() !== void 0) { + return this.visitMapping(ctx.mapping()); } - } - }; - var EventParameterContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - IndexedKeyword() { - return this.tryGetToken(SolidityParser.IndexedKeyword, 0); - } - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_eventParameter; - } - enterRule(listener) { - if (listener.enterEventParameter) { - listener.enterEventParameter(this); + if (ctx.functionTypeName() !== void 0) { + return this.visitFunctionTypeName(ctx.functionTypeName()); } + throw new Error("Assertion error: unhandled type name case"); } - exitRule(listener) { - if (listener.exitEventParameter) { - listener.exitEventParameter(this); - } + visitUserDefinedTypeName(ctx) { + const node = { + type: "UserDefinedTypeName", + namePath: this._toText(ctx) + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitEventParameter) { - return visitor.visitEventParameter(this); - } else { - return visitor.visitChildren(this); + visitUsingForDeclaration(ctx) { + let typeName = null; + const ctxTypeName = ctx.typeName(); + if (ctxTypeName !== void 0) { + typeName = this.visitTypeName(ctxTypeName); } - } - }; - var FunctionTypeParameterListContext = class extends import_ParserRuleContext.ParserRuleContext { - functionTypeParameter(i) { - if (i === void 0) { - return this.getRuleContexts(FunctionTypeParameterContext); + const isGlobal = ctx.GlobalKeyword() !== void 0; + let node; + const usingForObject = ctx.usingForObject(); + const firstChild = this._toText(usingForObject.getChild(0)); + if (firstChild === "{") { + node = { + type: "UsingForDeclaration", + isGlobal, + typeName, + libraryName: null, + functions: usingForObject.userDefinedTypeName().map((x) => this._toText(x)) + }; } else { - return this.getRuleContext(i, FunctionTypeParameterContext); + node = { + type: "UsingForDeclaration", + isGlobal, + typeName, + libraryName: this._toText(usingForObject.userDefinedTypeName(0)), + functions: [] + }; } + return this._addMeta(node, ctx); } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_functionTypeParameterList; - } - enterRule(listener) { - if (listener.enterFunctionTypeParameterList) { - listener.enterFunctionTypeParameterList(this); + visitPragmaDirective(ctx) { + const versionContext = ctx.pragmaValue().version(); + let value = this._toText(ctx.pragmaValue()); + if (versionContext?.children !== void 0) { + value = versionContext.children.map((x) => this._toText(x)).join(" "); } + const node = { + type: "PragmaDirective", + name: this._toText(ctx.pragmaName()), + value + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitFunctionTypeParameterList) { - listener.exitFunctionTypeParameterList(this); - } + visitInheritanceSpecifier(ctx) { + const exprList = ctx.expressionList(); + const args = exprList !== void 0 ? exprList.expression().map((x) => this.visitExpression(x)) : []; + const node = { + type: "InheritanceSpecifier", + baseName: this.visitUserDefinedTypeName(ctx.userDefinedTypeName()), + arguments: args + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitFunctionTypeParameterList) { - return visitor.visitFunctionTypeParameterList(this); + visitModifierInvocation(ctx) { + const exprList = ctx.expressionList(); + let args; + if (exprList != null) { + args = exprList.expression().map((x) => this.visit(x)); + } else if (ctx.children !== void 0 && ctx.children.length > 1) { + args = []; } else { - return visitor.visitChildren(this); - } - } - }; - var FunctionTypeParameterContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - storageLocation() { - return this.tryGetRuleContext(0, StorageLocationContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_functionTypeParameter; - } - enterRule(listener) { - if (listener.enterFunctionTypeParameter) { - listener.enterFunctionTypeParameter(this); + args = null; } + const node = { + type: "ModifierInvocation", + name: this._toText(ctx.identifier()), + arguments: args + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitFunctionTypeParameter) { - listener.exitFunctionTypeParameter(this); + visitFunctionTypeName(ctx) { + const parameterTypes = ctx.functionTypeParameterList(0).functionTypeParameter().map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)); + let returnTypes = []; + if (ctx.functionTypeParameterList().length > 1) { + returnTypes = ctx.functionTypeParameterList(1).functionTypeParameter().map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)); } - } - accept(visitor) { - if (visitor.visitFunctionTypeParameter) { - return visitor.visitFunctionTypeParameter(this); - } else { - return visitor.visitChildren(this); + let visibility = "default"; + if (ctx.InternalKeyword().length > 0) { + visibility = "internal"; + } else if (ctx.ExternalKeyword().length > 0) { + visibility = "external"; } - } - }; - var VariableDeclarationContext = class extends import_ParserRuleContext.ParserRuleContext { - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - storageLocation() { - return this.tryGetRuleContext(0, StorageLocationContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_variableDeclaration; - } - enterRule(listener) { - if (listener.enterVariableDeclaration) { - listener.enterVariableDeclaration(this); + let stateMutability = null; + if (ctx.stateMutability().length > 0) { + stateMutability = this._toText(ctx.stateMutability(0)); } + const node = { + type: "FunctionTypeName", + parameterTypes, + returnTypes, + visibility, + stateMutability + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitVariableDeclaration) { - listener.exitVariableDeclaration(this); + visitFunctionTypeParameter(ctx) { + let storageLocation = null; + if (ctx.storageLocation()) { + storageLocation = this._toText(ctx.storageLocation()); } + const node = { + type: "VariableDeclaration", + typeName: this.visitTypeName(ctx.typeName()), + name: null, + identifier: null, + storageLocation, + isStateVar: false, + isIndexed: false, + expression: null + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitVariableDeclaration) { - return visitor.visitVariableDeclaration(this); - } else { - return visitor.visitChildren(this); - } + visitThrowStatement(ctx) { + const node = { + type: "ThrowStatement" + }; + return this._addMeta(node, ctx); } - }; - var TypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { - elementaryTypeName() { - return this.tryGetRuleContext(0, ElementaryTypeNameContext); + visitReturnStatement(ctx) { + let expression = null; + const ctxExpression = ctx.expression(); + if (ctxExpression) { + expression = this.visitExpression(ctxExpression); + } + const node = { + type: "ReturnStatement", + expression + }; + return this._addMeta(node, ctx); } - userDefinedTypeName() { - return this.tryGetRuleContext(0, UserDefinedTypeNameContext); + visitEmitStatement(ctx) { + const node = { + type: "EmitStatement", + eventCall: this.visitFunctionCall(ctx.functionCall()) + }; + return this._addMeta(node, ctx); } - mapping() { - return this.tryGetRuleContext(0, MappingContext); + visitCustomErrorDefinition(ctx) { + const node = { + type: "CustomErrorDefinition", + name: this._toText(ctx.identifier()), + parameters: this.visitParameterList(ctx.parameterList()) + }; + return this._addMeta(node, ctx); } - typeName() { - return this.tryGetRuleContext(0, TypeNameContext); + visitTypeDefinition(ctx) { + const node = { + type: "TypeDefinition", + name: this._toText(ctx.identifier()), + definition: this.visitElementaryTypeName(ctx.elementaryTypeName()) + }; + return this._addMeta(node, ctx); } - expression() { - return this.tryGetRuleContext(0, ExpressionContext); + visitRevertStatement(ctx) { + const node = { + type: "RevertStatement", + revertCall: this.visitFunctionCall(ctx.functionCall()) + }; + return this._addMeta(node, ctx); } - functionTypeName() { - return this.tryGetRuleContext(0, FunctionTypeNameContext); + visitFunctionCall(ctx) { + let args = []; + const names = []; + const identifiers = []; + const ctxArgs = ctx.functionCallArguments(); + const ctxArgsExpressionList = ctxArgs.expressionList(); + const ctxArgsNameValueList = ctxArgs.nameValueList(); + if (ctxArgsExpressionList) { + args = ctxArgsExpressionList.expression().map((exprCtx) => this.visitExpression(exprCtx)); + } else if (ctxArgsNameValueList) { + for (const nameValue of ctxArgsNameValueList.nameValue()) { + args.push(this.visitExpression(nameValue.expression())); + names.push(this._toText(nameValue.identifier())); + identifiers.push(this.visitIdentifier(nameValue.identifier())); + } + } + const node = { + type: "FunctionCall", + expression: this.visitExpression(ctx.expression()), + arguments: args, + names, + identifiers + }; + return this._addMeta(node, ctx); } - PayableKeyword() { - return this.tryGetToken(SolidityParser.PayableKeyword, 0); + visitStructDefinition(ctx) { + const node = { + type: "StructDefinition", + name: this._toText(ctx.identifier()), + members: ctx.variableDeclaration().map((x) => this.visitVariableDeclaration(x)) + }; + return this._addMeta(node, ctx); } - constructor(parent, invokingState) { - super(parent, invokingState); + visitWhileStatement(ctx) { + const node = { + type: "WhileStatement", + condition: this.visitExpression(ctx.expression()), + body: this.visitStatement(ctx.statement()) + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_typeName; + visitDoWhileStatement(ctx) { + const node = { + type: "DoWhileStatement", + condition: this.visitExpression(ctx.expression()), + body: this.visitStatement(ctx.statement()) + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterTypeName) { - listener.enterTypeName(this); + visitIfStatement(ctx) { + const trueBody = this.visitStatement(ctx.statement(0)); + let falseBody = null; + if (ctx.statement().length > 1) { + falseBody = this.visitStatement(ctx.statement(1)); } + const node = { + type: "IfStatement", + condition: this.visitExpression(ctx.expression()), + trueBody, + falseBody + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitTypeName) { - listener.exitTypeName(this); + visitTryStatement(ctx) { + let returnParameters = null; + const ctxReturnParameters = ctx.returnParameters(); + if (ctxReturnParameters !== void 0) { + returnParameters = this.visitReturnParameters(ctxReturnParameters); } + const catchClauses = ctx.catchClause().map((exprCtx) => this.visitCatchClause(exprCtx)); + const node = { + type: "TryStatement", + expression: this.visitExpression(ctx.expression()), + returnParameters, + body: this.visitBlock(ctx.block()), + catchClauses + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitTypeName) { - return visitor.visitTypeName(this); - } else { - return visitor.visitChildren(this); + visitCatchClause(ctx) { + let parameters = null; + if (ctx.parameterList()) { + parameters = this.visitParameterList(ctx.parameterList()); } - } - }; - var UserDefinedTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier(i) { - if (i === void 0) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); + if (ctx.identifier() && this._toText(ctx.identifier()) !== "Error" && this._toText(ctx.identifier()) !== "Panic") { + throw new Error('Expected "Error" or "Panic" identifier in catch clause'); } + let kind = null; + const ctxIdentifier = ctx.identifier(); + if (ctxIdentifier !== void 0) { + kind = this._toText(ctxIdentifier); + } + const node = { + type: "CatchClause", + isReasonStringType: kind === "Error", + kind, + parameters, + body: this.visitBlock(ctx.block()) + }; + return this._addMeta(node, ctx); } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_userDefinedTypeName; - } - enterRule(listener) { - if (listener.enterUserDefinedTypeName) { - listener.enterUserDefinedTypeName(this); + visitExpressionStatement(ctx) { + if (!ctx) { + return null; } + const node = { + type: "ExpressionStatement", + expression: this.visitExpression(ctx.expression()) + }; + return this._addMeta(node, ctx); } - exitRule(listener) { - if (listener.exitUserDefinedTypeName) { - listener.exitUserDefinedTypeName(this); + visitNumberLiteral(ctx) { + const number = this._toText(ctx.getChild(0)); + let subdenomination = null; + if (ctx.children?.length === 2) { + subdenomination = this._toText(ctx.getChild(1)); } + const node = { + type: "NumberLiteral", + number, + subdenomination + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitUserDefinedTypeName) { - return visitor.visitUserDefinedTypeName(this); + visitMappingKey(ctx) { + if (ctx.elementaryTypeName()) { + return this.visitElementaryTypeName(ctx.elementaryTypeName()); + } else if (ctx.userDefinedTypeName()) { + return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()); } else { - return visitor.visitChildren(this); + throw new Error("Expected MappingKey to have either elementaryTypeName or userDefinedTypeName"); } } - }; - var MappingKeyContext = class extends import_ParserRuleContext.ParserRuleContext { - elementaryTypeName() { - return this.tryGetRuleContext(0, ElementaryTypeNameContext); - } - userDefinedTypeName() { - return this.tryGetRuleContext(0, UserDefinedTypeNameContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_mappingKey; + visitMapping(ctx) { + const node = { + type: "Mapping", + keyType: this.visitMappingKey(ctx.mappingKey()), + valueType: this.visitTypeName(ctx.typeName()) + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterMappingKey) { - listener.enterMappingKey(this); + visitModifierDefinition(ctx) { + let parameters = null; + if (ctx.parameterList()) { + parameters = this.visitParameterList(ctx.parameterList()); } - } - exitRule(listener) { - if (listener.exitMappingKey) { - listener.exitMappingKey(this); + let isVirtual = false; + if (ctx.VirtualKeyword().length > 0) { + isVirtual = true; } - } - accept(visitor) { - if (visitor.visitMappingKey) { - return visitor.visitMappingKey(this); + let override; + const overrideSpecifier = ctx.overrideSpecifier(); + if (overrideSpecifier.length === 0) { + override = null; } else { - return visitor.visitChildren(this); - } - } - }; - var MappingContext = class extends import_ParserRuleContext.ParserRuleContext { - mappingKey() { - return this.getRuleContext(0, MappingKeyContext); - } - typeName() { - return this.getRuleContext(0, TypeNameContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); + override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); + } + let body = null; + const blockCtx = ctx.block(); + if (blockCtx !== void 0) { + body = this.visitBlock(blockCtx); + } + const node = { + type: "ModifierDefinition", + name: this._toText(ctx.identifier()), + parameters, + body, + isVirtual, + override + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_mapping; + visitUncheckedStatement(ctx) { + const node = { + type: "UncheckedStatement", + block: this.visitBlock(ctx.block()) + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterMapping) { - listener.enterMapping(this); + visitExpression(ctx) { + let op; + switch (ctx.children.length) { + case 1: { + const primaryExpressionCtx = ctx.tryGetRuleContext(0, PrimaryExpressionContext); + if (primaryExpressionCtx === void 0) { + throw new Error("Assertion error: primary expression should exist when children length is 1"); + } + return this.visitPrimaryExpression(primaryExpressionCtx); + } + case 2: + op = this._toText(ctx.getChild(0)); + if (op === "new") { + const node = { + type: "NewExpression", + typeName: this.visitTypeName(ctx.typeName()) + }; + return this._addMeta(node, ctx); + } + if (unaryOpValues.includes(op)) { + const node = { + type: "UnaryOperation", + operator: op, + subExpression: this.visitExpression(ctx.getRuleContext(0, ExpressionContext)), + isPrefix: true + }; + return this._addMeta(node, ctx); + } + op = this._toText(ctx.getChild(1)); + if (["++", "--"].includes(op)) { + const node = { + type: "UnaryOperation", + operator: op, + subExpression: this.visitExpression(ctx.getRuleContext(0, ExpressionContext)), + isPrefix: false + }; + return this._addMeta(node, ctx); + } + break; + case 3: + if (this._toText(ctx.getChild(0)) === "(" && this._toText(ctx.getChild(2)) === ")") { + const node = { + type: "TupleExpression", + components: [ + this.visitExpression(ctx.getRuleContext(0, ExpressionContext)) + ], + isArray: false + }; + return this._addMeta(node, ctx); + } + op = this._toText(ctx.getChild(1)); + if (op === ".") { + const node = { + type: "MemberAccess", + expression: this.visitExpression(ctx.expression(0)), + memberName: this._toText(ctx.identifier()) + }; + return this._addMeta(node, ctx); + } + if (isBinOp(op)) { + const node = { + type: "BinaryOperation", + operator: op, + left: this.visitExpression(ctx.expression(0)), + right: this.visitExpression(ctx.expression(1)) + }; + return this._addMeta(node, ctx); + } + break; + case 4: + if (this._toText(ctx.getChild(1)) === "(" && this._toText(ctx.getChild(3)) === ")") { + let args = []; + const names = []; + const identifiers = []; + const ctxArgs = ctx.functionCallArguments(); + if (ctxArgs.expressionList()) { + args = ctxArgs.expressionList().expression().map((exprCtx) => this.visitExpression(exprCtx)); + } else if (ctxArgs.nameValueList()) { + for (const nameValue of ctxArgs.nameValueList().nameValue()) { + args.push(this.visitExpression(nameValue.expression())); + names.push(this._toText(nameValue.identifier())); + identifiers.push(this.visitIdentifier(nameValue.identifier())); + } + } + const node = { + type: "FunctionCall", + expression: this.visitExpression(ctx.expression(0)), + arguments: args, + names, + identifiers + }; + return this._addMeta(node, ctx); + } + if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === "]") { + if (ctx.getChild(2).text === ":") { + const node2 = { + type: "IndexRangeAccess", + base: this.visitExpression(ctx.expression(0)) + }; + return this._addMeta(node2, ctx); + } + const node = { + type: "IndexAccess", + base: this.visitExpression(ctx.expression(0)), + index: this.visitExpression(ctx.expression(1)) + }; + return this._addMeta(node, ctx); + } + if (this._toText(ctx.getChild(1)) === "{" && this._toText(ctx.getChild(3)) === "}") { + const node = { + type: "NameValueExpression", + expression: this.visitExpression(ctx.expression(0)), + arguments: this.visitNameValueList(ctx.nameValueList()) + }; + return this._addMeta(node, ctx); + } + break; + case 5: + if (this._toText(ctx.getChild(1)) === "?" && this._toText(ctx.getChild(3)) === ":") { + const node = { + type: "Conditional", + condition: this.visitExpression(ctx.expression(0)), + trueExpression: this.visitExpression(ctx.expression(1)), + falseExpression: this.visitExpression(ctx.expression(2)) + }; + return this._addMeta(node, ctx); + } + if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(2)) === ":" && this._toText(ctx.getChild(4)) === "]") { + const node = { + type: "IndexRangeAccess", + base: this.visitExpression(ctx.expression(0)), + indexEnd: this.visitExpression(ctx.expression(1)) + }; + return this._addMeta(node, ctx); + } else if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === ":" && this._toText(ctx.getChild(4)) === "]") { + const node = { + type: "IndexRangeAccess", + base: this.visitExpression(ctx.expression(0)), + indexStart: this.visitExpression(ctx.expression(1)) + }; + return this._addMeta(node, ctx); + } + break; + case 6: + if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === ":" && this._toText(ctx.getChild(5)) === "]") { + const node = { + type: "IndexRangeAccess", + base: this.visitExpression(ctx.expression(0)), + indexStart: this.visitExpression(ctx.expression(1)), + indexEnd: this.visitExpression(ctx.expression(2)) + }; + return this._addMeta(node, ctx); + } + break; } + throw new Error("Unrecognized expression"); } - exitRule(listener) { - if (listener.exitMapping) { - listener.exitMapping(this); + visitNameValueList(ctx) { + const names = []; + const identifiers = []; + const args = []; + for (const nameValue of ctx.nameValue()) { + names.push(this._toText(nameValue.identifier())); + identifiers.push(this.visitIdentifier(nameValue.identifier())); + args.push(this.visitExpression(nameValue.expression())); } + const node = { + type: "NameValueList", + names, + identifiers, + arguments: args + }; + return this._addMeta(node, ctx); } - accept(visitor) { - if (visitor.visitMapping) { - return visitor.visitMapping(this); - } else { - return visitor.visitChildren(this); - } + visitFileLevelConstant(ctx) { + const type = this.visitTypeName(ctx.typeName()); + const iden = ctx.identifier(); + const name = this._toText(iden); + const expression = this.visitExpression(ctx.expression()); + const node = { + type: "FileLevelConstant", + typeName: type, + name, + initialValue: expression, + isDeclaredConst: true, + isImmutable: false + }; + return this._addMeta(node, ctx); } - }; - var FunctionTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { - functionTypeParameterList(i) { - if (i === void 0) { - return this.getRuleContexts(FunctionTypeParameterListContext); - } else { - return this.getRuleContext(i, FunctionTypeParameterListContext); + visitForStatement(ctx) { + let conditionExpression = this.visitExpressionStatement(ctx.expressionStatement()); + if (conditionExpression) { + conditionExpression = conditionExpression.expression; } + const node = { + type: "ForStatement", + initExpression: ctx.simpleStatement() ? this.visitSimpleStatement(ctx.simpleStatement()) : null, + conditionExpression, + loopExpression: { + type: "ExpressionStatement", + expression: ctx.expression() !== void 0 ? this.visitExpression(ctx.expression()) : null + }, + body: this.visitStatement(ctx.statement()) + }; + return this._addMeta(node, ctx); } - InternalKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); + visitHexLiteral(ctx) { + const parts = ctx.HexLiteralFragment().map((x) => this._toText(x)).map((x) => x.substring(4, x.length - 1)); + const node = { + type: "HexLiteral", + value: parts.join(""), + parts + }; + return this._addMeta(node, ctx); + } + visitPrimaryExpression(ctx) { + if (ctx.BooleanLiteral()) { + const node = { + type: "BooleanLiteral", + value: this._toText(ctx.BooleanLiteral()) === "true" + }; + return this._addMeta(node, ctx); } - } - ExternalKeyword(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.ExternalKeyword); - } else { - return this.getToken(SolidityParser.ExternalKeyword, i); + if (ctx.hexLiteral()) { + return this.visitHexLiteral(ctx.hexLiteral()); } - } - stateMutability(i) { - if (i === void 0) { - return this.getRuleContexts(StateMutabilityContext); - } else { - return this.getRuleContext(i, StateMutabilityContext); + if (ctx.stringLiteral()) { + const fragments = ctx.stringLiteral().StringLiteralFragment().map((stringLiteralFragmentCtx) => { + let text = this._toText(stringLiteralFragmentCtx); + const isUnicode = text.slice(0, 7) === "unicode"; + if (isUnicode) { + text = text.slice(7); + } + const singleQuotes = text[0] === "'"; + const textWithoutQuotes = text.substring(1, text.length - 1); + const value = singleQuotes ? textWithoutQuotes.replace(new RegExp("\\\\'", "g"), "'") : textWithoutQuotes.replace(new RegExp('\\\\"', "g"), '"'); + return {value, isUnicode}; + }); + const parts = fragments.map((x) => x.value); + const node = { + type: "StringLiteral", + value: parts.join(""), + parts, + isUnicode: fragments.map((x) => x.isUnicode) + }; + return this._addMeta(node, ctx); } - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_functionTypeName; - } - enterRule(listener) { - if (listener.enterFunctionTypeName) { - listener.enterFunctionTypeName(this); + if (ctx.numberLiteral()) { + return this.visitNumberLiteral(ctx.numberLiteral()); } - } - exitRule(listener) { - if (listener.exitFunctionTypeName) { - listener.exitFunctionTypeName(this); + if (ctx.TypeKeyword()) { + const node = { + type: "Identifier", + name: "type" + }; + return this._addMeta(node, ctx); } - } - accept(visitor) { - if (visitor.visitFunctionTypeName) { - return visitor.visitFunctionTypeName(this); - } else { - return visitor.visitChildren(this); + if (ctx.typeName()) { + return this.visitTypeName(ctx.typeName()); } + return this.visit(ctx.getChild(0)); } - }; - var StorageLocationContext = class extends import_ParserRuleContext.ParserRuleContext { - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_storageLocation; + visitTupleExpression(ctx) { + const children = ctx.children.slice(1, -1); + const components = this._mapCommasToNulls(children).map((expr) => { + if (expr === null) { + return null; + } + return this.visit(expr); + }); + const node = { + type: "TupleExpression", + components, + isArray: this._toText(ctx.getChild(0)) === "[" + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterStorageLocation) { - listener.enterStorageLocation(this); - } + buildIdentifierList(ctx) { + const children = ctx.children.slice(1, -1); + const identifiers = ctx.identifier(); + let i = 0; + return this._mapCommasToNulls(children).map((idenOrNull) => { + if (!idenOrNull) { + return null; + } + const iden = identifiers[i]; + i++; + const node = { + type: "VariableDeclaration", + name: this._toText(iden), + identifier: this.visitIdentifier(iden), + isStateVar: false, + isIndexed: false, + typeName: null, + storageLocation: null, + expression: null + }; + return this._addMeta(node, iden); + }); } - exitRule(listener) { - if (listener.exitStorageLocation) { - listener.exitStorageLocation(this); - } + buildVariableDeclarationList(ctx) { + const variableDeclarations = ctx.variableDeclaration(); + let i = 0; + return this._mapCommasToNulls(ctx.children).map((declOrNull) => { + if (!declOrNull) { + return null; + } + const decl = variableDeclarations[i]; + i++; + let storageLocation = null; + if (decl.storageLocation()) { + storageLocation = this._toText(decl.storageLocation()); + } + const identifierCtx = decl.identifier(); + const result = { + type: "VariableDeclaration", + name: this._toText(identifierCtx), + identifier: this.visitIdentifier(identifierCtx), + typeName: this.visitTypeName(decl.typeName()), + storageLocation, + isStateVar: false, + isIndexed: false, + expression: null + }; + return this._addMeta(result, decl); + }); } - accept(visitor) { - if (visitor.visitStorageLocation) { - return visitor.visitStorageLocation(this); + visitImportDirective(ctx) { + const pathString = this._toText(ctx.importPath()); + let unitAlias = null; + let unitAliasIdentifier = null; + let symbolAliases = null; + let symbolAliasesIdentifiers = null; + if (ctx.importDeclaration().length > 0) { + symbolAliases = ctx.importDeclaration().map((decl) => { + const symbol = this._toText(decl.identifier(0)); + let alias = null; + if (decl.identifier().length > 1) { + alias = this._toText(decl.identifier(1)); + } + return [symbol, alias]; + }); + symbolAliasesIdentifiers = ctx.importDeclaration().map((decl) => { + const symbolIdentifier = this.visitIdentifier(decl.identifier(0)); + let aliasIdentifier = null; + if (decl.identifier().length > 1) { + aliasIdentifier = this.visitIdentifier(decl.identifier(1)); + } + return [symbolIdentifier, aliasIdentifier]; + }); } else { - return visitor.visitChildren(this); + const identifierCtxList = ctx.identifier(); + if (identifierCtxList.length === 0) { + } else if (identifierCtxList.length === 1) { + const aliasIdentifierCtx = ctx.identifier(0); + unitAlias = this._toText(aliasIdentifierCtx); + unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx); + } else if (identifierCtxList.length === 2) { + const aliasIdentifierCtx = ctx.identifier(1); + unitAlias = this._toText(aliasIdentifierCtx); + unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx); + } else { + throw new Error("Assertion error: an import should have one or two identifiers"); + } } + const path = pathString.substring(1, pathString.length - 1); + const pathLiteral = { + type: "StringLiteral", + value: path, + parts: [path], + isUnicode: [false] + }; + const node = { + type: "ImportDirective", + path, + pathLiteral: this._addMeta(pathLiteral, ctx.importPath()), + unitAlias, + unitAliasIdentifier, + symbolAliases, + symbolAliasesIdentifiers + }; + return this._addMeta(node, ctx); } - }; - var StateMutabilityContext = class extends import_ParserRuleContext.ParserRuleContext { - PureKeyword() { - return this.tryGetToken(SolidityParser.PureKeyword, 0); - } - ConstantKeyword() { - return this.tryGetToken(SolidityParser.ConstantKeyword, 0); + buildEventParameterList(ctx) { + return ctx.eventParameter().map((paramCtx) => { + const type = this.visit(paramCtx.typeName()); + let name = null; + if (paramCtx.identifier()) { + name = this._toText(paramCtx.identifier()); + } + return { + type: "VariableDeclaration", + typeName: type, + name, + isStateVar: false, + isIndexed: !!paramCtx.IndexedKeyword(0) + }; + }); } - ViewKeyword() { - return this.tryGetToken(SolidityParser.ViewKeyword, 0); + visitReturnParameters(ctx) { + return this.visitParameterList(ctx.parameterList()); } - PayableKeyword() { - return this.tryGetToken(SolidityParser.PayableKeyword, 0); + visitParameterList(ctx) { + return ctx.parameter().map((paramCtx) => this.visitParameter(paramCtx)); } - constructor(parent, invokingState) { - super(parent, invokingState); + visitInlineAssemblyStatement(ctx) { + let language = null; + if (ctx.StringLiteralFragment()) { + language = this._toText(ctx.StringLiteralFragment()); + language = language.substring(1, language.length - 1); + } + const flags = []; + const flag = ctx.inlineAssemblyStatementFlag(); + if (flag !== void 0) { + const flagString = this._toText(flag.stringLiteral()); + flags.push(flagString.slice(1, flagString.length - 1)); + } + const node = { + type: "InlineAssemblyStatement", + language, + flags, + body: this.visitAssemblyBlock(ctx.assemblyBlock()) + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_stateMutability; + visitAssemblyBlock(ctx) { + const operations = ctx.assemblyItem().map((item) => this.visitAssemblyItem(item)); + const node = { + type: "AssemblyBlock", + operations + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterStateMutability) { - listener.enterStateMutability(this); + visitAssemblyItem(ctx) { + let text; + if (ctx.hexLiteral()) { + return this.visitHexLiteral(ctx.hexLiteral()); } - } - exitRule(listener) { - if (listener.exitStateMutability) { - listener.exitStateMutability(this); + if (ctx.stringLiteral()) { + text = this._toText(ctx.stringLiteral()); + const value = text.substring(1, text.length - 1); + const node = { + type: "StringLiteral", + value, + parts: [value], + isUnicode: [false] + }; + return this._addMeta(node, ctx); } - } - accept(visitor) { - if (visitor.visitStateMutability) { - return visitor.visitStateMutability(this); - } else { - return visitor.visitChildren(this); + if (ctx.BreakKeyword()) { + const node = { + type: "Break" + }; + return this._addMeta(node, ctx); } - } - }; - var BlockContext = class extends import_ParserRuleContext.ParserRuleContext { - statement(i) { - if (i === void 0) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); + if (ctx.ContinueKeyword()) { + const node = { + type: "Continue" + }; + return this._addMeta(node, ctx); } + return this.visit(ctx.getChild(0)); } - constructor(parent, invokingState) { - super(parent, invokingState); + visitAssemblyExpression(ctx) { + return this.visit(ctx.getChild(0)); } - get ruleIndex() { - return SolidityParser.RULE_block; + visitAssemblyCall(ctx) { + const functionName = this._toText(ctx.getChild(0)); + const args = ctx.assemblyExpression().map((assemblyExpr) => this.visitAssemblyExpression(assemblyExpr)); + const node = { + type: "AssemblyCall", + functionName, + arguments: args + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterBlock) { - listener.enterBlock(this); + visitAssemblyLiteral(ctx) { + let text; + if (ctx.stringLiteral()) { + text = this._toText(ctx); + const value = text.substring(1, text.length - 1); + const node = { + type: "StringLiteral", + value, + parts: [value], + isUnicode: [false] + }; + return this._addMeta(node, ctx); } - } - exitRule(listener) { - if (listener.exitBlock) { - listener.exitBlock(this); + if (ctx.DecimalNumber()) { + const node = { + type: "DecimalNumber", + value: this._toText(ctx) + }; + return this._addMeta(node, ctx); } - } - accept(visitor) { - if (visitor.visitBlock) { - return visitor.visitBlock(this); - } else { - return visitor.visitChildren(this); + if (ctx.HexNumber()) { + const node = { + type: "HexNumber", + value: this._toText(ctx) + }; + return this._addMeta(node, ctx); } + if (ctx.hexLiteral()) { + return this.visitHexLiteral(ctx.hexLiteral()); + } + throw new Error("Should never reach here"); } - }; - var StatementContext = class extends import_ParserRuleContext.ParserRuleContext { - ifStatement() { - return this.tryGetRuleContext(0, IfStatementContext); - } - tryStatement() { - return this.tryGetRuleContext(0, TryStatementContext); - } - whileStatement() { - return this.tryGetRuleContext(0, WhileStatementContext); - } - forStatement() { - return this.tryGetRuleContext(0, ForStatementContext); - } - block() { - return this.tryGetRuleContext(0, BlockContext); - } - inlineAssemblyStatement() { - return this.tryGetRuleContext(0, InlineAssemblyStatementContext); + visitAssemblySwitch(ctx) { + const node = { + type: "AssemblySwitch", + expression: this.visitAssemblyExpression(ctx.assemblyExpression()), + cases: ctx.assemblyCase().map((c) => this.visitAssemblyCase(c)) + }; + return this._addMeta(node, ctx); } - doWhileStatement() { - return this.tryGetRuleContext(0, DoWhileStatementContext); + visitAssemblyCase(ctx) { + let value = null; + if (this._toText(ctx.getChild(0)) === "case") { + value = this.visitAssemblyLiteral(ctx.assemblyLiteral()); + } + const node = { + type: "AssemblyCase", + block: this.visitAssemblyBlock(ctx.assemblyBlock()), + value, + default: value === null + }; + return this._addMeta(node, ctx); } - continueStatement() { - return this.tryGetRuleContext(0, ContinueStatementContext); + visitAssemblyLocalDefinition(ctx) { + const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList(); + let names; + if (ctxAssemblyIdentifierOrList.identifier()) { + names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier())]; + } else if (ctxAssemblyIdentifierOrList.assemblyMember()) { + names = [ + this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()) + ]; + } else { + names = ctxAssemblyIdentifierOrList.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)); + } + let expression = null; + if (ctx.assemblyExpression() !== void 0) { + expression = this.visitAssemblyExpression(ctx.assemblyExpression()); + } + const node = { + type: "AssemblyLocalDefinition", + names, + expression + }; + return this._addMeta(node, ctx); } - breakStatement() { - return this.tryGetRuleContext(0, BreakStatementContext); + visitAssemblyFunctionDefinition(ctx) { + const ctxAssemblyIdentifierList = ctx.assemblyIdentifierList(); + const args = ctxAssemblyIdentifierList !== void 0 ? ctxAssemblyIdentifierList.identifier().map((x) => this.visitIdentifier(x)) : []; + const ctxAssemblyFunctionReturns = ctx.assemblyFunctionReturns(); + const returnArgs = ctxAssemblyFunctionReturns ? ctxAssemblyFunctionReturns.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)) : []; + const node = { + type: "AssemblyFunctionDefinition", + name: this._toText(ctx.identifier()), + arguments: args, + returnArguments: returnArgs, + body: this.visitAssemblyBlock(ctx.assemblyBlock()) + }; + return this._addMeta(node, ctx); } - returnStatement() { - return this.tryGetRuleContext(0, ReturnStatementContext); + visitAssemblyAssignment(ctx) { + const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList(); + let names; + if (ctxAssemblyIdentifierOrList.identifier()) { + names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier())]; + } else if (ctxAssemblyIdentifierOrList.assemblyMember()) { + names = [ + this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()) + ]; + } else { + names = ctxAssemblyIdentifierOrList.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)); + } + const node = { + type: "AssemblyAssignment", + names, + expression: this.visitAssemblyExpression(ctx.assemblyExpression()) + }; + return this._addMeta(node, ctx); } - throwStatement() { - return this.tryGetRuleContext(0, ThrowStatementContext); + visitAssemblyMember(ctx) { + const [accessed, member] = ctx.identifier(); + const node = { + type: "AssemblyMemberAccess", + expression: this.visitIdentifier(accessed), + memberName: this.visitIdentifier(member) + }; + return this._addMeta(node, ctx); } - emitStatement() { - return this.tryGetRuleContext(0, EmitStatementContext); + visitLabelDefinition(ctx) { + const node = { + type: "LabelDefinition", + name: this._toText(ctx.identifier()) + }; + return this._addMeta(node, ctx); } - simpleStatement() { - return this.tryGetRuleContext(0, SimpleStatementContext); + visitAssemblyStackAssignment(ctx) { + const node = { + type: "AssemblyStackAssignment", + name: this._toText(ctx.identifier()), + expression: this.visitAssemblyExpression(ctx.assemblyExpression()) + }; + return this._addMeta(node, ctx); } - uncheckedStatement() { - return this.tryGetRuleContext(0, UncheckedStatementContext); + visitAssemblyFor(ctx) { + const node = { + type: "AssemblyFor", + pre: this.visit(ctx.getChild(1)), + condition: this.visit(ctx.getChild(2)), + post: this.visit(ctx.getChild(3)), + body: this.visit(ctx.getChild(4)) + }; + return this._addMeta(node, ctx); } - revertStatement() { - return this.tryGetRuleContext(0, RevertStatementContext); + visitAssemblyIf(ctx) { + const node = { + type: "AssemblyIf", + condition: this.visitAssemblyExpression(ctx.assemblyExpression()), + body: this.visitAssemblyBlock(ctx.assemblyBlock()) + }; + return this._addMeta(node, ctx); } - constructor(parent, invokingState) { - super(parent, invokingState); + visitContinueStatement(ctx) { + const node = { + type: "ContinueStatement" + }; + return this._addMeta(node, ctx); } - get ruleIndex() { - return SolidityParser.RULE_statement; + visitBreakStatement(ctx) { + const node = { + type: "BreakStatement" + }; + return this._addMeta(node, ctx); } - enterRule(listener) { - if (listener.enterStatement) { - listener.enterStatement(this); + _toText(ctx) { + const text = ctx.text; + if (text === void 0) { + throw new Error("Assertion error: text should never be undefiend"); } + return text; } - exitRule(listener) { - if (listener.exitStatement) { - listener.exitStatement(this); + _stateMutabilityToText(ctx) { + if (ctx.PureKeyword() !== void 0) { + return "pure"; } - } - accept(visitor) { - if (visitor.visitStatement) { - return visitor.visitStatement(this); - } else { - return visitor.visitChildren(this); + if (ctx.ConstantKeyword() !== void 0) { + return "constant"; } + if (ctx.PayableKeyword() !== void 0) { + return "payable"; + } + if (ctx.ViewKeyword() !== void 0) { + return "view"; + } + throw new Error("Assertion error: non-exhaustive stateMutability check"); } - }; - var ExpressionStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.getRuleContext(0, ExpressionContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); + _loc(ctx) { + const sourceLocation = { + start: { + line: ctx.start.line, + column: ctx.start.charPositionInLine + }, + end: { + line: ctx.stop ? ctx.stop.line : ctx.start.line, + column: ctx.stop ? ctx.stop.charPositionInLine : ctx.start.charPositionInLine + } + }; + return sourceLocation; } - get ruleIndex() { - return SolidityParser.RULE_expressionStatement; + _range(ctx) { + return [ctx.start.startIndex, ctx.stop?.stopIndex ?? ctx.start.startIndex]; } - enterRule(listener) { - if (listener.enterExpressionStatement) { - listener.enterExpressionStatement(this); + _addMeta(node, ctx) { + const nodeWithMeta = { + type: node.type + }; + if (this.options.loc === true) { + node.loc = this._loc(ctx); } - } - exitRule(listener) { - if (listener.exitExpressionStatement) { - listener.exitExpressionStatement(this); + if (this.options.range === true) { + node.range = this._range(ctx); } + return { + ...nodeWithMeta, + ...node + }; } - accept(visitor) { - if (visitor.visitExpressionStatement) { - return visitor.visitExpressionStatement(this); - } else { - return visitor.visitChildren(this); + _mapCommasToNulls(children) { + if (children.length === 0) { + return []; + } + const values = []; + let comma = true; + for (const el of children) { + if (comma) { + if (this._toText(el) === ",") { + values.push(null); + } else { + values.push(el); + comma = false; + } + } else { + if (this._toText(el) !== ",") { + throw new Error("expected comma"); + } + comma = true; + } + } + if (comma) { + values.push(null); } + return values; } }; - var IfStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.getRuleContext(0, ExpressionContext); + function isBinOp(op) { + return binaryOpValues.includes(op); + } + + // src/ErrorListener.ts + init_process_shim(); + + // node_modules/antlr4/src/antlr4/index.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/utils/stringHashCode.js + init_process_shim(); + String.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32)); + String.prototype.hashCode = function() { + const key = this.toString(); + let h1b, k1; + const remainder = key.length & 3; + const bytes = key.length - remainder; + let h1 = String.prototype.seed; + const c1 = 3432918353; + const c2 = 461845907; + let i = 0; + while (i < bytes) { + k1 = key.charCodeAt(i) & 255 | (key.charCodeAt(++i) & 255) << 8 | (key.charCodeAt(++i) & 255) << 16 | (key.charCodeAt(++i) & 255) << 24; + ++i; + k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295; + k1 = k1 << 15 | k1 >>> 17; + k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1b = (h1 & 65535) * 5 + (((h1 >>> 16) * 5 & 65535) << 16) & 4294967295; + h1 = (h1b & 65535) + 27492 + (((h1b >>> 16) + 58964 & 65535) << 16); + } + k1 = 0; + switch (remainder) { + case 3: + k1 ^= (key.charCodeAt(i + 2) & 255) << 16; + case 2: + k1 ^= (key.charCodeAt(i + 1) & 255) << 8; + case 1: + k1 ^= key.charCodeAt(i) & 255; + k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295; + k1 = k1 << 15 | k1 >>> 17; + k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295; + h1 ^= k1; } - statement(i) { - if (i === void 0) { - return this.getRuleContexts(StatementContext); + h1 ^= key.length; + h1 ^= h1 >>> 16; + h1 = (h1 & 65535) * 2246822507 + (((h1 >>> 16) * 2246822507 & 65535) << 16) & 4294967295; + h1 ^= h1 >>> 13; + h1 = (h1 & 65535) * 3266489909 + (((h1 >>> 16) * 3266489909 & 65535) << 16) & 4294967295; + h1 ^= h1 >>> 16; + return h1 >>> 0; + }; + + // node_modules/antlr4/src/antlr4/polyfills/codepointat.js + init_process_shim(); + if (!String.prototype.codePointAt) { + (function() { + "use strict"; + var defineProperty = function() { + let result; + try { + const object = {}; + const $defineProperty = Object.defineProperty; + result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }(); + const codePointAt = function(position) { + if (this == null) { + throw TypeError(); + } + const string = String(this); + const size = string.length; + let index = position ? Number(position) : 0; + if (index !== index) { + index = 0; + } + if (index < 0 || index >= size) { + return void 0; + } + const first = string.charCodeAt(index); + let second; + if (first >= 55296 && first <= 56319 && size > index + 1) { + second = string.charCodeAt(index + 1); + if (second >= 56320 && second <= 57343) { + return (first - 55296) * 1024 + second - 56320 + 65536; + } + } + return first; + }; + if (defineProperty) { + defineProperty(String.prototype, "codePointAt", { + "value": codePointAt, + "configurable": true, + "writable": true + }); } else { - return this.getRuleContext(i, StatementContext); + String.prototype.codePointAt = codePointAt; + } + })(); + } + + // node_modules/antlr4/src/antlr4/polyfills/fromcodepoint.js + init_process_shim(); + if (!String.fromCodePoint) { + (function() { + const defineProperty = function() { + let result; + try { + const object = {}; + const $defineProperty = Object.defineProperty; + result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }(); + const stringFromCharCode = String.fromCharCode; + const floor = Math.floor; + const fromCodePoint = function(_) { + const MAX_SIZE = 16384; + const codeUnits = []; + let highSurrogate; + let lowSurrogate; + let index = -1; + const length = arguments.length; + if (!length) { + return ""; + } + let result = ""; + while (++index < length) { + let codePoint = Number(arguments[index]); + if (!isFinite(codePoint) || codePoint < 0 || codePoint > 1114111 || floor(codePoint) !== codePoint) { + throw RangeError("Invalid code point: " + codePoint); + } + if (codePoint <= 65535) { + codeUnits.push(codePoint); + } else { + codePoint -= 65536; + highSurrogate = (codePoint >> 10) + 55296; + lowSurrogate = codePoint % 1024 + 56320; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 === length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + if (defineProperty) { + defineProperty(String, "fromCodePoint", { + "value": fromCodePoint, + "configurable": true, + "writable": true + }); + } else { + String.fromCodePoint = fromCodePoint; } + })(); + } + + // node_modules/antlr4/src/antlr4/atn/index.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/ATN.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/LL1Analyzer.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/Token.js + init_process_shim(); + var Token2 = class { + constructor() { + this.source = null; + this.type = null; + this.channel = null; + this.start = null; + this.stop = null; + this.tokenIndex = null; + this.line = null; + this.column = null; + this._text = null; } - constructor(parent, invokingState) { - super(parent, invokingState); + getTokenSource() { + return this.source[0]; } - get ruleIndex() { - return SolidityParser.RULE_ifStatement; + getInputStream() { + return this.source[1]; } - enterRule(listener) { - if (listener.enterIfStatement) { - listener.enterIfStatement(this); - } + get text() { + return this._text; } - exitRule(listener) { - if (listener.exitIfStatement) { - listener.exitIfStatement(this); + set text(text) { + this._text = text; + } + }; + var Token_default = Token2; + Token2.INVALID_TYPE = 0; + Token2.EPSILON = -2; + Token2.MIN_USER_TOKEN_TYPE = 1; + Token2.EOF = -1; + Token2.DEFAULT_CHANNEL = 0; + Token2.HIDDEN_CHANNEL = 1; + + // node_modules/antlr4/src/antlr4/atn/ATNConfig.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/SemanticContext.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/utils/equalArrays.js + init_process_shim(); + function equalArrays(a, b) { + if (!Array.isArray(a) || !Array.isArray(b)) + return false; + if (a === b) + return true; + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) { + if (a[i] === b[i]) + continue; + if (!a[i].equals || !a[i].equals(b[i])) + return false; + } + return true; + } + + // node_modules/antlr4/src/antlr4/misc/HashCode.js + init_process_shim(); + var HashCode = class { + constructor() { + this.count = 0; + this.hash = 0; + } + update() { + for (let i = 0; i < arguments.length; i++) { + const value = arguments[i]; + if (value == null) + continue; + if (Array.isArray(value)) + this.update.apply(this, value); + else { + let k = 0; + switch (typeof value) { + case "undefined": + case "function": + continue; + case "number": + case "boolean": + k = value; + break; + case "string": + k = value.hashCode(); + break; + default: + if (value.updateHashCode) + value.updateHashCode(this); + else + console.log("No updateHashCode for " + value.toString()); + continue; + } + k = k * 3432918353; + k = k << 15 | k >>> 32 - 15; + k = k * 461845907; + this.count = this.count + 1; + let hash = this.hash ^ k; + hash = hash << 13 | hash >>> 32 - 13; + hash = hash * 5 + 3864292196; + this.hash = hash; + } } } - accept(visitor) { - if (visitor.visitIfStatement) { - return visitor.visitIfStatement(this); + finish() { + let hash = this.hash ^ this.count * 4; + hash = hash ^ hash >>> 16; + hash = hash * 2246822507; + hash = hash ^ hash >>> 13; + hash = hash * 3266489909; + hash = hash ^ hash >>> 16; + return hash; + } + static hashStuff() { + const hash = new HashCode(); + hash.update.apply(hash, arguments); + return hash.finish(); + } + }; + var HashCode_default = HashCode; + + // node_modules/antlr4/src/antlr4/misc/HashSet.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/utils/standardHashCodeFunction.js + init_process_shim(); + function standardHashCodeFunction(a) { + return a ? a.hashCode() : -1; + } + + // node_modules/antlr4/src/antlr4/utils/standardEqualsFunction.js + init_process_shim(); + function standardEqualsFunction(a, b) { + return a ? a.equals(b) : a === b; + } + + // node_modules/antlr4/src/antlr4/utils/arrayToString.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/utils/valueToString.js + init_process_shim(); + function valueToString(v) { + return v === null ? "null" : v; + } + + // node_modules/antlr4/src/antlr4/utils/arrayToString.js + function arrayToString(a) { + return Array.isArray(a) ? "[" + a.map(valueToString).join(", ") + "]" : "null"; + } + + // node_modules/antlr4/src/antlr4/misc/HashSet.js + var HASH_KEY_PREFIX = "h-"; + var HashSet = class { + constructor(hashFunction, equalsFunction) { + this.data = {}; + this.hashFunction = hashFunction || standardHashCodeFunction; + this.equalsFunction = equalsFunction || standardEqualsFunction; + } + add(value) { + const key = HASH_KEY_PREFIX + this.hashFunction(value); + if (key in this.data) { + const values = this.data[key]; + for (let i = 0; i < values.length; i++) { + if (this.equalsFunction(value, values[i])) { + return values[i]; + } + } + values.push(value); + return value; } else { - return visitor.visitChildren(this); + this.data[key] = [value]; + return value; } } - }; - var TryStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.getRuleContext(0, ExpressionContext); - } - block() { - return this.getRuleContext(0, BlockContext); - } - returnParameters() { - return this.tryGetRuleContext(0, ReturnParametersContext); + has(value) { + return this.get(value) != null; } - catchClause(i) { - if (i === void 0) { - return this.getRuleContexts(CatchClauseContext); - } else { - return this.getRuleContext(i, CatchClauseContext); + get(value) { + const key = HASH_KEY_PREFIX + this.hashFunction(value); + if (key in this.data) { + const values = this.data[key]; + for (let i = 0; i < values.length; i++) { + if (this.equalsFunction(value, values[i])) { + return values[i]; + } + } } + return null; } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_tryStatement; - } - enterRule(listener) { - if (listener.enterTryStatement) { - listener.enterTryStatement(this); - } + values() { + return Object.keys(this.data).filter((key) => key.startsWith(HASH_KEY_PREFIX)).flatMap((key) => this.data[key], this); } - exitRule(listener) { - if (listener.exitTryStatement) { - listener.exitTryStatement(this); - } + toString() { + return arrayToString(this.values()); } - accept(visitor) { - if (visitor.visitTryStatement) { - return visitor.visitTryStatement(this); - } else { - return visitor.visitChildren(this); - } + get length() { + return Object.keys(this.data).filter((key) => key.startsWith(HASH_KEY_PREFIX)).map((key) => this.data[key].length, this).reduce((accum, item) => accum + item, 0); } }; - var CatchClauseContext = class extends import_ParserRuleContext.ParserRuleContext { - block() { - return this.getRuleContext(0, BlockContext); - } - parameterList() { - return this.tryGetRuleContext(0, ParameterListContext); - } - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); + var HashSet_default = HashSet; + + // node_modules/antlr4/src/antlr4/atn/SemanticContext.js + var SemanticContext = class { + hashCode() { + const hash = new HashCode_default(); + this.updateHashCode(hash); + return hash.finish(); } - constructor(parent, invokingState) { - super(parent, invokingState); + evaluate(parser, outerContext) { } - get ruleIndex() { - return SolidityParser.RULE_catchClause; + evalPrecedence(parser, outerContext) { + return this; } - enterRule(listener) { - if (listener.enterCatchClause) { - listener.enterCatchClause(this); + static andContext(a, b) { + if (a === null || a === SemanticContext.NONE) { + return b; } - } - exitRule(listener) { - if (listener.exitCatchClause) { - listener.exitCatchClause(this); + if (b === null || b === SemanticContext.NONE) { + return a; + } + const result = new AND(a, b); + if (result.opnds.length === 1) { + return result.opnds[0]; + } else { + return result; } } - accept(visitor) { - if (visitor.visitCatchClause) { - return visitor.visitCatchClause(this); + static orContext(a, b) { + if (a === null) { + return b; + } + if (b === null) { + return a; + } + if (a === SemanticContext.NONE || b === SemanticContext.NONE) { + return SemanticContext.NONE; + } + const result = new OR(a, b); + if (result.opnds.length === 1) { + return result.opnds[0]; } else { - return visitor.visitChildren(this); + return result; } } }; - var WhileStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.getRuleContext(0, ExpressionContext); - } - statement() { - return this.getRuleContext(0, StatementContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_whileStatement; - } - enterRule(listener) { - if (listener.enterWhileStatement) { - listener.enterWhileStatement(this); + var SemanticContext_default = SemanticContext; + var AND = class extends SemanticContext { + constructor(a, b) { + super(); + const operands = new HashSet_default(); + if (a instanceof AND) { + a.opnds.map(function(o) { + operands.add(o); + }); + } else { + operands.add(a); } - } - exitRule(listener) { - if (listener.exitWhileStatement) { - listener.exitWhileStatement(this); + if (b instanceof AND) { + b.opnds.map(function(o) { + operands.add(o); + }); + } else { + operands.add(b); } + const precedencePredicates = filterPrecedencePredicates(operands); + if (precedencePredicates.length > 0) { + let reduced = null; + precedencePredicates.map(function(p) { + if (reduced === null || p.precedence < reduced.precedence) { + reduced = p; + } + }); + operands.add(reduced); + } + this.opnds = Array.from(operands.values()); } - accept(visitor) { - if (visitor.visitWhileStatement) { - return visitor.visitWhileStatement(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof AND)) { + return false; } else { - return visitor.visitChildren(this); + return equalArrays(this.opnds, other.opnds); } } - }; - var SimpleStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - variableDeclarationStatement() { - return this.tryGetRuleContext(0, VariableDeclarationStatementContext); + updateHashCode(hash) { + hash.update(this.opnds, "AND"); } - expressionStatement() { - return this.tryGetRuleContext(0, ExpressionStatementContext); + evaluate(parser, outerContext) { + for (let i = 0; i < this.opnds.length; i++) { + if (!this.opnds[i].evaluate(parser, outerContext)) { + return false; + } + } + return true; } - constructor(parent, invokingState) { - super(parent, invokingState); + evalPrecedence(parser, outerContext) { + let differs = false; + const operands = []; + for (let i = 0; i < this.opnds.length; i++) { + const context = this.opnds[i]; + const evaluated = context.evalPrecedence(parser, outerContext); + differs |= evaluated !== context; + if (evaluated === null) { + return null; + } else if (evaluated !== SemanticContext.NONE) { + operands.push(evaluated); + } + } + if (!differs) { + return this; + } + if (operands.length === 0) { + return SemanticContext.NONE; + } + let result = null; + operands.map(function(o) { + result = result === null ? o : SemanticContext.andContext(result, o); + }); + return result; } - get ruleIndex() { - return SolidityParser.RULE_simpleStatement; + toString() { + const s = this.opnds.map((o) => o.toString()); + return (s.length > 3 ? s.slice(3) : s).join("&&"); } - enterRule(listener) { - if (listener.enterSimpleStatement) { - listener.enterSimpleStatement(this); + }; + var OR = class extends SemanticContext { + constructor(a, b) { + super(); + const operands = new HashSet_default(); + if (a instanceof OR) { + a.opnds.map(function(o) { + operands.add(o); + }); + } else { + operands.add(a); } - } - exitRule(listener) { - if (listener.exitSimpleStatement) { - listener.exitSimpleStatement(this); + if (b instanceof OR) { + b.opnds.map(function(o) { + operands.add(o); + }); + } else { + operands.add(b); } + const precedencePredicates = filterPrecedencePredicates(operands); + if (precedencePredicates.length > 0) { + const s = precedencePredicates.sort(function(a2, b2) { + return a2.compareTo(b2); + }); + const reduced = s[s.length - 1]; + operands.add(reduced); + } + this.opnds = Array.from(operands.values()); } - accept(visitor) { - if (visitor.visitSimpleStatement) { - return visitor.visitSimpleStatement(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof OR)) { + return false; } else { - return visitor.visitChildren(this); + return equalArrays(this.opnds, other.opnds); } } - }; - var UncheckedStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - block() { - return this.getRuleContext(0, BlockContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_uncheckedStatement; + updateHashCode(hash) { + hash.update(this.opnds, "OR"); } - enterRule(listener) { - if (listener.enterUncheckedStatement) { - listener.enterUncheckedStatement(this); + evaluate(parser, outerContext) { + for (let i = 0; i < this.opnds.length; i++) { + if (this.opnds[i].evaluate(parser, outerContext)) { + return true; + } } + return false; } - exitRule(listener) { - if (listener.exitUncheckedStatement) { - listener.exitUncheckedStatement(this); + evalPrecedence(parser, outerContext) { + let differs = false; + const operands = []; + for (let i = 0; i < this.opnds.length; i++) { + const context = this.opnds[i]; + const evaluated = context.evalPrecedence(parser, outerContext); + differs |= evaluated !== context; + if (evaluated === SemanticContext.NONE) { + return SemanticContext.NONE; + } else if (evaluated !== null) { + operands.push(evaluated); + } } - } - accept(visitor) { - if (visitor.visitUncheckedStatement) { - return visitor.visitUncheckedStatement(this); - } else { - return visitor.visitChildren(this); + if (!differs) { + return this; } + if (operands.length === 0) { + return null; + } + const result = null; + operands.map(function(o) { + return result === null ? o : SemanticContext.orContext(result, o); + }); + return result; } - }; - var ForStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - statement() { - return this.getRuleContext(0, StatementContext); - } - simpleStatement() { - return this.tryGetRuleContext(0, SimpleStatementContext); - } - expressionStatement() { - return this.tryGetRuleContext(0, ExpressionStatementContext); + toString() { + const s = this.opnds.map((o) => o.toString()); + return (s.length > 3 ? s.slice(3) : s).join("||"); } - expression() { - return this.tryGetRuleContext(0, ExpressionContext); + }; + function filterPrecedencePredicates(set) { + const result = []; + set.values().map(function(context) { + if (context instanceof SemanticContext.PrecedencePredicate) { + result.push(context); + } + }); + return result; + } + + // node_modules/antlr4/src/antlr4/atn/ATNConfig.js + function checkParams(params, isCfg) { + if (params === null) { + const result = {state: null, alt: null, context: null, semanticContext: null}; + if (isCfg) { + result.reachesIntoOuterContext = 0; + } + return result; + } else { + const props = {}; + props.state = params.state || null; + props.alt = params.alt === void 0 ? null : params.alt; + props.context = params.context || null; + props.semanticContext = params.semanticContext || null; + if (isCfg) { + props.reachesIntoOuterContext = params.reachesIntoOuterContext || 0; + props.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false; + } + return props; } - constructor(parent, invokingState) { - super(parent, invokingState); + } + var ATNConfig = class { + constructor(params, config) { + this.checkContext(params, config); + params = checkParams(params); + config = checkParams(config, true); + this.state = params.state !== null ? params.state : config.state; + this.alt = params.alt !== null ? params.alt : config.alt; + this.context = params.context !== null ? params.context : config.context; + this.semanticContext = params.semanticContext !== null ? params.semanticContext : config.semanticContext !== null ? config.semanticContext : SemanticContext_default.NONE; + this.reachesIntoOuterContext = config.reachesIntoOuterContext; + this.precedenceFilterSuppressed = config.precedenceFilterSuppressed; + } + checkContext(params, config) { + if ((params.context === null || params.context === void 0) && (config === null || config.context === null || config.context === void 0)) { + this.context = null; + } + } + hashCode() { + const hash = new HashCode_default(); + this.updateHashCode(hash); + return hash.finish(); } - get ruleIndex() { - return SolidityParser.RULE_forStatement; + updateHashCode(hash) { + hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext); } - enterRule(listener) { - if (listener.enterForStatement) { - listener.enterForStatement(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof ATNConfig)) { + return false; + } else { + return this.state.stateNumber === other.state.stateNumber && this.alt === other.alt && (this.context === null ? other.context === null : this.context.equals(other.context)) && this.semanticContext.equals(other.semanticContext) && this.precedenceFilterSuppressed === other.precedenceFilterSuppressed; } } - exitRule(listener) { - if (listener.exitForStatement) { - listener.exitForStatement(this); - } + hashCodeForConfigSet() { + const hash = new HashCode_default(); + hash.update(this.state.stateNumber, this.alt, this.semanticContext); + return hash.finish(); } - accept(visitor) { - if (visitor.visitForStatement) { - return visitor.visitForStatement(this); + equalsForConfigSet(other) { + if (this === other) { + return true; + } else if (!(other instanceof ATNConfig)) { + return false; } else { - return visitor.visitChildren(this); + return this.state.stateNumber === other.state.stateNumber && this.alt === other.alt && this.semanticContext.equals(other.semanticContext); } } - }; - var InlineAssemblyStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyBlock() { - return this.getRuleContext(0, AssemblyBlockContext); - } - StringLiteralFragment() { - return this.tryGetToken(SolidityParser.StringLiteralFragment, 0); + toString() { + return "(" + this.state + "," + this.alt + (this.context !== null ? ",[" + this.context.toString() + "]" : "") + (this.semanticContext !== SemanticContext_default.NONE ? "," + this.semanticContext.toString() : "") + (this.reachesIntoOuterContext > 0 ? ",up=" + this.reachesIntoOuterContext : "") + ")"; } - inlineAssemblyStatementFlag() { - return this.tryGetRuleContext(0, InlineAssemblyStatementFlagContext); + }; + var ATNConfig_default = ATNConfig; + + // node_modules/antlr4/src/antlr4/misc/IntervalSet.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/misc/Interval.js + init_process_shim(); + var Interval = class { + constructor(start, stop) { + this.start = start; + this.stop = stop; } - constructor(parent, invokingState) { - super(parent, invokingState); + clone() { + return new Interval(this.start, this.stop); } - get ruleIndex() { - return SolidityParser.RULE_inlineAssemblyStatement; + contains(item) { + return item >= this.start && item < this.stop; } - enterRule(listener) { - if (listener.enterInlineAssemblyStatement) { - listener.enterInlineAssemblyStatement(this); + toString() { + if (this.start === this.stop - 1) { + return this.start.toString(); + } else { + return this.start.toString() + ".." + (this.stop - 1).toString(); } } - exitRule(listener) { - if (listener.exitInlineAssemblyStatement) { - listener.exitInlineAssemblyStatement(this); - } + get length() { + return this.stop - this.start; } - accept(visitor) { - if (visitor.visitInlineAssemblyStatement) { - return visitor.visitInlineAssemblyStatement(this); + }; + var Interval_default = Interval; + Interval.INVALID_INTERVAL = new Interval(-1, -2); + + // node_modules/antlr4/src/antlr4/misc/IntervalSet.js + var IntervalSet = class { + constructor() { + this.intervals = null; + this.readOnly = false; + } + first(v) { + if (this.intervals === null || this.intervals.length === 0) { + return Token_default.INVALID_TYPE; } else { - return visitor.visitChildren(this); + return this.intervals[0].start; } } - }; - var InlineAssemblyStatementFlagContext = class extends import_ParserRuleContext.ParserRuleContext { - stringLiteral() { - return this.getRuleContext(0, StringLiteralContext); + addOne(v) { + this.addInterval(new Interval_default(v, v + 1)); } - constructor(parent, invokingState) { - super(parent, invokingState); + addRange(l, h) { + this.addInterval(new Interval_default(l, h + 1)); } - get ruleIndex() { - return SolidityParser.RULE_inlineAssemblyStatementFlag; + addInterval(toAdd) { + if (this.intervals === null) { + this.intervals = []; + this.intervals.push(toAdd.clone()); + } else { + for (let pos = 0; pos < this.intervals.length; pos++) { + const existing = this.intervals[pos]; + if (toAdd.stop < existing.start) { + this.intervals.splice(pos, 0, toAdd); + return; + } else if (toAdd.stop === existing.start) { + this.intervals[pos] = new Interval_default(toAdd.start, existing.stop); + return; + } else if (toAdd.start <= existing.stop) { + this.intervals[pos] = new Interval_default(Math.min(existing.start, toAdd.start), Math.max(existing.stop, toAdd.stop)); + this.reduce(pos); + return; + } + } + this.intervals.push(toAdd.clone()); + } } - enterRule(listener) { - if (listener.enterInlineAssemblyStatementFlag) { - listener.enterInlineAssemblyStatementFlag(this); + addSet(other) { + if (other.intervals !== null) { + other.intervals.forEach((toAdd) => this.addInterval(toAdd), this); } + return this; } - exitRule(listener) { - if (listener.exitInlineAssemblyStatementFlag) { - listener.exitInlineAssemblyStatementFlag(this); + reduce(pos) { + if (pos < this.intervals.length - 1) { + const current = this.intervals[pos]; + const next = this.intervals[pos + 1]; + if (current.stop >= next.stop) { + this.intervals.splice(pos + 1, 1); + this.reduce(pos); + } else if (current.stop >= next.start) { + this.intervals[pos] = new Interval_default(current.start, next.stop); + this.intervals.splice(pos + 1, 1); + } } } - accept(visitor) { - if (visitor.visitInlineAssemblyStatementFlag) { - return visitor.visitInlineAssemblyStatementFlag(this); + complement(start, stop) { + const result = new IntervalSet(); + result.addInterval(new Interval_default(start, stop + 1)); + if (this.intervals !== null) + this.intervals.forEach((toRemove) => result.removeRange(toRemove)); + return result; + } + contains(item) { + if (this.intervals === null) { + return false; } else { - return visitor.visitChildren(this); + for (let k = 0; k < this.intervals.length; k++) { + if (this.intervals[k].contains(item)) { + return true; + } + } + return false; } } - }; - var DoWhileStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - statement() { - return this.getRuleContext(0, StatementContext); + removeRange(toRemove) { + if (toRemove.start === toRemove.stop - 1) { + this.removeOne(toRemove.start); + } else if (this.intervals !== null) { + let pos = 0; + for (let n = 0; n < this.intervals.length; n++) { + const existing = this.intervals[pos]; + if (toRemove.stop <= existing.start) { + return; + } else if (toRemove.start > existing.start && toRemove.stop < existing.stop) { + this.intervals[pos] = new Interval_default(existing.start, toRemove.start); + const x = new Interval_default(toRemove.stop, existing.stop); + this.intervals.splice(pos, 0, x); + return; + } else if (toRemove.start <= existing.start && toRemove.stop >= existing.stop) { + this.intervals.splice(pos, 1); + pos = pos - 1; + } else if (toRemove.start < existing.stop) { + this.intervals[pos] = new Interval_default(existing.start, toRemove.start); + } else if (toRemove.stop < existing.stop) { + this.intervals[pos] = new Interval_default(toRemove.stop, existing.stop); + } + pos += 1; + } + } } - expression() { - return this.getRuleContext(0, ExpressionContext); + removeOne(value) { + if (this.intervals !== null) { + for (let i = 0; i < this.intervals.length; i++) { + const existing = this.intervals[i]; + if (value < existing.start) { + return; + } else if (value === existing.start && value === existing.stop - 1) { + this.intervals.splice(i, 1); + return; + } else if (value === existing.start) { + this.intervals[i] = new Interval_default(existing.start + 1, existing.stop); + return; + } else if (value === existing.stop - 1) { + this.intervals[i] = new Interval_default(existing.start, existing.stop - 1); + return; + } else if (value < existing.stop - 1) { + const replace = new Interval_default(existing.start, value); + existing.start = value + 1; + this.intervals.splice(i, 0, replace); + return; + } + } + } } - constructor(parent, invokingState) { - super(parent, invokingState); + toString(literalNames, symbolicNames, elemsAreChar) { + literalNames = literalNames || null; + symbolicNames = symbolicNames || null; + elemsAreChar = elemsAreChar || false; + if (this.intervals === null) { + return "{}"; + } else if (literalNames !== null || symbolicNames !== null) { + return this.toTokenString(literalNames, symbolicNames); + } else if (elemsAreChar) { + return this.toCharString(); + } else { + return this.toIndexString(); + } } - get ruleIndex() { - return SolidityParser.RULE_doWhileStatement; + toCharString() { + const names = []; + for (let i = 0; i < this.intervals.length; i++) { + const existing = this.intervals[i]; + if (existing.stop === existing.start + 1) { + if (existing.start === Token_default.EOF) { + names.push(""); + } else { + names.push("'" + String.fromCharCode(existing.start) + "'"); + } + } else { + names.push("'" + String.fromCharCode(existing.start) + "'..'" + String.fromCharCode(existing.stop - 1) + "'"); + } + } + if (names.length > 1) { + return "{" + names.join(", ") + "}"; + } else { + return names[0]; + } } - enterRule(listener) { - if (listener.enterDoWhileStatement) { - listener.enterDoWhileStatement(this); + toIndexString() { + const names = []; + for (let i = 0; i < this.intervals.length; i++) { + const existing = this.intervals[i]; + if (existing.stop === existing.start + 1) { + if (existing.start === Token_default.EOF) { + names.push(""); + } else { + names.push(existing.start.toString()); + } + } else { + names.push(existing.start.toString() + ".." + (existing.stop - 1).toString()); + } + } + if (names.length > 1) { + return "{" + names.join(", ") + "}"; + } else { + return names[0]; } } - exitRule(listener) { - if (listener.exitDoWhileStatement) { - listener.exitDoWhileStatement(this); + toTokenString(literalNames, symbolicNames) { + const names = []; + for (let i = 0; i < this.intervals.length; i++) { + const existing = this.intervals[i]; + for (let j = existing.start; j < existing.stop; j++) { + names.push(this.elementName(literalNames, symbolicNames, j)); + } + } + if (names.length > 1) { + return "{" + names.join(", ") + "}"; + } else { + return names[0]; } } - accept(visitor) { - if (visitor.visitDoWhileStatement) { - return visitor.visitDoWhileStatement(this); + elementName(literalNames, symbolicNames, token) { + if (token === Token_default.EOF) { + return ""; + } else if (token === Token_default.EPSILON) { + return ""; } else { - return visitor.visitChildren(this); + return literalNames[token] || symbolicNames[token]; } } - }; - var ContinueStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - ContinueKeyword() { - return this.getToken(SolidityParser.ContinueKeyword, 0); + get length() { + return this.intervals.map((interval) => interval.length).reduce((acc, val) => acc + val); } - constructor(parent, invokingState) { - super(parent, invokingState); + }; + var IntervalSet_default = IntervalSet; + + // node_modules/antlr4/src/antlr4/state/RuleStopState.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/state/ATNState.js + init_process_shim(); + var ATNState = class { + constructor() { + this.atn = null; + this.stateNumber = ATNState.INVALID_STATE_NUMBER; + this.stateType = null; + this.ruleIndex = 0; + this.epsilonOnlyTransitions = false; + this.transitions = []; + this.nextTokenWithinRule = null; + } + toString() { + return this.stateNumber; + } + equals(other) { + if (other instanceof ATNState) { + return this.stateNumber === other.stateNumber; + } else { + return false; + } } - get ruleIndex() { - return SolidityParser.RULE_continueStatement; + isNonGreedyExitState() { + return false; } - enterRule(listener) { - if (listener.enterContinueStatement) { - listener.enterContinueStatement(this); + addTransition(trans, index) { + if (index === void 0) { + index = -1; } - } - exitRule(listener) { - if (listener.exitContinueStatement) { - listener.exitContinueStatement(this); + if (this.transitions.length === 0) { + this.epsilonOnlyTransitions = trans.isEpsilon; + } else if (this.epsilonOnlyTransitions !== trans.isEpsilon) { + this.epsilonOnlyTransitions = false; } - } - accept(visitor) { - if (visitor.visitContinueStatement) { - return visitor.visitContinueStatement(this); + if (index === -1) { + this.transitions.push(trans); } else { - return visitor.visitChildren(this); + this.transitions.splice(index, 1, trans); } } }; - var BreakStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - BreakKeyword() { - return this.getToken(SolidityParser.BreakKeyword, 0); - } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_breakStatement; + var ATNState_default = ATNState; + ATNState.INVALID_TYPE = 0; + ATNState.BASIC = 1; + ATNState.RULE_START = 2; + ATNState.BLOCK_START = 3; + ATNState.PLUS_BLOCK_START = 4; + ATNState.STAR_BLOCK_START = 5; + ATNState.TOKEN_START = 6; + ATNState.RULE_STOP = 7; + ATNState.BLOCK_END = 8; + ATNState.STAR_LOOP_BACK = 9; + ATNState.STAR_LOOP_ENTRY = 10; + ATNState.PLUS_LOOP_BACK = 11; + ATNState.LOOP_END = 12; + ATNState.serializationNames = [ + "INVALID", + "BASIC", + "RULE_START", + "BLOCK_START", + "PLUS_BLOCK_START", + "STAR_BLOCK_START", + "TOKEN_START", + "RULE_STOP", + "BLOCK_END", + "STAR_LOOP_BACK", + "STAR_LOOP_ENTRY", + "PLUS_LOOP_BACK", + "LOOP_END" + ]; + ATNState.INVALID_STATE_NUMBER = -1; + + // node_modules/antlr4/src/antlr4/state/RuleStopState.js + var RuleStopState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.RULE_STOP; + return this; } - enterRule(listener) { - if (listener.enterBreakStatement) { - listener.enterBreakStatement(this); + }; + var RuleStopState_default = RuleStopState; + + // node_modules/antlr4/src/antlr4/transition/RuleTransition.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/transition/Transition.js + init_process_shim(); + var Transition = class { + constructor(target) { + if (target === void 0 || target === null) { + throw "target cannot be null."; } + this.target = target; + this.isEpsilon = false; + this.label = null; } - exitRule(listener) { - if (listener.exitBreakStatement) { - listener.exitBreakStatement(this); - } + }; + var Transition_default = Transition; + Transition.EPSILON = 1; + Transition.RANGE = 2; + Transition.RULE = 3; + Transition.PREDICATE = 4; + Transition.ATOM = 5; + Transition.ACTION = 6; + Transition.SET = 7; + Transition.NOT_SET = 8; + Transition.WILDCARD = 9; + Transition.PRECEDENCE = 10; + Transition.serializationNames = [ + "INVALID", + "EPSILON", + "RANGE", + "RULE", + "PREDICATE", + "ATOM", + "ACTION", + "SET", + "NOT_SET", + "WILDCARD", + "PRECEDENCE" + ]; + Transition.serializationTypes = { + EpsilonTransition: Transition.EPSILON, + RangeTransition: Transition.RANGE, + RuleTransition: Transition.RULE, + PredicateTransition: Transition.PREDICATE, + AtomTransition: Transition.ATOM, + ActionTransition: Transition.ACTION, + SetTransition: Transition.SET, + NotSetTransition: Transition.NOT_SET, + WildcardTransition: Transition.WILDCARD, + PrecedencePredicateTransition: Transition.PRECEDENCE + }; + + // node_modules/antlr4/src/antlr4/transition/RuleTransition.js + var RuleTransition = class extends Transition_default { + constructor(ruleStart, ruleIndex, precedence, followState) { + super(ruleStart); + this.ruleIndex = ruleIndex; + this.precedence = precedence; + this.followState = followState; + this.serializationType = Transition_default.RULE; + this.isEpsilon = true; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - accept(visitor) { - if (visitor.visitBreakStatement) { - return visitor.visitBreakStatement(this); + }; + var RuleTransition_default = RuleTransition; + + // node_modules/antlr4/src/antlr4/transition/NotSetTransition.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/transition/SetTransition.js + init_process_shim(); + var SetTransition = class extends Transition_default { + constructor(target, set) { + super(target); + this.serializationType = Transition_default.SET; + if (set !== void 0 && set !== null) { + this.label = set; } else { - return visitor.visitChildren(this); + this.label = new IntervalSet_default(); + this.label.addOne(Token_default.INVALID_TYPE); } } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return this.label.contains(symbol); + } + toString() { + return this.label.toString(); + } }; - var ReturnStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.tryGetRuleContext(0, ExpressionContext); + var SetTransition_default = SetTransition; + + // node_modules/antlr4/src/antlr4/transition/NotSetTransition.js + var NotSetTransition = class extends SetTransition_default { + constructor(target, set) { + super(target, set); + this.serializationType = Transition_default.NOT_SET; } - constructor(parent, invokingState) { - super(parent, invokingState); + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= minVocabSymbol && symbol <= maxVocabSymbol && !super.matches(symbol, minVocabSymbol, maxVocabSymbol); } - get ruleIndex() { - return SolidityParser.RULE_returnStatement; + toString() { + return "~" + super.toString(); } - enterRule(listener) { - if (listener.enterReturnStatement) { - listener.enterReturnStatement(this); - } + }; + var NotSetTransition_default = NotSetTransition; + + // node_modules/antlr4/src/antlr4/transition/WildcardTransition.js + init_process_shim(); + var WildcardTransition = class extends Transition_default { + constructor(target) { + super(target); + this.serializationType = Transition_default.WILDCARD; } - exitRule(listener) { - if (listener.exitReturnStatement) { - listener.exitReturnStatement(this); - } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= minVocabSymbol && symbol <= maxVocabSymbol; } - accept(visitor) { - if (visitor.visitReturnStatement) { - return visitor.visitReturnStatement(this); - } else { - return visitor.visitChildren(this); - } + toString() { + return "."; } }; - var ThrowStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_throwStatement; + var WildcardTransition_default = WildcardTransition; + + // node_modules/antlr4/src/antlr4/atn/AbstractPredicateTransition.js + init_process_shim(); + var AbstractPredicateTransition = class extends Transition_default { + constructor(target) { + super(target); } - enterRule(listener) { - if (listener.enterThrowStatement) { - listener.enterThrowStatement(this); - } + }; + var AbstractPredicateTransition_default = AbstractPredicateTransition; + + // node_modules/antlr4/src/antlr4/context/PredictionContextUtils.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/context/RuleContext.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/RuleNode.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/ParseTree.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/SyntaxTree.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/Tree.js + init_process_shim(); + var Tree = class { + }; + var Tree_default = Tree; + + // node_modules/antlr4/src/antlr4/tree/SyntaxTree.js + var SyntaxTree = class extends Tree_default { + }; + var SyntaxTree_default = SyntaxTree; + + // node_modules/antlr4/src/antlr4/tree/ParseTree.js + var ParseTree = class extends SyntaxTree_default { + }; + var ParseTree_default = ParseTree; + + // node_modules/antlr4/src/antlr4/tree/RuleNode.js + var RuleNode = class extends ParseTree_default { + getRuleContext() { + throw new Error("missing interface implementation"); } - exitRule(listener) { - if (listener.exitThrowStatement) { - listener.exitThrowStatement(this); - } + }; + var RuleNode_default = RuleNode; + + // node_modules/antlr4/src/antlr4/tree/Trees.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/ErrorNode.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/TerminalNode.js + init_process_shim(); + var TerminalNode = class extends ParseTree_default { + }; + var TerminalNode_default = TerminalNode; + + // node_modules/antlr4/src/antlr4/tree/ErrorNode.js + var ErrorNode2 = class extends TerminalNode_default { + }; + var ErrorNode_default = ErrorNode2; + + // node_modules/antlr4/src/antlr4/utils/escapeWhitespace.js + init_process_shim(); + function escapeWhitespace(s, escapeSpaces) { + s = s.replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r"); + if (escapeSpaces) { + s = s.replace(/ /g, "\xB7"); } - accept(visitor) { - if (visitor.visitThrowStatement) { - return visitor.visitThrowStatement(this); - } else { - return visitor.visitChildren(this); + return s; + } + + // node_modules/antlr4/src/antlr4/tree/Trees.js + var Trees = { + toStringTree: function(tree, ruleNames, recog) { + ruleNames = ruleNames || null; + recog = recog || null; + if (recog !== null) { + ruleNames = recog.ruleNames; + } + let s = Trees.getNodeText(tree, ruleNames); + s = escapeWhitespace(s, false); + const c = tree.getChildCount(); + if (c === 0) { + return s; + } + let res = "(" + s + " "; + if (c > 0) { + s = Trees.toStringTree(tree.getChild(0), ruleNames); + res = res.concat(s); + } + for (let i = 1; i < c; i++) { + s = Trees.toStringTree(tree.getChild(i), ruleNames); + res = res.concat(" " + s); + } + res = res.concat(")"); + return res; + }, + getNodeText: function(t, ruleNames, recog) { + ruleNames = ruleNames || null; + recog = recog || null; + if (recog !== null) { + ruleNames = recog.ruleNames; + } + if (ruleNames !== null) { + if (t instanceof RuleNode_default) { + const context = t.getRuleContext(); + const altNumber = context.getAltNumber(); + if (altNumber != 0) { + return ruleNames[t.ruleIndex] + ":" + altNumber; + } + return ruleNames[t.ruleIndex]; + } else if (t instanceof ErrorNode_default) { + return t.toString(); + } else if (t instanceof TerminalNode_default) { + if (t.symbol !== null) { + return t.symbol.text; + } + } + } + const payload = t.getPayload(); + if (payload instanceof Token_default) { + return payload.text; + } + return t.getPayload().toString(); + }, + getChildren: function(t) { + const list = []; + for (let i = 0; i < t.getChildCount(); i++) { + list.push(t.getChild(i)); + } + return list; + }, + getAncestors: function(t) { + let ancestors = []; + t = t.getParent(); + while (t !== null) { + ancestors = [t].concat(ancestors); + t = t.getParent(); } + return ancestors; + }, + findAllTokenNodes: function(t, ttype) { + return Trees.findAllNodes(t, ttype, true); + }, + findAllRuleNodes: function(t, ruleIndex) { + return Trees.findAllNodes(t, ruleIndex, false); + }, + findAllNodes: function(t, index, findTokens) { + const nodes = []; + Trees._findAllNodes(t, index, findTokens, nodes); + return nodes; + }, + _findAllNodes: function(t, index, findTokens, nodes) { + if (findTokens && t instanceof TerminalNode_default) { + if (t.symbol.type === index) { + nodes.push(t); + } + } else if (!findTokens && t instanceof RuleNode_default) { + if (t.ruleIndex === index) { + nodes.push(t); + } + } + for (let i = 0; i < t.getChildCount(); i++) { + Trees._findAllNodes(t.getChild(i), index, findTokens, nodes); + } + }, + descendants: function(t) { + let nodes = [t]; + for (let i = 0; i < t.getChildCount(); i++) { + nodes = nodes.concat(Trees.descendants(t.getChild(i))); + } + return nodes; } }; - var EmitStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - functionCall() { - return this.getRuleContext(0, FunctionCallContext); - } + var Trees_default = Trees; + + // node_modules/antlr4/src/antlr4/context/RuleContext.js + var RuleContext = class extends RuleNode_default { constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_emitStatement; + super(); + this.parentCtx = parent || null; + this.invokingState = invokingState || -1; } - enterRule(listener) { - if (listener.enterEmitStatement) { - listener.enterEmitStatement(this); + depth() { + let n = 0; + let p = this; + while (p !== null) { + p = p.parentCtx; + n += 1; } + return n; } - exitRule(listener) { - if (listener.exitEmitStatement) { - listener.exitEmitStatement(this); - } + isEmpty() { + return this.invokingState === -1; } - accept(visitor) { - if (visitor.visitEmitStatement) { - return visitor.visitEmitStatement(this); + getSourceInterval() { + return Interval_default.INVALID_INTERVAL; + } + getRuleContext() { + return this; + } + getPayload() { + return this; + } + getText() { + if (this.getChildCount() === 0) { + return ""; } else { - return visitor.visitChildren(this); + return this.children.map(function(child) { + return child.getText(); + }).join(""); } } - }; - var RevertStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - functionCall() { - return this.getRuleContext(0, FunctionCallContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); + getAltNumber() { + return 0; } - get ruleIndex() { - return SolidityParser.RULE_revertStatement; + setAltNumber(altNumber) { } - enterRule(listener) { - if (listener.enterRevertStatement) { - listener.enterRevertStatement(this); - } + getChild(i) { + return null; } - exitRule(listener) { - if (listener.exitRevertStatement) { - listener.exitRevertStatement(this); - } + getChildCount() { + return 0; } accept(visitor) { - if (visitor.visitRevertStatement) { - return visitor.visitRevertStatement(this); - } else { - return visitor.visitChildren(this); - } + return visitor.visitChildren(this); } - }; - var VariableDeclarationStatementContext = class extends import_ParserRuleContext.ParserRuleContext { - identifierList() { - return this.tryGetRuleContext(0, IdentifierListContext); + toStringTree(ruleNames, recog) { + return Trees_default.toStringTree(this, ruleNames, recog); } - variableDeclaration() { - return this.tryGetRuleContext(0, VariableDeclarationContext); + toString(ruleNames, stop) { + ruleNames = ruleNames || null; + stop = stop || null; + let p = this; + let s = "["; + while (p !== null && p !== stop) { + if (ruleNames === null) { + if (!p.isEmpty()) { + s += p.invokingState; + } + } else { + const ri = p.ruleIndex; + const ruleName = ri >= 0 && ri < ruleNames.length ? ruleNames[ri] : "" + ri; + s += ruleName; + } + if (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) { + s += " "; + } + p = p.parentCtx; + } + s += "]"; + return s; } - variableDeclarationList() { - return this.tryGetRuleContext(0, VariableDeclarationListContext); + }; + var RuleContext_default = RuleContext; + + // node_modules/antlr4/src/antlr4/context/PredictionContext.js + init_process_shim(); + var PredictionContext = class { + constructor(cachedHashCode) { + this.cachedHashCode = cachedHashCode; } - expression() { - return this.tryGetRuleContext(0, ExpressionContext); + isEmpty() { + return this === PredictionContext.EMPTY; } - constructor(parent, invokingState) { - super(parent, invokingState); + hasEmptyPath() { + return this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE; } - get ruleIndex() { - return SolidityParser.RULE_variableDeclarationStatement; + hashCode() { + return this.cachedHashCode; } - enterRule(listener) { - if (listener.enterVariableDeclarationStatement) { - listener.enterVariableDeclarationStatement(this); - } + updateHashCode(hash) { + hash.update(this.cachedHashCode); } - exitRule(listener) { - if (listener.exitVariableDeclarationStatement) { - listener.exitVariableDeclarationStatement(this); + }; + var PredictionContext_default = PredictionContext; + PredictionContext.EMPTY = null; + PredictionContext.EMPTY_RETURN_STATE = 2147483647; + PredictionContext.globalNodeCount = 1; + PredictionContext.id = PredictionContext.globalNodeCount; + + // node_modules/antlr4/src/antlr4/context/ArrayPredictionContext.js + init_process_shim(); + var ArrayPredictionContext = class extends PredictionContext_default { + constructor(parents, returnStates) { + const h = new HashCode_default(); + h.update(parents, returnStates); + const hashCode = h.finish(); + super(hashCode); + this.parents = parents; + this.returnStates = returnStates; + return this; + } + isEmpty() { + return this.returnStates[0] === PredictionContext_default.EMPTY_RETURN_STATE; + } + getParent(index) { + return this.parents[index]; + } + getReturnState(index) { + return this.returnStates[index]; + } + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof ArrayPredictionContext)) { + return false; + } else if (this.hashCode() !== other.hashCode()) { + return false; + } else { + return equalArrays(this.returnStates, other.returnStates) && equalArrays(this.parents, other.parents); } } - accept(visitor) { - if (visitor.visitVariableDeclarationStatement) { - return visitor.visitVariableDeclarationStatement(this); + toString() { + if (this.isEmpty()) { + return "[]"; } else { - return visitor.visitChildren(this); + let s = "["; + for (let i = 0; i < this.returnStates.length; i++) { + if (i > 0) { + s = s + ", "; + } + if (this.returnStates[i] === PredictionContext_default.EMPTY_RETURN_STATE) { + s = s + "$"; + continue; + } + s = s + this.returnStates[i]; + if (this.parents[i] !== null) { + s = s + " " + this.parents[i]; + } else { + s = s + "null"; + } + } + return s + "]"; } } + get length() { + return this.returnStates.length; + } }; - var VariableDeclarationListContext = class extends import_ParserRuleContext.ParserRuleContext { - variableDeclaration(i) { - if (i === void 0) { - return this.getRuleContexts(VariableDeclarationContext); + var ArrayPredictionContext_default = ArrayPredictionContext; + + // node_modules/antlr4/src/antlr4/context/SingletonPredictionContext.js + init_process_shim(); + var SingletonPredictionContext = class extends PredictionContext_default { + constructor(parent, returnState) { + let hashCode = 0; + const hash = new HashCode_default(); + if (parent !== null) { + hash.update(parent, returnState); } else { - return this.getRuleContext(i, VariableDeclarationContext); + hash.update(1); } + hashCode = hash.finish(); + super(hashCode); + this.parentCtx = parent; + this.returnState = returnState; } - constructor(parent, invokingState) { - super(parent, invokingState); + getParent(index) { + return this.parentCtx; } - get ruleIndex() { - return SolidityParser.RULE_variableDeclarationList; + getReturnState(index) { + return this.returnState; } - enterRule(listener) { - if (listener.enterVariableDeclarationList) { - listener.enterVariableDeclarationList(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof SingletonPredictionContext)) { + return false; + } else if (this.hashCode() !== other.hashCode()) { + return false; + } else { + if (this.returnState !== other.returnState) + return false; + else if (this.parentCtx == null) + return other.parentCtx == null; + else + return this.parentCtx.equals(other.parentCtx); } } - exitRule(listener) { - if (listener.exitVariableDeclarationList) { - listener.exitVariableDeclarationList(this); + toString() { + const up = this.parentCtx === null ? "" : this.parentCtx.toString(); + if (up.length === 0) { + if (this.returnState === PredictionContext_default.EMPTY_RETURN_STATE) { + return "$"; + } else { + return "" + this.returnState; + } + } else { + return "" + this.returnState + " " + up; } } - accept(visitor) { - if (visitor.visitVariableDeclarationList) { - return visitor.visitVariableDeclarationList(this); + get length() { + return 1; + } + static create(parent, returnState) { + if (returnState === PredictionContext_default.EMPTY_RETURN_STATE && parent === null) { + return PredictionContext_default.EMPTY; } else { - return visitor.visitChildren(this); + return new SingletonPredictionContext(parent, returnState); } } }; - var IdentifierListContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier(i) { - if (i === void 0) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } + var SingletonPredictionContext_default = SingletonPredictionContext; + + // node_modules/antlr4/src/antlr4/context/EmptyPredictionContext.js + init_process_shim(); + var EmptyPredictionContext = class extends SingletonPredictionContext_default { + constructor() { + super(null, PredictionContext_default.EMPTY_RETURN_STATE); } - constructor(parent, invokingState) { - super(parent, invokingState); + isEmpty() { + return true; } - get ruleIndex() { - return SolidityParser.RULE_identifierList; + getParent(index) { + return null; } - enterRule(listener) { - if (listener.enterIdentifierList) { - listener.enterIdentifierList(this); - } + getReturnState(index) { + return this.returnState; } - exitRule(listener) { - if (listener.exitIdentifierList) { - listener.exitIdentifierList(this); - } + equals(other) { + return this === other; } - accept(visitor) { - if (visitor.visitIdentifierList) { - return visitor.visitIdentifierList(this); + toString() { + return "$"; + } + }; + var EmptyPredictionContext_default = EmptyPredictionContext; + PredictionContext_default.EMPTY = new EmptyPredictionContext(); + + // node_modules/antlr4/src/antlr4/misc/HashMap.js + init_process_shim(); + var HASH_KEY_PREFIX2 = "h-"; + var HashMap = class { + constructor(hashFunction, equalsFunction) { + this.data = {}; + this.hashFunction = hashFunction || standardHashCodeFunction; + this.equalsFunction = equalsFunction || standardEqualsFunction; + } + set(key, value) { + const hashKey = HASH_KEY_PREFIX2 + this.hashFunction(key); + if (hashKey in this.data) { + const entries = this.data[hashKey]; + for (let i = 0; i < entries.length; i++) { + const entry = entries[i]; + if (this.equalsFunction(key, entry.key)) { + const oldValue = entry.value; + entry.value = value; + return oldValue; + } + } + entries.push({key, value}); + return value; } else { - return visitor.visitChildren(this); + this.data[hashKey] = [{key, value}]; + return value; } } - }; - var ElementaryTypeNameContext = class extends import_ParserRuleContext.ParserRuleContext { - Int() { - return this.tryGetToken(SolidityParser.Int, 0); + containsKey(key) { + const hashKey = HASH_KEY_PREFIX2 + this.hashFunction(key); + if (hashKey in this.data) { + const entries = this.data[hashKey]; + for (let i = 0; i < entries.length; i++) { + const entry = entries[i]; + if (this.equalsFunction(key, entry.key)) + return true; + } + } + return false; } - Uint() { - return this.tryGetToken(SolidityParser.Uint, 0); + get(key) { + const hashKey = HASH_KEY_PREFIX2 + this.hashFunction(key); + if (hashKey in this.data) { + const entries = this.data[hashKey]; + for (let i = 0; i < entries.length; i++) { + const entry = entries[i]; + if (this.equalsFunction(key, entry.key)) + return entry.value; + } + } + return null; } - Byte() { - return this.tryGetToken(SolidityParser.Byte, 0); + entries() { + return Object.keys(this.data).filter((key) => key.startsWith(HASH_KEY_PREFIX2)).flatMap((key) => this.data[key], this); } - Fixed() { - return this.tryGetToken(SolidityParser.Fixed, 0); + getKeys() { + return this.entries().map((e) => e.key); } - Ufixed() { - return this.tryGetToken(SolidityParser.Ufixed, 0); + getValues() { + return this.entries().map((e) => e.value); } - constructor(parent, invokingState) { - super(parent, invokingState); + toString() { + const ss = this.entries().map((e) => "{" + e.key + ":" + e.value + "}"); + return "[" + ss.join(", ") + "]"; } - get ruleIndex() { - return SolidityParser.RULE_elementaryTypeName; + get length() { + return Object.keys(this.data).filter((key) => key.startsWith(HASH_KEY_PREFIX2)).map((key) => this.data[key].length, this).reduce((accum, item) => accum + item, 0); } - enterRule(listener) { - if (listener.enterElementaryTypeName) { - listener.enterElementaryTypeName(this); + }; + var HashMap_default = HashMap; + + // node_modules/antlr4/src/antlr4/context/PredictionContextUtils.js + function predictionContextFromRuleContext(atn, outerContext) { + if (outerContext === void 0 || outerContext === null) { + outerContext = RuleContext_default.EMPTY; + } + if (outerContext.parentCtx === null || outerContext === RuleContext_default.EMPTY) { + return PredictionContext_default.EMPTY; + } + const parent = predictionContextFromRuleContext(atn, outerContext.parentCtx); + const state = atn.states[outerContext.invokingState]; + const transition = state.transitions[0]; + return SingletonPredictionContext_default.create(parent, transition.followState.stateNumber); + } + function getCachedPredictionContext(context, contextCache, visited) { + if (context.isEmpty()) { + return context; + } + let existing = visited.get(context) || null; + if (existing !== null) { + return existing; + } + existing = contextCache.get(context); + if (existing !== null) { + visited.set(context, existing); + return existing; + } + let changed = false; + let parents = []; + for (let i = 0; i < parents.length; i++) { + const parent = getCachedPredictionContext(context.getParent(i), contextCache, visited); + if (changed || parent !== context.getParent(i)) { + if (!changed) { + parents = []; + for (let j = 0; j < context.length; j++) { + parents[j] = context.getParent(j); + } + changed = true; + } + parents[i] = parent; } } - exitRule(listener) { - if (listener.exitElementaryTypeName) { - listener.exitElementaryTypeName(this); + if (!changed) { + contextCache.add(context); + visited.set(context, context); + return context; + } + let updated = null; + if (parents.length === 0) { + updated = PredictionContext_default.EMPTY; + } else if (parents.length === 1) { + updated = SingletonPredictionContext_default.create(parents[0], context.getReturnState(0)); + } else { + updated = new ArrayPredictionContext_default(parents, context.returnStates); + } + contextCache.add(updated); + visited.set(updated, updated); + visited.set(context, updated); + return updated; + } + function merge(a, b, rootIsWildcard, mergeCache) { + if (a === b) { + return a; + } + if (a instanceof SingletonPredictionContext_default && b instanceof SingletonPredictionContext_default) { + return mergeSingletons(a, b, rootIsWildcard, mergeCache); + } + if (rootIsWildcard) { + if (a instanceof EmptyPredictionContext_default) { + return a; + } + if (b instanceof EmptyPredictionContext_default) { + return b; } } - accept(visitor) { - if (visitor.visitElementaryTypeName) { - return visitor.visitElementaryTypeName(this); - } else { - return visitor.visitChildren(this); + if (a instanceof SingletonPredictionContext_default) { + a = new ArrayPredictionContext_default([a.getParent()], [a.returnState]); + } + if (b instanceof SingletonPredictionContext_default) { + b = new ArrayPredictionContext_default([b.getParent()], [b.returnState]); + } + return mergeArrays(a, b, rootIsWildcard, mergeCache); + } + function mergeArrays(a, b, rootIsWildcard, mergeCache) { + if (mergeCache !== null) { + let previous = mergeCache.get(a, b); + if (previous !== null) { + return previous; + } + previous = mergeCache.get(b, a); + if (previous !== null) { + return previous; } } - }; - var ExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { - expression(i) { - if (i === void 0) { - return this.getRuleContexts(ExpressionContext); + let i = 0; + let j = 0; + let k = 0; + let mergedReturnStates = []; + let mergedParents = []; + while (i < a.returnStates.length && j < b.returnStates.length) { + const a_parent = a.parents[i]; + const b_parent = b.parents[j]; + if (a.returnStates[i] === b.returnStates[j]) { + const payload = a.returnStates[i]; + const bothDollars = payload === PredictionContext_default.EMPTY_RETURN_STATE && a_parent === null && b_parent === null; + const ax_ax = a_parent !== null && b_parent !== null && a_parent === b_parent; + if (bothDollars || ax_ax) { + mergedParents[k] = a_parent; + mergedReturnStates[k] = payload; + } else { + mergedParents[k] = merge(a_parent, b_parent, rootIsWildcard, mergeCache); + mergedReturnStates[k] = payload; + } + i += 1; + j += 1; + } else if (a.returnStates[i] < b.returnStates[j]) { + mergedParents[k] = a_parent; + mergedReturnStates[k] = a.returnStates[i]; + i += 1; } else { - return this.getRuleContext(i, ExpressionContext); + mergedParents[k] = b_parent; + mergedReturnStates[k] = b.returnStates[j]; + j += 1; } + k += 1; } - typeName() { - return this.tryGetRuleContext(0, TypeNameContext); + if (i < a.returnStates.length) { + for (let p = i; p < a.returnStates.length; p++) { + mergedParents[k] = a.parents[p]; + mergedReturnStates[k] = a.returnStates[p]; + k += 1; + } + } else { + for (let p = j; p < b.returnStates.length; p++) { + mergedParents[k] = b.parents[p]; + mergedReturnStates[k] = b.returnStates[p]; + k += 1; + } } - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); + if (k < mergedParents.length) { + if (k === 1) { + const a_ = SingletonPredictionContext_default.create(mergedParents[0], mergedReturnStates[0]); + if (mergeCache !== null) { + mergeCache.set(a, b, a_); + } + return a_; + } + mergedParents = mergedParents.slice(0, k); + mergedReturnStates = mergedReturnStates.slice(0, k); } - nameValueList() { - return this.tryGetRuleContext(0, NameValueListContext); + const M = new ArrayPredictionContext_default(mergedParents, mergedReturnStates); + if (M === a) { + if (mergeCache !== null) { + mergeCache.set(a, b, a); + } + return a; } - functionCallArguments() { - return this.tryGetRuleContext(0, FunctionCallArgumentsContext); + if (M === b) { + if (mergeCache !== null) { + mergeCache.set(a, b, b); + } + return b; } - primaryExpression() { - return this.tryGetRuleContext(0, PrimaryExpressionContext); + combineCommonParents(mergedParents); + if (mergeCache !== null) { + mergeCache.set(a, b, M); } - constructor(parent, invokingState) { - super(parent, invokingState); + return M; + } + function combineCommonParents(parents) { + const uniqueParents = new HashMap_default(); + for (let p = 0; p < parents.length; p++) { + const parent = parents[p]; + if (!uniqueParents.containsKey(parent)) { + uniqueParents.set(parent, parent); + } } - get ruleIndex() { - return SolidityParser.RULE_expression; + for (let q = 0; q < parents.length; q++) { + parents[q] = uniqueParents.get(parents[q]); } - enterRule(listener) { - if (listener.enterExpression) { - listener.enterExpression(this); + } + function mergeSingletons(a, b, rootIsWildcard, mergeCache) { + if (mergeCache !== null) { + let previous = mergeCache.get(a, b); + if (previous !== null) { + return previous; + } + previous = mergeCache.get(b, a); + if (previous !== null) { + return previous; } } - exitRule(listener) { - if (listener.exitExpression) { - listener.exitExpression(this); + const rootMerge = mergeRoot(a, b, rootIsWildcard); + if (rootMerge !== null) { + if (mergeCache !== null) { + mergeCache.set(a, b, rootMerge); } + return rootMerge; } - accept(visitor) { - if (visitor.visitExpression) { - return visitor.visitExpression(this); - } else { - return visitor.visitChildren(this); + if (a.returnState === b.returnState) { + const parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache); + if (parent === a.parentCtx) { + return a; + } + if (parent === b.parentCtx) { + return b; + } + const spc = SingletonPredictionContext_default.create(parent, a.returnState); + if (mergeCache !== null) { + mergeCache.set(a, b, spc); + } + return spc; + } else { + let singleParent = null; + if (a === b || a.parentCtx !== null && a.parentCtx === b.parentCtx) { + singleParent = a.parentCtx; + } + if (singleParent !== null) { + const payloads2 = [a.returnState, b.returnState]; + if (a.returnState > b.returnState) { + payloads2[0] = b.returnState; + payloads2[1] = a.returnState; + } + const parents2 = [singleParent, singleParent]; + const apc = new ArrayPredictionContext_default(parents2, payloads2); + if (mergeCache !== null) { + mergeCache.set(a, b, apc); + } + return apc; } + const payloads = [a.returnState, b.returnState]; + let parents = [a.parentCtx, b.parentCtx]; + if (a.returnState > b.returnState) { + payloads[0] = b.returnState; + payloads[1] = a.returnState; + parents = [b.parentCtx, a.parentCtx]; + } + const a_ = new ArrayPredictionContext_default(parents, payloads); + if (mergeCache !== null) { + mergeCache.set(a, b, a_); + } + return a_; } - }; - var PrimaryExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { - BooleanLiteral() { - return this.tryGetToken(SolidityParser.BooleanLiteral, 0); + } + function mergeRoot(a, b, rootIsWildcard) { + if (rootIsWildcard) { + if (a === PredictionContext_default.EMPTY) { + return PredictionContext_default.EMPTY; + } + if (b === PredictionContext_default.EMPTY) { + return PredictionContext_default.EMPTY; + } + } else { + if (a === PredictionContext_default.EMPTY && b === PredictionContext_default.EMPTY) { + return PredictionContext_default.EMPTY; + } else if (a === PredictionContext_default.EMPTY) { + const payloads = [ + b.returnState, + PredictionContext_default.EMPTY_RETURN_STATE + ]; + const parents = [b.parentCtx, null]; + return new ArrayPredictionContext_default(parents, payloads); + } else if (b === PredictionContext_default.EMPTY) { + const payloads = [a.returnState, PredictionContext_default.EMPTY_RETURN_STATE]; + const parents = [a.parentCtx, null]; + return new ArrayPredictionContext_default(parents, payloads); + } } - numberLiteral() { - return this.tryGetRuleContext(0, NumberLiteralContext); + return null; + } + + // node_modules/antlr4/src/antlr4/misc/BitSet.js + init_process_shim(); + var BitSet = class { + constructor() { + this.data = []; } - hexLiteral() { - return this.tryGetRuleContext(0, HexLiteralContext); + add(value) { + this.data[value] = true; } - stringLiteral() { - return this.tryGetRuleContext(0, StringLiteralContext); + or(set) { + Object.keys(set.data).map((alt) => this.add(alt), this); } - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); + remove(value) { + delete this.data[value]; } - TypeKeyword() { - return this.tryGetToken(SolidityParser.TypeKeyword, 0); + has(value) { + return this.data[value] === true; } - PayableKeyword() { - return this.tryGetToken(SolidityParser.PayableKeyword, 0); + values() { + return Object.keys(this.data); } - tupleExpression() { - return this.tryGetRuleContext(0, TupleExpressionContext); + minValue() { + return Math.min.apply(null, this.values()); } - typeName() { - return this.tryGetRuleContext(0, TypeNameContext); + hashCode() { + return HashCode_default.hashStuff(this.values()); } - constructor(parent, invokingState) { - super(parent, invokingState); + equals(other) { + return other instanceof BitSet && equalArrays(this.data, other.data); } - get ruleIndex() { - return SolidityParser.RULE_primaryExpression; + toString() { + return "{" + this.values().join(", ") + "}"; } - enterRule(listener) { - if (listener.enterPrimaryExpression) { - listener.enterPrimaryExpression(this); + get length() { + return this.values().length; + } + }; + var BitSet_default = BitSet; + + // node_modules/antlr4/src/antlr4/atn/LL1Analyzer.js + var LL1Analyzer = class { + constructor(atn) { + this.atn = atn; + } + getDecisionLookahead(s) { + if (s === null) { + return null; + } + const count = s.transitions.length; + const look = []; + for (let alt = 0; alt < count; alt++) { + look[alt] = new IntervalSet_default(); + const lookBusy = new HashSet_default(); + const seeThruPreds = false; + this._LOOK(s.transition(alt).target, null, PredictionContext_default.EMPTY, look[alt], lookBusy, new BitSet_default(), seeThruPreds, false); + if (look[alt].length === 0 || look[alt].contains(LL1Analyzer.HIT_PRED)) { + look[alt] = null; + } + } + return look; + } + LOOK(s, stopState, ctx) { + const r = new IntervalSet_default(); + const seeThruPreds = true; + ctx = ctx || null; + const lookContext = ctx !== null ? predictionContextFromRuleContext(s.atn, ctx) : null; + this._LOOK(s, stopState, lookContext, r, new HashSet_default(), new BitSet_default(), seeThruPreds, true); + return r; + } + _LOOK(s, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) { + const c = new ATNConfig_default({state: s, alt: 0, context: ctx}, null); + if (lookBusy.has(c)) { + return; + } + lookBusy.add(c); + if (s === stopState) { + if (ctx === null) { + look.addOne(Token_default.EPSILON); + return; + } else if (ctx.isEmpty() && addEOF) { + look.addOne(Token_default.EOF); + return; + } + } + if (s instanceof RuleStopState_default) { + if (ctx === null) { + look.addOne(Token_default.EPSILON); + return; + } else if (ctx.isEmpty() && addEOF) { + look.addOne(Token_default.EOF); + return; + } + if (ctx !== PredictionContext_default.EMPTY) { + const removed = calledRuleStack.has(s.ruleIndex); + try { + calledRuleStack.remove(s.ruleIndex); + for (let i = 0; i < ctx.length; i++) { + const returnState = this.atn.states[ctx.getReturnState(i)]; + this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } + } finally { + if (removed) { + calledRuleStack.add(s.ruleIndex); + } + } + return; + } + } + for (let j = 0; j < s.transitions.length; j++) { + const t = s.transitions[j]; + if (t.constructor === RuleTransition_default) { + if (calledRuleStack.has(t.target.ruleIndex)) { + continue; + } + const newContext = SingletonPredictionContext_default.create(ctx, t.followState.stateNumber); + try { + calledRuleStack.add(t.target.ruleIndex); + this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } finally { + calledRuleStack.remove(t.target.ruleIndex); + } + } else if (t instanceof AbstractPredicateTransition_default) { + if (seeThruPreds) { + this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } else { + look.addOne(LL1Analyzer.HIT_PRED); + } + } else if (t.isEpsilon) { + this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF); + } else if (t.constructor === WildcardTransition_default) { + look.addRange(Token_default.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType); + } else { + let set = t.label; + if (set !== null) { + if (t instanceof NotSetTransition_default) { + set = set.complement(Token_default.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType); + } + look.addSet(set); + } + } } } - exitRule(listener) { - if (listener.exitPrimaryExpression) { - listener.exitPrimaryExpression(this); + }; + var LL1Analyzer_default = LL1Analyzer; + LL1Analyzer.HIT_PRED = Token_default.INVALID_TYPE; + + // node_modules/antlr4/src/antlr4/atn/ATN.js + var ATN2 = class { + constructor(grammarType, maxTokenType) { + this.grammarType = grammarType; + this.maxTokenType = maxTokenType; + this.states = []; + this.decisionToState = []; + this.ruleToStartState = []; + this.ruleToStopState = null; + this.modeNameToStartState = {}; + this.ruleToTokenType = null; + this.lexerActions = null; + this.modeToStartState = []; + } + nextTokensInContext(s, ctx) { + const anal = new LL1Analyzer_default(this); + return anal.LOOK(s, null, ctx); + } + nextTokensNoContext(s) { + if (s.nextTokenWithinRule !== null) { + return s.nextTokenWithinRule; } + s.nextTokenWithinRule = this.nextTokensInContext(s, null); + s.nextTokenWithinRule.readOnly = true; + return s.nextTokenWithinRule; } - accept(visitor) { - if (visitor.visitPrimaryExpression) { - return visitor.visitPrimaryExpression(this); + nextTokens(s, ctx) { + if (ctx === void 0) { + return this.nextTokensNoContext(s); } else { - return visitor.visitChildren(this); + return this.nextTokensInContext(s, ctx); } } - }; - var ExpressionListContext = class extends import_ParserRuleContext.ParserRuleContext { - expression(i) { - if (i === void 0) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); + addState(state) { + if (state !== null) { + state.atn = this; + state.stateNumber = this.states.length; } + this.states.push(state); } - constructor(parent, invokingState) { - super(parent, invokingState); + removeState(state) { + this.states[state.stateNumber] = null; } - get ruleIndex() { - return SolidityParser.RULE_expressionList; + defineDecisionState(s) { + this.decisionToState.push(s); + s.decision = this.decisionToState.length - 1; + return s.decision; } - enterRule(listener) { - if (listener.enterExpressionList) { - listener.enterExpressionList(this); + getDecisionState(decision) { + if (this.decisionToState.length === 0) { + return null; + } else { + return this.decisionToState[decision]; } } - exitRule(listener) { - if (listener.exitExpressionList) { - listener.exitExpressionList(this); + getExpectedTokens(stateNumber, ctx) { + if (stateNumber < 0 || stateNumber >= this.states.length) { + throw "Invalid state number."; } - } - accept(visitor) { - if (visitor.visitExpressionList) { - return visitor.visitExpressionList(this); - } else { - return visitor.visitChildren(this); + const s = this.states[stateNumber]; + let following = this.nextTokens(s); + if (!following.contains(Token_default.EPSILON)) { + return following; + } + const expected = new IntervalSet_default(); + expected.addSet(following); + expected.removeOne(Token_default.EPSILON); + while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token_default.EPSILON)) { + const invokingState = this.states[ctx.invokingState]; + const rt = invokingState.transitions[0]; + following = this.nextTokens(rt.followState); + expected.addSet(following); + expected.removeOne(Token_default.EPSILON); + ctx = ctx.parentCtx; + } + if (following.contains(Token_default.EPSILON)) { + expected.addOne(Token_default.EOF); } + return expected; } }; - var NameValueListContext = class extends import_ParserRuleContext.ParserRuleContext { - nameValue(i) { - if (i === void 0) { - return this.getRuleContexts(NameValueContext); - } else { - return this.getRuleContext(i, NameValueContext); - } + var ATN_default = ATN2; + ATN2.INVALID_ALT_NUMBER = 0; + + // node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/ATNType.js + init_process_shim(); + var ATNType_default = { + LEXER: 0, + PARSER: 1 + }; + + // node_modules/antlr4/src/antlr4/state/BasicState.js + init_process_shim(); + var BasicState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.BASIC; } - constructor(parent, invokingState) { - super(parent, invokingState); + }; + var BasicState_default = BasicState; + + // node_modules/antlr4/src/antlr4/state/DecisionState.js + init_process_shim(); + var DecisionState = class extends ATNState_default { + constructor() { + super(); + this.decision = -1; + this.nonGreedy = false; + return this; } - get ruleIndex() { - return SolidityParser.RULE_nameValueList; + }; + var DecisionState_default = DecisionState; + + // node_modules/antlr4/src/antlr4/state/BlockStartState.js + init_process_shim(); + var BlockStartState = class extends DecisionState_default { + constructor() { + super(); + this.endState = null; + return this; } - enterRule(listener) { - if (listener.enterNameValueList) { - listener.enterNameValueList(this); - } + }; + var BlockStartState_default = BlockStartState; + + // node_modules/antlr4/src/antlr4/state/BlockEndState.js + init_process_shim(); + var BlockEndState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.BLOCK_END; + this.startState = null; + return this; } - exitRule(listener) { - if (listener.exitNameValueList) { - listener.exitNameValueList(this); - } + }; + var BlockEndState_default = BlockEndState; + + // node_modules/antlr4/src/antlr4/state/LoopEndState.js + init_process_shim(); + var LoopEndState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.LOOP_END; + this.loopBackState = null; + return this; } - accept(visitor) { - if (visitor.visitNameValueList) { - return visitor.visitNameValueList(this); - } else { - return visitor.visitChildren(this); - } + }; + var LoopEndState_default = LoopEndState; + + // node_modules/antlr4/src/antlr4/state/RuleStartState.js + init_process_shim(); + var RuleStartState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.RULE_START; + this.stopState = null; + this.isPrecedenceRule = false; + return this; } }; - var NameValueContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + var RuleStartState_default = RuleStartState; + + // node_modules/antlr4/src/antlr4/state/TokensStartState.js + init_process_shim(); + var TokensStartState = class extends DecisionState_default { + constructor() { + super(); + this.stateType = ATNState_default.TOKEN_START; + return this; + } + }; + var TokensStartState_default = TokensStartState; + + // node_modules/antlr4/src/antlr4/state/PlusLoopbackState.js + init_process_shim(); + var PlusLoopbackState = class extends DecisionState_default { + constructor() { + super(); + this.stateType = ATNState_default.PLUS_LOOP_BACK; + return this; + } + }; + var PlusLoopbackState_default = PlusLoopbackState; + + // node_modules/antlr4/src/antlr4/state/StarLoopbackState.js + init_process_shim(); + var StarLoopbackState = class extends ATNState_default { + constructor() { + super(); + this.stateType = ATNState_default.STAR_LOOP_BACK; + return this; + } + }; + var StarLoopbackState_default = StarLoopbackState; + + // node_modules/antlr4/src/antlr4/state/StarLoopEntryState.js + init_process_shim(); + var StarLoopEntryState = class extends DecisionState_default { + constructor() { + super(); + this.stateType = ATNState_default.STAR_LOOP_ENTRY; + this.loopBackState = null; + this.isPrecedenceDecision = null; + return this; + } + }; + var StarLoopEntryState_default = StarLoopEntryState; + + // node_modules/antlr4/src/antlr4/state/PlusBlockStartState.js + init_process_shim(); + var PlusBlockStartState = class extends BlockStartState_default { + constructor() { + super(); + this.stateType = ATNState_default.PLUS_BLOCK_START; + this.loopBackState = null; + return this; + } + }; + var PlusBlockStartState_default = PlusBlockStartState; + + // node_modules/antlr4/src/antlr4/state/StarBlockStartState.js + init_process_shim(); + var StarBlockStartState = class extends BlockStartState_default { + constructor() { + super(); + this.stateType = ATNState_default.STAR_BLOCK_START; + return this; + } + }; + var StarBlockStartState_default = StarBlockStartState; + + // node_modules/antlr4/src/antlr4/state/BasicBlockStartState.js + init_process_shim(); + var BasicBlockStartState = class extends BlockStartState_default { + constructor() { + super(); + this.stateType = ATNState_default.BLOCK_START; + return this; } - expression() { - return this.getRuleContext(0, ExpressionContext); + }; + var BasicBlockStartState_default = BasicBlockStartState; + + // node_modules/antlr4/src/antlr4/transition/AtomTransition.js + init_process_shim(); + var AtomTransition = class extends Transition_default { + constructor(target, label) { + super(target); + this.label_ = label; + this.label = this.makeLabel(); + this.serializationType = Transition_default.ATOM; + } + makeLabel() { + const s = new IntervalSet_default(); + s.addOne(this.label_); + return s; } - constructor(parent, invokingState) { - super(parent, invokingState); + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return this.label_ === symbol; } - get ruleIndex() { - return SolidityParser.RULE_nameValue; + toString() { + return this.label_; } - enterRule(listener) { - if (listener.enterNameValue) { - listener.enterNameValue(this); - } + }; + var AtomTransition_default = AtomTransition; + + // node_modules/antlr4/src/antlr4/transition/RangeTransition.js + init_process_shim(); + var RangeTransition = class extends Transition_default { + constructor(target, start, stop) { + super(target); + this.serializationType = Transition_default.RANGE; + this.start = start; + this.stop = stop; + this.label = this.makeLabel(); + } + makeLabel() { + const s = new IntervalSet_default(); + s.addRange(this.start, this.stop); + return s; } - exitRule(listener) { - if (listener.exitNameValue) { - listener.exitNameValue(this); - } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return symbol >= this.start && symbol <= this.stop; } - accept(visitor) { - if (visitor.visitNameValue) { - return visitor.visitNameValue(this); - } else { - return visitor.visitChildren(this); - } + toString() { + return "'" + String.fromCharCode(this.start) + "'..'" + String.fromCharCode(this.stop) + "'"; } }; - var FunctionCallArgumentsContext = class extends import_ParserRuleContext.ParserRuleContext { - nameValueList() { - return this.tryGetRuleContext(0, NameValueListContext); + var RangeTransition_default = RangeTransition; + + // node_modules/antlr4/src/antlr4/transition/ActionTransition.js + init_process_shim(); + var ActionTransition = class extends Transition_default { + constructor(target, ruleIndex, actionIndex, isCtxDependent) { + super(target); + this.serializationType = Transition_default.ACTION; + this.ruleIndex = ruleIndex; + this.actionIndex = actionIndex === void 0 ? -1 : actionIndex; + this.isCtxDependent = isCtxDependent === void 0 ? false : isCtxDependent; + this.isEpsilon = true; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - expressionList() { - return this.tryGetRuleContext(0, ExpressionListContext); + toString() { + return "action_" + this.ruleIndex + ":" + this.actionIndex; } - constructor(parent, invokingState) { - super(parent, invokingState); + }; + var ActionTransition_default = ActionTransition; + + // node_modules/antlr4/src/antlr4/transition/EpsilonTransition.js + init_process_shim(); + var EpsilonTransition = class extends Transition_default { + constructor(target, outermostPrecedenceReturn) { + super(target); + this.serializationType = Transition_default.EPSILON; + this.isEpsilon = true; + this.outermostPrecedenceReturn = outermostPrecedenceReturn; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - get ruleIndex() { - return SolidityParser.RULE_functionCallArguments; + toString() { + return "epsilon"; } - enterRule(listener) { - if (listener.enterFunctionCallArguments) { - listener.enterFunctionCallArguments(this); - } + }; + var EpsilonTransition_default = EpsilonTransition; + + // node_modules/antlr4/src/antlr4/transition/PredicateTransition.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/Predicate.js + init_process_shim(); + var Predicate = class extends SemanticContext_default { + constructor(ruleIndex, predIndex, isCtxDependent) { + super(); + this.ruleIndex = ruleIndex === void 0 ? -1 : ruleIndex; + this.predIndex = predIndex === void 0 ? -1 : predIndex; + this.isCtxDependent = isCtxDependent === void 0 ? false : isCtxDependent; } - exitRule(listener) { - if (listener.exitFunctionCallArguments) { - listener.exitFunctionCallArguments(this); - } + evaluate(parser, outerContext) { + const localctx = this.isCtxDependent ? outerContext : null; + return parser.sempred(localctx, this.ruleIndex, this.predIndex); } - accept(visitor) { - if (visitor.visitFunctionCallArguments) { - return visitor.visitFunctionCallArguments(this); + updateHashCode(hash) { + hash.update(this.ruleIndex, this.predIndex, this.isCtxDependent); + } + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof Predicate)) { + return false; } else { - return visitor.visitChildren(this); + return this.ruleIndex === other.ruleIndex && this.predIndex === other.predIndex && this.isCtxDependent === other.isCtxDependent; } } - }; - var FunctionCallContext = class extends import_ParserRuleContext.ParserRuleContext { - expression() { - return this.getRuleContext(0, ExpressionContext); + toString() { + return "{" + this.ruleIndex + ":" + this.predIndex + "}?"; } - functionCallArguments() { - return this.getRuleContext(0, FunctionCallArgumentsContext); + }; + var Predicate_default = Predicate; + SemanticContext_default.NONE = new Predicate(); + + // node_modules/antlr4/src/antlr4/transition/PredicateTransition.js + var PredicateTransition = class extends AbstractPredicateTransition_default { + constructor(target, ruleIndex, predIndex, isCtxDependent) { + super(target); + this.serializationType = Transition_default.PREDICATE; + this.ruleIndex = ruleIndex; + this.predIndex = predIndex; + this.isCtxDependent = isCtxDependent; + this.isEpsilon = true; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - constructor(parent, invokingState) { - super(parent, invokingState); + getPredicate() { + return new Predicate_default(this.ruleIndex, this.predIndex, this.isCtxDependent); } - get ruleIndex() { - return SolidityParser.RULE_functionCall; + toString() { + return "pred_" + this.ruleIndex + ":" + this.predIndex; } - enterRule(listener) { - if (listener.enterFunctionCall) { - listener.enterFunctionCall(this); - } + }; + var PredicateTransition_default = PredicateTransition; + + // node_modules/antlr4/src/antlr4/transition/PrecedencePredicateTransition.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/PrecedencePredicate.js + init_process_shim(); + var PrecedencePredicate = class extends SemanticContext_default { + constructor(precedence) { + super(); + this.precedence = precedence === void 0 ? 0 : precedence; } - exitRule(listener) { - if (listener.exitFunctionCall) { - listener.exitFunctionCall(this); - } + evaluate(parser, outerContext) { + return parser.precpred(outerContext, this.precedence); } - accept(visitor) { - if (visitor.visitFunctionCall) { - return visitor.visitFunctionCall(this); + evalPrecedence(parser, outerContext) { + if (parser.precpred(outerContext, this.precedence)) { + return SemanticContext_default.NONE; } else { - return visitor.visitChildren(this); + return null; } } - }; - var AssemblyBlockContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyItem(i) { - if (i === void 0) { - return this.getRuleContexts(AssemblyItemContext); + compareTo(other) { + return this.precedence - other.precedence; + } + updateHashCode(hash) { + hash.update(this.precedence); + } + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof PrecedencePredicate)) { + return false; } else { - return this.getRuleContext(i, AssemblyItemContext); + return this.precedence === other.precedence; } } - constructor(parent, invokingState) { - super(parent, invokingState); + toString() { + return "{" + this.precedence + ">=prec}?"; } - get ruleIndex() { - return SolidityParser.RULE_assemblyBlock; + }; + var PrecedencePredicate_default = PrecedencePredicate; + SemanticContext_default.PrecedencePredicate = PrecedencePredicate; + + // node_modules/antlr4/src/antlr4/transition/PrecedencePredicateTransition.js + var PrecedencePredicateTransition = class extends AbstractPredicateTransition_default { + constructor(target, precedence) { + super(target); + this.serializationType = Transition_default.PRECEDENCE; + this.precedence = precedence; + this.isEpsilon = true; + } + matches(symbol, minVocabSymbol, maxVocabSymbol) { + return false; } - enterRule(listener) { - if (listener.enterAssemblyBlock) { - listener.enterAssemblyBlock(this); - } + getPredicate() { + return new PrecedencePredicate_default(this.precedence); } - exitRule(listener) { - if (listener.exitAssemblyBlock) { - listener.exitAssemblyBlock(this); - } + toString() { + return this.precedence + " >= _p"; } - accept(visitor) { - if (visitor.visitAssemblyBlock) { - return visitor.visitAssemblyBlock(this); - } else { - return visitor.visitChildren(this); + }; + var PrecedencePredicateTransition_default = PrecedencePredicateTransition; + + // node_modules/antlr4/src/antlr4/atn/ATNDeserializationOptions.js + init_process_shim(); + var ATNDeserializationOptions = class { + constructor(copyFrom) { + if (copyFrom === void 0) { + copyFrom = null; } + this.readOnly = false; + this.verifyATN = copyFrom === null ? true : copyFrom.verifyATN; + this.generateRuleBypassTransitions = copyFrom === null ? false : copyFrom.generateRuleBypassTransitions; } }; - var AssemblyItemContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - assemblyBlock() { - return this.tryGetRuleContext(0, AssemblyBlockContext); + var ATNDeserializationOptions_default = ATNDeserializationOptions; + ATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions(); + ATNDeserializationOptions.defaultOptions.readOnly = true; + + // node_modules/antlr4/src/antlr4/atn/LexerActionType.js + init_process_shim(); + var LexerActionType_default = { + CHANNEL: 0, + CUSTOM: 1, + MODE: 2, + MORE: 3, + POP_MODE: 4, + PUSH_MODE: 5, + SKIP: 6, + TYPE: 7 + }; + + // node_modules/antlr4/src/antlr4/action/LexerSkipAction.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/action/LexerAction.js + init_process_shim(); + var LexerAction = class { + constructor(action) { + this.actionType = action; + this.isPositionDependent = false; + } + hashCode() { + const hash = new HashCode_default(); + this.updateHashCode(hash); + return hash.finish(); } - assemblyExpression() { - return this.tryGetRuleContext(0, AssemblyExpressionContext); + updateHashCode(hash) { + hash.update(this.actionType); } - assemblyLocalDefinition() { - return this.tryGetRuleContext(0, AssemblyLocalDefinitionContext); + equals(other) { + return this === other; } - assemblyAssignment() { - return this.tryGetRuleContext(0, AssemblyAssignmentContext); + }; + var LexerAction_default = LexerAction; + + // node_modules/antlr4/src/antlr4/action/LexerSkipAction.js + var LexerSkipAction = class extends LexerAction_default { + constructor() { + super(LexerActionType_default.SKIP); } - assemblyStackAssignment() { - return this.tryGetRuleContext(0, AssemblyStackAssignmentContext); + execute(lexer) { + lexer.skip(); } - labelDefinition() { - return this.tryGetRuleContext(0, LabelDefinitionContext); + toString() { + return "skip"; } - assemblySwitch() { - return this.tryGetRuleContext(0, AssemblySwitchContext); + }; + var LexerSkipAction_default = LexerSkipAction; + LexerSkipAction.INSTANCE = new LexerSkipAction(); + + // node_modules/antlr4/src/antlr4/action/LexerChannelAction.js + init_process_shim(); + var LexerChannelAction = class extends LexerAction_default { + constructor(channel) { + super(LexerActionType_default.CHANNEL); + this.channel = channel; } - assemblyFunctionDefinition() { - return this.tryGetRuleContext(0, AssemblyFunctionDefinitionContext); + execute(lexer) { + lexer._channel = this.channel; } - assemblyFor() { - return this.tryGetRuleContext(0, AssemblyForContext); + updateHashCode(hash) { + hash.update(this.actionType, this.channel); } - assemblyIf() { - return this.tryGetRuleContext(0, AssemblyIfContext); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerChannelAction)) { + return false; + } else { + return this.channel === other.channel; + } } - BreakKeyword() { - return this.tryGetToken(SolidityParser.BreakKeyword, 0); + toString() { + return "channel(" + this.channel + ")"; } - ContinueKeyword() { - return this.tryGetToken(SolidityParser.ContinueKeyword, 0); + }; + var LexerChannelAction_default = LexerChannelAction; + + // node_modules/antlr4/src/antlr4/action/LexerCustomAction.js + init_process_shim(); + var LexerCustomAction = class extends LexerAction_default { + constructor(ruleIndex, actionIndex) { + super(LexerActionType_default.CUSTOM); + this.ruleIndex = ruleIndex; + this.actionIndex = actionIndex; + this.isPositionDependent = true; } - LeaveKeyword() { - return this.tryGetToken(SolidityParser.LeaveKeyword, 0); + execute(lexer) { + lexer.action(null, this.ruleIndex, this.actionIndex); } - subAssembly() { - return this.tryGetRuleContext(0, SubAssemblyContext); + updateHashCode(hash) { + hash.update(this.actionType, this.ruleIndex, this.actionIndex); } - numberLiteral() { - return this.tryGetRuleContext(0, NumberLiteralContext); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerCustomAction)) { + return false; + } else { + return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex; + } } - stringLiteral() { - return this.tryGetRuleContext(0, StringLiteralContext); + }; + var LexerCustomAction_default = LexerCustomAction; + + // node_modules/antlr4/src/antlr4/action/LexerMoreAction.js + init_process_shim(); + var LexerMoreAction = class extends LexerAction_default { + constructor() { + super(LexerActionType_default.MORE); } - hexLiteral() { - return this.tryGetRuleContext(0, HexLiteralContext); + execute(lexer) { + lexer.more(); } - constructor(parent, invokingState) { - super(parent, invokingState); + toString() { + return "more"; } - get ruleIndex() { - return SolidityParser.RULE_assemblyItem; + }; + var LexerMoreAction_default = LexerMoreAction; + LexerMoreAction.INSTANCE = new LexerMoreAction(); + + // node_modules/antlr4/src/antlr4/action/LexerTypeAction.js + init_process_shim(); + var LexerTypeAction = class extends LexerAction_default { + constructor(type) { + super(LexerActionType_default.TYPE); + this.type = type; } - enterRule(listener) { - if (listener.enterAssemblyItem) { - listener.enterAssemblyItem(this); - } + execute(lexer) { + lexer.type = this.type; } - exitRule(listener) { - if (listener.exitAssemblyItem) { - listener.exitAssemblyItem(this); - } + updateHashCode(hash) { + hash.update(this.actionType, this.type); } - accept(visitor) { - if (visitor.visitAssemblyItem) { - return visitor.visitAssemblyItem(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerTypeAction)) { + return false; } else { - return visitor.visitChildren(this); + return this.type === other.type; } } + toString() { + return "type(" + this.type + ")"; + } }; - var AssemblyExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyCall() { - return this.tryGetRuleContext(0, AssemblyCallContext); + var LexerTypeAction_default = LexerTypeAction; + + // node_modules/antlr4/src/antlr4/action/LexerPushModeAction.js + init_process_shim(); + var LexerPushModeAction = class extends LexerAction_default { + constructor(mode) { + super(LexerActionType_default.PUSH_MODE); + this.mode = mode; } - assemblyLiteral() { - return this.tryGetRuleContext(0, AssemblyLiteralContext); + execute(lexer) { + lexer.pushMode(this.mode); } - assemblyMember() { - return this.tryGetRuleContext(0, AssemblyMemberContext); + updateHashCode(hash) { + hash.update(this.actionType, this.mode); } - constructor(parent, invokingState) { - super(parent, invokingState); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerPushModeAction)) { + return false; + } else { + return this.mode === other.mode; + } } - get ruleIndex() { - return SolidityParser.RULE_assemblyExpression; + toString() { + return "pushMode(" + this.mode + ")"; } - enterRule(listener) { - if (listener.enterAssemblyExpression) { - listener.enterAssemblyExpression(this); - } + }; + var LexerPushModeAction_default = LexerPushModeAction; + + // node_modules/antlr4/src/antlr4/action/LexerPopModeAction.js + init_process_shim(); + var LexerPopModeAction = class extends LexerAction_default { + constructor() { + super(LexerActionType_default.POP_MODE); } - exitRule(listener) { - if (listener.exitAssemblyExpression) { - listener.exitAssemblyExpression(this); - } + execute(lexer) { + lexer.popMode(); + } + toString() { + return "popMode"; + } + }; + var LexerPopModeAction_default = LexerPopModeAction; + LexerPopModeAction.INSTANCE = new LexerPopModeAction(); + + // node_modules/antlr4/src/antlr4/action/LexerModeAction.js + init_process_shim(); + var LexerModeAction = class extends LexerAction_default { + constructor(mode) { + super(LexerActionType_default.MODE); + this.mode = mode; } - accept(visitor) { - if (visitor.visitAssemblyExpression) { - return visitor.visitAssemblyExpression(this); + execute(lexer) { + lexer.mode(this.mode); + } + updateHashCode(hash) { + hash.update(this.actionType, this.mode); + } + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerModeAction)) { + return false; } else { - return visitor.visitChildren(this); + return this.mode === other.mode; } } + toString() { + return "mode(" + this.mode + ")"; + } }; - var AssemblyMemberContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier(i) { - if (i === void 0) { - return this.getRuleContexts(IdentifierContext); + var LexerModeAction_default = LexerModeAction; + + // node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js + var SERIALIZED_VERSION = 4; + function initArray(length, value) { + const tmp = []; + tmp[length - 1] = value; + return tmp.map(function(i) { + return value; + }); + } + var ATNDeserializer3 = class { + constructor(options) { + if (options === void 0 || options === null) { + options = ATNDeserializationOptions_default.defaultOptions; + } + this.deserializationOptions = options; + this.stateFactories = null; + this.actionFactories = null; + } + deserialize(data) { + const legacy = this.reset(data); + this.checkVersion(legacy); + if (legacy) + this.skipUUID(); + const atn = this.readATN(); + this.readStates(atn, legacy); + this.readRules(atn, legacy); + this.readModes(atn); + const sets = []; + this.readSets(atn, sets, this.readInt.bind(this)); + if (legacy) + this.readSets(atn, sets, this.readInt32.bind(this)); + this.readEdges(atn, sets); + this.readDecisions(atn); + this.readLexerActions(atn, legacy); + this.markPrecedenceDecisions(atn); + this.verifyATN(atn); + if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType_default.PARSER) { + this.generateRuleBypassTransitions(atn); + this.verifyATN(atn); + } + return atn; + } + reset(data) { + const version = data.charCodeAt ? data.charCodeAt(0) : data[0]; + if (version === SERIALIZED_VERSION - 1) { + const adjust = function(c) { + const v = c.charCodeAt(0); + return v > 1 ? v - 2 : v + 65534; + }; + const temp = data.split("").map(adjust); + temp[0] = data.charCodeAt(0); + this.data = temp; + this.pos = 0; + return true; } else { - return this.getRuleContext(i, IdentifierContext); + this.data = data; + this.pos = 0; + return false; } } - constructor(parent, invokingState) { - super(parent, invokingState); + skipUUID() { + let count = 0; + while (count++ < 8) + this.readInt(); } - get ruleIndex() { - return SolidityParser.RULE_assemblyMember; + checkVersion(legacy) { + const version = this.readInt(); + if (!legacy && version !== SERIALIZED_VERSION) { + throw "Could not deserialize ATN with version " + version + " (expected " + SERIALIZED_VERSION + ")."; + } } - enterRule(listener) { - if (listener.enterAssemblyMember) { - listener.enterAssemblyMember(this); + readATN() { + const grammarType = this.readInt(); + const maxTokenType = this.readInt(); + return new ATN_default(grammarType, maxTokenType); + } + readStates(atn, legacy) { + let j, pair, stateNumber; + const loopBackStateNumbers = []; + const endStateNumbers = []; + const nstates = this.readInt(); + for (let i = 0; i < nstates; i++) { + const stype = this.readInt(); + if (stype === ATNState_default.INVALID_TYPE) { + atn.addState(null); + continue; + } + let ruleIndex = this.readInt(); + if (legacy && ruleIndex === 65535) { + ruleIndex = -1; + } + const s = this.stateFactory(stype, ruleIndex); + if (stype === ATNState_default.LOOP_END) { + const loopBackStateNumber = this.readInt(); + loopBackStateNumbers.push([s, loopBackStateNumber]); + } else if (s instanceof BlockStartState_default) { + const endStateNumber = this.readInt(); + endStateNumbers.push([s, endStateNumber]); + } + atn.addState(s); + } + for (j = 0; j < loopBackStateNumbers.length; j++) { + pair = loopBackStateNumbers[j]; + pair[0].loopBackState = atn.states[pair[1]]; + } + for (j = 0; j < endStateNumbers.length; j++) { + pair = endStateNumbers[j]; + pair[0].endState = atn.states[pair[1]]; + } + let numNonGreedyStates = this.readInt(); + for (j = 0; j < numNonGreedyStates; j++) { + stateNumber = this.readInt(); + atn.states[stateNumber].nonGreedy = true; + } + let numPrecedenceStates = this.readInt(); + for (j = 0; j < numPrecedenceStates; j++) { + stateNumber = this.readInt(); + atn.states[stateNumber].isPrecedenceRule = true; + } + } + readRules(atn, legacy) { + let i; + const nrules = this.readInt(); + if (atn.grammarType === ATNType_default.LEXER) { + atn.ruleToTokenType = initArray(nrules, 0); + } + atn.ruleToStartState = initArray(nrules, 0); + for (i = 0; i < nrules; i++) { + const s = this.readInt(); + atn.ruleToStartState[i] = atn.states[s]; + if (atn.grammarType === ATNType_default.LEXER) { + let tokenType = this.readInt(); + if (legacy && tokenType === 65535) { + tokenType = Token_default.EOF; + } + atn.ruleToTokenType[i] = tokenType; + } + } + atn.ruleToStopState = initArray(nrules, 0); + for (i = 0; i < atn.states.length; i++) { + const state = atn.states[i]; + if (!(state instanceof RuleStopState_default)) { + continue; + } + atn.ruleToStopState[state.ruleIndex] = state; + atn.ruleToStartState[state.ruleIndex].stopState = state; + } + } + readModes(atn) { + const nmodes = this.readInt(); + for (let i = 0; i < nmodes; i++) { + let s = this.readInt(); + atn.modeToStartState.push(atn.states[s]); + } + } + readSets(atn, sets, reader) { + const m = this.readInt(); + for (let i = 0; i < m; i++) { + const iset = new IntervalSet_default(); + sets.push(iset); + const n = this.readInt(); + const containsEof = this.readInt(); + if (containsEof !== 0) { + iset.addOne(-1); + } + for (let j = 0; j < n; j++) { + const i1 = reader(); + const i2 = reader(); + iset.addRange(i1, i2); + } + } + } + readEdges(atn, sets) { + let i, j, state, trans, target; + const nedges = this.readInt(); + for (i = 0; i < nedges; i++) { + const src = this.readInt(); + const trg = this.readInt(); + const ttype = this.readInt(); + const arg1 = this.readInt(); + const arg2 = this.readInt(); + const arg3 = this.readInt(); + trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets); + const srcState = atn.states[src]; + srcState.addTransition(trans); + } + for (i = 0; i < atn.states.length; i++) { + state = atn.states[i]; + for (j = 0; j < state.transitions.length; j++) { + const t = state.transitions[j]; + if (!(t instanceof RuleTransition_default)) { + continue; + } + let outermostPrecedenceReturn = -1; + if (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) { + if (t.precedence === 0) { + outermostPrecedenceReturn = t.target.ruleIndex; + } + } + trans = new EpsilonTransition_default(t.followState, outermostPrecedenceReturn); + atn.ruleToStopState[t.target.ruleIndex].addTransition(trans); + } + } + for (i = 0; i < atn.states.length; i++) { + state = atn.states[i]; + if (state instanceof BlockStartState_default) { + if (state.endState === null) { + throw "IllegalState"; + } + if (state.endState.startState !== null) { + throw "IllegalState"; + } + state.endState.startState = state; + } + if (state instanceof PlusLoopbackState_default) { + for (j = 0; j < state.transitions.length; j++) { + target = state.transitions[j].target; + if (target instanceof PlusBlockStartState_default) { + target.loopBackState = state; + } + } + } else if (state instanceof StarLoopbackState_default) { + for (j = 0; j < state.transitions.length; j++) { + target = state.transitions[j].target; + if (target instanceof StarLoopEntryState_default) { + target.loopBackState = state; + } + } + } } } - exitRule(listener) { - if (listener.exitAssemblyMember) { - listener.exitAssemblyMember(this); + readDecisions(atn) { + const ndecisions = this.readInt(); + for (let i = 0; i < ndecisions; i++) { + const s = this.readInt(); + const decState = atn.states[s]; + atn.decisionToState.push(decState); + decState.decision = i; } } - accept(visitor) { - if (visitor.visitAssemblyMember) { - return visitor.visitAssemblyMember(this); + readLexerActions(atn, legacy) { + if (atn.grammarType === ATNType_default.LEXER) { + const count = this.readInt(); + atn.lexerActions = initArray(count, null); + for (let i = 0; i < count; i++) { + const actionType = this.readInt(); + let data1 = this.readInt(); + if (legacy && data1 === 65535) { + data1 = -1; + } + let data2 = this.readInt(); + if (legacy && data2 === 65535) { + data2 = -1; + } + atn.lexerActions[i] = this.lexerActionFactory(actionType, data1, data2); + } + } + } + generateRuleBypassTransitions(atn) { + let i; + const count = atn.ruleToStartState.length; + for (i = 0; i < count; i++) { + atn.ruleToTokenType[i] = atn.maxTokenType + i + 1; + } + for (i = 0; i < count; i++) { + this.generateRuleBypassTransition(atn, i); + } + } + generateRuleBypassTransition(atn, idx) { + let i, state; + const bypassStart = new BasicBlockStartState_default(); + bypassStart.ruleIndex = idx; + atn.addState(bypassStart); + const bypassStop = new BlockEndState_default(); + bypassStop.ruleIndex = idx; + atn.addState(bypassStop); + bypassStart.endState = bypassStop; + atn.defineDecisionState(bypassStart); + bypassStop.startState = bypassStart; + let excludeTransition = null; + let endState = null; + if (atn.ruleToStartState[idx].isPrecedenceRule) { + endState = null; + for (i = 0; i < atn.states.length; i++) { + state = atn.states[i]; + if (this.stateIsEndStateFor(state, idx)) { + endState = state; + excludeTransition = state.loopBackState.transitions[0]; + break; + } + } + if (excludeTransition === null) { + throw "Couldn't identify final state of the precedence rule prefix section."; + } } else { - return visitor.visitChildren(this); + endState = atn.ruleToStopState[idx]; } + for (i = 0; i < atn.states.length; i++) { + state = atn.states[i]; + for (let j = 0; j < state.transitions.length; j++) { + const transition = state.transitions[j]; + if (transition === excludeTransition) { + continue; + } + if (transition.target === endState) { + transition.target = bypassStop; + } + } + } + const ruleToStartState = atn.ruleToStartState[idx]; + const count = ruleToStartState.transitions.length; + while (count > 0) { + bypassStart.addTransition(ruleToStartState.transitions[count - 1]); + ruleToStartState.transitions = ruleToStartState.transitions.slice(-1); + } + atn.ruleToStartState[idx].addTransition(new EpsilonTransition_default(bypassStart)); + bypassStop.addTransition(new EpsilonTransition_default(endState)); + const matchState = new BasicState_default(); + atn.addState(matchState); + matchState.addTransition(new AtomTransition_default(bypassStop, atn.ruleToTokenType[idx])); + bypassStart.addTransition(new EpsilonTransition_default(matchState)); } - }; - var AssemblyCallContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - assemblyExpression(i) { - if (i === void 0) { - return this.getRuleContexts(AssemblyExpressionContext); + stateIsEndStateFor(state, idx) { + if (state.ruleIndex !== idx) { + return null; + } + if (!(state instanceof StarLoopEntryState_default)) { + return null; + } + const maybeLoopEndState = state.transitions[state.transitions.length - 1].target; + if (!(maybeLoopEndState instanceof LoopEndState_default)) { + return null; + } + if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transitions[0].target instanceof RuleStopState_default) { + return state; } else { - return this.getRuleContext(i, AssemblyExpressionContext); + return null; } } - constructor(parent, invokingState) { - super(parent, invokingState); + markPrecedenceDecisions(atn) { + for (let i = 0; i < atn.states.length; i++) { + const state = atn.states[i]; + if (!(state instanceof StarLoopEntryState_default)) { + continue; + } + if (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) { + const maybeLoopEndState = state.transitions[state.transitions.length - 1].target; + if (maybeLoopEndState instanceof LoopEndState_default) { + if (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transitions[0].target instanceof RuleStopState_default) { + state.isPrecedenceDecision = true; + } + } + } + } } - get ruleIndex() { - return SolidityParser.RULE_assemblyCall; + verifyATN(atn) { + if (!this.deserializationOptions.verifyATN) { + return; + } + for (let i = 0; i < atn.states.length; i++) { + const state = atn.states[i]; + if (state === null) { + continue; + } + this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1); + if (state instanceof PlusBlockStartState_default) { + this.checkCondition(state.loopBackState !== null); + } else if (state instanceof StarLoopEntryState_default) { + this.checkCondition(state.loopBackState !== null); + this.checkCondition(state.transitions.length === 2); + if (state.transitions[0].target instanceof StarBlockStartState_default) { + this.checkCondition(state.transitions[1].target instanceof LoopEndState_default); + this.checkCondition(!state.nonGreedy); + } else if (state.transitions[0].target instanceof LoopEndState_default) { + this.checkCondition(state.transitions[1].target instanceof StarBlockStartState_default); + this.checkCondition(state.nonGreedy); + } else { + throw "IllegalState"; + } + } else if (state instanceof StarLoopbackState_default) { + this.checkCondition(state.transitions.length === 1); + this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState_default); + } else if (state instanceof LoopEndState_default) { + this.checkCondition(state.loopBackState !== null); + } else if (state instanceof RuleStartState_default) { + this.checkCondition(state.stopState !== null); + } else if (state instanceof BlockStartState_default) { + this.checkCondition(state.endState !== null); + } else if (state instanceof BlockEndState_default) { + this.checkCondition(state.startState !== null); + } else if (state instanceof DecisionState_default) { + this.checkCondition(state.transitions.length <= 1 || state.decision >= 0); + } else { + this.checkCondition(state.transitions.length <= 1 || state instanceof RuleStopState_default); + } + } } - enterRule(listener) { - if (listener.enterAssemblyCall) { - listener.enterAssemblyCall(this); + checkCondition(condition, message) { + if (!condition) { + if (message === void 0 || message === null) { + message = "IllegalState"; + } + throw message; } } - exitRule(listener) { - if (listener.exitAssemblyCall) { - listener.exitAssemblyCall(this); + readInt() { + return this.data[this.pos++]; + } + readInt32() { + const low = this.readInt(); + const high = this.readInt(); + return low | high << 16; + } + edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) { + const target = atn.states[trg]; + switch (type) { + case Transition_default.EPSILON: + return new EpsilonTransition_default(target); + case Transition_default.RANGE: + return arg3 !== 0 ? new RangeTransition_default(target, Token_default.EOF, arg2) : new RangeTransition_default(target, arg1, arg2); + case Transition_default.RULE: + return new RuleTransition_default(atn.states[arg1], arg2, arg3, target); + case Transition_default.PREDICATE: + return new PredicateTransition_default(target, arg1, arg2, arg3 !== 0); + case Transition_default.PRECEDENCE: + return new PrecedencePredicateTransition_default(target, arg1); + case Transition_default.ATOM: + return arg3 !== 0 ? new AtomTransition_default(target, Token_default.EOF) : new AtomTransition_default(target, arg1); + case Transition_default.ACTION: + return new ActionTransition_default(target, arg1, arg2, arg3 !== 0); + case Transition_default.SET: + return new SetTransition_default(target, sets[arg1]); + case Transition_default.NOT_SET: + return new NotSetTransition_default(target, sets[arg1]); + case Transition_default.WILDCARD: + return new WildcardTransition_default(target); + default: + throw "The specified transition type: " + type + " is not valid."; + } + } + stateFactory(type, ruleIndex) { + if (this.stateFactories === null) { + const sf = []; + sf[ATNState_default.INVALID_TYPE] = null; + sf[ATNState_default.BASIC] = () => new BasicState_default(); + sf[ATNState_default.RULE_START] = () => new RuleStartState_default(); + sf[ATNState_default.BLOCK_START] = () => new BasicBlockStartState_default(); + sf[ATNState_default.PLUS_BLOCK_START] = () => new PlusBlockStartState_default(); + sf[ATNState_default.STAR_BLOCK_START] = () => new StarBlockStartState_default(); + sf[ATNState_default.TOKEN_START] = () => new TokensStartState_default(); + sf[ATNState_default.RULE_STOP] = () => new RuleStopState_default(); + sf[ATNState_default.BLOCK_END] = () => new BlockEndState_default(); + sf[ATNState_default.STAR_LOOP_BACK] = () => new StarLoopbackState_default(); + sf[ATNState_default.STAR_LOOP_ENTRY] = () => new StarLoopEntryState_default(); + sf[ATNState_default.PLUS_LOOP_BACK] = () => new PlusLoopbackState_default(); + sf[ATNState_default.LOOP_END] = () => new LoopEndState_default(); + this.stateFactories = sf; + } + if (type > this.stateFactories.length || this.stateFactories[type] === null) { + throw "The specified state type " + type + " is not valid."; + } else { + const s = this.stateFactories[type](); + if (s !== null) { + s.ruleIndex = ruleIndex; + return s; + } } } - accept(visitor) { - if (visitor.visitAssemblyCall) { - return visitor.visitAssemblyCall(this); + lexerActionFactory(type, data1, data2) { + if (this.actionFactories === null) { + const af = []; + af[LexerActionType_default.CHANNEL] = (data12, data22) => new LexerChannelAction_default(data12); + af[LexerActionType_default.CUSTOM] = (data12, data22) => new LexerCustomAction_default(data12, data22); + af[LexerActionType_default.MODE] = (data12, data22) => new LexerModeAction_default(data12); + af[LexerActionType_default.MORE] = (data12, data22) => LexerMoreAction_default.INSTANCE; + af[LexerActionType_default.POP_MODE] = (data12, data22) => LexerPopModeAction_default.INSTANCE; + af[LexerActionType_default.PUSH_MODE] = (data12, data22) => new LexerPushModeAction_default(data12); + af[LexerActionType_default.SKIP] = (data12, data22) => LexerSkipAction_default.INSTANCE; + af[LexerActionType_default.TYPE] = (data12, data22) => new LexerTypeAction_default(data12); + this.actionFactories = af; + } + if (type > this.actionFactories.length || this.actionFactories[type] === null) { + throw "The specified lexer action type " + type + " is not valid."; } else { - return visitor.visitChildren(this); + return this.actionFactories[type](data1, data2); } } }; - var AssemblyLocalDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyIdentifierOrList() { - return this.getRuleContext(0, AssemblyIdentifierOrListContext); - } - assemblyExpression() { - return this.tryGetRuleContext(0, AssemblyExpressionContext); + var ATNDeserializer_default = ATNDeserializer3; + + // node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/Lexer.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/Recognizer.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/error/ConsoleErrorListener.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/error/ErrorListener.js + init_process_shim(); + var ErrorListener = class { + syntaxError(recognizer, offendingSymbol, line, column, msg, e) { } - constructor(parent, invokingState) { - super(parent, invokingState); + reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { } - get ruleIndex() { - return SolidityParser.RULE_assemblyLocalDefinition; + reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { } - enterRule(listener) { - if (listener.enterAssemblyLocalDefinition) { - listener.enterAssemblyLocalDefinition(this); - } + reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { } - exitRule(listener) { - if (listener.exitAssemblyLocalDefinition) { - listener.exitAssemblyLocalDefinition(this); - } + }; + var ErrorListener_default = ErrorListener; + + // node_modules/antlr4/src/antlr4/error/ConsoleErrorListener.js + var ConsoleErrorListener = class extends ErrorListener_default { + constructor() { + super(); } - accept(visitor) { - if (visitor.visitAssemblyLocalDefinition) { - return visitor.visitAssemblyLocalDefinition(this); - } else { - return visitor.visitChildren(this); - } + syntaxError(recognizer, offendingSymbol, line, column, msg, e) { + console.error("line " + line + ":" + column + " " + msg); } }; - var AssemblyAssignmentContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyIdentifierOrList() { - return this.getRuleContext(0, AssemblyIdentifierOrListContext); + var ConsoleErrorListener_default = ConsoleErrorListener; + ConsoleErrorListener.INSTANCE = new ConsoleErrorListener(); + + // node_modules/antlr4/src/antlr4/error/ProxyErrorListener.js + init_process_shim(); + var ProxyErrorListener = class extends ErrorListener_default { + constructor(delegates) { + super(); + if (delegates === null) { + throw "delegates"; + } + this.delegates = delegates; + return this; } - assemblyExpression() { - return this.getRuleContext(0, AssemblyExpressionContext); + syntaxError(recognizer, offendingSymbol, line, column, msg, e) { + this.delegates.map((d) => d.syntaxError(recognizer, offendingSymbol, line, column, msg, e)); } - constructor(parent, invokingState) { - super(parent, invokingState); + reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { + this.delegates.map((d) => d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs)); } - get ruleIndex() { - return SolidityParser.RULE_assemblyAssignment; + reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { + this.delegates.map((d) => d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs)); } - enterRule(listener) { - if (listener.enterAssemblyAssignment) { - listener.enterAssemblyAssignment(this); - } + reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { + this.delegates.map((d) => d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs)); } - exitRule(listener) { - if (listener.exitAssemblyAssignment) { - listener.exitAssemblyAssignment(this); - } + }; + var ProxyErrorListener_default = ProxyErrorListener; + + // node_modules/antlr4/src/antlr4/Recognizer.js + var Recognizer = class { + constructor() { + this._listeners = [ConsoleErrorListener_default.INSTANCE]; + this._interp = null; + this._stateNumber = -1; } - accept(visitor) { - if (visitor.visitAssemblyAssignment) { - return visitor.visitAssemblyAssignment(this); - } else { - return visitor.visitChildren(this); + checkVersion(toolVersion) { + const runtimeVersion = "4.10.1"; + if (runtimeVersion !== toolVersion) { + console.log("ANTLR runtime and generated code versions disagree: " + runtimeVersion + "!=" + toolVersion); } } - }; - var AssemblyIdentifierOrListContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.tryGetRuleContext(0, IdentifierContext); - } - assemblyMember() { - return this.tryGetRuleContext(0, AssemblyMemberContext); + addErrorListener(listener) { + this._listeners.push(listener); } - assemblyIdentifierList() { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); + removeErrorListeners() { + this._listeners = []; } - constructor(parent, invokingState) { - super(parent, invokingState); + getLiteralNames() { + return Object.getPrototypeOf(this).constructor.literalNames || []; } - get ruleIndex() { - return SolidityParser.RULE_assemblyIdentifierOrList; + getSymbolicNames() { + return Object.getPrototypeOf(this).constructor.symbolicNames || []; } - enterRule(listener) { - if (listener.enterAssemblyIdentifierOrList) { - listener.enterAssemblyIdentifierOrList(this); + getTokenNames() { + if (!this.tokenNames) { + const literalNames = this.getLiteralNames(); + const symbolicNames = this.getSymbolicNames(); + const length = literalNames.length > symbolicNames.length ? literalNames.length : symbolicNames.length; + this.tokenNames = []; + for (let i = 0; i < length; i++) { + this.tokenNames[i] = literalNames[i] || symbolicNames[i] || ""; } + let s = t.text; + if (s === null) { + if (t.type === Token_default.EOF) { + s = ""; + } else { + s = "<" + t.type + ">"; + } + } + s = s.replace("\n", "\\n").replace("\r", "\\r").replace(" ", "\\t"); + return "'" + s + "'"; } - }; - var AssemblyStackAssignmentContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyExpression() { - return this.getRuleContext(0, AssemblyExpressionContext); + getErrorListenerDispatch() { + return new ProxyErrorListener_default(this._listeners); } - identifier() { - return this.getRuleContext(0, IdentifierContext); + sempred(localctx, ruleIndex, actionIndex) { + return true; } - constructor(parent, invokingState) { - super(parent, invokingState); + precpred(localctx, precedence) { + return true; } - get ruleIndex() { - return SolidityParser.RULE_assemblyStackAssignment; + get state() { + return this._stateNumber; } - enterRule(listener) { - if (listener.enterAssemblyStackAssignment) { - listener.enterAssemblyStackAssignment(this); - } + set state(state) { + this._stateNumber = state; } - exitRule(listener) { - if (listener.exitAssemblyStackAssignment) { - listener.exitAssemblyStackAssignment(this); + }; + var Recognizer_default = Recognizer; + Recognizer.tokenTypeMapCache = {}; + Recognizer.ruleIndexMapCache = {}; + + // node_modules/antlr4/src/antlr4/CommonTokenFactory.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/CommonToken.js + init_process_shim(); + var CommonToken = class extends Token_default { + constructor(source, type, channel, start, stop) { + super(); + this.source = source !== void 0 ? source : CommonToken.EMPTY_SOURCE; + this.type = type !== void 0 ? type : null; + this.channel = channel !== void 0 ? channel : Token_default.DEFAULT_CHANNEL; + this.start = start !== void 0 ? start : -1; + this.stop = stop !== void 0 ? stop : -1; + this.tokenIndex = -1; + if (this.source[0] !== null) { + this.line = source[0].line; + this.column = source[0].column; + } else { + this.column = -1; } } - accept(visitor) { - if (visitor.visitAssemblyStackAssignment) { - return visitor.visitAssemblyStackAssignment(this); + clone() { + const t = new CommonToken(this.source, this.type, this.channel, this.start, this.stop); + t.tokenIndex = this.tokenIndex; + t.line = this.line; + t.column = this.column; + t.text = this.text; + return t; + } + toString() { + let txt = this.text; + if (txt !== null) { + txt = txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t"); } else { - return visitor.visitChildren(this); + txt = ""; } + return "[@" + this.tokenIndex + "," + this.start + ":" + this.stop + "='" + txt + "',<" + this.type + ">" + (this.channel > 0 ? ",channel=" + this.channel : "") + "," + this.line + ":" + this.column + "]"; } - }; - var LabelDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + get text() { + if (this._text !== null) { + return this._text; + } + const input = this.getInputStream(); + if (input === null) { + return null; + } + const n = input.size; + if (this.start < n && this.stop < n) { + return input.getText(this.start, this.stop); + } else { + return ""; + } } - constructor(parent, invokingState) { - super(parent, invokingState); + set text(text) { + this._text = text; } - get ruleIndex() { - return SolidityParser.RULE_labelDefinition; + }; + var CommonToken_default = CommonToken; + CommonToken.EMPTY_SOURCE = [null, null]; + + // node_modules/antlr4/src/antlr4/CommonTokenFactory.js + var TokenFactory = class { + }; + var CommonTokenFactory = class extends TokenFactory { + constructor(copyText) { + super(); + this.copyText = copyText === void 0 ? false : copyText; } - enterRule(listener) { - if (listener.enterLabelDefinition) { - listener.enterLabelDefinition(this); + create(source, type, text, channel, start, stop, line, column) { + const t = new CommonToken_default(source, type, channel, start, stop); + t.line = line; + t.column = column; + if (text !== null) { + t.text = text; + } else if (this.copyText && source[1] !== null) { + t.text = source[1].getText(start, stop); } + return t; } - exitRule(listener) { - if (listener.exitLabelDefinition) { - listener.exitLabelDefinition(this); - } + createThin(type, text) { + const t = new CommonToken_default(null, type); + t.text = text; + return t; } - accept(visitor) { - if (visitor.visitLabelDefinition) { - return visitor.visitLabelDefinition(this); + }; + var CommonTokenFactory_default = CommonTokenFactory; + CommonTokenFactory.DEFAULT = new CommonTokenFactory(); + + // node_modules/antlr4/src/antlr4/error/RecognitionException.js + init_process_shim(); + var RecognitionException2 = class extends Error { + constructor(params) { + super(params.message); + if (Error.captureStackTrace) + Error.captureStackTrace(this, RecognitionException2); + this.message = params.message; + this.recognizer = params.recognizer; + this.input = params.input; + this.ctx = params.ctx; + this.offendingToken = null; + this.offendingState = -1; + if (this.recognizer !== null) { + this.offendingState = this.recognizer.state; + } + } + getExpectedTokens() { + if (this.recognizer !== null) { + return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx); } else { - return visitor.visitChildren(this); + return null; } } + toString() { + return this.message; + } }; - var AssemblySwitchContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyExpression() { - return this.getRuleContext(0, AssemblyExpressionContext); + var RecognitionException_default = RecognitionException2; + + // node_modules/antlr4/src/antlr4/error/LexerNoViableAltException.js + init_process_shim(); + var LexerNoViableAltException = class extends RecognitionException_default { + constructor(lexer, input, startIndex, deadEndConfigs) { + super({message: "", recognizer: lexer, input, ctx: null}); + this.startIndex = startIndex; + this.deadEndConfigs = deadEndConfigs; } - assemblyCase(i) { - if (i === void 0) { - return this.getRuleContexts(AssemblyCaseContext); - } else { - return this.getRuleContext(i, AssemblyCaseContext); + toString() { + let symbol = ""; + if (this.startIndex >= 0 && this.startIndex < this.input.size) { + symbol = this.input.getText(new Interval_default(this.startIndex, this.startIndex)); } + return "LexerNoViableAltException" + symbol; } - constructor(parent, invokingState) { - super(parent, invokingState); + }; + var LexerNoViableAltException_default = LexerNoViableAltException; + + // node_modules/antlr4/src/antlr4/Lexer.js + var Lexer2 = class extends Recognizer_default { + constructor(input) { + super(); + this._input = input; + this._factory = CommonTokenFactory_default.DEFAULT; + this._tokenFactorySourcePair = [this, input]; + this._interp = null; + this._token = null; + this._tokenStartCharIndex = -1; + this._tokenStartLine = -1; + this._tokenStartColumn = -1; + this._hitEOF = false; + this._channel = Token_default.DEFAULT_CHANNEL; + this._type = Token_default.INVALID_TYPE; + this._modeStack = []; + this._mode = Lexer2.DEFAULT_MODE; + this._text = null; + } + reset() { + if (this._input !== null) { + this._input.seek(0); + } + this._token = null; + this._type = Token_default.INVALID_TYPE; + this._channel = Token_default.DEFAULT_CHANNEL; + this._tokenStartCharIndex = -1; + this._tokenStartColumn = -1; + this._tokenStartLine = -1; + this._text = null; + this._hitEOF = false; + this._mode = Lexer2.DEFAULT_MODE; + this._modeStack = []; + this._interp.reset(); + } + nextToken() { + if (this._input === null) { + throw "nextToken requires a non-null input stream."; + } + const tokenStartMarker = this._input.mark(); + try { + for (; ; ) { + if (this._hitEOF) { + this.emitEOF(); + return this._token; + } + this._token = null; + this._channel = Token_default.DEFAULT_CHANNEL; + this._tokenStartCharIndex = this._input.index; + this._tokenStartColumn = this._interp.column; + this._tokenStartLine = this._interp.line; + this._text = null; + let continueOuter = false; + for (; ; ) { + this._type = Token_default.INVALID_TYPE; + let ttype = Lexer2.SKIP; + try { + ttype = this._interp.match(this._input, this._mode); + } catch (e) { + if (e instanceof RecognitionException_default) { + this.notifyListeners(e); + this.recover(e); + } else { + console.log(e.stack); + throw e; + } + } + if (this._input.LA(1) === Token_default.EOF) { + this._hitEOF = true; + } + if (this._type === Token_default.INVALID_TYPE) { + this._type = ttype; + } + if (this._type === Lexer2.SKIP) { + continueOuter = true; + break; + } + if (this._type !== Lexer2.MORE) { + break; + } + } + if (continueOuter) { + continue; + } + if (this._token === null) { + this.emit(); + } + return this._token; + } + } finally { + this._input.release(tokenStartMarker); + } + } + skip() { + this._type = Lexer2.SKIP; + } + more() { + this._type = Lexer2.MORE; + } + mode(m) { + this._mode = m; + } + pushMode(m) { + if (this._interp.debug) { + console.log("pushMode " + m); + } + this._modeStack.push(this._mode); + this.mode(m); + } + popMode() { + if (this._modeStack.length === 0) { + throw "Empty Stack"; + } + if (this._interp.debug) { + console.log("popMode back to " + this._modeStack.slice(0, -1)); + } + this.mode(this._modeStack.pop()); + return this._mode; + } + emitToken(token) { + this._token = token; + } + emit() { + const t = this._factory.create(this._tokenFactorySourcePair, this._type, this._text, this._channel, this._tokenStartCharIndex, this.getCharIndex() - 1, this._tokenStartLine, this._tokenStartColumn); + this.emitToken(t); + return t; + } + emitEOF() { + const cpos = this.column; + const lpos = this.line; + const eof = this._factory.create(this._tokenFactorySourcePair, Token_default.EOF, null, Token_default.DEFAULT_CHANNEL, this._input.index, this._input.index - 1, lpos, cpos); + this.emitToken(eof); + return eof; + } + getCharIndex() { + return this._input.index; + } + getAllTokens() { + const tokens2 = []; + let t = this.nextToken(); + while (t.type !== Token_default.EOF) { + tokens2.push(t); + t = this.nextToken(); + } + return tokens2; + } + notifyListeners(e) { + const start = this._tokenStartCharIndex; + const stop = this._input.index; + const text = this._input.getText(start, stop); + const msg = "token recognition error at: '" + this.getErrorDisplay(text) + "'"; + const listener = this.getErrorListenerDispatch(); + listener.syntaxError(this, null, this._tokenStartLine, this._tokenStartColumn, msg, e); + } + getErrorDisplay(s) { + const d = []; + for (let i = 0; i < s.length; i++) { + d.push(s[i]); + } + return d.join(""); + } + getErrorDisplayForChar(c) { + if (c.charCodeAt(0) === Token_default.EOF) { + return ""; + } else if (c === "\n") { + return "\\n"; + } else if (c === " ") { + return "\\t"; + } else if (c === "\r") { + return "\\r"; + } else { + return c; + } } - get ruleIndex() { - return SolidityParser.RULE_assemblySwitch; + getCharErrorDisplay(c) { + return "'" + this.getErrorDisplayForChar(c) + "'"; } - enterRule(listener) { - if (listener.enterAssemblySwitch) { - listener.enterAssemblySwitch(this); + recover(re) { + if (this._input.LA(1) !== Token_default.EOF) { + if (re instanceof LexerNoViableAltException_default) { + this._interp.consume(this._input); + } else { + this._input.consume(); + } } } - exitRule(listener) { - if (listener.exitAssemblySwitch) { - listener.exitAssemblySwitch(this); - } + get inputStream() { + return this._input; } - accept(visitor) { - if (visitor.visitAssemblySwitch) { - return visitor.visitAssemblySwitch(this); - } else { - return visitor.visitChildren(this); - } + set inputStream(input) { + this._input = null; + this._tokenFactorySourcePair = [this, this._input]; + this.reset(); + this._input = input; + this._tokenFactorySourcePair = [this, this._input]; } - }; - var AssemblyCaseContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyLiteral() { - return this.tryGetRuleContext(0, AssemblyLiteralContext); + get sourceName() { + return this._input.sourceName; } - assemblyBlock() { - return this.getRuleContext(0, AssemblyBlockContext); + get type() { + return this._type; } - constructor(parent, invokingState) { - super(parent, invokingState); + set type(type) { + this._type = type; } - get ruleIndex() { - return SolidityParser.RULE_assemblyCase; + get line() { + return this._interp.line; } - enterRule(listener) { - if (listener.enterAssemblyCase) { - listener.enterAssemblyCase(this); - } + set line(line) { + this._interp.line = line; } - exitRule(listener) { - if (listener.exitAssemblyCase) { - listener.exitAssemblyCase(this); - } + get column() { + return this._interp.column; } - accept(visitor) { - if (visitor.visitAssemblyCase) { - return visitor.visitAssemblyCase(this); + set column(column) { + this._interp.column = column; + } + get text() { + if (this._text !== null) { + return this._text; } else { - return visitor.visitChildren(this); + return this._interp.getText(this._input); } } - }; - var AssemblyFunctionDefinitionContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); - } - assemblyBlock() { - return this.getRuleContext(0, AssemblyBlockContext); - } - assemblyIdentifierList() { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); + set text(text) { + this._text = text; } - assemblyFunctionReturns() { - return this.tryGetRuleContext(0, AssemblyFunctionReturnsContext); + }; + var Lexer_default = Lexer2; + Lexer2.DEFAULT_MODE = 0; + Lexer2.MORE = -2; + Lexer2.SKIP = -3; + Lexer2.DEFAULT_TOKEN_CHANNEL = Token_default.DEFAULT_CHANNEL; + Lexer2.HIDDEN = Token_default.HIDDEN_CHANNEL; + Lexer2.MIN_CHAR_VALUE = 0; + Lexer2.MAX_CHAR_VALUE = 1114111; + + // node_modules/antlr4/src/antlr4/atn/ATNSimulator.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/dfa/DFAState.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/atn/ATNConfigSet.js + init_process_shim(); + function hashATNConfig(c) { + return c.hashCodeForConfigSet(); + } + function equalATNConfigs(a, b) { + if (a === b) { + return true; + } else if (a === null || b === null) { + return false; + } else + return a.equalsForConfigSet(b); + } + var ATNConfigSet = class { + constructor(fullCtx) { + this.configLookup = new HashSet_default(hashATNConfig, equalATNConfigs); + this.fullCtx = fullCtx === void 0 ? true : fullCtx; + this.readOnly = false; + this.configs = []; + this.uniqueAlt = 0; + this.conflictingAlts = null; + this.hasSemanticContext = false; + this.dipsIntoOuterContext = false; + this.cachedHashCode = -1; + } + add(config, mergeCache) { + if (mergeCache === void 0) { + mergeCache = null; + } + if (this.readOnly) { + throw "This set is readonly"; + } + if (config.semanticContext !== SemanticContext_default.NONE) { + this.hasSemanticContext = true; + } + if (config.reachesIntoOuterContext > 0) { + this.dipsIntoOuterContext = true; + } + const existing = this.configLookup.add(config); + if (existing === config) { + this.cachedHashCode = -1; + this.configs.push(config); + return true; + } + const rootIsWildcard = !this.fullCtx; + const merged = merge(existing.context, config.context, rootIsWildcard, mergeCache); + existing.reachesIntoOuterContext = Math.max(existing.reachesIntoOuterContext, config.reachesIntoOuterContext); + if (config.precedenceFilterSuppressed) { + existing.precedenceFilterSuppressed = true; + } + existing.context = merged; + return true; } - constructor(parent, invokingState) { - super(parent, invokingState); + getStates() { + const states = new HashSet_default(); + for (let i = 0; i < this.configs.length; i++) { + states.add(this.configs[i].state); + } + return states; } - get ruleIndex() { - return SolidityParser.RULE_assemblyFunctionDefinition; + getPredicates() { + const preds = []; + for (let i = 0; i < this.configs.length; i++) { + const c = this.configs[i].semanticContext; + if (c !== SemanticContext_default.NONE) { + preds.push(c.semanticContext); + } + } + return preds; } - enterRule(listener) { - if (listener.enterAssemblyFunctionDefinition) { - listener.enterAssemblyFunctionDefinition(this); + optimizeConfigs(interpreter) { + if (this.readOnly) { + throw "This set is readonly"; + } + if (this.configLookup.length === 0) { + return; + } + for (let i = 0; i < this.configs.length; i++) { + const config = this.configs[i]; + config.context = interpreter.getCachedContext(config.context); } } - exitRule(listener) { - if (listener.exitAssemblyFunctionDefinition) { - listener.exitAssemblyFunctionDefinition(this); + addAll(coll) { + for (let i = 0; i < coll.length; i++) { + this.add(coll[i]); } + return false; } - accept(visitor) { - if (visitor.visitAssemblyFunctionDefinition) { - return visitor.visitAssemblyFunctionDefinition(this); + equals(other) { + return this === other || other instanceof ATNConfigSet && equalArrays(this.configs, other.configs) && this.fullCtx === other.fullCtx && this.uniqueAlt === other.uniqueAlt && this.conflictingAlts === other.conflictingAlts && this.hasSemanticContext === other.hasSemanticContext && this.dipsIntoOuterContext === other.dipsIntoOuterContext; + } + hashCode() { + const hash = new HashCode_default(); + hash.update(this.configs); + return hash.finish(); + } + updateHashCode(hash) { + if (this.readOnly) { + if (this.cachedHashCode === -1) { + this.cachedHashCode = this.hashCode(); + } + hash.update(this.cachedHashCode); } else { - return visitor.visitChildren(this); + hash.update(this.hashCode()); } } - }; - var AssemblyFunctionReturnsContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyIdentifierList() { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); - } - constructor(parent, invokingState) { - super(parent, invokingState); + isEmpty() { + return this.configs.length === 0; } - get ruleIndex() { - return SolidityParser.RULE_assemblyFunctionReturns; + contains(item) { + if (this.configLookup === null) { + throw "This method is not implemented for readonly sets."; + } + return this.configLookup.contains(item); } - enterRule(listener) { - if (listener.enterAssemblyFunctionReturns) { - listener.enterAssemblyFunctionReturns(this); + containsFast(item) { + if (this.configLookup === null) { + throw "This method is not implemented for readonly sets."; } + return this.configLookup.containsFast(item); } - exitRule(listener) { - if (listener.exitAssemblyFunctionReturns) { - listener.exitAssemblyFunctionReturns(this); + clear() { + if (this.readOnly) { + throw "This set is readonly"; } + this.configs = []; + this.cachedHashCode = -1; + this.configLookup = new HashSet_default(); } - accept(visitor) { - if (visitor.visitAssemblyFunctionReturns) { - return visitor.visitAssemblyFunctionReturns(this); - } else { - return visitor.visitChildren(this); + setReadonly(readOnly) { + this.readOnly = readOnly; + if (readOnly) { + this.configLookup = null; } } + toString() { + return arrayToString(this.configs) + (this.hasSemanticContext ? ",hasSemanticContext=" + this.hasSemanticContext : "") + (this.uniqueAlt !== ATN_default.INVALID_ALT_NUMBER ? ",uniqueAlt=" + this.uniqueAlt : "") + (this.conflictingAlts !== null ? ",conflictingAlts=" + this.conflictingAlts : "") + (this.dipsIntoOuterContext ? ",dipsIntoOuterContext" : ""); + } + get items() { + return this.configs; + } + get length() { + return this.configs.length; + } }; - var AssemblyForContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyExpression(i) { - if (i === void 0) { - return this.getRuleContexts(AssemblyExpressionContext); - } else { - return this.getRuleContext(i, AssemblyExpressionContext); + var ATNConfigSet_default = ATNConfigSet; + + // node_modules/antlr4/src/antlr4/dfa/DFAState.js + var DFAState = class { + constructor(stateNumber, configs) { + if (stateNumber === null) { + stateNumber = -1; + } + if (configs === null) { + configs = new ATNConfigSet_default(); + } + this.stateNumber = stateNumber; + this.configs = configs; + this.edges = null; + this.isAcceptState = false; + this.prediction = 0; + this.lexerActionExecutor = null; + this.requiresFullContext = false; + this.predicates = null; + return this; + } + getAltSet() { + const alts = new HashSet_default(); + if (this.configs !== null) { + for (let i = 0; i < this.configs.length; i++) { + const c = this.configs[i]; + alts.add(c.alt); + } } - } - assemblyBlock(i) { - if (i === void 0) { - return this.getRuleContexts(AssemblyBlockContext); + if (alts.length === 0) { + return null; } else { - return this.getRuleContext(i, AssemblyBlockContext); + return alts; } } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_assemblyFor; + equals(other) { + return this === other || other instanceof DFAState && this.configs.equals(other.configs); } - enterRule(listener) { - if (listener.enterAssemblyFor) { - listener.enterAssemblyFor(this); + toString() { + let s = "" + this.stateNumber + ":" + this.configs; + if (this.isAcceptState) { + s = s + "=>"; + if (this.predicates !== null) + s = s + this.predicates; + else + s = s + this.prediction; } + return s; } - exitRule(listener) { - if (listener.exitAssemblyFor) { - listener.exitAssemblyFor(this); - } + hashCode() { + const hash = new HashCode_default(); + hash.update(this.configs); + return hash.finish(); } - accept(visitor) { - if (visitor.visitAssemblyFor) { - return visitor.visitAssemblyFor(this); - } else { - return visitor.visitChildren(this); + }; + var DFAState_default = DFAState; + + // node_modules/antlr4/src/antlr4/atn/ATNSimulator.js + var ATNSimulator = class { + constructor(atn, sharedContextCache) { + this.atn = atn; + this.sharedContextCache = sharedContextCache; + return this; + } + getCachedContext(context) { + if (this.sharedContextCache === null) { + return context; } + const visited = new HashMap_default(); + return getCachedPredictionContext(context, this.sharedContextCache, visited); } }; - var AssemblyIfContext = class extends import_ParserRuleContext.ParserRuleContext { - assemblyExpression() { - return this.getRuleContext(0, AssemblyExpressionContext); + var ATNSimulator_default = ATNSimulator; + ATNSimulator.ERROR = new DFAState_default(2147483647, new ATNConfigSet_default()); + + // node_modules/antlr4/src/antlr4/atn/OrderedATNConfigSet.js + init_process_shim(); + var OrderedATNConfigSet = class extends ATNConfigSet_default { + constructor() { + super(); + this.configLookup = new HashSet_default(); } - assemblyBlock() { - return this.getRuleContext(0, AssemblyBlockContext); + }; + var OrderedATNConfigSet_default = OrderedATNConfigSet; + + // node_modules/antlr4/src/antlr4/atn/LexerATNConfig.js + init_process_shim(); + var LexerATNConfig = class extends ATNConfig_default { + constructor(params, config) { + super(params, config); + const lexerActionExecutor = params.lexerActionExecutor || null; + this.lexerActionExecutor = lexerActionExecutor || (config !== null ? config.lexerActionExecutor : null); + this.passedThroughNonGreedyDecision = config !== null ? this.checkNonGreedyDecision(config, this.state) : false; + this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode; + this.equalsForConfigSet = LexerATNConfig.prototype.equals; + return this; } - constructor(parent, invokingState) { - super(parent, invokingState); + updateHashCode(hash) { + hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor); } - get ruleIndex() { - return SolidityParser.RULE_assemblyIf; + equals(other) { + return this === other || other instanceof LexerATNConfig && this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision && (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) && super.equals(other); } - enterRule(listener) { - if (listener.enterAssemblyIf) { - listener.enterAssemblyIf(this); - } + checkNonGreedyDecision(source, target) { + return source.passedThroughNonGreedyDecision || target instanceof DecisionState_default && target.nonGreedy; } - exitRule(listener) { - if (listener.exitAssemblyIf) { - listener.exitAssemblyIf(this); - } + }; + var LexerATNConfig_default = LexerATNConfig; + + // node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/action/LexerIndexedCustomAction.js + init_process_shim(); + var LexerIndexedCustomAction = class extends LexerAction_default { + constructor(offset, action) { + super(action.actionType); + this.offset = offset; + this.action = action; + this.isPositionDependent = true; } - accept(visitor) { - if (visitor.visitAssemblyIf) { - return visitor.visitAssemblyIf(this); + execute(lexer) { + this.action.execute(lexer); + } + updateHashCode(hash) { + hash.update(this.actionType, this.offset, this.action); + } + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerIndexedCustomAction)) { + return false; } else { - return visitor.visitChildren(this); + return this.offset === other.offset && this.action === other.action; } } }; - var AssemblyLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { - stringLiteral() { - return this.tryGetRuleContext(0, StringLiteralContext); - } - DecimalNumber() { - return this.tryGetToken(SolidityParser.DecimalNumber, 0); + var LexerIndexedCustomAction_default = LexerIndexedCustomAction; + + // node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js + var LexerActionExecutor = class { + constructor(lexerActions) { + this.lexerActions = lexerActions === null ? [] : lexerActions; + this.cachedHashCode = HashCode_default.hashStuff(lexerActions); + return this; } - HexNumber() { - return this.tryGetToken(SolidityParser.HexNumber, 0); + fixOffsetBeforeMatch(offset) { + let updatedLexerActions = null; + for (let i = 0; i < this.lexerActions.length; i++) { + if (this.lexerActions[i].isPositionDependent && !(this.lexerActions[i] instanceof LexerIndexedCustomAction_default)) { + if (updatedLexerActions === null) { + updatedLexerActions = this.lexerActions.concat([]); + } + updatedLexerActions[i] = new LexerIndexedCustomAction_default(offset, this.lexerActions[i]); + } + } + if (updatedLexerActions === null) { + return this; + } else { + return new LexerActionExecutor(updatedLexerActions); + } } - hexLiteral() { - return this.tryGetRuleContext(0, HexLiteralContext); + execute(lexer, input, startIndex) { + let requiresSeek = false; + const stopIndex = input.index; + try { + for (let i = 0; i < this.lexerActions.length; i++) { + let lexerAction = this.lexerActions[i]; + if (lexerAction instanceof LexerIndexedCustomAction_default) { + const offset = lexerAction.offset; + input.seek(startIndex + offset); + lexerAction = lexerAction.action; + requiresSeek = startIndex + offset !== stopIndex; + } else if (lexerAction.isPositionDependent) { + input.seek(stopIndex); + requiresSeek = false; + } + lexerAction.execute(lexer); + } + } finally { + if (requiresSeek) { + input.seek(stopIndex); + } + } } - constructor(parent, invokingState) { - super(parent, invokingState); + hashCode() { + return this.cachedHashCode; } - get ruleIndex() { - return SolidityParser.RULE_assemblyLiteral; + updateHashCode(hash) { + hash.update(this.cachedHashCode); } - enterRule(listener) { - if (listener.enterAssemblyLiteral) { - listener.enterAssemblyLiteral(this); + equals(other) { + if (this === other) { + return true; + } else if (!(other instanceof LexerActionExecutor)) { + return false; + } else if (this.cachedHashCode != other.cachedHashCode) { + return false; + } else if (this.lexerActions.length != other.lexerActions.length) { + return false; + } else { + const numActions = this.lexerActions.length; + for (let idx = 0; idx < numActions; ++idx) { + if (!this.lexerActions[idx].equals(other.lexerActions[idx])) { + return false; + } + } + return true; } } - exitRule(listener) { - if (listener.exitAssemblyLiteral) { - listener.exitAssemblyLiteral(this); + static append(lexerActionExecutor, lexerAction) { + if (lexerActionExecutor === null) { + return new LexerActionExecutor([lexerAction]); } + const lexerActions = lexerActionExecutor.lexerActions.concat([lexerAction]); + return new LexerActionExecutor(lexerActions); } - accept(visitor) { - if (visitor.visitAssemblyLiteral) { - return visitor.visitAssemblyLiteral(this); - } else { - return visitor.visitChildren(this); - } + }; + var LexerActionExecutor_default = LexerActionExecutor; + + // node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js + function resetSimState(sim) { + sim.index = -1; + sim.line = 0; + sim.column = -1; + sim.dfaState = null; + } + var SimState = class { + constructor() { + resetSimState(this); + } + reset() { + resetSimState(this); } }; - var SubAssemblyContext = class extends import_ParserRuleContext.ParserRuleContext { - identifier() { - return this.getRuleContext(0, IdentifierContext); + var LexerATNSimulator2 = class extends ATNSimulator_default { + constructor(recog, atn, decisionToDFA, sharedContextCache) { + super(atn, sharedContextCache); + this.decisionToDFA = decisionToDFA; + this.recog = recog; + this.startIndex = -1; + this.line = 1; + this.column = 0; + this.mode = Lexer_default.DEFAULT_MODE; + this.prevAccept = new SimState(); + } + copyState(simulator) { + this.column = simulator.column; + this.line = simulator.line; + this.mode = simulator.mode; + this.startIndex = simulator.startIndex; + } + match(input, mode) { + this.mode = mode; + const mark = input.mark(); + try { + this.startIndex = input.index; + this.prevAccept.reset(); + const dfa = this.decisionToDFA[mode]; + if (dfa.s0 === null) { + return this.matchATN(input); + } else { + return this.execATN(input, dfa.s0); + } + } finally { + input.release(mark); + } } - assemblyBlock() { - return this.getRuleContext(0, AssemblyBlockContext); + reset() { + this.prevAccept.reset(); + this.startIndex = -1; + this.line = 1; + this.column = 0; + this.mode = Lexer_default.DEFAULT_MODE; } - constructor(parent, invokingState) { - super(parent, invokingState); + matchATN(input) { + const startState = this.atn.modeToStartState[this.mode]; + if (LexerATNSimulator2.debug) { + console.log("matchATN mode " + this.mode + " start: " + startState); + } + const old_mode = this.mode; + const s0_closure = this.computeStartState(input, startState); + const suppressEdge = s0_closure.hasSemanticContext; + s0_closure.hasSemanticContext = false; + const next = this.addDFAState(s0_closure); + if (!suppressEdge) { + this.decisionToDFA[this.mode].s0 = next; + } + const predict = this.execATN(input, next); + if (LexerATNSimulator2.debug) { + console.log("DFA after matchATN: " + this.decisionToDFA[old_mode].toLexerString()); + } + return predict; } - get ruleIndex() { - return SolidityParser.RULE_subAssembly; + execATN(input, ds0) { + if (LexerATNSimulator2.debug) { + console.log("start state closure=" + ds0.configs); + } + if (ds0.isAcceptState) { + this.captureSimState(this.prevAccept, input, ds0); + } + let t = input.LA(1); + let s = ds0; + for (; ; ) { + if (LexerATNSimulator2.debug) { + console.log("execATN loop starting closure: " + s.configs); + } + let target = this.getExistingTargetState(s, t); + if (target === null) { + target = this.computeTargetState(input, s, t); + } + if (target === ATNSimulator_default.ERROR) { + break; + } + if (t !== Token_default.EOF) { + this.consume(input); + } + if (target.isAcceptState) { + this.captureSimState(this.prevAccept, input, target); + if (t === Token_default.EOF) { + break; + } + } + t = input.LA(1); + s = target; + } + return this.failOrAccept(this.prevAccept, input, s.configs, t); } - enterRule(listener) { - if (listener.enterSubAssembly) { - listener.enterSubAssembly(this); + getExistingTargetState(s, t) { + if (s.edges === null || t < LexerATNSimulator2.MIN_DFA_EDGE || t > LexerATNSimulator2.MAX_DFA_EDGE) { + return null; } + let target = s.edges[t - LexerATNSimulator2.MIN_DFA_EDGE]; + if (target === void 0) { + target = null; + } + if (LexerATNSimulator2.debug && target !== null) { + console.log("reuse state " + s.stateNumber + " edge to " + target.stateNumber); + } + return target; } - exitRule(listener) { - if (listener.exitSubAssembly) { - listener.exitSubAssembly(this); + computeTargetState(input, s, t) { + const reach = new OrderedATNConfigSet_default(); + this.getReachableConfigSet(input, s.configs, reach, t); + if (reach.items.length === 0) { + if (!reach.hasSemanticContext) { + this.addDFAEdge(s, t, ATNSimulator_default.ERROR); + } + return ATNSimulator_default.ERROR; } + return this.addDFAEdge(s, t, null, reach); } - accept(visitor) { - if (visitor.visitSubAssembly) { - return visitor.visitSubAssembly(this); + failOrAccept(prevAccept, input, reach, t) { + if (this.prevAccept.dfaState !== null) { + const lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor; + this.accept(input, lexerActionExecutor, this.startIndex, prevAccept.index, prevAccept.line, prevAccept.column); + return prevAccept.dfaState.prediction; } else { - return visitor.visitChildren(this); + if (t === Token_default.EOF && input.index === this.startIndex) { + return Token_default.EOF; + } + throw new LexerNoViableAltException_default(this.recog, input, this.startIndex, reach); } } - }; - var TupleExpressionContext = class extends import_ParserRuleContext.ParserRuleContext { - expression(i) { - if (i === void 0) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); + getReachableConfigSet(input, closure, reach, t) { + let skipAlt = ATN_default.INVALID_ALT_NUMBER; + for (let i = 0; i < closure.items.length; i++) { + const cfg = closure.items[i]; + const currentAltReachedAcceptState = cfg.alt === skipAlt; + if (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) { + continue; + } + if (LexerATNSimulator2.debug) { + console.log("testing %s at %s\n", this.getTokenName(t), cfg.toString(this.recog, true)); + } + for (let j = 0; j < cfg.state.transitions.length; j++) { + const trans = cfg.state.transitions[j]; + const target = this.getReachableTarget(trans, t); + if (target !== null) { + let lexerActionExecutor = cfg.lexerActionExecutor; + if (lexerActionExecutor !== null) { + lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex); + } + const treatEofAsEpsilon = t === Token_default.EOF; + const config = new LexerATNConfig_default({state: target, lexerActionExecutor}, cfg); + if (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) { + skipAlt = cfg.alt; + } + } + } } } - constructor(parent, invokingState) { - super(parent, invokingState); + accept(input, lexerActionExecutor, startIndex, index, line, charPos) { + if (LexerATNSimulator2.debug) { + console.log("ACTION %s\n", lexerActionExecutor); + } + input.seek(index); + this.line = line; + this.column = charPos; + if (lexerActionExecutor !== null && this.recog !== null) { + lexerActionExecutor.execute(this.recog, input, startIndex); + } } - get ruleIndex() { - return SolidityParser.RULE_tupleExpression; + getReachableTarget(trans, t) { + if (trans.matches(t, 0, Lexer_default.MAX_CHAR_VALUE)) { + return trans.target; + } else { + return null; + } } - enterRule(listener) { - if (listener.enterTupleExpression) { - listener.enterTupleExpression(this); + computeStartState(input, p) { + const initialContext = PredictionContext_default.EMPTY; + const configs = new OrderedATNConfigSet_default(); + for (let i = 0; i < p.transitions.length; i++) { + const target = p.transitions[i].target; + const cfg = new LexerATNConfig_default({state: target, alt: i + 1, context: initialContext}, null); + this.closure(input, cfg, configs, false, false, false); } + return configs; } - exitRule(listener) { - if (listener.exitTupleExpression) { - listener.exitTupleExpression(this); + closure(input, config, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon) { + let cfg = null; + if (LexerATNSimulator2.debug) { + console.log("closure(" + config.toString(this.recog, true) + ")"); + } + if (config.state instanceof RuleStopState_default) { + if (LexerATNSimulator2.debug) { + if (this.recog !== null) { + console.log("closure at %s rule stop %s\n", this.recog.ruleNames[config.state.ruleIndex], config); + } else { + console.log("closure at rule stop %s\n", config); + } + } + if (config.context === null || config.context.hasEmptyPath()) { + if (config.context === null || config.context.isEmpty()) { + configs.add(config); + return true; + } else { + configs.add(new LexerATNConfig_default({state: config.state, context: PredictionContext_default.EMPTY}, config)); + currentAltReachedAcceptState = true; + } + } + if (config.context !== null && !config.context.isEmpty()) { + for (let i = 0; i < config.context.length; i++) { + if (config.context.getReturnState(i) !== PredictionContext_default.EMPTY_RETURN_STATE) { + const newContext = config.context.getParent(i); + const returnState = this.atn.states[config.context.getReturnState(i)]; + cfg = new LexerATNConfig_default({state: returnState, context: newContext}, config); + currentAltReachedAcceptState = this.closure(input, cfg, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + } + } + } + return currentAltReachedAcceptState; + } + if (!config.state.epsilonOnlyTransitions) { + if (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) { + configs.add(config); + } + } + for (let j = 0; j < config.state.transitions.length; j++) { + const trans = config.state.transitions[j]; + cfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon); + if (cfg !== null) { + currentAltReachedAcceptState = this.closure(input, cfg, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon); + } } + return currentAltReachedAcceptState; } - accept(visitor) { - if (visitor.visitTupleExpression) { - return visitor.visitTupleExpression(this); - } else { - return visitor.visitChildren(this); + getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon) { + let cfg = null; + if (trans.serializationType === Transition_default.RULE) { + const newContext = SingletonPredictionContext_default.create(config.context, trans.followState.stateNumber); + cfg = new LexerATNConfig_default({state: trans.target, context: newContext}, config); + } else if (trans.serializationType === Transition_default.PRECEDENCE) { + throw "Precedence predicates are not supported in lexers."; + } else if (trans.serializationType === Transition_default.PREDICATE) { + if (LexerATNSimulator2.debug) { + console.log("EVAL rule " + trans.ruleIndex + ":" + trans.predIndex); + } + configs.hasSemanticContext = true; + if (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) { + cfg = new LexerATNConfig_default({state: trans.target}, config); + } + } else if (trans.serializationType === Transition_default.ACTION) { + if (config.context === null || config.context.hasEmptyPath()) { + const lexerActionExecutor = LexerActionExecutor_default.append(config.lexerActionExecutor, this.atn.lexerActions[trans.actionIndex]); + cfg = new LexerATNConfig_default({state: trans.target, lexerActionExecutor}, config); + } else { + cfg = new LexerATNConfig_default({state: trans.target}, config); + } + } else if (trans.serializationType === Transition_default.EPSILON) { + cfg = new LexerATNConfig_default({state: trans.target}, config); + } else if (trans.serializationType === Transition_default.ATOM || trans.serializationType === Transition_default.RANGE || trans.serializationType === Transition_default.SET) { + if (treatEofAsEpsilon) { + if (trans.matches(Token_default.EOF, 0, Lexer_default.MAX_CHAR_VALUE)) { + cfg = new LexerATNConfig_default({state: trans.target}, config); + } + } } + return cfg; } - }; - var NumberLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { - DecimalNumber() { - return this.tryGetToken(SolidityParser.DecimalNumber, 0); + evaluatePredicate(input, ruleIndex, predIndex, speculative) { + if (this.recog === null) { + return true; + } + if (!speculative) { + return this.recog.sempred(null, ruleIndex, predIndex); + } + const savedcolumn = this.column; + const savedLine = this.line; + const index = input.index; + const marker = input.mark(); + try { + this.consume(input); + return this.recog.sempred(null, ruleIndex, predIndex); + } finally { + this.column = savedcolumn; + this.line = savedLine; + input.seek(index); + input.release(marker); + } } - HexNumber() { - return this.tryGetToken(SolidityParser.HexNumber, 0); + captureSimState(settings, input, dfaState) { + settings.index = input.index; + settings.line = this.line; + settings.column = this.column; + settings.dfaState = dfaState; } - NumberUnit() { - return this.tryGetToken(SolidityParser.NumberUnit, 0); + addDFAEdge(from_, tk, to, cfgs) { + if (to === void 0) { + to = null; + } + if (cfgs === void 0) { + cfgs = null; + } + if (to === null && cfgs !== null) { + const suppressEdge = cfgs.hasSemanticContext; + cfgs.hasSemanticContext = false; + to = this.addDFAState(cfgs); + if (suppressEdge) { + return to; + } + } + if (tk < LexerATNSimulator2.MIN_DFA_EDGE || tk > LexerATNSimulator2.MAX_DFA_EDGE) { + return to; + } + if (LexerATNSimulator2.debug) { + console.log("EDGE " + from_ + " -> " + to + " upon " + tk); + } + if (from_.edges === null) { + from_.edges = []; + } + from_.edges[tk - LexerATNSimulator2.MIN_DFA_EDGE] = to; + return to; } - constructor(parent, invokingState) { - super(parent, invokingState); + addDFAState(configs) { + const proposed = new DFAState_default(null, configs); + let firstConfigWithRuleStopState = null; + for (let i = 0; i < configs.items.length; i++) { + const cfg = configs.items[i]; + if (cfg.state instanceof RuleStopState_default) { + firstConfigWithRuleStopState = cfg; + break; + } + } + if (firstConfigWithRuleStopState !== null) { + proposed.isAcceptState = true; + proposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor; + proposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex]; + } + const dfa = this.decisionToDFA[this.mode]; + const existing = dfa.states.get(proposed); + if (existing !== null) { + return existing; + } + const newState = proposed; + newState.stateNumber = dfa.states.length; + configs.setReadonly(true); + newState.configs = configs; + dfa.states.add(newState); + return newState; } - get ruleIndex() { - return SolidityParser.RULE_numberLiteral; + getDFA(mode) { + return this.decisionToDFA[mode]; } - enterRule(listener) { - if (listener.enterNumberLiteral) { - listener.enterNumberLiteral(this); - } + getText(input) { + return input.getText(this.startIndex, input.index - 1); } - exitRule(listener) { - if (listener.exitNumberLiteral) { - listener.exitNumberLiteral(this); + consume(input) { + const curChar = input.LA(1); + if (curChar === "\n".charCodeAt(0)) { + this.line += 1; + this.column = 0; + } else { + this.column += 1; } + input.consume(); } - accept(visitor) { - if (visitor.visitNumberLiteral) { - return visitor.visitNumberLiteral(this); + getTokenName(tt) { + if (tt === -1) { + return "EOF"; } else { - return visitor.visitChildren(this); + return "'" + String.fromCharCode(tt) + "'"; } } }; - var IdentifierContext = class extends import_ParserRuleContext.ParserRuleContext { - ReceiveKeyword() { - return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); - } - ConstructorKeyword() { - return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); + var LexerATNSimulator_default = LexerATNSimulator2; + LexerATNSimulator2.debug = false; + LexerATNSimulator2.dfa_debug = false; + LexerATNSimulator2.MIN_DFA_EDGE = 0; + LexerATNSimulator2.MAX_DFA_EDGE = 127; + + // node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/dfa/PredPrediction.js + init_process_shim(); + var PredPrediction = class { + constructor(pred, alt) { + this.alt = alt; + this.pred = pred; } - PayableKeyword() { - return this.tryGetToken(SolidityParser.PayableKeyword, 0); + toString() { + return "(" + this.pred + ", " + this.alt + ")"; } - LeaveKeyword() { - return this.tryGetToken(SolidityParser.LeaveKeyword, 0); + }; + var PredPrediction_default = PredPrediction; + + // node_modules/antlr4/src/antlr4/atn/PredictionMode.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/misc/AltDict.js + init_process_shim(); + var AltDict = class { + constructor() { + this.data = {}; } - Identifier() { - return this.tryGetToken(SolidityParser.Identifier, 0); + get(key) { + return this.data["k-" + key] || null; } - constructor(parent, invokingState) { - super(parent, invokingState); + set(key, value) { + this.data["k-" + key] = value; } - get ruleIndex() { - return SolidityParser.RULE_identifier; + values() { + return Object.keys(this.data).filter((key) => key.startsWith("k-")).map((key) => this.data[key], this); } - enterRule(listener) { - if (listener.enterIdentifier) { - listener.enterIdentifier(this); + }; + var AltDict_default = AltDict; + + // node_modules/antlr4/src/antlr4/atn/PredictionMode.js + var PredictionMode = { + SLL: 0, + LL: 1, + LL_EXACT_AMBIG_DETECTION: 2, + hasSLLConflictTerminatingPrediction: function(mode, configs) { + if (PredictionMode.allConfigsInRuleStopStates(configs)) { + return true; } - } - exitRule(listener) { - if (listener.exitIdentifier) { - listener.exitIdentifier(this); + if (mode === PredictionMode.SLL) { + if (configs.hasSemanticContext) { + const dup = new ATNConfigSet_default(); + for (let i = 0; i < configs.items.length; i++) { + let c = configs.items[i]; + c = new ATNConfig_default({semanticContext: SemanticContext_default.NONE}, c); + dup.add(c); + } + configs = dup; + } } - } - accept(visitor) { - if (visitor.visitIdentifier) { - return visitor.visitIdentifier(this); + const altsets = PredictionMode.getConflictingAltSubsets(configs); + return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs); + }, + hasConfigInRuleStopState: function(configs) { + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (c.state instanceof RuleStopState_default) { + return true; + } + } + return false; + }, + allConfigsInRuleStopStates: function(configs) { + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (!(c.state instanceof RuleStopState_default)) { + return false; + } + } + return true; + }, + resolvesToJustOneViableAlt: function(altsets) { + return PredictionMode.getSingleViableAlt(altsets); + }, + allSubsetsConflict: function(altsets) { + return !PredictionMode.hasNonConflictingAltSet(altsets); + }, + hasNonConflictingAltSet: function(altsets) { + for (let i = 0; i < altsets.length; i++) { + const alts = altsets[i]; + if (alts.length === 1) { + return true; + } + } + return false; + }, + hasConflictingAltSet: function(altsets) { + for (let i = 0; i < altsets.length; i++) { + const alts = altsets[i]; + if (alts.length > 1) { + return true; + } + } + return false; + }, + allSubsetsEqual: function(altsets) { + let first = null; + for (let i = 0; i < altsets.length; i++) { + const alts = altsets[i]; + if (first === null) { + first = alts; + } else if (alts !== first) { + return false; + } + } + return true; + }, + getUniqueAlt: function(altsets) { + const all = PredictionMode.getAlts(altsets); + if (all.length === 1) { + return all.minValue(); } else { - return visitor.visitChildren(this); + return ATN_default.INVALID_ALT_NUMBER; + } + }, + getAlts: function(altsets) { + const all = new BitSet_default(); + altsets.map(function(alts) { + all.or(alts); + }); + return all; + }, + getConflictingAltSubsets: function(configs) { + const configToAlts = new HashMap_default(); + configToAlts.hashFunction = function(cfg) { + HashCode_default.hashStuff(cfg.state.stateNumber, cfg.context); + }; + configToAlts.equalsFunction = function(c1, c2) { + return c1.state.stateNumber === c2.state.stateNumber && c1.context.equals(c2.context); + }; + configs.items.map(function(cfg) { + let alts = configToAlts.get(cfg); + if (alts === null) { + alts = new BitSet_default(); + configToAlts.set(cfg, alts); + } + alts.add(cfg.alt); + }); + return configToAlts.getValues(); + }, + getStateToAltMap: function(configs) { + const m = new AltDict_default(); + configs.items.map(function(c) { + let alts = m.get(c.state); + if (alts === null) { + alts = new BitSet_default(); + m.set(c.state, alts); + } + alts.add(c.alt); + }); + return m; + }, + hasStateAssociatedWithOneAlt: function(configs) { + const values = PredictionMode.getStateToAltMap(configs).values(); + for (let i = 0; i < values.length; i++) { + if (values[i].length === 1) { + return true; + } + } + return false; + }, + getSingleViableAlt: function(altsets) { + let result = null; + for (let i = 0; i < altsets.length; i++) { + const alts = altsets[i]; + const minAlt = alts.minValue(); + if (result === null) { + result = minAlt; + } else if (result !== minAlt) { + return ATN_default.INVALID_ALT_NUMBER; + } } + return result; } }; - var HexLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { - HexLiteralFragment(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.HexLiteralFragment); - } else { - return this.getToken(SolidityParser.HexLiteralFragment, i); - } + var PredictionMode_default = PredictionMode; + + // node_modules/antlr4/src/antlr4/error/NoViableAltException.js + init_process_shim(); + var NoViableAltException2 = class extends RecognitionException_default { + constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) { + ctx = ctx || recognizer._ctx; + offendingToken = offendingToken || recognizer.getCurrentToken(); + startToken = startToken || recognizer.getCurrentToken(); + input = input || recognizer.getInputStream(); + super({message: "", recognizer, input, ctx}); + this.deadEndConfigs = deadEndConfigs; + this.startToken = startToken; + this.offendingToken = offendingToken; } - constructor(parent, invokingState) { - super(parent, invokingState); + }; + var NoViableAltException_default = NoViableAltException2; + + // node_modules/antlr4/src/antlr4/utils/DoubleDict.js + init_process_shim(); + var DoubleDict = class { + constructor(defaultMapCtor) { + this.defaultMapCtor = defaultMapCtor || HashMap_default; + this.cacheMap = new this.defaultMapCtor(); } - get ruleIndex() { - return SolidityParser.RULE_hexLiteral; + get(a, b) { + const d = this.cacheMap.get(a) || null; + return d === null ? null : d.get(b) || null; } - enterRule(listener) { - if (listener.enterHexLiteral) { - listener.enterHexLiteral(this); + set(a, b, o) { + let d = this.cacheMap.get(a) || null; + if (d === null) { + d = new this.defaultMapCtor(); + this.cacheMap.set(a, d); } + d.set(b, o); } - exitRule(listener) { - if (listener.exitHexLiteral) { - listener.exitHexLiteral(this); + }; + var DoubleDict_default = DoubleDict; + + // node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js + var ParserATNSimulator2 = class extends ATNSimulator_default { + constructor(parser, atn, decisionToDFA, sharedContextCache) { + super(atn, sharedContextCache); + this.parser = parser; + this.decisionToDFA = decisionToDFA; + this.predictionMode = PredictionMode_default.LL; + this._input = null; + this._startIndex = 0; + this._outerContext = null; + this._dfa = null; + this.mergeCache = null; + this.debug = false; + this.debug_closure = false; + this.debug_add = false; + this.debug_list_atn_decisions = false; + this.dfa_debug = false; + this.retry_debug = false; + } + reset() { + } + adaptivePredict(input, decision, outerContext) { + if (this.debug || this.debug_list_atn_decisions) { + console.log("adaptivePredict decision " + decision + " exec LA(1)==" + this.getLookaheadName(input) + " line " + input.LT(1).line + ":" + input.LT(1).column); + } + this._input = input; + this._startIndex = input.index; + this._outerContext = outerContext; + const dfa = this.decisionToDFA[decision]; + this._dfa = dfa; + const m = input.mark(); + const index = input.index; + try { + let s0; + if (dfa.precedenceDfa) { + s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence()); + } else { + s0 = dfa.s0; + } + if (s0 === null) { + if (outerContext === null) { + outerContext = RuleContext_default.EMPTY; + } + if (this.debug || this.debug_list_atn_decisions) { + console.log("predictATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + ", outerContext=" + outerContext.toString(this.parser.ruleNames)); + } + const fullCtx = false; + let s0_closure = this.computeStartState(dfa.atnStartState, RuleContext_default.EMPTY, fullCtx); + if (dfa.precedenceDfa) { + dfa.s0.configs = s0_closure; + s0_closure = this.applyPrecedenceFilter(s0_closure); + s0 = this.addDFAState(dfa, new DFAState_default(null, s0_closure)); + dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0); + } else { + s0 = this.addDFAState(dfa, new DFAState_default(null, s0_closure)); + dfa.s0 = s0; + } + } + const alt = this.execATN(dfa, s0, input, index, outerContext); + if (this.debug) { + console.log("DFA after predictATN: " + dfa.toString(this.parser.literalNames, this.parser.symbolicNames)); + } + return alt; + } finally { + this._dfa = null; + this.mergeCache = null; + input.seek(index); + input.release(m); } } - accept(visitor) { - if (visitor.visitHexLiteral) { - return visitor.visitHexLiteral(this); - } else { - return visitor.visitChildren(this); + execATN(dfa, s0, input, startIndex, outerContext) { + if (this.debug || this.debug_list_atn_decisions) { + console.log("execATN decision " + dfa.decision + " exec LA(1)==" + this.getLookaheadName(input) + " line " + input.LT(1).line + ":" + input.LT(1).column); + } + let alt; + let previousD = s0; + if (this.debug) { + console.log("s0 = " + s0); + } + let t = input.LA(1); + for (; ; ) { + let D = this.getExistingTargetState(previousD, t); + if (D === null) { + D = this.computeTargetState(dfa, previousD, t); + } + if (D === ATNSimulator_default.ERROR) { + const e = this.noViableAlt(input, outerContext, previousD.configs, startIndex); + input.seek(startIndex); + alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext); + if (alt !== ATN_default.INVALID_ALT_NUMBER) { + return alt; + } else { + throw e; + } + } + if (D.requiresFullContext && this.predictionMode !== PredictionMode_default.SLL) { + let conflictingAlts = null; + if (D.predicates !== null) { + if (this.debug) { + console.log("DFA state has preds in DFA sim LL failover"); + } + const conflictIndex = input.index; + if (conflictIndex !== startIndex) { + input.seek(startIndex); + } + conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true); + if (conflictingAlts.length === 1) { + if (this.debug) { + console.log("Full LL avoided"); + } + return conflictingAlts.minValue(); + } + if (conflictIndex !== startIndex) { + input.seek(conflictIndex); + } + } + if (this.dfa_debug) { + console.log("ctx sensitive state " + outerContext + " in " + D); + } + const fullCtx = true; + const s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx); + this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index); + alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext); + return alt; + } + if (D.isAcceptState) { + if (D.predicates === null) { + return D.prediction; + } + const stopIndex = input.index; + input.seek(startIndex); + const alts = this.evalSemanticContext(D.predicates, outerContext, true); + if (alts.length === 0) { + throw this.noViableAlt(input, outerContext, D.configs, startIndex); + } else if (alts.length === 1) { + return alts.minValue(); + } else { + this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs); + return alts.minValue(); + } + } + previousD = D; + if (t !== Token_default.EOF) { + input.consume(); + t = input.LA(1); + } } } - }; - var OverrideSpecifierContext = class extends import_ParserRuleContext.ParserRuleContext { - userDefinedTypeName(i) { - if (i === void 0) { - return this.getRuleContexts(UserDefinedTypeNameContext); + getExistingTargetState(previousD, t) { + const edges = previousD.edges; + if (edges === null) { + return null; } else { - return this.getRuleContext(i, UserDefinedTypeNameContext); + return edges[t + 1] || null; + } + } + computeTargetState(dfa, previousD, t) { + const reach = this.computeReachSet(previousD.configs, t, false); + if (reach === null) { + this.addDFAEdge(dfa, previousD, t, ATNSimulator_default.ERROR); + return ATNSimulator_default.ERROR; + } + let D = new DFAState_default(null, reach); + const predictedAlt = this.getUniqueAlt(reach); + if (this.debug) { + const altSubSets = PredictionMode_default.getConflictingAltSubsets(reach); + console.log("SLL altSubSets=" + arrayToString(altSubSets) + ", configs=" + reach + ", predict=" + predictedAlt + ", allSubsetsConflict=" + PredictionMode_default.allSubsetsConflict(altSubSets) + ", conflictingAlts=" + this.getConflictingAlts(reach)); + } + if (predictedAlt !== ATN_default.INVALID_ALT_NUMBER) { + D.isAcceptState = true; + D.configs.uniqueAlt = predictedAlt; + D.prediction = predictedAlt; + } else if (PredictionMode_default.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) { + D.configs.conflictingAlts = this.getConflictingAlts(reach); + D.requiresFullContext = true; + D.isAcceptState = true; + D.prediction = D.configs.conflictingAlts.minValue(); + } + if (D.isAcceptState && D.configs.hasSemanticContext) { + this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision)); + if (D.predicates !== null) { + D.prediction = ATN_default.INVALID_ALT_NUMBER; + } + } + D = this.addDFAEdge(dfa, previousD, t, D); + return D; + } + predicateDFAState(dfaState, decisionState) { + const nalts = decisionState.transitions.length; + const altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs); + const altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts); + if (altToPred !== null) { + dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred); + dfaState.prediction = ATN_default.INVALID_ALT_NUMBER; + } else { + dfaState.prediction = altsToCollectPredsFrom.minValue(); + } + } + execATNWithFullContext(dfa, D, s0, input, startIndex, outerContext) { + if (this.debug || this.debug_list_atn_decisions) { + console.log("execATNWithFullContext " + s0); + } + const fullCtx = true; + let foundExactAmbig = false; + let reach; + let previous = s0; + input.seek(startIndex); + let t = input.LA(1); + let predictedAlt = -1; + for (; ; ) { + reach = this.computeReachSet(previous, t, fullCtx); + if (reach === null) { + const e = this.noViableAlt(input, outerContext, previous, startIndex); + input.seek(startIndex); + const alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext); + if (alt !== ATN_default.INVALID_ALT_NUMBER) { + return alt; + } else { + throw e; + } + } + const altSubSets = PredictionMode_default.getConflictingAltSubsets(reach); + if (this.debug) { + console.log("LL altSubSets=" + altSubSets + ", predict=" + PredictionMode_default.getUniqueAlt(altSubSets) + ", resolvesToJustOneViableAlt=" + PredictionMode_default.resolvesToJustOneViableAlt(altSubSets)); + } + reach.uniqueAlt = this.getUniqueAlt(reach); + if (reach.uniqueAlt !== ATN_default.INVALID_ALT_NUMBER) { + predictedAlt = reach.uniqueAlt; + break; + } else if (this.predictionMode !== PredictionMode_default.LL_EXACT_AMBIG_DETECTION) { + predictedAlt = PredictionMode_default.resolvesToJustOneViableAlt(altSubSets); + if (predictedAlt !== ATN_default.INVALID_ALT_NUMBER) { + break; + } + } else { + if (PredictionMode_default.allSubsetsConflict(altSubSets) && PredictionMode_default.allSubsetsEqual(altSubSets)) { + foundExactAmbig = true; + predictedAlt = PredictionMode_default.getSingleViableAlt(altSubSets); + break; + } + } + previous = reach; + if (t !== Token_default.EOF) { + input.consume(); + t = input.LA(1); + } } + if (reach.uniqueAlt !== ATN_default.INVALID_ALT_NUMBER) { + this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index); + return predictedAlt; + } + this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach); + return predictedAlt; } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_overrideSpecifier; + computeReachSet(closure, t, fullCtx) { + if (this.debug) { + console.log("in computeReachSet, starting closure: " + closure); + } + if (this.mergeCache === null) { + this.mergeCache = new DoubleDict_default(); + } + const intermediate = new ATNConfigSet_default(fullCtx); + let skippedStopStates = null; + for (let i = 0; i < closure.items.length; i++) { + const c = closure.items[i]; + if (this.debug) { + console.log("testing " + this.getTokenName(t) + " at " + c); + } + if (c.state instanceof RuleStopState_default) { + if (fullCtx || t === Token_default.EOF) { + if (skippedStopStates === null) { + skippedStopStates = []; + } + skippedStopStates.push(c); + if (this.debug_add) { + console.log("added " + c + " to skippedStopStates"); + } + } + continue; + } + for (let j = 0; j < c.state.transitions.length; j++) { + const trans = c.state.transitions[j]; + const target = this.getReachableTarget(trans, t); + if (target !== null) { + const cfg = new ATNConfig_default({state: target}, c); + intermediate.add(cfg, this.mergeCache); + if (this.debug_add) { + console.log("added " + cfg + " to intermediate"); + } + } + } + } + let reach = null; + if (skippedStopStates === null && t !== Token_default.EOF) { + if (intermediate.items.length === 1) { + reach = intermediate; + } else if (this.getUniqueAlt(intermediate) !== ATN_default.INVALID_ALT_NUMBER) { + reach = intermediate; + } + } + if (reach === null) { + reach = new ATNConfigSet_default(fullCtx); + const closureBusy = new HashSet_default(); + const treatEofAsEpsilon = t === Token_default.EOF; + for (let k = 0; k < intermediate.items.length; k++) { + this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon); + } + } + if (t === Token_default.EOF) { + reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate); + } + if (skippedStopStates !== null && (!fullCtx || !PredictionMode_default.hasConfigInRuleStopState(reach))) { + for (let l = 0; l < skippedStopStates.length; l++) { + reach.add(skippedStopStates[l], this.mergeCache); + } + } + if (reach.items.length === 0) { + return null; + } else { + return reach; + } } - enterRule(listener) { - if (listener.enterOverrideSpecifier) { - listener.enterOverrideSpecifier(this); + removeAllConfigsNotInRuleStopState(configs, lookToEndOfRule) { + if (PredictionMode_default.allConfigsInRuleStopStates(configs)) { + return configs; + } + const result = new ATNConfigSet_default(configs.fullCtx); + for (let i = 0; i < configs.items.length; i++) { + const config = configs.items[i]; + if (config.state instanceof RuleStopState_default) { + result.add(config, this.mergeCache); + continue; + } + if (lookToEndOfRule && config.state.epsilonOnlyTransitions) { + const nextTokens = this.atn.nextTokens(config.state); + if (nextTokens.contains(Token_default.EPSILON)) { + const endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex]; + result.add(new ATNConfig_default({state: endOfRuleState}, config), this.mergeCache); + } + } } + return result; } - exitRule(listener) { - if (listener.exitOverrideSpecifier) { - listener.exitOverrideSpecifier(this); + computeStartState(p, ctx, fullCtx) { + const initialContext = predictionContextFromRuleContext(this.atn, ctx); + const configs = new ATNConfigSet_default(fullCtx); + for (let i = 0; i < p.transitions.length; i++) { + const target = p.transitions[i].target; + const c = new ATNConfig_default({state: target, alt: i + 1, context: initialContext}, null); + const closureBusy = new HashSet_default(); + this.closure(c, configs, closureBusy, true, fullCtx, false); + } + return configs; + } + applyPrecedenceFilter(configs) { + let config; + const statesFromAlt1 = []; + const configSet = new ATNConfigSet_default(configs.fullCtx); + for (let i = 0; i < configs.items.length; i++) { + config = configs.items[i]; + if (config.alt !== 1) { + continue; + } + const updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext); + if (updatedContext === null) { + continue; + } + statesFromAlt1[config.state.stateNumber] = config.context; + if (updatedContext !== config.semanticContext) { + configSet.add(new ATNConfig_default({semanticContext: updatedContext}, config), this.mergeCache); + } else { + configSet.add(config, this.mergeCache); + } } - } - accept(visitor) { - if (visitor.visitOverrideSpecifier) { - return visitor.visitOverrideSpecifier(this); - } else { - return visitor.visitChildren(this); + for (let i = 0; i < configs.items.length; i++) { + config = configs.items[i]; + if (config.alt === 1) { + continue; + } + if (!config.precedenceFilterSuppressed) { + const context = statesFromAlt1[config.state.stateNumber] || null; + if (context !== null && context.equals(config.context)) { + continue; + } + } + configSet.add(config, this.mergeCache); } + return configSet; } - }; - var StringLiteralContext = class extends import_ParserRuleContext.ParserRuleContext { - StringLiteralFragment(i) { - if (i === void 0) { - return this.getTokens(SolidityParser.StringLiteralFragment); + getReachableTarget(trans, ttype) { + if (trans.matches(ttype, 0, this.atn.maxTokenType)) { + return trans.target; } else { - return this.getToken(SolidityParser.StringLiteralFragment, i); + return null; } } - constructor(parent, invokingState) { - super(parent, invokingState); - } - get ruleIndex() { - return SolidityParser.RULE_stringLiteral; + getPredsForAmbigAlts(ambigAlts, configs, nalts) { + let altToPred = []; + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (ambigAlts.has(c.alt)) { + altToPred[c.alt] = SemanticContext_default.orContext(altToPred[c.alt] || null, c.semanticContext); + } + } + let nPredAlts = 0; + for (let i = 1; i < nalts + 1; i++) { + const pred = altToPred[i] || null; + if (pred === null) { + altToPred[i] = SemanticContext_default.NONE; + } else if (pred !== SemanticContext_default.NONE) { + nPredAlts += 1; + } + } + if (nPredAlts === 0) { + altToPred = null; + } + if (this.debug) { + console.log("getPredsForAmbigAlts result " + arrayToString(altToPred)); + } + return altToPred; } - enterRule(listener) { - if (listener.enterStringLiteral) { - listener.enterStringLiteral(this); + getPredicatePredictions(ambigAlts, altToPred) { + const pairs = []; + let containsPredicate = false; + for (let i = 1; i < altToPred.length; i++) { + const pred = altToPred[i]; + if (ambigAlts !== null && ambigAlts.has(i)) { + pairs.push(new PredPrediction_default(pred, i)); + } + if (pred !== SemanticContext_default.NONE) { + containsPredicate = true; + } } + if (!containsPredicate) { + return null; + } + return pairs; } - exitRule(listener) { - if (listener.exitStringLiteral) { - listener.exitStringLiteral(this); + getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs, outerContext) { + const cfgs = this.splitAccordingToSemanticValidity(configs, outerContext); + const semValidConfigs = cfgs[0]; + const semInvalidConfigs = cfgs[1]; + let alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs); + if (alt !== ATN_default.INVALID_ALT_NUMBER) { + return alt; + } + if (semInvalidConfigs.items.length > 0) { + alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs); + if (alt !== ATN_default.INVALID_ALT_NUMBER) { + return alt; + } } + return ATN_default.INVALID_ALT_NUMBER; } - accept(visitor) { - if (visitor.visitStringLiteral) { - return visitor.visitStringLiteral(this); + getAltThatFinishedDecisionEntryRule(configs) { + const alts = []; + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (c.reachesIntoOuterContext > 0 || c.state instanceof RuleStopState_default && c.context.hasEmptyPath()) { + if (alts.indexOf(c.alt) < 0) { + alts.push(c.alt); + } + } + } + if (alts.length === 0) { + return ATN_default.INVALID_ALT_NUMBER; } else { - return visitor.visitChildren(this); + return Math.min.apply(null, alts); } } - }; - - // src/ast-types.ts - init_process_shim(); - var astNodeTypes = [ - "SourceUnit", - "PragmaDirective", - "ImportDirective", - "ContractDefinition", - "InheritanceSpecifier", - "StateVariableDeclaration", - "UsingForDeclaration", - "StructDefinition", - "ModifierDefinition", - "ModifierInvocation", - "FunctionDefinition", - "EventDefinition", - "CustomErrorDefinition", - "RevertStatement", - "EnumValue", - "EnumDefinition", - "VariableDeclaration", - "UserDefinedTypeName", - "Mapping", - "ArrayTypeName", - "FunctionTypeName", - "Block", - "ExpressionStatement", - "IfStatement", - "WhileStatement", - "ForStatement", - "InlineAssemblyStatement", - "DoWhileStatement", - "ContinueStatement", - "Break", - "Continue", - "BreakStatement", - "ReturnStatement", - "EmitStatement", - "ThrowStatement", - "VariableDeclarationStatement", - "ElementaryTypeName", - "FunctionCall", - "AssemblyBlock", - "AssemblyCall", - "AssemblyLocalDefinition", - "AssemblyAssignment", - "AssemblyStackAssignment", - "LabelDefinition", - "AssemblySwitch", - "AssemblyCase", - "AssemblyFunctionDefinition", - "AssemblyFunctionReturns", - "AssemblyFor", - "AssemblyIf", - "SubAssembly", - "TupleExpression", - "NameValueExpression", - "BooleanLiteral", - "NumberLiteral", - "Identifier", - "BinaryOperation", - "UnaryOperation", - "NewExpression", - "Conditional", - "StringLiteral", - "HexLiteral", - "HexNumber", - "DecimalNumber", - "MemberAccess", - "IndexAccess", - "IndexRangeAccess", - "NameValueList", - "UncheckedStatement", - "TryStatement", - "CatchClause", - "FileLevelConstant", - "AssemblyMemberAccess", - "TypeDefinition" - ]; - var binaryOpValues = [ - "+", - "-", - "*", - "/", - "**", - "%", - "<<", - ">>", - "&&", - "||", - ",,", - "&", - ",", - "^", - "<", - ">", - "<=", - ">=", - "==", - "!=", - "=", - ",=", - "^=", - "&=", - "<<=", - ">>=", - "+=", - "-=", - "*=", - "/=", - "%=", - "|", - "|=" - ]; - var unaryOpValues = [ - "-", - "+", - "++", - "--", - "~", - "after", - "delete", - "!" - ]; - - // src/ASTBuilder.ts - init_process_shim(); - var import_AbstractParseTreeVisitor = __toModule(require_AbstractParseTreeVisitor()); - var import_ErrorNode = __toModule(require_ErrorNode()); - var ASTBuilder = class extends import_AbstractParseTreeVisitor.AbstractParseTreeVisitor { - constructor(options) { - super(); - this.options = options; - this.result = null; + splitAccordingToSemanticValidity(configs, outerContext) { + const succeeded = new ATNConfigSet_default(configs.fullCtx); + const failed = new ATNConfigSet_default(configs.fullCtx); + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (c.semanticContext !== SemanticContext_default.NONE) { + const predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext); + if (predicateEvaluationResult) { + succeeded.add(c); + } else { + failed.add(c); + } + } else { + succeeded.add(c); + } + } + return [succeeded, failed]; } - defaultResult() { - throw new Error("Unknown node"); + evalSemanticContext(predPredictions, outerContext, complete) { + const predictions = new BitSet_default(); + for (let i = 0; i < predPredictions.length; i++) { + const pair = predPredictions[i]; + if (pair.pred === SemanticContext_default.NONE) { + predictions.add(pair.alt); + if (!complete) { + break; + } + continue; + } + const predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext); + if (this.debug || this.dfa_debug) { + console.log("eval pred " + pair + "=" + predicateEvaluationResult); + } + if (predicateEvaluationResult) { + if (this.debug || this.dfa_debug) { + console.log("PREDICT " + pair.alt); + } + predictions.add(pair.alt); + if (!complete) { + break; + } + } + } + return predictions; } - aggregateResult() { - return {type: ""}; + closure(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) { + const initialDepth = 0; + this.closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, initialDepth, treatEofAsEpsilon); } - visitSourceUnit(ctx) { - const children = (ctx.children ?? []).filter((x) => !(x instanceof import_ErrorNode.ErrorNode)); - const node = { - type: "SourceUnit", - children: children.slice(0, -1).map((child) => this.visit(child)) - }; - const result = this._addMeta(node, ctx); - this.result = result; - return result; + closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) { + if (this.debug || this.debug_closure) { + console.log("closure(" + config.toString(this.parser, true) + ")"); + if (config.reachesIntoOuterContext > 50) { + throw "problem"; + } + } + if (config.state instanceof RuleStopState_default) { + if (!config.context.isEmpty()) { + for (let i = 0; i < config.context.length; i++) { + if (config.context.getReturnState(i) === PredictionContext_default.EMPTY_RETURN_STATE) { + if (fullCtx) { + configs.add(new ATNConfig_default({state: config.state, context: PredictionContext_default.EMPTY}, config), this.mergeCache); + continue; + } else { + if (this.debug) { + console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); + } + this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon); + } + continue; + } + const returnState = this.atn.states[config.context.getReturnState(i)]; + const newContext = config.context.getParent(i); + const parms = {state: returnState, alt: config.alt, context: newContext, semanticContext: config.semanticContext}; + const c = new ATNConfig_default(parms, null); + c.reachesIntoOuterContext = config.reachesIntoOuterContext; + this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon); + } + return; + } else if (fullCtx) { + configs.add(config, this.mergeCache); + return; + } else { + if (this.debug) { + console.log("FALLING off rule " + this.getRuleName(config.state.ruleIndex)); + } + } + } + this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon); } - visitContractPart(ctx) { - return this.visit(ctx.getChild(0)); + closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) { + const p = config.state; + if (!p.epsilonOnlyTransitions) { + configs.add(config, this.mergeCache); + } + for (let i = 0; i < p.transitions.length; i++) { + if (i === 0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config)) + continue; + const t = p.transitions[i]; + const continueCollecting = collectPredicates && !(t instanceof ActionTransition_default); + const c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon); + if (c !== null) { + let newDepth = depth; + if (config.state instanceof RuleStopState_default) { + if (this._dfa !== null && this._dfa.precedenceDfa) { + if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) { + c.precedenceFilterSuppressed = true; + } + } + c.reachesIntoOuterContext += 1; + if (closureBusy.add(c) !== c) { + continue; + } + configs.dipsIntoOuterContext = true; + newDepth -= 1; + if (this.debug) { + console.log("dips into outer ctx: " + c); + } + } else { + if (!t.isEpsilon && closureBusy.add(c) !== c) { + continue; + } + if (t instanceof RuleTransition_default) { + if (newDepth >= 0) { + newDepth += 1; + } + } + } + this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon); + } + } + } + canDropLoopEntryEdgeInLeftRecursiveRule(config) { + const p = config.state; + if (p.stateType !== ATNState_default.STAR_LOOP_ENTRY) + return false; + if (p.stateType !== ATNState_default.STAR_LOOP_ENTRY || !p.isPrecedenceDecision || config.context.isEmpty() || config.context.hasEmptyPath()) + return false; + const numCtxs = config.context.length; + for (let i = 0; i < numCtxs; i++) { + const returnState = this.atn.states[config.context.getReturnState(i)]; + if (returnState.ruleIndex !== p.ruleIndex) + return false; + } + const decisionStartState = p.transitions[0].target; + const blockEndStateNum = decisionStartState.endState.stateNumber; + const blockEndState = this.atn.states[blockEndStateNum]; + for (let i = 0; i < numCtxs; i++) { + const returnStateNumber = config.context.getReturnState(i); + const returnState = this.atn.states[returnStateNumber]; + if (returnState.transitions.length !== 1 || !returnState.transitions[0].isEpsilon) + return false; + const returnStateTarget = returnState.transitions[0].target; + if (returnState.stateType === ATNState_default.BLOCK_END && returnStateTarget === p) + continue; + if (returnState === blockEndState) + continue; + if (returnStateTarget === blockEndState) + continue; + if (returnStateTarget.stateType === ATNState_default.BLOCK_END && returnStateTarget.transitions.length === 1 && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target === p) + continue; + return false; + } + return true; } - visitContractDefinition(ctx) { - const name = this._toText(ctx.identifier()); - const kind = this._toText(ctx.getChild(0)); - this._currentContract = name; - const node = { - type: "ContractDefinition", - name, - baseContracts: ctx.inheritanceSpecifier().map((x) => this.visitInheritanceSpecifier(x)), - subNodes: ctx.contractPart().map((x) => this.visit(x)), - kind - }; - return this._addMeta(node, ctx); + getRuleName(index) { + if (this.parser !== null && index >= 0) { + return this.parser.ruleNames[index]; + } else { + return ""; + } } - visitStateVariableDeclaration(ctx) { - const type = this.visitTypeName(ctx.typeName()); - const iden = ctx.identifier(); - const name = this._toText(iden); - let expression = null; - const ctxExpression = ctx.expression(); - if (ctxExpression) { - expression = this.visitExpression(ctxExpression); + getEpsilonTarget(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) { + switch (t.serializationType) { + case Transition_default.RULE: + return this.ruleTransition(config, t); + case Transition_default.PRECEDENCE: + return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx); + case Transition_default.PREDICATE: + return this.predTransition(config, t, collectPredicates, inContext, fullCtx); + case Transition_default.ACTION: + return this.actionTransition(config, t); + case Transition_default.EPSILON: + return new ATNConfig_default({state: t.target}, config); + case Transition_default.ATOM: + case Transition_default.RANGE: + case Transition_default.SET: + if (treatEofAsEpsilon) { + if (t.matches(Token_default.EOF, 0, 1)) { + return new ATNConfig_default({state: t.target}, config); + } + } + return null; + default: + return null; } - let visibility = "default"; - if (ctx.InternalKeyword().length > 0) { - visibility = "internal"; - } else if (ctx.PublicKeyword().length > 0) { - visibility = "public"; - } else if (ctx.PrivateKeyword().length > 0) { - visibility = "private"; + } + actionTransition(config, t) { + if (this.debug) { + const index = t.actionIndex === -1 ? 65535 : t.actionIndex; + console.log("ACTION edge " + t.ruleIndex + ":" + index); } - let isDeclaredConst = false; - if (ctx.ConstantKeyword().length > 0) { - isDeclaredConst = true; + return new ATNConfig_default({state: t.target}, config); + } + precedenceTransition(config, pt, collectPredicates, inContext, fullCtx) { + if (this.debug) { + console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.precedence + ">=_p, ctx dependent=true"); + if (this.parser !== null) { + console.log("context surrounding pred is " + arrayToString(this.parser.getRuleInvocationStack())); + } } - let override; - const overrideSpecifier = ctx.overrideSpecifier(); - if (overrideSpecifier.length === 0) { - override = null; + let c = null; + if (collectPredicates && inContext) { + if (fullCtx) { + const currentPosition = this._input.index; + this._input.seek(this._startIndex); + const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext); + this._input.seek(currentPosition); + if (predSucceeds) { + c = new ATNConfig_default({state: pt.target}, config); + } + } else { + const newSemCtx = SemanticContext_default.andContext(config.semanticContext, pt.getPredicate()); + c = new ATNConfig_default({state: pt.target, semanticContext: newSemCtx}, config); + } } else { - override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); + c = new ATNConfig_default({state: pt.target}, config); } - let isImmutable = false; - if (ctx.ImmutableKeyword().length > 0) { - isImmutable = true; + if (this.debug) { + console.log("config from pred transition=" + c); } - const decl = { - type: "VariableDeclaration", - typeName: type, - name, - identifier: this.visitIdentifier(iden), - expression, - visibility, - isStateVar: true, - isDeclaredConst, - isIndexed: false, - isImmutable, - override, - storageLocation: null - }; - const node = { - type: "StateVariableDeclaration", - variables: [this._addMeta(decl, ctx)], - initialValue: expression - }; - return this._addMeta(node, ctx); + return c; } - visitVariableDeclaration(ctx) { - let storageLocation = null; - const ctxStorageLocation = ctx.storageLocation(); - if (ctxStorageLocation) { - storageLocation = this._toText(ctxStorageLocation); + predTransition(config, pt, collectPredicates, inContext, fullCtx) { + if (this.debug) { + console.log("PRED (collectPredicates=" + collectPredicates + ") " + pt.ruleIndex + ":" + pt.predIndex + ", ctx dependent=" + pt.isCtxDependent); + if (this.parser !== null) { + console.log("context surrounding pred is " + arrayToString(this.parser.getRuleInvocationStack())); + } } - const identifierCtx = ctx.identifier(); - const node = { - type: "VariableDeclaration", - typeName: this.visitTypeName(ctx.typeName()), - name: this._toText(identifierCtx), - identifier: this.visitIdentifier(identifierCtx), - storageLocation, - isStateVar: false, - isIndexed: false, - expression: null - }; - return this._addMeta(node, ctx); - } - visitVariableDeclarationStatement(ctx) { - let variables = []; - const ctxVariableDeclaration = ctx.variableDeclaration(); - const ctxIdentifierList = ctx.identifierList(); - const ctxVariableDeclarationList = ctx.variableDeclarationList(); - if (ctxVariableDeclaration !== void 0) { - variables = [this.visitVariableDeclaration(ctxVariableDeclaration)]; - } else if (ctxIdentifierList !== void 0) { - variables = this.buildIdentifierList(ctxIdentifierList); - } else if (ctxVariableDeclarationList) { - variables = this.buildVariableDeclarationList(ctxVariableDeclarationList); + let c = null; + if (collectPredicates && (pt.isCtxDependent && inContext || !pt.isCtxDependent)) { + if (fullCtx) { + const currentPosition = this._input.index; + this._input.seek(this._startIndex); + const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext); + this._input.seek(currentPosition); + if (predSucceeds) { + c = new ATNConfig_default({state: pt.target}, config); + } + } else { + const newSemCtx = SemanticContext_default.andContext(config.semanticContext, pt.getPredicate()); + c = new ATNConfig_default({state: pt.target, semanticContext: newSemCtx}, config); + } + } else { + c = new ATNConfig_default({state: pt.target}, config); } - let initialValue = null; - const ctxExpression = ctx.expression(); - if (ctxExpression) { - initialValue = this.visitExpression(ctxExpression); + if (this.debug) { + console.log("config from pred transition=" + c); } - const node = { - type: "VariableDeclarationStatement", - variables, - initialValue - }; - return this._addMeta(node, ctx); + return c; } - visitStatement(ctx) { - return this.visit(ctx.getChild(0)); + ruleTransition(config, t) { + if (this.debug) { + console.log("CALL rule " + this.getRuleName(t.target.ruleIndex) + ", ctx=" + config.context); + } + const returnState = t.followState; + const newContext = SingletonPredictionContext_default.create(config.context, returnState.stateNumber); + return new ATNConfig_default({state: t.target, context: newContext}, config); } - visitSimpleStatement(ctx) { - return this.visit(ctx.getChild(0)); + getConflictingAlts(configs) { + const altsets = PredictionMode_default.getConflictingAltSubsets(configs); + return PredictionMode_default.getAlts(altsets); } - visitEventDefinition(ctx) { - const parameters = ctx.eventParameterList().eventParameter().map((paramCtx) => { - const type = this.visitTypeName(paramCtx.typeName()); - let name = null; - const paramCtxIdentifier = paramCtx.identifier(); - if (paramCtxIdentifier) { - name = this._toText(paramCtxIdentifier); + getConflictingAltsOrUniqueAlt(configs) { + let conflictingAlts = null; + if (configs.uniqueAlt !== ATN_default.INVALID_ALT_NUMBER) { + conflictingAlts = new BitSet_default(); + conflictingAlts.add(configs.uniqueAlt); + } else { + conflictingAlts = configs.conflictingAlts; + } + return conflictingAlts; + } + getTokenName(t) { + if (t === Token_default.EOF) { + return "EOF"; + } + if (this.parser !== null && this.parser.literalNames !== null) { + if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) { + console.log("" + t + " ttype out of range: " + this.parser.literalNames); + console.log("" + this.parser.getInputStream().getTokens()); + } else { + const name = this.parser.literalNames[t] || this.parser.symbolicNames[t]; + return name + "<" + t + ">"; } - const node2 = { - type: "VariableDeclaration", - typeName: type, - name, - identifier: paramCtxIdentifier !== void 0 ? this.visitIdentifier(paramCtxIdentifier) : null, - isStateVar: false, - isIndexed: paramCtx.IndexedKeyword() !== void 0, - storageLocation: null, - expression: null - }; - return this._addMeta(node2, paramCtx); - }); - const node = { - type: "EventDefinition", - name: this._toText(ctx.identifier()), - parameters, - isAnonymous: ctx.AnonymousKeyword() !== void 0 - }; - return this._addMeta(node, ctx); + } + return "" + t; } - visitBlock(ctx) { - const node = { - type: "Block", - statements: ctx.statement().map((x) => this.visitStatement(x)) - }; - return this._addMeta(node, ctx); + getLookaheadName(input) { + return this.getTokenName(input.LA(1)); } - visitParameter(ctx) { - let storageLocation = null; - const ctxStorageLocation = ctx.storageLocation(); - if (ctxStorageLocation !== void 0) { - storageLocation = this._toText(ctxStorageLocation); + dumpDeadEndConfigs(nvae) { + console.log("dead end configs: "); + const decs = nvae.getDeadEndConfigs(); + for (let i = 0; i < decs.length; i++) { + const c = decs[i]; + let trans = "no edges"; + if (c.state.transitions.length > 0) { + const t = c.state.transitions[0]; + if (t instanceof AtomTransition_default) { + trans = "Atom " + this.getTokenName(t.label); + } else if (t instanceof SetTransition_default) { + const neg = t instanceof NotSetTransition_default; + trans = (neg ? "~" : "") + "Set " + t.set; + } + } + console.error(c.toString(this.parser, true) + ":" + trans); } - let name = null; - const ctxIdentifier = ctx.identifier(); - if (ctxIdentifier !== void 0) { - name = this._toText(ctxIdentifier); + } + noViableAlt(input, outerContext, configs, startIndex) { + return new NoViableAltException_default(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext); + } + getUniqueAlt(configs) { + let alt = ATN_default.INVALID_ALT_NUMBER; + for (let i = 0; i < configs.items.length; i++) { + const c = configs.items[i]; + if (alt === ATN_default.INVALID_ALT_NUMBER) { + alt = c.alt; + } else if (c.alt !== alt) { + return ATN_default.INVALID_ALT_NUMBER; + } } - const node = { - type: "VariableDeclaration", - typeName: this.visitTypeName(ctx.typeName()), - name, - identifier: ctxIdentifier !== void 0 ? this.visitIdentifier(ctxIdentifier) : null, - storageLocation, - isStateVar: false, - isIndexed: false, - expression: null - }; - return this._addMeta(node, ctx); + return alt; } - visitFunctionDefinition(ctx) { - let isConstructor = false; - let isFallback = false; - let isReceiveEther = false; - let isVirtual = false; - let name = null; - let parameters = []; - let returnParameters = null; - let visibility = "default"; - let block = null; - const ctxBlock = ctx.block(); - if (ctxBlock !== void 0) { - block = this.visitBlock(ctxBlock); + addDFAEdge(dfa, from_, t, to) { + if (this.debug) { + console.log("EDGE " + from_ + " -> " + to + " upon " + this.getTokenName(t)); } - const modifiers = ctx.modifierList().modifierInvocation().map((mod) => this.visitModifierInvocation(mod)); - let stateMutability = null; - if (ctx.modifierList().stateMutability().length > 0) { - stateMutability = this._stateMutabilityToText(ctx.modifierList().stateMutability(0)); + if (to === null) { + return null; } - const ctxReturnParameters = ctx.returnParameters(); - switch (this._toText(ctx.functionDescriptor().getChild(0))) { - case "constructor": - parameters = ctx.parameterList().parameter().map((x) => this.visit(x)); - if (ctx.modifierList().InternalKeyword().length > 0) { - visibility = "internal"; - } else if (ctx.modifierList().PublicKeyword().length > 0) { - visibility = "public"; - } else { - visibility = "default"; - } - isConstructor = true; - break; - case "fallback": - visibility = "external"; - isFallback = true; - break; - case "receive": - visibility = "external"; - isReceiveEther = true; - break; - case "function": { - const identifier = ctx.functionDescriptor().identifier(); - name = identifier !== void 0 ? this._toText(identifier) : ""; - parameters = ctx.parameterList().parameter().map((x) => this.visit(x)); - returnParameters = ctxReturnParameters !== void 0 ? this.visitReturnParameters(ctxReturnParameters) : null; - if (ctx.modifierList().ExternalKeyword().length > 0) { - visibility = "external"; - } else if (ctx.modifierList().InternalKeyword().length > 0) { - visibility = "internal"; - } else if (ctx.modifierList().PublicKeyword().length > 0) { - visibility = "public"; - } else if (ctx.modifierList().PrivateKeyword().length > 0) { - visibility = "private"; + to = this.addDFAState(dfa, to); + if (from_ === null || t < -1 || t > this.atn.maxTokenType) { + return to; + } + if (from_.edges === null) { + from_.edges = []; + } + from_.edges[t + 1] = to; + if (this.debug) { + const literalNames = this.parser === null ? null : this.parser.literalNames; + const symbolicNames = this.parser === null ? null : this.parser.symbolicNames; + console.log("DFA=\n" + dfa.toString(literalNames, symbolicNames)); + } + return to; + } + addDFAState(dfa, D) { + if (D === ATNSimulator_default.ERROR) { + return D; + } + const existing = dfa.states.get(D); + if (existing !== null) { + return existing; + } + D.stateNumber = dfa.states.length; + if (!D.configs.readOnly) { + D.configs.optimizeConfigs(this); + D.configs.setReadonly(true); + } + dfa.states.add(D); + if (this.debug) { + console.log("adding new DFA state: " + D); + } + return D; + } + reportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex) { + if (this.debug || this.retry_debug) { + const interval = new Interval_default(startIndex, stopIndex + 1); + console.log("reportAttemptingFullContext decision=" + dfa.decision + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + } + if (this.parser !== null) { + this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs); + } + } + reportContextSensitivity(dfa, prediction, configs, startIndex, stopIndex) { + if (this.debug || this.retry_debug) { + const interval = new Interval_default(startIndex, stopIndex + 1); + console.log("reportContextSensitivity decision=" + dfa.decision + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + } + if (this.parser !== null) { + this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs); + } + } + reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs) { + if (this.debug || this.retry_debug) { + const interval = new Interval_default(startIndex, stopIndex + 1); + console.log("reportAmbiguity " + ambigAlts + ":" + configs + ", input=" + this.parser.getTokenStream().getText(interval)); + } + if (this.parser !== null) { + this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + } + } + }; + var ParserATNSimulator_default = ParserATNSimulator2; + + // node_modules/antlr4/src/antlr4/atn/index.js + var atn_default = {ATN: ATN_default, ATNDeserializer: ATNDeserializer_default, LexerATNSimulator: LexerATNSimulator_default, ParserATNSimulator: ParserATNSimulator_default, PredictionMode: PredictionMode_default}; + + // node_modules/antlr4/src/antlr4/dfa/index.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/dfa/DFA.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/dfa/DFASerializer.js + init_process_shim(); + var DFASerializer = class { + constructor(dfa, literalNames, symbolicNames) { + this.dfa = dfa; + this.literalNames = literalNames || []; + this.symbolicNames = symbolicNames || []; + } + toString() { + if (this.dfa.s0 === null) { + return null; + } + let buf = ""; + const states = this.dfa.sortedStates(); + for (let i = 0; i < states.length; i++) { + const s = states[i]; + if (s.edges !== null) { + const n = s.edges.length; + for (let j = 0; j < n; j++) { + const t = s.edges[j] || null; + if (t !== null && t.stateNumber !== 2147483647) { + buf = buf.concat(this.getStateString(s)); + buf = buf.concat("-"); + buf = buf.concat(this.getEdgeLabel(j)); + buf = buf.concat("->"); + buf = buf.concat(this.getStateString(t)); + buf = buf.concat("\n"); + } } - isConstructor = name === this._currentContract; - isFallback = name === ""; - break; } } - if (ctx.modifierList().VirtualKeyword().length > 0) { - isVirtual = true; + return buf.length === 0 ? null : buf; + } + getEdgeLabel(i) { + if (i === 0) { + return "EOF"; + } else if (this.literalNames !== null || this.symbolicNames !== null) { + return this.literalNames[i - 1] || this.symbolicNames[i - 1]; + } else { + return String.fromCharCode(i - 1); } - let override; - const overrideSpecifier = ctx.modifierList().overrideSpecifier(); - if (overrideSpecifier.length === 0) { - override = null; + } + getStateString(s) { + const baseStateStr = (s.isAcceptState ? ":" : "") + "s" + s.stateNumber + (s.requiresFullContext ? "^" : ""); + if (s.isAcceptState) { + if (s.predicates !== null) { + return baseStateStr + "=>" + arrayToString(s.predicates); + } else { + return baseStateStr + "=>" + s.prediction.toString(); + } } else { - override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); + return baseStateStr; } - const node = { - type: "FunctionDefinition", - name, - parameters, - returnParameters, - body: block, - visibility, - modifiers, - override, - isConstructor, - isReceiveEther, - isFallback, - isVirtual, - stateMutability - }; - return this._addMeta(node, ctx); } - visitEnumDefinition(ctx) { - const node = { - type: "EnumDefinition", - name: this._toText(ctx.identifier()), - members: ctx.enumValue().map((x) => this.visitEnumValue(x)) - }; - return this._addMeta(node, ctx); + }; + var DFASerializer_default = DFASerializer; + + // node_modules/antlr4/src/antlr4/dfa/LexerDFASerializer.js + init_process_shim(); + var LexerDFASerializer = class extends DFASerializer_default { + constructor(dfa) { + super(dfa, null); } - visitEnumValue(ctx) { - const node = { - type: "EnumValue", - name: this._toText(ctx.identifier()) - }; - return this._addMeta(node, ctx); + getEdgeLabel(i) { + return "'" + String.fromCharCode(i) + "'"; } - visitElementaryTypeName(ctx) { - const node = { - type: "ElementaryTypeName", - name: this._toText(ctx), - stateMutability: null - }; - return this._addMeta(node, ctx); + }; + var LexerDFASerializer_default = LexerDFASerializer; + + // node_modules/antlr4/src/antlr4/dfa/DFA.js + var DFA = class { + constructor(atnStartState, decision) { + if (decision === void 0) { + decision = 0; + } + this.atnStartState = atnStartState; + this.decision = decision; + this._states = new HashSet_default(); + this.s0 = null; + this.precedenceDfa = false; + if (atnStartState instanceof StarLoopEntryState_default) { + if (atnStartState.isPrecedenceDecision) { + this.precedenceDfa = true; + const precedenceState = new DFAState_default(null, new ATNConfigSet_default()); + precedenceState.edges = []; + precedenceState.isAcceptState = false; + precedenceState.requiresFullContext = false; + this.s0 = precedenceState; + } + } + } + getPrecedenceStartState(precedence) { + if (!this.precedenceDfa) { + throw "Only precedence DFAs may contain a precedence start state."; + } + if (precedence < 0 || precedence >= this.s0.edges.length) { + return null; + } + return this.s0.edges[precedence] || null; } - visitIdentifier(ctx) { - const node = { - type: "Identifier", - name: this._toText(ctx) - }; - return this._addMeta(node, ctx); + setPrecedenceStartState(precedence, startState) { + if (!this.precedenceDfa) { + throw "Only precedence DFAs may contain a precedence start state."; + } + if (precedence < 0) { + return; + } + this.s0.edges[precedence] = startState; } - visitTypeName(ctx) { - if (ctx.children !== void 0 && ctx.children.length > 2) { - let length = null; - if (ctx.children.length === 4) { - const expression = ctx.expression(); - if (expression === void 0) { - throw new Error("Assertion error: a typeName with 4 children should have an expression"); - } - length = this.visitExpression(expression); + setPrecedenceDfa(precedenceDfa) { + if (this.precedenceDfa !== precedenceDfa) { + this._states = new HashSet_default(); + if (precedenceDfa) { + const precedenceState = new DFAState_default(null, new ATNConfigSet_default()); + precedenceState.edges = []; + precedenceState.isAcceptState = false; + precedenceState.requiresFullContext = false; + this.s0 = precedenceState; + } else { + this.s0 = null; } - const ctxTypeName = ctx.typeName(); - const node = { - type: "ArrayTypeName", - baseTypeName: this.visitTypeName(ctxTypeName), - length - }; - return this._addMeta(node, ctx); - } - if (ctx.children?.length === 2) { - const node = { - type: "ElementaryTypeName", - name: this._toText(ctx.getChild(0)), - stateMutability: this._toText(ctx.getChild(1)) - }; - return this._addMeta(node, ctx); + this.precedenceDfa = precedenceDfa; } - if (ctx.elementaryTypeName() !== void 0) { - return this.visitElementaryTypeName(ctx.elementaryTypeName()); + } + sortedStates() { + const list = this._states.values(); + return list.sort(function(a, b) { + return a.stateNumber - b.stateNumber; + }); + } + toString(literalNames, symbolicNames) { + literalNames = literalNames || null; + symbolicNames = symbolicNames || null; + if (this.s0 === null) { + return ""; } - if (ctx.userDefinedTypeName() !== void 0) { - return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()); + const serializer = new DFASerializer_default(this, literalNames, symbolicNames); + return serializer.toString(); + } + toLexerString() { + if (this.s0 === null) { + return ""; } - if (ctx.mapping() !== void 0) { - return this.visitMapping(ctx.mapping()); + const serializer = new LexerDFASerializer_default(this); + return serializer.toString(); + } + get states() { + return this._states; + } + }; + var DFA_default = DFA; + + // node_modules/antlr4/src/antlr4/dfa/index.js + var dfa_default = {DFA: DFA_default, DFASerializer: DFASerializer_default, LexerDFASerializer: LexerDFASerializer_default, PredPrediction: PredPrediction_default}; + + // node_modules/antlr4/src/antlr4/tree/index.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/ParseTreeListener.js + init_process_shim(); + var ParseTreeListener = class { + visitTerminal(node) { + } + visitErrorNode(node) { + } + enterEveryRule(node) { + } + exitEveryRule(node) { + } + }; + var ParseTreeListener_default = ParseTreeListener; + + // node_modules/antlr4/src/antlr4/tree/ParseTreeVisitor.js + init_process_shim(); + var ParseTreeVisitor = class { + visit(ctx) { + if (Array.isArray(ctx)) { + return ctx.map(function(child) { + return child.accept(this); + }, this); + } else { + return ctx.accept(this); } - if (ctx.functionTypeName() !== void 0) { - return this.visitFunctionTypeName(ctx.functionTypeName()); + } + visitChildren(ctx) { + if (ctx.children) { + return this.visit(ctx.children); + } else { + return null; } - throw new Error("Assertion error: unhandled type name case"); } - visitUserDefinedTypeName(ctx) { - const node = { - type: "UserDefinedTypeName", - namePath: this._toText(ctx) - }; - return this._addMeta(node, ctx); + visitTerminal(node) { } - visitUsingForDeclaration(ctx) { - let typeName = null; - const ctxTypeName = ctx.typeName(); - if (ctxTypeName !== void 0) { - typeName = this.visitTypeName(ctxTypeName); + visitErrorNode(node) { + } + }; + var ParseTreeVisitor_default = ParseTreeVisitor; + + // node_modules/antlr4/src/antlr4/tree/ParseTreeWalker.js + init_process_shim(); + var ParseTreeWalker = class { + walk(listener, t) { + const errorNode = t instanceof ErrorNode_default || t.isErrorNode !== void 0 && t.isErrorNode(); + if (errorNode) { + listener.visitErrorNode(t); + } else if (t instanceof TerminalNode_default) { + listener.visitTerminal(t); + } else { + this.enterRule(listener, t); + for (let i = 0; i < t.getChildCount(); i++) { + const child = t.getChild(i); + this.walk(listener, child); + } + this.exitRule(listener, t); } - const isGlobal = ctx.GlobalKeyword() !== void 0; - let node; - const usingForObject = ctx.usingForObject(); - const firstChild = this._toText(usingForObject.getChild(0)); - if (firstChild === "{") { - node = { - type: "UsingForDeclaration", - isGlobal, - typeName, - libraryName: null, - functions: usingForObject.userDefinedTypeName().map((x) => this._toText(x)) - }; + } + enterRule(listener, r) { + const ctx = r.getRuleContext(); + listener.enterEveryRule(ctx); + ctx.enterRule(listener); + } + exitRule(listener, r) { + const ctx = r.getRuleContext(); + ctx.exitRule(listener); + listener.exitEveryRule(ctx); + } + }; + var ParseTreeWalker_default = ParseTreeWalker; + ParseTreeWalker.DEFAULT = new ParseTreeWalker(); + + // node_modules/antlr4/src/antlr4/tree/index.js + var tree_default = {Trees: Trees_default, RuleNode: RuleNode_default, ErrorNode: ErrorNode_default, TerminalNode: TerminalNode_default, ParseTreeListener: ParseTreeListener_default, ParseTreeVisitor: ParseTreeVisitor_default, ParseTreeWalker: ParseTreeWalker_default}; + + // node_modules/antlr4/src/antlr4/error/index.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/error/InputMismatchException.js + init_process_shim(); + var InputMismatchException = class extends RecognitionException_default { + constructor(recognizer) { + super({message: "", recognizer, input: recognizer.getInputStream(), ctx: recognizer._ctx}); + this.offendingToken = recognizer.getCurrentToken(); + } + }; + var InputMismatchException_default = InputMismatchException; + + // node_modules/antlr4/src/antlr4/error/FailedPredicateException.js + init_process_shim(); + var FailedPredicateException2 = class extends RecognitionException_default { + constructor(recognizer, predicate, message) { + super({ + message: formatMessage(predicate, message || null), + recognizer, + input: recognizer.getInputStream(), + ctx: recognizer._ctx + }); + const s = recognizer._interp.atn.states[recognizer.state]; + const trans = s.transitions[0]; + if (trans instanceof PredicateTransition_default) { + this.ruleIndex = trans.ruleIndex; + this.predicateIndex = trans.predIndex; } else { - node = { - type: "UsingForDeclaration", - isGlobal, - typeName, - libraryName: this._toText(usingForObject.userDefinedTypeName(0)), - functions: [] - }; + this.ruleIndex = 0; + this.predicateIndex = 0; } - return this._addMeta(node, ctx); + this.predicate = predicate; + this.offendingToken = recognizer.getCurrentToken(); + } + }; + var FailedPredicateException_default = FailedPredicateException2; + function formatMessage(predicate, message) { + if (message !== null) { + return message; + } else { + return "failed predicate: {" + predicate + "}?"; + } + } + + // node_modules/antlr4/src/antlr4/error/DiagnosticErrorListener.js + init_process_shim(); + var DiagnosticErrorListener = class extends ErrorListener_default { + constructor(exactOnly) { + super(); + exactOnly = exactOnly || true; + this.exactOnly = exactOnly; + } + reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) { + if (this.exactOnly && !exact) { + return; + } + const msg = "reportAmbiguity d=" + this.getDecisionDescription(recognizer, dfa) + ": ambigAlts=" + this.getConflictingAlts(ambigAlts, configs) + ", input='" + recognizer.getTokenStream().getText(new Interval_default(startIndex, stopIndex)) + "'"; + recognizer.notifyErrorListeners(msg); + } + reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) { + const msg = "reportAttemptingFullContext d=" + this.getDecisionDescription(recognizer, dfa) + ", input='" + recognizer.getTokenStream().getText(new Interval_default(startIndex, stopIndex)) + "'"; + recognizer.notifyErrorListeners(msg); + } + reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) { + const msg = "reportContextSensitivity d=" + this.getDecisionDescription(recognizer, dfa) + ", input='" + recognizer.getTokenStream().getText(new Interval_default(startIndex, stopIndex)) + "'"; + recognizer.notifyErrorListeners(msg); + } + getDecisionDescription(recognizer, dfa) { + const decision = dfa.decision; + const ruleIndex = dfa.atnStartState.ruleIndex; + const ruleNames = recognizer.ruleNames; + if (ruleIndex < 0 || ruleIndex >= ruleNames.length) { + return "" + decision; + } + const ruleName = ruleNames[ruleIndex] || null; + if (ruleName === null || ruleName.length === 0) { + return "" + decision; + } + return `${decision} (${ruleName})`; + } + getConflictingAlts(reportedAlts, configs) { + if (reportedAlts !== null) { + return reportedAlts; + } + const result = new BitSet_default(); + for (let i = 0; i < configs.items.length; i++) { + result.add(configs.items[i].alt); + } + return `{${result.values().join(", ")}}`; + } + }; + var DiagnosticErrorListener_default = DiagnosticErrorListener; + + // node_modules/antlr4/src/antlr4/error/BailErrorStrategy.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/error/ParseCancellationException.js + init_process_shim(); + var ParseCancellationException = class extends Error { + constructor() { + super(); + Error.captureStackTrace(this, ParseCancellationException); + } + }; + var ParseCancellationException_default = ParseCancellationException; + + // node_modules/antlr4/src/antlr4/error/DefaultErrorStrategy.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/error/ErrorStrategy.js + init_process_shim(); + var ErrorStrategy = class { + reset(recognizer) { + } + recoverInline(recognizer) { + } + recover(recognizer, e) { + } + sync(recognizer) { + } + inErrorRecoveryMode(recognizer) { } - visitPragmaDirective(ctx) { - const versionContext = ctx.pragmaValue().version(); - let value = this._toText(ctx.pragmaValue()); - if (versionContext?.children !== void 0) { - value = versionContext.children.map((x) => this._toText(x)).join(" "); - } - const node = { - type: "PragmaDirective", - name: this._toText(ctx.pragmaName()), - value - }; - return this._addMeta(node, ctx); + reportError(recognizer) { } - visitInheritanceSpecifier(ctx) { - const exprList = ctx.expressionList(); - const args = exprList !== void 0 ? exprList.expression().map((x) => this.visitExpression(x)) : []; - const node = { - type: "InheritanceSpecifier", - baseName: this.visitUserDefinedTypeName(ctx.userDefinedTypeName()), - arguments: args - }; - return this._addMeta(node, ctx); + }; + var ErrorStrategy_default = ErrorStrategy; + + // node_modules/antlr4/src/antlr4/error/DefaultErrorStrategy.js + var DefaultErrorStrategy = class extends ErrorStrategy_default { + constructor() { + super(); + this.errorRecoveryMode = false; + this.lastErrorIndex = -1; + this.lastErrorStates = null; + this.nextTokensContext = null; + this.nextTokenState = 0; } - visitModifierInvocation(ctx) { - const exprList = ctx.expressionList(); - let args; - if (exprList != null) { - args = exprList.expression().map((x) => this.visit(x)); - } else if (ctx.children !== void 0 && ctx.children.length > 1) { - args = []; + reset(recognizer) { + this.endErrorCondition(recognizer); + } + beginErrorCondition(recognizer) { + this.errorRecoveryMode = true; + } + inErrorRecoveryMode(recognizer) { + return this.errorRecoveryMode; + } + endErrorCondition(recognizer) { + this.errorRecoveryMode = false; + this.lastErrorStates = null; + this.lastErrorIndex = -1; + } + reportMatch(recognizer) { + this.endErrorCondition(recognizer); + } + reportError(recognizer, e) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + this.beginErrorCondition(recognizer); + if (e instanceof NoViableAltException_default) { + this.reportNoViableAlternative(recognizer, e); + } else if (e instanceof InputMismatchException_default) { + this.reportInputMismatch(recognizer, e); + } else if (e instanceof FailedPredicateException_default) { + this.reportFailedPredicate(recognizer, e); } else { - args = null; + console.log("unknown recognition error type: " + e.constructor.name); + console.log(e.stack); + recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e); } - const node = { - type: "ModifierInvocation", - name: this._toText(ctx.identifier()), - arguments: args - }; - return this._addMeta(node, ctx); } - visitFunctionTypeName(ctx) { - const parameterTypes = ctx.functionTypeParameterList(0).functionTypeParameter().map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)); - let returnTypes = []; - if (ctx.functionTypeParameterList().length > 1) { - returnTypes = ctx.functionTypeParameterList(1).functionTypeParameter().map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)); + recover(recognizer, e) { + if (this.lastErrorIndex === recognizer.getInputStream().index && this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state) >= 0) { + recognizer.consume(); } - let visibility = "default"; - if (ctx.InternalKeyword().length > 0) { - visibility = "internal"; - } else if (ctx.ExternalKeyword().length > 0) { - visibility = "external"; + this.lastErrorIndex = recognizer._input.index; + if (this.lastErrorStates === null) { + this.lastErrorStates = []; } - let stateMutability = null; - if (ctx.stateMutability().length > 0) { - stateMutability = this._toText(ctx.stateMutability(0)); + this.lastErrorStates.push(recognizer.state); + const followSet = this.getErrorRecoverySet(recognizer); + this.consumeUntil(recognizer, followSet); + } + sync(recognizer) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + const s = recognizer._interp.atn.states[recognizer.state]; + const la = recognizer.getTokenStream().LA(1); + const nextTokens = recognizer.atn.nextTokens(s); + if (nextTokens.contains(la)) { + this.nextTokensContext = null; + this.nextTokenState = ATNState_default.INVALID_STATE_NUMBER; + return; + } else if (nextTokens.contains(Token_default.EPSILON)) { + if (this.nextTokensContext === null) { + this.nextTokensContext = recognizer._ctx; + this.nextTokensState = recognizer._stateNumber; + } + return; + } + switch (s.stateType) { + case ATNState_default.BLOCK_START: + case ATNState_default.STAR_BLOCK_START: + case ATNState_default.PLUS_BLOCK_START: + case ATNState_default.STAR_LOOP_ENTRY: + if (this.singleTokenDeletion(recognizer) !== null) { + return; + } else { + throw new InputMismatchException_default(recognizer); + } + case ATNState_default.PLUS_LOOP_BACK: + case ATNState_default.STAR_LOOP_BACK: + { + this.reportUnwantedToken(recognizer); + const expecting = new IntervalSet_default(); + expecting.addSet(recognizer.getExpectedTokens()); + const whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer)); + this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule); + } + break; + default: } - const node = { - type: "FunctionTypeName", - parameterTypes, - returnTypes, - visibility, - stateMutability - }; - return this._addMeta(node, ctx); } - visitFunctionTypeParameter(ctx) { - let storageLocation = null; - if (ctx.storageLocation()) { - storageLocation = this._toText(ctx.storageLocation()); + reportNoViableAlternative(recognizer, e) { + const tokens2 = recognizer.getTokenStream(); + let input; + if (tokens2 !== null) { + if (e.startToken.type === Token_default.EOF) { + input = ""; + } else { + input = tokens2.getText(new Interval_default(e.startToken.tokenIndex, e.offendingToken.tokenIndex)); + } + } else { + input = ""; } - const node = { - type: "VariableDeclaration", - typeName: this.visitTypeName(ctx.typeName()), - name: null, - identifier: null, - storageLocation, - isStateVar: false, - isIndexed: false, - expression: null - }; - return this._addMeta(node, ctx); + const msg = "no viable alternative at input " + this.escapeWSAndQuote(input); + recognizer.notifyErrorListeners(msg, e.offendingToken, e); } - visitThrowStatement(ctx) { - const node = { - type: "ThrowStatement" - }; - return this._addMeta(node, ctx); + reportInputMismatch(recognizer, e) { + const msg = "mismatched input " + this.getTokenErrorDisplay(e.offendingToken) + " expecting " + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames); + recognizer.notifyErrorListeners(msg, e.offendingToken, e); } - visitReturnStatement(ctx) { - let expression = null; - const ctxExpression = ctx.expression(); - if (ctxExpression) { - expression = this.visitExpression(ctxExpression); + reportFailedPredicate(recognizer, e) { + const ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex]; + const msg = "rule " + ruleName + " " + e.message; + recognizer.notifyErrorListeners(msg, e.offendingToken, e); + } + reportUnwantedToken(recognizer) { + if (this.inErrorRecoveryMode(recognizer)) { + return; } - const node = { - type: "ReturnStatement", - expression - }; - return this._addMeta(node, ctx); + this.beginErrorCondition(recognizer); + const t = recognizer.getCurrentToken(); + const tokenName = this.getTokenErrorDisplay(t); + const expecting = this.getExpectedTokens(recognizer); + const msg = "extraneous input " + tokenName + " expecting " + expecting.toString(recognizer.literalNames, recognizer.symbolicNames); + recognizer.notifyErrorListeners(msg, t, null); } - visitEmitStatement(ctx) { - const node = { - type: "EmitStatement", - eventCall: this.visitFunctionCall(ctx.functionCall()) - }; - return this._addMeta(node, ctx); + reportMissingToken(recognizer) { + if (this.inErrorRecoveryMode(recognizer)) { + return; + } + this.beginErrorCondition(recognizer); + const t = recognizer.getCurrentToken(); + const expecting = this.getExpectedTokens(recognizer); + const msg = "missing " + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) + " at " + this.getTokenErrorDisplay(t); + recognizer.notifyErrorListeners(msg, t, null); + } + recoverInline(recognizer) { + const matchedSymbol = this.singleTokenDeletion(recognizer); + if (matchedSymbol !== null) { + recognizer.consume(); + return matchedSymbol; + } + if (this.singleTokenInsertion(recognizer)) { + return this.getMissingSymbol(recognizer); + } + throw new InputMismatchException_default(recognizer); + } + singleTokenInsertion(recognizer) { + const currentSymbolType = recognizer.getTokenStream().LA(1); + const atn = recognizer._interp.atn; + const currentState = atn.states[recognizer.state]; + const next = currentState.transitions[0].target; + const expectingAtLL2 = atn.nextTokens(next, recognizer._ctx); + if (expectingAtLL2.contains(currentSymbolType)) { + this.reportMissingToken(recognizer); + return true; + } else { + return false; + } } - visitCustomErrorDefinition(ctx) { - const node = { - type: "CustomErrorDefinition", - name: this._toText(ctx.identifier()), - parameters: this.visitParameterList(ctx.parameterList()) - }; - return this._addMeta(node, ctx); + singleTokenDeletion(recognizer) { + const nextTokenType = recognizer.getTokenStream().LA(2); + const expecting = this.getExpectedTokens(recognizer); + if (expecting.contains(nextTokenType)) { + this.reportUnwantedToken(recognizer); + recognizer.consume(); + const matchedSymbol = recognizer.getCurrentToken(); + this.reportMatch(recognizer); + return matchedSymbol; + } else { + return null; + } } - visitTypeDefinition(ctx) { - const node = { - type: "TypeDefinition", - name: this._toText(ctx.identifier()), - definition: this.visitElementaryTypeName(ctx.elementaryTypeName()) - }; - return this._addMeta(node, ctx); + getMissingSymbol(recognizer) { + const currentSymbol = recognizer.getCurrentToken(); + const expecting = this.getExpectedTokens(recognizer); + const expectedTokenType = expecting.first(); + let tokenText; + if (expectedTokenType === Token_default.EOF) { + tokenText = ""; + } else { + tokenText = ""; + } + let current = currentSymbol; + const lookback = recognizer.getTokenStream().LT(-1); + if (current.type === Token_default.EOF && lookback !== null) { + current = lookback; + } + return recognizer.getTokenFactory().create(current.source, expectedTokenType, tokenText, Token_default.DEFAULT_CHANNEL, -1, -1, current.line, current.column); } - visitRevertStatement(ctx) { - const node = { - type: "RevertStatement", - revertCall: this.visitFunctionCall(ctx.functionCall()) - }; - return this._addMeta(node, ctx); + getExpectedTokens(recognizer) { + return recognizer.getExpectedTokens(); } - visitFunctionCall(ctx) { - let args = []; - const names = []; - const identifiers = []; - const ctxArgs = ctx.functionCallArguments(); - const ctxArgsExpressionList = ctxArgs.expressionList(); - const ctxArgsNameValueList = ctxArgs.nameValueList(); - if (ctxArgsExpressionList) { - args = ctxArgsExpressionList.expression().map((exprCtx) => this.visitExpression(exprCtx)); - } else if (ctxArgsNameValueList) { - for (const nameValue of ctxArgsNameValueList.nameValue()) { - args.push(this.visitExpression(nameValue.expression())); - names.push(this._toText(nameValue.identifier())); - identifiers.push(this.visitIdentifier(nameValue.identifier())); + getTokenErrorDisplay(t) { + if (t === null) { + return ""; + } + let s = t.text; + if (s === null) { + if (t.type === Token_default.EOF) { + s = ""; + } else { + s = "<" + t.type + ">"; } } - const node = { - type: "FunctionCall", - expression: this.visitExpression(ctx.expression()), - arguments: args, - names, - identifiers - }; - return this._addMeta(node, ctx); - } - visitStructDefinition(ctx) { - const node = { - type: "StructDefinition", - name: this._toText(ctx.identifier()), - members: ctx.variableDeclaration().map((x) => this.visitVariableDeclaration(x)) - }; - return this._addMeta(node, ctx); - } - visitWhileStatement(ctx) { - const node = { - type: "WhileStatement", - condition: this.visitExpression(ctx.expression()), - body: this.visitStatement(ctx.statement()) - }; - return this._addMeta(node, ctx); + return this.escapeWSAndQuote(s); } - visitDoWhileStatement(ctx) { - const node = { - type: "DoWhileStatement", - condition: this.visitExpression(ctx.expression()), - body: this.visitStatement(ctx.statement()) - }; - return this._addMeta(node, ctx); + escapeWSAndQuote(s) { + s = s.replace(/\n/g, "\\n"); + s = s.replace(/\r/g, "\\r"); + s = s.replace(/\t/g, "\\t"); + return "'" + s + "'"; } - visitIfStatement(ctx) { - const trueBody = this.visitStatement(ctx.statement(0)); - let falseBody = null; - if (ctx.statement().length > 1) { - falseBody = this.visitStatement(ctx.statement(1)); + getErrorRecoverySet(recognizer) { + const atn = recognizer._interp.atn; + let ctx = recognizer._ctx; + const recoverSet = new IntervalSet_default(); + while (ctx !== null && ctx.invokingState >= 0) { + const invokingState = atn.states[ctx.invokingState]; + const rt = invokingState.transitions[0]; + const follow = atn.nextTokens(rt.followState); + recoverSet.addSet(follow); + ctx = ctx.parentCtx; } - const node = { - type: "IfStatement", - condition: this.visitExpression(ctx.expression()), - trueBody, - falseBody - }; - return this._addMeta(node, ctx); + recoverSet.removeOne(Token_default.EPSILON); + return recoverSet; } - visitTryStatement(ctx) { - let returnParameters = null; - const ctxReturnParameters = ctx.returnParameters(); - if (ctxReturnParameters !== void 0) { - returnParameters = this.visitReturnParameters(ctxReturnParameters); + consumeUntil(recognizer, set) { + let ttype = recognizer.getTokenStream().LA(1); + while (ttype !== Token_default.EOF && !set.contains(ttype)) { + recognizer.consume(); + ttype = recognizer.getTokenStream().LA(1); } - const catchClauses = ctx.catchClause().map((exprCtx) => this.visitCatchClause(exprCtx)); - const node = { - type: "TryStatement", - expression: this.visitExpression(ctx.expression()), - returnParameters, - body: this.visitBlock(ctx.block()), - catchClauses - }; - return this._addMeta(node, ctx); } - visitCatchClause(ctx) { - let parameters = null; - if (ctx.parameterList()) { - parameters = this.visitParameterList(ctx.parameterList()); - } - if (ctx.identifier() && this._toText(ctx.identifier()) !== "Error" && this._toText(ctx.identifier()) !== "Panic") { - throw new Error('Expected "Error" or "Panic" identifier in catch clause'); - } - let kind = null; - const ctxIdentifier = ctx.identifier(); - if (ctxIdentifier !== void 0) { - kind = this._toText(ctxIdentifier); - } - const node = { - type: "CatchClause", - isReasonStringType: kind === "Error", - kind, - parameters, - body: this.visitBlock(ctx.block()) - }; - return this._addMeta(node, ctx); + }; + var DefaultErrorStrategy_default = DefaultErrorStrategy; + + // node_modules/antlr4/src/antlr4/error/BailErrorStrategy.js + var BailErrorStrategy = class extends DefaultErrorStrategy_default { + constructor() { + super(); } - visitExpressionStatement(ctx) { - if (!ctx) { - return null; + recover(recognizer, e) { + let context = recognizer._ctx; + while (context !== null) { + context.exception = e; + context = context.parentCtx; } - const node = { - type: "ExpressionStatement", - expression: this.visitExpression(ctx.expression()) - }; - return this._addMeta(node, ctx); + throw new ParseCancellationException_default(e); } - visitNumberLiteral(ctx) { - const number = this._toText(ctx.getChild(0)); - let subdenomination = null; - if (ctx.children?.length === 2) { - subdenomination = this._toText(ctx.getChild(1)); - } - const node = { - type: "NumberLiteral", - number, - subdenomination - }; - return this._addMeta(node, ctx); + recoverInline(recognizer) { + this.recover(recognizer, new InputMismatchException_default(recognizer)); } - visitMappingKey(ctx) { - if (ctx.elementaryTypeName()) { - return this.visitElementaryTypeName(ctx.elementaryTypeName()); - } else if (ctx.userDefinedTypeName()) { - return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()); + sync(recognizer) { + } + }; + var BailErrorStrategy_default = BailErrorStrategy; + + // node_modules/antlr4/src/antlr4/error/index.js + var error_default = { + RecognitionException: RecognitionException_default, + NoViableAltException: NoViableAltException_default, + LexerNoViableAltException: LexerNoViableAltException_default, + InputMismatchException: InputMismatchException_default, + FailedPredicateException: FailedPredicateException_default, + DiagnosticErrorListener: DiagnosticErrorListener_default, + BailErrorStrategy: BailErrorStrategy_default, + DefaultErrorStrategy: DefaultErrorStrategy_default, + ErrorListener: ErrorListener_default + }; + + // node_modules/antlr4/src/antlr4/CharStreams.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/InputStream.js + init_process_shim(); + var InputStream = class { + constructor(data, decodeToUnicodeCodePoints) { + this.name = ""; + this.strdata = data; + this.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false; + this._index = 0; + this.data = []; + if (this.decodeToUnicodeCodePoints) { + for (let i = 0; i < this.strdata.length; ) { + const codePoint = this.strdata.codePointAt(i); + this.data.push(codePoint); + i += codePoint <= 65535 ? 1 : 2; + } } else { - throw new Error("Expected MappingKey to have either elementaryTypeName or userDefinedTypeName"); + this.data = new Array(this.strdata.length); + for (let i = 0; i < this.strdata.length; i++) { + const codeUnit = this.strdata.charCodeAt(i); + this.data[i] = codeUnit; + } } + this._size = this.data.length; } - visitMapping(ctx) { - const node = { - type: "Mapping", - keyType: this.visitMappingKey(ctx.mappingKey()), - valueType: this.visitTypeName(ctx.typeName()) - }; - return this._addMeta(node, ctx); + reset() { + this._index = 0; } - visitModifierDefinition(ctx) { - let parameters = null; - if (ctx.parameterList()) { - parameters = this.visitParameterList(ctx.parameterList()); + consume() { + if (this._index >= this._size) { + throw "cannot consume EOF"; } - let isVirtual = false; - if (ctx.VirtualKeyword().length > 0) { - isVirtual = true; + this._index += 1; + } + LA(offset) { + if (offset === 0) { + return 0; } - let override; - const overrideSpecifier = ctx.overrideSpecifier(); - if (overrideSpecifier.length === 0) { - override = null; - } else { - override = overrideSpecifier[0].userDefinedTypeName().map((x) => this.visitUserDefinedTypeName(x)); + if (offset < 0) { + offset += 1; } - let body = null; - const blockCtx = ctx.block(); - if (blockCtx !== void 0) { - body = this.visitBlock(blockCtx); + const pos = this._index + offset - 1; + if (pos < 0 || pos >= this._size) { + return Token_default.EOF; } - const node = { - type: "ModifierDefinition", - name: this._toText(ctx.identifier()), - parameters, - body, - isVirtual, - override - }; - return this._addMeta(node, ctx); + return this.data[pos]; } - visitUncheckedStatement(ctx) { - const node = { - type: "UncheckedStatement", - block: this.visitBlock(ctx.block()) - }; - return this._addMeta(node, ctx); + LT(offset) { + return this.LA(offset); } - visitExpression(ctx) { - let op; - switch (ctx.children.length) { - case 1: { - const primaryExpressionCtx = ctx.tryGetRuleContext(0, PrimaryExpressionContext); - if (primaryExpressionCtx === void 0) { - throw new Error("Assertion error: primary expression should exist when children length is 1"); + mark() { + return -1; + } + release(marker) { + } + seek(_index) { + if (_index <= this._index) { + this._index = _index; + return; + } + this._index = Math.min(_index, this._size); + } + getText(start, stop) { + if (stop >= this._size) { + stop = this._size - 1; + } + if (start >= this._size) { + return ""; + } else { + if (this.decodeToUnicodeCodePoints) { + let result = ""; + for (let i = start; i <= stop; i++) { + result += String.fromCodePoint(this.data[i]); } - return this.visitPrimaryExpression(primaryExpressionCtx); + return result; + } else { + return this.strdata.slice(start, stop + 1); } - case 2: - op = this._toText(ctx.getChild(0)); - if (op === "new") { - const node = { - type: "NewExpression", - typeName: this.visitTypeName(ctx.typeName()) - }; - return this._addMeta(node, ctx); - } - if (unaryOpValues.includes(op)) { - const node = { - type: "UnaryOperation", - operator: op, - subExpression: this.visitExpression(ctx.getRuleContext(0, ExpressionContext)), - isPrefix: true - }; - return this._addMeta(node, ctx); - } - op = this._toText(ctx.getChild(1)); - if (["++", "--"].includes(op)) { - const node = { - type: "UnaryOperation", - operator: op, - subExpression: this.visitExpression(ctx.getRuleContext(0, ExpressionContext)), - isPrefix: false - }; - return this._addMeta(node, ctx); - } - break; - case 3: - if (this._toText(ctx.getChild(0)) === "(" && this._toText(ctx.getChild(2)) === ")") { - const node = { - type: "TupleExpression", - components: [ - this.visitExpression(ctx.getRuleContext(0, ExpressionContext)) - ], - isArray: false - }; - return this._addMeta(node, ctx); - } - op = this._toText(ctx.getChild(1)); - if (op === ".") { - const node = { - type: "MemberAccess", - expression: this.visitExpression(ctx.expression(0)), - memberName: this._toText(ctx.identifier()) - }; - return this._addMeta(node, ctx); - } - if (isBinOp(op)) { - const node = { - type: "BinaryOperation", - operator: op, - left: this.visitExpression(ctx.expression(0)), - right: this.visitExpression(ctx.expression(1)) - }; - return this._addMeta(node, ctx); - } - break; - case 4: - if (this._toText(ctx.getChild(1)) === "(" && this._toText(ctx.getChild(3)) === ")") { - let args = []; - const names = []; - const identifiers = []; - const ctxArgs = ctx.functionCallArguments(); - if (ctxArgs.expressionList()) { - args = ctxArgs.expressionList().expression().map((exprCtx) => this.visitExpression(exprCtx)); - } else if (ctxArgs.nameValueList()) { - for (const nameValue of ctxArgs.nameValueList().nameValue()) { - args.push(this.visitExpression(nameValue.expression())); - names.push(this._toText(nameValue.identifier())); - identifiers.push(this.visitIdentifier(nameValue.identifier())); - } - } - const node = { - type: "FunctionCall", - expression: this.visitExpression(ctx.expression(0)), - arguments: args, - names, - identifiers - }; - return this._addMeta(node, ctx); - } - if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === "]") { - if (ctx.getChild(2).text === ":") { - const node2 = { - type: "IndexRangeAccess", - base: this.visitExpression(ctx.expression(0)) - }; - return this._addMeta(node2, ctx); - } - const node = { - type: "IndexAccess", - base: this.visitExpression(ctx.expression(0)), - index: this.visitExpression(ctx.expression(1)) - }; - return this._addMeta(node, ctx); - } - if (this._toText(ctx.getChild(1)) === "{" && this._toText(ctx.getChild(3)) === "}") { - const node = { - type: "NameValueExpression", - expression: this.visitExpression(ctx.expression(0)), - arguments: this.visitNameValueList(ctx.nameValueList()) - }; - return this._addMeta(node, ctx); - } - break; - case 5: - if (this._toText(ctx.getChild(1)) === "?" && this._toText(ctx.getChild(3)) === ":") { - const node = { - type: "Conditional", - condition: this.visitExpression(ctx.expression(0)), - trueExpression: this.visitExpression(ctx.expression(1)), - falseExpression: this.visitExpression(ctx.expression(2)) - }; - return this._addMeta(node, ctx); - } - if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(2)) === ":" && this._toText(ctx.getChild(4)) === "]") { - const node = { - type: "IndexRangeAccess", - base: this.visitExpression(ctx.expression(0)), - indexEnd: this.visitExpression(ctx.expression(1)) - }; - return this._addMeta(node, ctx); - } else if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === ":" && this._toText(ctx.getChild(4)) === "]") { - const node = { - type: "IndexRangeAccess", - base: this.visitExpression(ctx.expression(0)), - indexStart: this.visitExpression(ctx.expression(1)) - }; - return this._addMeta(node, ctx); - } - break; - case 6: - if (this._toText(ctx.getChild(1)) === "[" && this._toText(ctx.getChild(3)) === ":" && this._toText(ctx.getChild(5)) === "]") { - const node = { - type: "IndexRangeAccess", - base: this.visitExpression(ctx.expression(0)), - indexStart: this.visitExpression(ctx.expression(1)), - indexEnd: this.visitExpression(ctx.expression(2)) - }; - return this._addMeta(node, ctx); - } + } + } + toString() { + return this.strdata; + } + get index() { + return this._index; + } + get size() { + return this._size; + } + }; + var InputStream_default = InputStream; + + // node_modules/antlr4/src/antlr4/CharStreams.js + var import_fs = __toModule(require_fs()); + var CharStreams_default = { + fromString: function(str) { + return new InputStream_default(str, true); + }, + fromBlob: function(blob, encoding, onLoad, onError) { + const reader = new window.FileReader(); + reader.onload = function(e) { + const is = new InputStream_default(e.target.result, true); + onLoad(is); + }; + reader.onerror = onError; + reader.readAsText(blob, encoding); + }, + fromBuffer: function(buffer, encoding) { + return new InputStream_default(buffer.toString(encoding), true); + }, + fromPath: function(path, encoding, callback) { + import_fs.default.readFile(path, encoding, function(err, data) { + let is = null; + if (data !== null) { + is = new InputStream_default(data, true); + } + callback(err, is); + }); + }, + fromPathSync: function(path, encoding) { + const data = import_fs.default.readFileSync(path, encoding); + return new InputStream_default(data, true); + } + }; + + // node_modules/antlr4/src/antlr4/FileStream.js + init_process_shim(); + var import_fs2 = __toModule(require_fs()); + var FileStream = class extends InputStream_default { + constructor(fileName, decodeToUnicodeCodePoints) { + const data = import_fs2.default.readFileSync(fileName, "utf8"); + super(data, decodeToUnicodeCodePoints); + this.fileName = fileName; + } + }; + var FileStream_default = FileStream; + + // node_modules/antlr4/src/antlr4/CommonTokenStream.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/BufferedTokenStream.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/TokenStream.js + init_process_shim(); + var TokenStream = class { + }; + var TokenStream_default = TokenStream; + + // node_modules/antlr4/src/antlr4/BufferedTokenStream.js + var BufferedTokenStream = class extends TokenStream_default { + constructor(tokenSource) { + super(); + this.tokenSource = tokenSource; + this.tokens = []; + this.index = -1; + this.fetchedEOF = false; + } + mark() { + return 0; + } + release(marker) { + } + reset() { + this.seek(0); + } + seek(index) { + this.lazyInit(); + this.index = this.adjustSeekIndex(index); + } + get(index) { + this.lazyInit(); + return this.tokens[index]; + } + consume() { + let skipEofCheck = false; + if (this.index >= 0) { + if (this.fetchedEOF) { + skipEofCheck = this.index < this.tokens.length - 1; + } else { + skipEofCheck = this.index < this.tokens.length; + } + } else { + skipEofCheck = false; + } + if (!skipEofCheck && this.LA(1) === Token_default.EOF) { + throw "cannot consume EOF"; + } + if (this.sync(this.index + 1)) { + this.index = this.adjustSeekIndex(this.index + 1); + } + } + sync(i) { + const n = i - this.tokens.length + 1; + if (n > 0) { + const fetched = this.fetch(n); + return fetched >= n; + } + return true; + } + fetch(n) { + if (this.fetchedEOF) { + return 0; + } + for (let i = 0; i < n; i++) { + const t = this.tokenSource.nextToken(); + t.tokenIndex = this.tokens.length; + this.tokens.push(t); + if (t.type === Token_default.EOF) { + this.fetchedEOF = true; + return i + 1; + } + } + return n; + } + getTokens(start, stop, types) { + if (types === void 0) { + types = null; + } + if (start < 0 || stop < 0) { + return null; + } + this.lazyInit(); + const subset = []; + if (stop >= this.tokens.length) { + stop = this.tokens.length - 1; + } + for (let i = start; i < stop; i++) { + const t = this.tokens[i]; + if (t.type === Token_default.EOF) { break; + } + if (types === null || types.contains(t.type)) { + subset.push(t); + } } - throw new Error("Unrecognized expression"); + return subset; } - visitNameValueList(ctx) { - const names = []; - const identifiers = []; - const args = []; - for (const nameValue of ctx.nameValue()) { - names.push(this._toText(nameValue.identifier())); - identifiers.push(this.visitIdentifier(nameValue.identifier())); - args.push(this.visitExpression(nameValue.expression())); + LA(i) { + return this.LT(i).type; + } + LB(k) { + if (this.index - k < 0) { + return null; } - const node = { - type: "NameValueList", - names, - identifiers, - arguments: args - }; - return this._addMeta(node, ctx); + return this.tokens[this.index - k]; } - visitFileLevelConstant(ctx) { - const type = this.visitTypeName(ctx.typeName()); - const iden = ctx.identifier(); - const name = this._toText(iden); - const expression = this.visitExpression(ctx.expression()); - const node = { - type: "FileLevelConstant", - typeName: type, - name, - initialValue: expression, - isDeclaredConst: true, - isImmutable: false - }; - return this._addMeta(node, ctx); + LT(k) { + this.lazyInit(); + if (k === 0) { + return null; + } + if (k < 0) { + return this.LB(-k); + } + const i = this.index + k - 1; + this.sync(i); + if (i >= this.tokens.length) { + return this.tokens[this.tokens.length - 1]; + } + return this.tokens[i]; } - visitForStatement(ctx) { - let conditionExpression = this.visitExpressionStatement(ctx.expressionStatement()); - if (conditionExpression) { - conditionExpression = conditionExpression.expression; + adjustSeekIndex(i) { + return i; + } + lazyInit() { + if (this.index === -1) { + this.setup(); } - const node = { - type: "ForStatement", - initExpression: ctx.simpleStatement() ? this.visitSimpleStatement(ctx.simpleStatement()) : null, - conditionExpression, - loopExpression: { - type: "ExpressionStatement", - expression: ctx.expression() !== void 0 ? this.visitExpression(ctx.expression()) : null - }, - body: this.visitStatement(ctx.statement()) - }; - return this._addMeta(node, ctx); } - visitHexLiteral(ctx) { - const parts = ctx.HexLiteralFragment().map((x) => this._toText(x)).map((x) => x.substring(4, x.length - 1)); - const node = { - type: "HexLiteral", - value: parts.join(""), - parts - }; - return this._addMeta(node, ctx); + setup() { + this.sync(0); + this.index = this.adjustSeekIndex(0); } - visitPrimaryExpression(ctx) { - if (ctx.BooleanLiteral()) { - const node = { - type: "BooleanLiteral", - value: this._toText(ctx.BooleanLiteral()) === "true" - }; - return this._addMeta(node, ctx); + setTokenSource(tokenSource) { + this.tokenSource = tokenSource; + this.tokens = []; + this.index = -1; + this.fetchedEOF = false; + } + nextTokenOnChannel(i, channel) { + this.sync(i); + if (i >= this.tokens.length) { + return -1; } - if (ctx.hexLiteral()) { - return this.visitHexLiteral(ctx.hexLiteral()); + let token = this.tokens[i]; + while (token.channel !== this.channel) { + if (token.type === Token_default.EOF) { + return -1; + } + i += 1; + this.sync(i); + token = this.tokens[i]; } - if (ctx.stringLiteral()) { - const fragments = ctx.stringLiteral().StringLiteralFragment().map((stringLiteralFragmentCtx) => { - let text = this._toText(stringLiteralFragmentCtx); - const isUnicode = text.slice(0, 7) === "unicode"; - if (isUnicode) { - text = text.slice(7); - } - const singleQuotes = text[0] === "'"; - const textWithoutQuotes = text.substring(1, text.length - 1); - const value = singleQuotes ? textWithoutQuotes.replace(new RegExp("\\\\'", "g"), "'") : textWithoutQuotes.replace(new RegExp('\\\\"', "g"), '"'); - return {value, isUnicode}; - }); - const parts = fragments.map((x) => x.value); - const node = { - type: "StringLiteral", - value: parts.join(""), - parts, - isUnicode: fragments.map((x) => x.isUnicode) - }; - return this._addMeta(node, ctx); + return i; + } + previousTokenOnChannel(i, channel) { + while (i >= 0 && this.tokens[i].channel !== channel) { + i -= 1; } - if (ctx.numberLiteral()) { - return this.visitNumberLiteral(ctx.numberLiteral()); + return i; + } + getHiddenTokensToRight(tokenIndex, channel) { + if (channel === void 0) { + channel = -1; } - if (ctx.TypeKeyword()) { - const node = { - type: "Identifier", - name: "type" - }; - return this._addMeta(node, ctx); + this.lazyInit(); + if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { + throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1; } - if (ctx.typeName()) { - return this.visitTypeName(ctx.typeName()); + const nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer_default.DEFAULT_TOKEN_CHANNEL); + const from_ = tokenIndex + 1; + const to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel; + return this.filterForChannel(from_, to, channel); + } + getHiddenTokensToLeft(tokenIndex, channel) { + if (channel === void 0) { + channel = -1; } - return this.visit(ctx.getChild(0)); + this.lazyInit(); + if (tokenIndex < 0 || tokenIndex >= this.tokens.length) { + throw "" + tokenIndex + " not in 0.." + this.tokens.length - 1; + } + const prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer_default.DEFAULT_TOKEN_CHANNEL); + if (prevOnChannel === tokenIndex - 1) { + return null; + } + const from_ = prevOnChannel + 1; + const to = tokenIndex - 1; + return this.filterForChannel(from_, to, channel); } - visitTupleExpression(ctx) { - const children = ctx.children.slice(1, -1); - const components = this._mapCommasToNulls(children).map((expr) => { - if (expr === null) { - return null; + filterForChannel(left, right, channel) { + const hidden = []; + for (let i = left; i < right + 1; i++) { + const t = this.tokens[i]; + if (channel === -1) { + if (t.channel !== Lexer_default.DEFAULT_TOKEN_CHANNEL) { + hidden.push(t); + } + } else if (t.channel === channel) { + hidden.push(t); } - return this.visit(expr); - }); - const node = { - type: "TupleExpression", - components, - isArray: this._toText(ctx.getChild(0)) === "[" - }; - return this._addMeta(node, ctx); + } + if (hidden.length === 0) { + return null; + } + return hidden; } - buildIdentifierList(ctx) { - const children = ctx.children.slice(1, -1); - const identifiers = ctx.identifier(); - let i = 0; - return this._mapCommasToNulls(children).map((idenOrNull) => { - if (!idenOrNull) { - return null; + getSourceName() { + return this.tokenSource.getSourceName(); + } + getText(interval) { + this.lazyInit(); + this.fill(); + if (interval === void 0 || interval === null) { + interval = new Interval_default(0, this.tokens.length - 1); + } + let start = interval.start; + if (start instanceof Token_default) { + start = start.tokenIndex; + } + let stop = interval.stop; + if (stop instanceof Token_default) { + stop = stop.tokenIndex; + } + if (start === null || stop === null || start < 0 || stop < 0) { + return ""; + } + if (stop >= this.tokens.length) { + stop = this.tokens.length - 1; + } + let s = ""; + for (let i = start; i < stop + 1; i++) { + const t = this.tokens[i]; + if (t.type === Token_default.EOF) { + break; } - const iden = identifiers[i]; - i++; - const node = { - type: "VariableDeclaration", - name: this._toText(iden), - identifier: this.visitIdentifier(iden), - isStateVar: false, - isIndexed: false, - typeName: null, - storageLocation: null, - expression: null - }; - return this._addMeta(node, iden); - }); + s = s + t.text; + } + return s; } - buildVariableDeclarationList(ctx) { - const variableDeclarations = ctx.variableDeclaration(); - let i = 0; - return this._mapCommasToNulls(ctx.children).map((declOrNull) => { - if (!declOrNull) { - return null; + fill() { + this.lazyInit(); + while (this.fetch(1e3) === 1e3) { + continue; + } + } + }; + var BufferedTokenStream_default = BufferedTokenStream; + + // node_modules/antlr4/src/antlr4/CommonTokenStream.js + var CommonTokenStream = class extends BufferedTokenStream_default { + constructor(lexer, channel) { + super(lexer); + this.channel = channel === void 0 ? Token_default.DEFAULT_CHANNEL : channel; + } + adjustSeekIndex(i) { + return this.nextTokenOnChannel(i, this.channel); + } + LB(k) { + if (k === 0 || this.index - k < 0) { + return null; + } + let i = this.index; + let n = 1; + while (n <= k) { + i = this.previousTokenOnChannel(i - 1, this.channel); + n += 1; + } + if (i < 0) { + return null; + } + return this.tokens[i]; + } + LT(k) { + this.lazyInit(); + if (k === 0) { + return null; + } + if (k < 0) { + return this.LB(-k); + } + let i = this.index; + let n = 1; + while (n < k) { + if (this.sync(i + 1)) { + i = this.nextTokenOnChannel(i + 1, this.channel); } - const decl = variableDeclarations[i]; - i++; - let storageLocation = null; - if (decl.storageLocation()) { - storageLocation = this._toText(decl.storageLocation()); + n += 1; + } + return this.tokens[i]; + } + getNumberOfOnChannelTokens() { + let n = 0; + this.fill(); + for (let i = 0; i < this.tokens.length; i++) { + const t = this.tokens[i]; + if (t.channel === this.channel) { + n += 1; + } + if (t.type === Token_default.EOF) { + break; + } + } + return n; + } + }; + var CommonTokenStream_default = CommonTokenStream; + + // node_modules/antlr4/src/antlr4/Parser.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/TraceListener.js + init_process_shim(); + var TraceListener = class extends ParseTreeListener_default { + constructor(parser) { + super(); + this.parser = parser; + } + enterEveryRule(ctx) { + console.log("enter " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text); + } + visitTerminal(node) { + console.log("consume " + node.symbol + " rule " + this.parser.ruleNames[this.parser._ctx.ruleIndex]); + } + exitEveryRule(ctx) { + console.log("exit " + this.parser.ruleNames[ctx.ruleIndex] + ", LT(1)=" + this.parser._input.LT(1).text); + } + }; + var TraceListener_default = TraceListener; + + // node_modules/antlr4/src/antlr4/Parser.js + var Parser2 = class extends Recognizer_default { + constructor(input) { + super(); + this._input = null; + this._errHandler = new DefaultErrorStrategy_default(); + this._precedenceStack = []; + this._precedenceStack.push(0); + this._ctx = null; + this.buildParseTrees = true; + this._tracer = null; + this._parseListeners = null; + this._syntaxErrors = 0; + this.setInputStream(input); + } + reset() { + if (this._input !== null) { + this._input.seek(0); + } + this._errHandler.reset(this); + this._ctx = null; + this._syntaxErrors = 0; + this.setTrace(false); + this._precedenceStack = []; + this._precedenceStack.push(0); + if (this._interp !== null) { + this._interp.reset(); + } + } + match(ttype) { + let t = this.getCurrentToken(); + if (t.type === ttype) { + this._errHandler.reportMatch(this); + this.consume(); + } else { + t = this._errHandler.recoverInline(this); + if (this.buildParseTrees && t.tokenIndex === -1) { + this._ctx.addErrorNode(t); } - const identifierCtx = decl.identifier(); - const result = { - type: "VariableDeclaration", - name: this._toText(identifierCtx), - identifier: this.visitIdentifier(identifierCtx), - typeName: this.visitTypeName(decl.typeName()), - storageLocation, - isStateVar: false, - isIndexed: false, - expression: null - }; - return this._addMeta(result, decl); - }); + } + return t; } - visitImportDirective(ctx) { - const pathString = this._toText(ctx.importPath()); - let unitAlias = null; - let unitAliasIdentifier = null; - let symbolAliases = null; - let symbolAliasesIdentifiers = null; - if (ctx.importDeclaration().length > 0) { - symbolAliases = ctx.importDeclaration().map((decl) => { - const symbol = this._toText(decl.identifier(0)); - let alias = null; - if (decl.identifier().length > 1) { - alias = this._toText(decl.identifier(1)); - } - return [symbol, alias]; - }); - symbolAliasesIdentifiers = ctx.importDeclaration().map((decl) => { - const symbolIdentifier = this.visitIdentifier(decl.identifier(0)); - let aliasIdentifier = null; - if (decl.identifier().length > 1) { - aliasIdentifier = this.visitIdentifier(decl.identifier(1)); - } - return [symbolIdentifier, aliasIdentifier]; - }); + matchWildcard() { + let t = this.getCurrentToken(); + if (t.type > 0) { + this._errHandler.reportMatch(this); + this.consume(); } else { - const identifierCtxList = ctx.identifier(); - if (identifierCtxList.length === 0) { - } else if (identifierCtxList.length === 1) { - const aliasIdentifierCtx = ctx.identifier(0); - unitAlias = this._toText(aliasIdentifierCtx); - unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx); - } else if (identifierCtxList.length === 2) { - const aliasIdentifierCtx = ctx.identifier(1); - unitAlias = this._toText(aliasIdentifierCtx); - unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx); - } else { - throw new Error("Assertion error: an import should have one or two identifiers"); + t = this._errHandler.recoverInline(this); + if (this._buildParseTrees && t.tokenIndex === -1) { + this._ctx.addErrorNode(t); } } - const path = pathString.substring(1, pathString.length - 1); - const pathLiteral = { - type: "StringLiteral", - value: path, - parts: [path], - isUnicode: [false] - }; - const node = { - type: "ImportDirective", - path, - pathLiteral: this._addMeta(pathLiteral, ctx.importPath()), - unitAlias, - unitAliasIdentifier, - symbolAliases, - symbolAliasesIdentifiers - }; - return this._addMeta(node, ctx); + return t; } - buildEventParameterList(ctx) { - return ctx.eventParameter().map((paramCtx) => { - const type = this.visit(paramCtx.typeName()); - let name = null; - if (paramCtx.identifier()) { - name = this._toText(paramCtx.identifier()); + getParseListeners() { + return this._parseListeners || []; + } + addParseListener(listener) { + if (listener === null) { + throw "listener"; + } + if (this._parseListeners === null) { + this._parseListeners = []; + } + this._parseListeners.push(listener); + } + removeParseListener(listener) { + if (this._parseListeners !== null) { + const idx = this._parseListeners.indexOf(listener); + if (idx >= 0) { + this._parseListeners.splice(idx, 1); } - return { - type: "VariableDeclaration", - typeName: type, - name, - isStateVar: false, - isIndexed: !!paramCtx.IndexedKeyword(0) - }; - }); + if (this._parseListeners.length === 0) { + this._parseListeners = null; + } + } } - visitReturnParameters(ctx) { - return this.visitParameterList(ctx.parameterList()); + removeParseListeners() { + this._parseListeners = null; } - visitParameterList(ctx) { - return ctx.parameter().map((paramCtx) => this.visitParameter(paramCtx)); + triggerEnterRuleEvent() { + if (this._parseListeners !== null) { + const ctx = this._ctx; + this._parseListeners.forEach(function(listener) { + listener.enterEveryRule(ctx); + ctx.enterRule(listener); + }); + } } - visitInlineAssemblyStatement(ctx) { - let language = null; - if (ctx.StringLiteralFragment()) { - language = this._toText(ctx.StringLiteralFragment()); - language = language.substring(1, language.length - 1); + triggerExitRuleEvent() { + if (this._parseListeners !== null) { + const ctx = this._ctx; + this._parseListeners.slice(0).reverse().forEach(function(listener) { + ctx.exitRule(listener); + listener.exitEveryRule(ctx); + }); } - const flags = []; - const flag = ctx.inlineAssemblyStatementFlag(); - if (flag !== void 0) { - const flagString = this._toText(flag.stringLiteral()); - flags.push(flagString.slice(1, flagString.length - 1)); + } + getTokenFactory() { + return this._input.tokenSource._factory; + } + setTokenFactory(factory) { + this._input.tokenSource._factory = factory; + } + getATNWithBypassAlts() { + const serializedAtn = this.getSerializedATN(); + if (serializedAtn === null) { + throw "The current parser does not support an ATN with bypass alternatives."; } - const node = { - type: "InlineAssemblyStatement", - language, - flags, - body: this.visitAssemblyBlock(ctx.assemblyBlock()) - }; - return this._addMeta(node, ctx); + let result = this.bypassAltsAtnCache[serializedAtn]; + if (result === null) { + const deserializationOptions = new ATNDeserializationOptions_default(); + deserializationOptions.generateRuleBypassTransitions = true; + result = new ATNDeserializer_default(deserializationOptions).deserialize(serializedAtn); + this.bypassAltsAtnCache[serializedAtn] = result; + } + return result; } - visitAssemblyBlock(ctx) { - const operations = ctx.assemblyItem().map((item) => this.visitAssemblyItem(item)); - const node = { - type: "AssemblyBlock", - operations - }; - return this._addMeta(node, ctx); + getInputStream() { + return this.getTokenStream(); } - visitAssemblyItem(ctx) { - let text; - if (ctx.hexLiteral()) { - return this.visitHexLiteral(ctx.hexLiteral()); + setInputStream(input) { + this.setTokenStream(input); + } + getTokenStream() { + return this._input; + } + setTokenStream(input) { + this._input = null; + this.reset(); + this._input = input; + } + getCurrentToken() { + return this._input.LT(1); + } + notifyErrorListeners(msg, offendingToken, err) { + offendingToken = offendingToken || null; + err = err || null; + if (offendingToken === null) { + offendingToken = this.getCurrentToken(); } - if (ctx.stringLiteral()) { - text = this._toText(ctx.stringLiteral()); - const value = text.substring(1, text.length - 1); - const node = { - type: "StringLiteral", - value, - parts: [value], - isUnicode: [false] - }; - return this._addMeta(node, ctx); + this._syntaxErrors += 1; + const line = offendingToken.line; + const column = offendingToken.column; + const listener = this.getErrorListenerDispatch(); + listener.syntaxError(this, offendingToken, line, column, msg, err); + } + consume() { + const o = this.getCurrentToken(); + if (o.type !== Token_default.EOF) { + this.getInputStream().consume(); } - if (ctx.BreakKeyword()) { - const node = { - type: "Break" - }; - return this._addMeta(node, ctx); + const hasListener = this._parseListeners !== null && this._parseListeners.length > 0; + if (this.buildParseTrees || hasListener) { + let node; + if (this._errHandler.inErrorRecoveryMode(this)) { + node = this._ctx.addErrorNode(o); + } else { + node = this._ctx.addTokenNode(o); + } + node.invokingState = this.state; + if (hasListener) { + this._parseListeners.forEach(function(listener) { + if (node instanceof ErrorNode_default || node.isErrorNode !== void 0 && node.isErrorNode()) { + listener.visitErrorNode(node); + } else if (node instanceof TerminalNode_default) { + listener.visitTerminal(node); + } + }); + } } - if (ctx.ContinueKeyword()) { - const node = { - type: "Continue" - }; - return this._addMeta(node, ctx); + return o; + } + addContextToParseTree() { + if (this._ctx.parentCtx !== null) { + this._ctx.parentCtx.addChild(this._ctx); } - return this.visit(ctx.getChild(0)); } - visitAssemblyExpression(ctx) { - return this.visit(ctx.getChild(0)); + enterRule(localctx, state, ruleIndex) { + this.state = state; + this._ctx = localctx; + this._ctx.start = this._input.LT(1); + if (this.buildParseTrees) { + this.addContextToParseTree(); + } + this.triggerEnterRuleEvent(); } - visitAssemblyCall(ctx) { - const functionName = this._toText(ctx.getChild(0)); - const args = ctx.assemblyExpression().map((assemblyExpr) => this.visitAssemblyExpression(assemblyExpr)); - const node = { - type: "AssemblyCall", - functionName, - arguments: args - }; - return this._addMeta(node, ctx); + exitRule() { + this._ctx.stop = this._input.LT(-1); + this.triggerExitRuleEvent(); + this.state = this._ctx.invokingState; + this._ctx = this._ctx.parentCtx; } - visitAssemblyLiteral(ctx) { - let text; - if (ctx.stringLiteral()) { - text = this._toText(ctx); - const value = text.substring(1, text.length - 1); - const node = { - type: "StringLiteral", - value, - parts: [value], - isUnicode: [false] - }; - return this._addMeta(node, ctx); + enterOuterAlt(localctx, altNum) { + localctx.setAltNumber(altNum); + if (this.buildParseTrees && this._ctx !== localctx) { + if (this._ctx.parentCtx !== null) { + this._ctx.parentCtx.removeLastChild(); + this._ctx.parentCtx.addChild(localctx); + } } - if (ctx.DecimalNumber()) { - const node = { - type: "DecimalNumber", - value: this._toText(ctx) - }; - return this._addMeta(node, ctx); + this._ctx = localctx; + } + getPrecedence() { + if (this._precedenceStack.length === 0) { + return -1; + } else { + return this._precedenceStack[this._precedenceStack.length - 1]; + } + } + enterRecursionRule(localctx, state, ruleIndex, precedence) { + this.state = state; + this._precedenceStack.push(precedence); + this._ctx = localctx; + this._ctx.start = this._input.LT(1); + this.triggerEnterRuleEvent(); + } + pushNewRecursionContext(localctx, state, ruleIndex) { + const previous = this._ctx; + previous.parentCtx = localctx; + previous.invokingState = state; + previous.stop = this._input.LT(-1); + this._ctx = localctx; + this._ctx.start = previous.start; + if (this.buildParseTrees) { + this._ctx.addChild(previous); + } + this.triggerEnterRuleEvent(); + } + unrollRecursionContexts(parentCtx) { + this._precedenceStack.pop(); + this._ctx.stop = this._input.LT(-1); + const retCtx = this._ctx; + const parseListeners = this.getParseListeners(); + if (parseListeners !== null && parseListeners.length > 0) { + while (this._ctx !== parentCtx) { + this.triggerExitRuleEvent(); + this._ctx = this._ctx.parentCtx; + } + } else { + this._ctx = parentCtx; } - if (ctx.HexNumber()) { - const node = { - type: "HexNumber", - value: this._toText(ctx) - }; - return this._addMeta(node, ctx); + retCtx.parentCtx = parentCtx; + if (this.buildParseTrees && parentCtx !== null) { + parentCtx.addChild(retCtx); } - if (ctx.hexLiteral()) { - return this.visitHexLiteral(ctx.hexLiteral()); + } + getInvokingContext(ruleIndex) { + let ctx = this._ctx; + while (ctx !== null) { + if (ctx.ruleIndex === ruleIndex) { + return ctx; + } + ctx = ctx.parentCtx; } - throw new Error("Should never reach here"); + return null; } - visitAssemblySwitch(ctx) { - const node = { - type: "AssemblySwitch", - expression: this.visitAssemblyExpression(ctx.assemblyExpression()), - cases: ctx.assemblyCase().map((c) => this.visitAssemblyCase(c)) - }; - return this._addMeta(node, ctx); + precpred(localctx, precedence) { + return precedence >= this._precedenceStack[this._precedenceStack.length - 1]; } - visitAssemblyCase(ctx) { - let value = null; - if (this._toText(ctx.getChild(0)) === "case") { - value = this.visitAssemblyLiteral(ctx.assemblyLiteral()); - } - const node = { - type: "AssemblyCase", - block: this.visitAssemblyBlock(ctx.assemblyBlock()), - value, - default: value === null - }; - return this._addMeta(node, ctx); + inContext(context) { + return false; } - visitAssemblyLocalDefinition(ctx) { - const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList(); - let names; - if (ctxAssemblyIdentifierOrList.identifier()) { - names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier())]; - } else if (ctxAssemblyIdentifierOrList.assemblyMember()) { - names = [ - this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()) - ]; + isExpectedToken(symbol) { + const atn = this._interp.atn; + let ctx = this._ctx; + const s = atn.states[this.state]; + let following = atn.nextTokens(s); + if (following.contains(symbol)) { + return true; + } + if (!following.contains(Token_default.EPSILON)) { + return false; + } + while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token_default.EPSILON)) { + const invokingState = atn.states[ctx.invokingState]; + const rt = invokingState.transitions[0]; + following = atn.nextTokens(rt.followState); + if (following.contains(symbol)) { + return true; + } + ctx = ctx.parentCtx; + } + if (following.contains(Token_default.EPSILON) && symbol === Token_default.EOF) { + return true; + } else { + return false; + } + } + getExpectedTokens() { + return this._interp.atn.getExpectedTokens(this.state, this._ctx); + } + getExpectedTokensWithinCurrentRule() { + const atn = this._interp.atn; + const s = atn.states[this.state]; + return atn.nextTokens(s); + } + getRuleIndex(ruleName) { + const ruleIndex = this.getRuleIndexMap()[ruleName]; + if (ruleIndex !== null) { + return ruleIndex; } else { - names = ctxAssemblyIdentifierOrList.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)); + return -1; } - let expression = null; - if (ctx.assemblyExpression() !== void 0) { - expression = this.visitAssemblyExpression(ctx.assemblyExpression()); + } + getRuleInvocationStack(p) { + p = p || null; + if (p === null) { + p = this._ctx; } - const node = { - type: "AssemblyLocalDefinition", - names, - expression - }; - return this._addMeta(node, ctx); + const stack = []; + while (p !== null) { + const ruleIndex = p.ruleIndex; + if (ruleIndex < 0) { + stack.push("n/a"); + } else { + stack.push(this.ruleNames[ruleIndex]); + } + p = p.parentCtx; + } + return stack; } - visitAssemblyFunctionDefinition(ctx) { - const ctxAssemblyIdentifierList = ctx.assemblyIdentifierList(); - const args = ctxAssemblyIdentifierList !== void 0 ? ctxAssemblyIdentifierList.identifier().map((x) => this.visitIdentifier(x)) : []; - const ctxAssemblyFunctionReturns = ctx.assemblyFunctionReturns(); - const returnArgs = ctxAssemblyFunctionReturns ? ctxAssemblyFunctionReturns.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)) : []; - const node = { - type: "AssemblyFunctionDefinition", - name: this._toText(ctx.identifier()), - arguments: args, - returnArguments: returnArgs, - body: this.visitAssemblyBlock(ctx.assemblyBlock()) - }; - return this._addMeta(node, ctx); + getDFAStrings() { + return this._interp.decisionToDFA.toString(); } - visitAssemblyAssignment(ctx) { - const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList(); - let names; - if (ctxAssemblyIdentifierOrList.identifier()) { - names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier())]; - } else if (ctxAssemblyIdentifierOrList.assemblyMember()) { - names = [ - this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()) - ]; + dumpDFA() { + let seenOne = false; + for (let i = 0; i < this._interp.decisionToDFA.length; i++) { + const dfa = this._interp.decisionToDFA[i]; + if (dfa.states.length > 0) { + if (seenOne) { + console.log(); + } + this.printer.println("Decision " + dfa.decision + ":"); + this.printer.print(dfa.toString(this.literalNames, this.symbolicNames)); + seenOne = true; + } + } + } + getSourceName() { + return this._input.sourceName; + } + setTrace(trace) { + if (!trace) { + this.removeParseListener(this._tracer); + this._tracer = null; } else { - names = ctxAssemblyIdentifierOrList.assemblyIdentifierList().identifier().map((x) => this.visitIdentifier(x)); + if (this._tracer !== null) { + this.removeParseListener(this._tracer); + } + this._tracer = new TraceListener_default(this); + this.addParseListener(this._tracer); } - const node = { - type: "AssemblyAssignment", - names, - expression: this.visitAssemblyExpression(ctx.assemblyExpression()) - }; - return this._addMeta(node, ctx); } - visitAssemblyMember(ctx) { - const [accessed, member] = ctx.identifier(); - const node = { - type: "AssemblyMemberAccess", - expression: this.visitIdentifier(accessed), - memberName: this.visitIdentifier(member) - }; - return this._addMeta(node, ctx); + }; + var Parser_default = Parser2; + Parser2.bypassAltsAtnCache = {}; + + // node_modules/antlr4/src/antlr4/atn/PredictionContextCache.js + init_process_shim(); + var PredictionContextCache = class { + constructor() { + this.cache = new HashMap_default(); } - visitLabelDefinition(ctx) { - const node = { - type: "LabelDefinition", - name: this._toText(ctx.identifier()) - }; - return this._addMeta(node, ctx); + add(ctx) { + if (ctx === PredictionContext_default.EMPTY) { + return PredictionContext_default.EMPTY; + } + const existing = this.cache.get(ctx) || null; + if (existing !== null) { + return existing; + } + this.cache.set(ctx, ctx); + return ctx; } - visitAssemblyStackAssignment(ctx) { - const node = { - type: "AssemblyStackAssignment", - name: this._toText(ctx.identifier()), - expression: this.visitAssemblyExpression(ctx.assemblyExpression()) - }; - return this._addMeta(node, ctx); + get(ctx) { + return this.cache.get(ctx) || null; } - visitAssemblyFor(ctx) { - const node = { - type: "AssemblyFor", - pre: this.visit(ctx.getChild(1)), - condition: this.visit(ctx.getChild(2)), - post: this.visit(ctx.getChild(3)), - body: this.visit(ctx.getChild(4)) - }; - return this._addMeta(node, ctx); + get length() { + return this.cache.length; } - visitAssemblyIf(ctx) { - const node = { - type: "AssemblyIf", - condition: this.visitAssemblyExpression(ctx.assemblyExpression()), - body: this.visitAssemblyBlock(ctx.assemblyBlock()) - }; - return this._addMeta(node, ctx); + }; + var PredictionContextCache_default = PredictionContextCache; + + // node_modules/antlr4/src/antlr4/context/ParserRuleContext.js + init_process_shim(); + + // node_modules/antlr4/src/antlr4/tree/TerminalNodeImpl.js + init_process_shim(); + var TerminalNodeImpl = class extends TerminalNode_default { + constructor(symbol) { + super(); + this.parentCtx = null; + this.symbol = symbol; } - visitContinueStatement(ctx) { - const node = { - type: "ContinueStatement" - }; - return this._addMeta(node, ctx); + getChild(i) { + return null; } - visitBreakStatement(ctx) { - const node = { - type: "BreakStatement" - }; - return this._addMeta(node, ctx); + getSymbol() { + return this.symbol; } - _toText(ctx) { - const text = ctx.text; - if (text === void 0) { - throw new Error("Assertion error: text should never be undefiend"); + getParent() { + return this.parentCtx; + } + getPayload() { + return this.symbol; + } + getSourceInterval() { + if (this.symbol === null) { + return Interval_default.INVALID_INTERVAL; } - return text; + const tokenIndex = this.symbol.tokenIndex; + return new Interval_default(tokenIndex, tokenIndex); } - _stateMutabilityToText(ctx) { - if (ctx.PureKeyword() !== void 0) { - return "pure"; + getChildCount() { + return 0; + } + accept(visitor) { + return visitor.visitTerminal(this); + } + getText() { + return this.symbol.text; + } + toString() { + if (this.symbol.type === Token_default.EOF) { + return ""; + } else { + return this.symbol.text; } - if (ctx.ConstantKeyword() !== void 0) { - return "constant"; + } + }; + var TerminalNodeImpl_default = TerminalNodeImpl; + + // node_modules/antlr4/src/antlr4/tree/ErrorNodeImpl.js + init_process_shim(); + var ErrorNodeImpl = class extends TerminalNodeImpl_default { + constructor(token) { + super(token); + } + isErrorNode() { + return true; + } + accept(visitor) { + return visitor.visitErrorNode(this); + } + }; + var ErrorNodeImpl_default = ErrorNodeImpl; + + // node_modules/antlr4/src/antlr4/context/ParserRuleContext.js + var ParserRuleContext2 = class extends RuleContext_default { + constructor(parent, invokingStateNumber) { + parent = parent || null; + invokingStateNumber = invokingStateNumber || null; + super(parent, invokingStateNumber); + this.ruleIndex = -1; + this.children = null; + this.start = null; + this.stop = null; + this.exception = null; + } + copyFrom(ctx) { + this.parentCtx = ctx.parentCtx; + this.invokingState = ctx.invokingState; + this.children = null; + this.start = ctx.start; + this.stop = ctx.stop; + if (ctx.children) { + this.children = []; + ctx.children.map(function(child) { + if (child instanceof ErrorNodeImpl_default) { + this.children.push(child); + child.parentCtx = this; + } + }, this); } - if (ctx.PayableKeyword() !== void 0) { - return "payable"; + } + enterRule(listener) { + } + exitRule(listener) { + } + addChild(child) { + if (this.children === null) { + this.children = []; } - if (ctx.ViewKeyword() !== void 0) { - return "view"; + this.children.push(child); + return child; + } + removeLastChild() { + if (this.children !== null) { + this.children.pop(); } - throw new Error("Assertion error: non-exhaustive stateMutability check"); } - _loc(ctx) { - const sourceLocation = { - start: { - line: ctx.start.line, - column: ctx.start.charPositionInLine - }, - end: { - line: ctx.stop ? ctx.stop.line : ctx.start.line, - column: ctx.stop ? ctx.stop.charPositionInLine : ctx.start.charPositionInLine - } - }; - return sourceLocation; + addTokenNode(token) { + const node = new TerminalNodeImpl_default(token); + this.addChild(node); + node.parentCtx = this; + return node; } - _range(ctx) { - return [ctx.start.startIndex, ctx.stop?.stopIndex ?? ctx.start.startIndex]; + addErrorNode(badToken) { + const node = new ErrorNodeImpl_default(badToken); + this.addChild(node); + node.parentCtx = this; + return node; } - _addMeta(node, ctx) { - const nodeWithMeta = { - type: node.type - }; - if (this.options.loc === true) { - node.loc = this._loc(ctx); + getChild(i, type) { + type = type || null; + if (this.children === null || i < 0 || i >= this.children.length) { + return null; } - if (this.options.range === true) { - node.range = this._range(ctx); + if (type === null) { + return this.children[i]; + } else { + for (let j = 0; j < this.children.length; j++) { + const child = this.children[j]; + if (child instanceof type) { + if (i === 0) { + return child; + } else { + i -= 1; + } + } + } + return null; } - return { - ...nodeWithMeta, - ...node - }; } - _mapCommasToNulls(children) { - if (children.length === 0) { - return []; + getToken(ttype, i) { + if (this.children === null || i < 0 || i >= this.children.length) { + return null; } - const values = []; - let comma = true; - for (const el of children) { - if (comma) { - if (this._toText(el) === ",") { - values.push(null); - } else { - values.push(el); - comma = false; + for (let j = 0; j < this.children.length; j++) { + const child = this.children[j]; + if (child instanceof TerminalNode_default) { + if (child.symbol.type === ttype) { + if (i === 0) { + return child; + } else { + i -= 1; + } } - } else { - if (this._toText(el) !== ",") { - throw new Error("expected comma"); + } + } + return null; + } + getTokens(ttype) { + if (this.children === null) { + return []; + } else { + const tokens2 = []; + for (let j = 0; j < this.children.length; j++) { + const child = this.children[j]; + if (child instanceof TerminalNode_default) { + if (child.symbol.type === ttype) { + tokens2.push(child); + } } - comma = true; } + return tokens2; } - if (comma) { - values.push(null); + } + getTypedRuleContext(ctxType, i) { + return this.getChild(i, ctxType); + } + getTypedRuleContexts(ctxType) { + if (this.children === null) { + return []; + } else { + const contexts = []; + for (let j = 0; j < this.children.length; j++) { + const child = this.children[j]; + if (child instanceof ctxType) { + contexts.push(child); + } + } + return contexts; + } + } + getChildCount() { + if (this.children === null) { + return 0; + } else { + return this.children.length; + } + } + getSourceInterval() { + if (this.start === null || this.stop === null) { + return Interval_default.INVALID_INTERVAL; + } else { + return new Interval_default(this.start.tokenIndex, this.stop.tokenIndex); } - return values; } }; - function isBinOp(op) { - return binaryOpValues.includes(op); - } + var ParserRuleContext_default = ParserRuleContext2; + RuleContext_default.EMPTY = new ParserRuleContext2(); - // src/ErrorListener.ts + // node_modules/antlr4/src/antlr4/utils/index.js init_process_shim(); - var import_antlr4 = __toModule(require_antlr4()); - var ErrorListener = class extends import_antlr4.default.error.ErrorListener { + var utils_default = {arrayToString}; + + // node_modules/antlr4/src/antlr4/index.js + var antlr4 = { + atn: atn_default, + dfa: dfa_default, + tree: tree_default, + error: error_default, + Token: Token_default, + CommonToken: CommonToken_default, + CharStreams: CharStreams_default, + InputStream: InputStream_default, + FileStream: FileStream_default, + CommonTokenStream: CommonTokenStream_default, + Lexer: Lexer_default, + Parser: Parser_default, + PredictionContextCache: PredictionContextCache_default, + ParserRuleContext: ParserRuleContext_default, + Interval: Interval_default, + IntervalSet: IntervalSet_default, + LL1Analyzer: LL1Analyzer_default, + Utils: utils_default + }; + var antlr4_default = antlr4; + + // src/ErrorListener.ts + var ErrorListener2 = class extends antlr4_default.error.ErrorListener { constructor() { super(); this._errors = []; @@ -40683,7 +41193,7 @@ qrrrrrrrrrrsssssstttttttttuuuuuuuuuuvvvv return this._errors.length > 0; } }; - var ErrorListener_default = ErrorListener; + var ErrorListener_default2 = ErrorListener2; // src/tokens.ts init_process_shim(); @@ -40787,7 +41297,7 @@ qrrrrrrrrrrsssssstttttttttuuuuuuuuuuvvvv const lexer = new SolidityLexer(inputStream); const tokenStream = new import_antlr4ts.CommonTokenStream(lexer); const parser = new SolidityParser(tokenStream); - const listener = new ErrorListener_default(); + const listener = new ErrorListener_default2(); lexer.removeErrorListeners(); lexer.addErrorListener(listener); parser.removeErrorListeners(); diff --git a/apps/remix-ide/src/assets/js/parser/index.iife.js.map b/apps/remix-ide/src/assets/js/parser/index.iife.js.map index 2b1fb5522c..23d8782ba2 100644 --- a/apps/remix-ide/src/assets/js/parser/index.iife.js.map +++ b/apps/remix-ide/src/assets/js/parser/index.iife.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../process-shim.js", "../src/ANTLRErrorListener.ts", "../src/ANTLRErrorStrategy.ts", "../node_modules/has-symbols/shams.js", "../node_modules/has-symbols/index.js", "../node_modules/function-bind/implementation.js", "../node_modules/function-bind/index.js", "../node_modules/has/src/index.js", "../node_modules/get-intrinsic/index.js", "../node_modules/call-bind/index.js", "../node_modules/call-bind/callBound.js", "../node_modules/is-arguments/index.js", "../node_modules/is-generator-function/index.js", "../node_modules/foreach/index.js", "../node_modules/array-filter/index.js", "../node_modules/available-typed-arrays/index.js", "../node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js", "../node_modules/is-typed-array/index.js", "../node_modules/which-typed-array/index.js", "../node_modules/util/support/types.js", "../node_modules/util/support/isBufferBrowser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/util/util.js", "../node_modules/assert/build/internal/errors.js", "../node_modules/assert/build/internal/assert/assertion_error.js", "../node_modules/es6-object-assign/index.js", "../node_modules/object-keys/isArguments.js", "../node_modules/object-keys/implementation.js", "../node_modules/object-keys/index.js", "../node_modules/define-properties/index.js", "../node_modules/object-is/implementation.js", "../node_modules/object-is/polyfill.js", "../node_modules/object-is/shim.js", "../node_modules/object-is/index.js", "../node_modules/is-nan/implementation.js", "../node_modules/is-nan/polyfill.js", "../node_modules/is-nan/shim.js", "../node_modules/is-nan/index.js", "../node_modules/assert/build/internal/util/comparisons.js", "../node_modules/assert/build/assert.js", "../src/Decorators.ts", "../src/IntStream.ts", "../src/ANTLRInputStream.ts", "../src/atn/ATNState.ts", "../src/atn/ATNStateType.ts", "../src/RecognitionException.ts", "../src/atn/Transition.ts", "../src/atn/AbstractPredicateTransition.ts", "../src/misc/MurmurHash.ts", "../src/misc/ObjectEqualityComparator.ts", "../src/misc/DefaultEqualityComparator.ts", "../src/misc/Array2DHashSet.ts", "../src/misc/ArrayEqualityComparator.ts", "../src/misc/Utils.ts", "../src/atn/SemanticContext.ts", "../src/atn/PredicateTransition.ts", "../src/FailedPredicateException.ts", "../src/InputMismatchException.ts", "../src/misc/Arrays.ts", "../src/misc/IntegerList.ts", "../src/misc/Interval.ts", "../src/Token.ts", "../src/CommonToken.ts", "../src/CommonTokenFactory.ts", "../src/misc/IntegerStack.ts", "../src/dfa/AcceptStateInfo.ts", "../src/misc/Array2DHashMap.ts", "../src/atn/DecisionState.ts", "../src/atn/PredictionContextCache.ts", "../src/atn/PredictionContext.ts", "../src/atn/ATNConfig.ts", "../src/misc/BitSet.ts", "../src/atn/ATNConfigSet.ts", "../src/dfa/DFAState.ts", "../src/atn/ATNSimulator.ts", "../src/ConsoleErrorListener.ts", "../src/ProxyErrorListener.ts", "../src/Recognizer.ts", "../src/VocabularyImpl.ts", "../src/dfa/DFASerializer.ts", "../src/dfa/LexerDFASerializer.ts", "../src/atn/StarLoopEntryState.ts", "../src/dfa/DFA.ts", "../src/atn/BasicState.ts", "../src/atn/InvalidState.ts", "../src/atn/SetTransition.ts", "../src/atn/NotSetTransition.ts", "../src/atn/RuleStopState.ts", "../src/atn/RuleTransition.ts", "../src/atn/WildcardTransition.ts", "../src/atn/LL1Analyzer.ts", "../src/atn/ATN.ts", "../src/atn/LexerIndexedCustomAction.ts", "../src/atn/LexerActionExecutor.ts", "../src/LexerNoViableAltException.ts", "../src/atn/OrderedATNConfigSet.ts", "../src/atn/LexerATNSimulator.ts", "../src/Lexer.ts", "../src/misc/IntervalSet.ts", "../src/atn/ATNDeserializationOptions.ts", "../src/atn/ActionTransition.ts", "../src/atn/AtomTransition.ts", "../src/atn/BlockStartState.ts", "../src/atn/BasicBlockStartState.ts", "../src/atn/BlockEndState.ts", "../src/atn/EpsilonTransition.ts", "../src/atn/LexerChannelAction.ts", "../src/atn/LexerCustomAction.ts", "../src/atn/LexerModeAction.ts", "../src/atn/LexerMoreAction.ts", "../src/atn/LexerPopModeAction.ts", "../src/atn/LexerPushModeAction.ts", "../src/atn/LexerSkipAction.ts", "../src/atn/LexerTypeAction.ts", "../src/atn/LoopEndState.ts", "../src/atn/ConflictInfo.ts", "../src/tree/TerminalNode.ts", "../src/tree/ErrorNode.ts", "../src/tree/RuleNode.ts", "../src/tree/Trees.ts", "../src/RuleContext.ts", "../src/ParserRuleContext.ts", "../src/atn/PredictionMode.ts", "../src/atn/SimulatorState.ts", "../src/atn/ParserATNSimulator.ts", "../src/atn/PlusBlockStartState.ts", "../src/atn/PlusLoopbackState.ts", "../src/atn/PrecedencePredicateTransition.ts", "../src/atn/RangeTransition.ts", "../src/atn/RuleStartState.ts", "../src/atn/StarBlockStartState.ts", "../src/atn/StarLoopbackState.ts", "../src/atn/TokensStartState.ts", "../src/misc/UUID.ts", "../src/atn/ATNDeserializer.ts", "../src/atn/ParseInfo.ts", "../src/ProxyParserErrorListener.ts", "../src/misc/Character.ts", "../src/CodePointBuffer.ts", "../src/CodePointCharStream.ts", "../src/CharStreams.ts", "../src/BufferedTokenStream.ts", "../src/CommonTokenStream.ts", "../src/ListTokenSource.ts", "../src/misc/MultiMap.ts", "../src/misc/ParseCancellationException.ts", "../src/InterpreterRuleContext.ts", "../src/ParserInterpreter.ts", "../src/tree/pattern/ParseTreeMatch.ts", "../src/tree/xpath/XPathLexer.ts", "../src/tree/xpath/XPathLexerErrorListener.ts", "../src/tree/xpath/XPathElement.ts", "../src/tree/xpath/XPathRuleAnywhereElement.ts", "../src/tree/xpath/XPathRuleElement.ts", "../src/tree/xpath/XPathTokenAnywhereElement.ts", "../src/tree/xpath/XPathTokenElement.ts", "../src/tree/xpath/XPathWildcardAnywhereElement.ts", "../src/tree/xpath/XPathWildcardElement.ts", "../src/tree/xpath/XPath.ts", "../src/tree/pattern/ParseTreePattern.ts", "../src/tree/pattern/RuleTagToken.ts", "../src/tree/pattern/Chunk.ts", "../src/tree/pattern/TagChunk.ts", "../src/tree/pattern/TextChunk.ts", "../src/tree/pattern/TokenTagToken.ts", "../src/tree/pattern/ParseTreePatternMatcher.ts", "../src/atn/DecisionEventInfo.ts", "../src/atn/AmbiguityInfo.ts", "../src/atn/ContextSensitivityInfo.ts", "../src/atn/DecisionInfo.ts", "../src/atn/ErrorInfo.ts", "../src/atn/LookaheadEventInfo.ts", "../src/atn/PredicateEvalInfo.ts", "../src/atn/ProfilingATNSimulator.ts", "../src/Parser.ts", "../src/NoViableAltException.ts", "../src/DefaultErrorStrategy.ts", "../src/BailErrorStrategy.ts", "../src/CharStream.ts", "../src/Dependents.ts", "../src/DiagnosticErrorListener.ts", "../src/LexerInterpreter.ts", "../src/ParserErrorListener.ts", "../src/RuleContextWithAltNum.ts", "../src/RuleDependency.ts", "../src/RuleVersion.ts", "../src/TokenFactory.ts", "../src/TokenSource.ts", "../src/TokenStream.ts", "../src/TokenStreamRewriter.ts", "../src/Vocabulary.ts", "../src/WritableToken.ts", "../src/index.ts", "../src/tree/AbstractParseTreeVisitor.ts", "../node_modules/antlr4/src/antlr4/Utils.js", "../node_modules/antlr4/src/antlr4/Token.js", "../node_modules/antlr4/src/antlr4/atn/ATNState.js", "../node_modules/antlr4/src/antlr4/atn/SemanticContext.js", "../node_modules/antlr4/src/antlr4/atn/ATNConfig.js", "../node_modules/antlr4/src/antlr4/IntervalSet.js", "../node_modules/antlr4/src/antlr4/atn/Transition.js", "../node_modules/antlr4/src/antlr4/tree/Tree.js", "../node_modules/antlr4/src/antlr4/tree/Trees.js", "../node_modules/antlr4/src/antlr4/RuleContext.js", "../node_modules/antlr4/src/antlr4/PredictionContext.js", "../node_modules/antlr4/src/antlr4/LL1Analyzer.js", "../node_modules/antlr4/src/antlr4/atn/ATN.js", "../node_modules/antlr4/src/antlr4/atn/ATNType.js", "../node_modules/antlr4/src/antlr4/atn/ATNDeserializationOptions.js", "../node_modules/antlr4/src/antlr4/atn/LexerAction.js", "../node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js", "../node_modules/antlr4/src/antlr4/error/ErrorListener.js", "../node_modules/antlr4/src/antlr4/Recognizer.js", "../node_modules/antlr4/src/antlr4/CommonTokenFactory.js", "../node_modules/antlr4/src/antlr4/error/Errors.js", "../node_modules/antlr4/src/antlr4/Lexer.js", "../node_modules/antlr4/src/antlr4/atn/ATNConfigSet.js", "../node_modules/antlr4/src/antlr4/dfa/DFAState.js", "../node_modules/antlr4/src/antlr4/atn/ATNSimulator.js", "../node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js", "../node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js", "../node_modules/antlr4/src/antlr4/atn/PredictionMode.js", "../node_modules/antlr4/src/antlr4/ParserRuleContext.js", "../node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js", "../node_modules/antlr4/src/antlr4/atn/index.js", "../node_modules/antlr4/src/antlr4/polyfills/codepointat.js", "../node_modules/antlr4/src/antlr4/dfa/DFASerializer.js", "../node_modules/antlr4/src/antlr4/dfa/DFA.js", "../node_modules/antlr4/src/antlr4/dfa/index.js", "../node_modules/antlr4/src/antlr4/polyfills/fromcodepoint.js", "../node_modules/antlr4/src/antlr4/tree/index.js", "../node_modules/antlr4/src/antlr4/error/DiagnosticErrorListener.js", "../node_modules/antlr4/src/antlr4/error/ErrorStrategy.js", "../node_modules/antlr4/src/antlr4/error/index.js", "../node_modules/antlr4/src/antlr4/InputStream.js", "(disabled):fs", "../node_modules/antlr4/src/antlr4/CharStreams.js", "../node_modules/antlr4/src/antlr4/FileStream.js", "../node_modules/antlr4/src/antlr4/BufferedTokenStream.js", "../node_modules/antlr4/src/antlr4/CommonTokenStream.js", "../node_modules/antlr4/src/antlr4/Parser.js", "../node_modules/antlr4/src/antlr4/index.js", "../src/tokens-string.js", "../src/index.ts", "../src/parser.ts", "../src/antlr/SolidityLexer.ts", "../src/antlr/SolidityParser.ts", "../src/ast-types.ts", "../src/ASTBuilder.ts", "../src/ErrorListener.ts", "../src/tokens.ts"], - "sourcesContent": ["export let process = {\n cwd: () => '',\n env: () => {}\n}\n\nexport let global = {}\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.7499997-07:00\r\n\r\n/** How to emit recognition errors. */\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\n\r\nexport interface ANTLRErrorListener {\r\n\t/**\r\n\t * Upon syntax error, notify any interested parties. This is not how to\r\n\t * recover from errors or compute error messages. {@link ANTLRErrorStrategy}\r\n\t * specifies how to recover from syntax errors and how to compute error\r\n\t * messages. This listener's job is simply to emit a computed message,\r\n\t * though it has enough information to create its own message in many cases.\r\n\t *\r\n\t * The {@link RecognitionException} is non-`undefined` for all syntax errors except\r\n\t * when we discover mismatched token errors that we can recover from\r\n\t * in-line, without returning from the surrounding rule (via the single\r\n\t * token insertion and deletion mechanism).\r\n\t *\r\n\t * @param recognizer\r\n\t * What parser got the error. From this\r\n\t * \t\t object, you can access the context as well\r\n\t * \t\t as the input stream.\r\n\t * @param offendingSymbol\r\n\t * The offending token in the input token\r\n\t * \t\t stream, unless recognizer is a lexer (then it's `undefined`). If\r\n\t * \t\t no viable alternative error, `e` has token at which we\r\n\t * \t\t started production for the decision.\r\n\t * @param line\r\n\t * \t\t The line number in the input where the error occurred.\r\n\t * @param charPositionInLine\r\n\t * \t\t The character position within that line where the error occurred.\r\n\t * @param msg\r\n\t * \t\t The message to emit.\r\n\t * @param e\r\n\t * The exception generated by the parser that led to\r\n\t * the reporting of an error. It is `undefined` in the case where\r\n\t * the parser was able to recover in line without exiting the\r\n\t * surrounding rule.\r\n\t */\r\n\tsyntaxError?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t/*@NotNull*/\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined) => void;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.9102174-07:00\r\n\r\nimport { Parser } from \"./Parser\";\r\nimport { Token } from \"./Token\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\n\r\n/**\r\n * The interface for defining strategies to deal with syntax errors encountered\r\n * during a parse by ANTLR-generated parsers. We distinguish between three\r\n * different kinds of errors:\r\n *\r\n * * The parser could not figure out which path to take in the ATN (none of\r\n * the available alternatives could possibly match)\r\n * * The current input does not match what we were looking for\r\n * * A predicate evaluated to false\r\n *\r\n * Implementations of this interface report syntax errors by calling\r\n * {@link Parser#notifyErrorListeners}.\r\n *\r\n * TODO: what to do about lexers\r\n */\r\nexport interface ANTLRErrorStrategy {\r\n\t/**\r\n\t * Reset the error handler state for the specified `recognizer`.\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\treset(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * This method is called when an unexpected symbol is encountered during an\r\n\t * inline match operation, such as {@link Parser#match}. If the error\r\n\t * strategy successfully recovers from the match failure, this method\r\n\t * returns the {@link Token} instance which should be treated as the\r\n\t * successful result of the match.\r\n\t *\r\n\t * This method handles the consumption of any tokens - the caller should\r\n\t * *not* call {@link Parser#consume} after a successful recovery.\r\n\t *\r\n\t * Note that the calling code will not report an error if this method\r\n\t * returns successfully. The error strategy implementation is responsible\r\n\t * for calling {@link Parser#notifyErrorListeners} as appropriate.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @ if the error strategy was not able to\r\n\t * recover from the unexpected input symbol\r\n\t */\r\n\trecoverInline(/*@NotNull*/ recognizer: Parser): Token;\r\n\r\n\t/**\r\n\t * This method is called to recover from exception `e`. This method is\r\n\t * called after {@link #reportError} by the default exception handler\r\n\t * generated for a rule method.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception to recover from\r\n\t * @ if the error strategy could not recover from\r\n\t * the recognition exception\r\n\t */\r\n\trecover(/*@NotNull*/ recognizer: Parser, /*@NotNull*/ e: RecognitionException): void;\r\n\r\n\t/**\r\n\t * This method provides the error handler with an opportunity to handle\r\n\t * syntactic or semantic errors in the input stream before they result in a\r\n\t * {@link RecognitionException}.\r\n\t *\r\n\t * The generated code currently contains calls to {@link #sync} after\r\n\t * entering the decision state of a closure block (`(...)*` or\r\n\t * `(...)+`).\r\n\t *\r\n\t * For an implementation based on Jim Idle's \"magic sync\" mechanism, see\r\n\t * {@link DefaultErrorStrategy#sync}.\r\n\t *\r\n\t * @see DefaultErrorStrategy#sync\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @ if an error is detected by the error\r\n\t * strategy but cannot be automatically recovered at the current state in\r\n\t * the parsing process\r\n\t */\r\n\tsync(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * Tests whether or not `recognizer` is in the process of recovering\r\n\t * from an error. In error recovery mode, {@link Parser#consume} adds\r\n\t * symbols to the parse tree by calling\r\n\t * {@link Parser#createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)} instead of\r\n\t * {@link Parser#createTerminalNode(ParserRuleContext, Token)}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns `true` if the parser is currently recovering from a parse\r\n\t * error, otherwise `false`\r\n\t */\r\n\tinErrorRecoveryMode(/*@NotNull*/ recognizer: Parser): boolean;\r\n\r\n\t/**\r\n\t * This method is called by when the parser successfully matches an input\r\n\t * symbol.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\treportMatch(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * Report any kind of {@link RecognitionException}. This method is called by\r\n\t * the default exception handler generated for a rule method.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception to report\r\n\t */\r\n\treportError(\r\n\t\t/*@NotNull*/ recognizer: Parser,\r\n\t\t/*@NotNull*/ e: RecognitionException): void;\r\n}\r\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar generatorFunc = getGeneratorFunc();\nvar GeneratorFunction = getProto && generatorFunc ? getProto(generatorFunc) : false;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\treturn getProto && getProto(fn) === GeneratorFunction;\n};\n", "\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n", "\n/**\n * Array#filter.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Object=} self\n * @return {Array}\n * @throw TypeError\n */\n\nmodule.exports = function (arr, fn, self) {\n if (arr.filter) return arr.filter(fn, self);\n if (void 0 === arr || null === arr) throw new TypeError;\n if ('function' != typeof fn) throw new TypeError;\n var ret = [];\n for (var i = 0; i < arr.length; i++) {\n if (!hasOwn.call(arr, i)) continue;\n var val = arr[i];\n if (fn.call(self, val, i, arr)) ret.push(val);\n }\n return ret;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n", "'use strict';\n\nvar filter = require('array-filter');\n\nmodule.exports = function availableTypedArrays() {\n\treturn filter([\n\t\t'BigInt64Array',\n\t\t'BigUint64Array',\n\t\t'Float32Array',\n\t\t'Float64Array',\n\t\t'Int16Array',\n\t\t'Int32Array',\n\t\t'Int8Array',\n\t\t'Uint16Array',\n\t\t'Uint32Array',\n\t\t'Uint8Array',\n\t\t'Uint8ClampedArray'\n\t], function (typedArray) {\n\t\treturn typeof global[typedArray] === 'function';\n\t});\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new global[typedArray]();\n\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t}\n\t\tvar proto = getPrototypeOf(arr);\n\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\tif (!descriptor) {\n\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t}\n\t\ttoStrTags[typedArray] = descriptor.get;\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof global[typedArray] === 'function') {\n\t\t\tvar arr = new global[typedArray]();\n\t\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t\t}\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n", "// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nisSharedArrayBufferToString.working = (\n typeof SharedArrayBuffer !== 'undefined' &&\n isSharedArrayBufferToString(new SharedArrayBuffer())\n);\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBuffer === 'undefined') {\n return false;\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBuffer;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n", "module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n", "// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;", "// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;", "/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n", "'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", "'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};", "// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport function NotNull(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor | number) {\r\n\t// intentionally empty\r\n}\r\n\r\nexport function Nullable(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor | number) {\r\n\t// intentionally empty\r\n}\r\n\r\nexport function Override(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor) {\r\n\t// do something with 'target' ...\r\n}\r\n\r\nexport function SuppressWarnings(options: string) {\r\n\treturn (target: any, propertyKey: PropertyKey, descriptor?: PropertyDescriptor) => {\r\n\t\t// intentionally empty\r\n\t};\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.6934376-07:00\r\n\r\nexport namespace IntStream {\r\n\t/**\r\n\t * The value returned by {@link #LA LA()} when the end of the stream is\r\n\t * reached.\r\n\t */\r\n\texport const EOF: number = -1;\r\n\r\n\t/**\r\n\t * The value returned by {@link #getSourceName} when the actual name of the\r\n\t * underlying source is not known.\r\n\t */\r\n\texport const UNKNOWN_SOURCE_NAME: string = \"\";\r\n}\r\n\r\n/**\r\n * A simple stream of symbols whose values are represented as integers. This\r\n * interface provides *marked ranges* with support for a minimum level\r\n * of buffering necessary to implement arbitrary lookahead during prediction.\r\n * For more information on marked ranges, see {@link #mark}.\r\n *\r\n * **Initializing Methods:** Some methods in this interface have\r\n * unspecified behavior if no call to an initializing method has occurred after\r\n * the stream was constructed. The following is a list of initializing methods:\r\n *\r\n * * {@link #LA}\r\n * * {@link #consume}\r\n * * {@link #size}\r\n */\r\nexport interface IntStream {\r\n\t/**\r\n\t * Consumes the current symbol in the stream. This method has the following\r\n\t * effects:\r\n\t *\r\n\t * * **Forward movement:** The value of `index`\r\n\t * before calling this method is less than the value of `index`\r\n\t * after calling this method.\r\n\t * * **Ordered lookahead:** The value of `LA(1)` before\r\n\t * calling this method becomes the value of `LA(-1)` after calling\r\n\t * this method.\r\n\t *\r\n\t * Note that calling this method does not guarantee that `index` is\r\n\t * incremented by exactly 1, as that would preclude the ability to implement\r\n\t * filtering streams (e.g. {@link CommonTokenStream} which distinguishes\r\n\t * between \"on-channel\" and \"off-channel\" tokens).\r\n\t *\r\n\t * @throws IllegalStateException if an attempt is made to consume the\r\n\t * end of the stream (i.e. if `LA(1)==`{@link #EOF EOF} before calling\r\n\t * `consume`).\r\n\t */\r\n\tconsume(): void;\r\n\r\n\t/**\r\n\t * Gets the value of the symbol at offset `i` from the current\r\n\t * position. When `i==1`, this method returns the value of the current\r\n\t * symbol in the stream (which is the next symbol to be consumed). When\r\n\t * `i==-1`, this method returns the value of the previously read\r\n\t * symbol in the stream. It is not valid to call this method with\r\n\t * `i==0`, but the specific behavior is unspecified because this\r\n\t * method is frequently called from performance-critical code.\r\n\t *\r\n\t * This method is guaranteed to succeed if any of the following are true:\r\n\t *\r\n\t * * `i>0`\r\n\t * * `i==-1` and `index` returns a value greater\r\n\t * than the value of `index` after the stream was constructed\r\n\t * and `LA(1)` was called in that order. Specifying the current\r\n\t * `index` relative to the index after the stream was created\r\n\t * allows for filtering implementations that do not return every symbol\r\n\t * from the underlying source. Specifying the call to `LA(1)`\r\n\t * allows for lazily initialized streams.\r\n\t * * `LA(i)` refers to a symbol consumed within a marked region\r\n\t * that has not yet been released.\r\n\t *\r\n\t * If `i` represents a position at or beyond the end of the stream,\r\n\t * this method returns {@link #EOF}.\r\n\t *\r\n\t * The return value is unspecified if `i<0` and fewer than `-i`\r\n\t * calls to {@link #consume consume()} have occurred from the beginning of\r\n\t * the stream before calling this method.\r\n\t *\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * retrieving the value of the specified symbol\r\n\t */\r\n\tLA(i: number): number;\r\n\r\n\t/**\r\n\t * A mark provides a guarantee that {@link #seek seek()} operations will be\r\n\t * valid over a \"marked range\" extending from the index where `mark()`\r\n\t * was called to the current `index`. This allows the use of\r\n\t * streaming input sources by specifying the minimum buffering requirements\r\n\t * to support arbitrary lookahead during prediction.\r\n\t *\r\n\t * The returned mark is an opaque handle (type `int`) which is passed\r\n\t * to {@link #release release()} when the guarantees provided by the marked\r\n\t * range are no longer necessary. When calls to\r\n\t * `mark()`/`release()` are nested, the marks must be released\r\n\t * in reverse order of which they were obtained. Since marked regions are\r\n\t * used during performance-critical sections of prediction, the specific\r\n\t * behavior of invalid usage is unspecified (i.e. a mark is not released, or\r\n\t * a mark is released twice, or marks are not released in reverse order from\r\n\t * which they were created).\r\n\t *\r\n\t * The behavior of this method is unspecified if no call to an\r\n\t * {@link IntStream initializing method} has occurred after this stream was\r\n\t * constructed.\r\n\t *\r\n\t * This method does not change the current position in the input stream.\r\n\t *\r\n\t * The following example shows the use of {@link #mark mark()},\r\n\t * {@link #release release(mark)}, `index`, and\r\n\t * {@link #seek seek(index)} as part of an operation to safely work within a\r\n\t * marked region, then restore the stream position to its original value and\r\n\t * release the mark.\r\n\t *\r\n\t * ```\r\n\t * IntStream stream = ...;\r\n\t * int index = -1;\r\n\t * int mark = stream.mark();\r\n\t * try {\r\n\t * index = stream.index;\r\n\t * // perform work here...\r\n\t * } finally {\r\n\t * if (index != -1) {\r\n\t * stream.seek(index);\r\n\t * }\r\n\t * stream.release(mark);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @returns An opaque marker which should be passed to\r\n\t * {@link #release release()} when the marked range is no longer required.\r\n\t */\r\n\tmark(): number;\r\n\r\n\t/**\r\n\t * This method releases a marked range created by a call to\r\n\t * {@link #mark mark()}. Calls to `release()` must appear in the\r\n\t * reverse order of the corresponding calls to `mark()`. If a mark is\r\n\t * released twice, or if marks are not released in reverse order of the\r\n\t * corresponding calls to `mark()`, the behavior is unspecified.\r\n\t *\r\n\t * For more information and an example, see {@link #mark}.\r\n\t *\r\n\t * @param marker A marker returned by a call to `mark()`.\r\n\t * @see #mark\r\n\t */\r\n\trelease(marker: number): void;\r\n\r\n\t/**\r\n\t * Return the index into the stream of the input symbol referred to by\r\n\t * `LA(1)`.\r\n\t *\r\n\t * The behavior of this method is unspecified if no call to an\r\n\t * {@link IntStream initializing method} has occurred after this stream was\r\n\t * constructed.\r\n\t */\r\n\treadonly index: number;\r\n\r\n\t/**\r\n\t * Set the input cursor to the position indicated by `index`. If the\r\n\t * specified index lies past the end of the stream, the operation behaves as\r\n\t * though `index` was the index of the EOF symbol. After this method\r\n\t * returns without throwing an exception, then at least one of the following\r\n\t * will be true.\r\n\t *\r\n\t * * `index` will return the index of the first symbol\r\n\t * appearing at or after the specified `index`. Specifically,\r\n\t * implementations which filter their sources should automatically\r\n\t * adjust `index` forward the minimum amount required for the\r\n\t * operation to target a non-ignored symbol.\r\n\t * * `LA(1)` returns {@link #EOF}\r\n\t *\r\n\t * This operation is guaranteed to not throw an exception if `index`\r\n\t * lies within a marked region. For more information on marked regions, see\r\n\t * {@link #mark}. The behavior of this method is unspecified if no call to\r\n\t * an {@link IntStream initializing method} has occurred after this stream\r\n\t * was constructed.\r\n\t *\r\n\t * @param index The absolute index to seek to.\r\n\t *\r\n\t * @throws IllegalArgumentException if `index` is less than 0\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * seeking to the specified index\r\n\t */\r\n\tseek(index: number): void;\r\n\r\n\t/**\r\n\t * Returns the total number of symbols in the stream, including a single EOF\r\n\t * symbol.\r\n\t *\r\n\t * @throws UnsupportedOperationException if the size of the stream is\r\n\t * unknown.\r\n\t */\r\n\treadonly size: number;\r\n\r\n\t/**\r\n\t * Gets the name of the underlying symbol source. This method returns a\r\n\t * non-undefined, non-empty string. If such a name is not known, this method\r\n\t * returns {@link #UNKNOWN_SOURCE_NAME}.\r\n\t */\r\n\t//@NotNull\r\n\treadonly sourceName: string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.0828748-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Arrays } from \"./misc/Arrays\";\r\nimport { Override } from \"./Decorators\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\n\r\nconst READ_BUFFER_SIZE: number = 1024;\r\nconst INITIAL_BUFFER_SIZE: number = 1024;\r\n\r\n/**\r\n * Vacuum all input from a {@link Reader}/{@link InputStream} and then treat it\r\n * like a `char[]` buffer. Can also pass in a {@link String} or\r\n * `char[]` to use.\r\n *\r\n * If you need encoding, pass in stream/reader with correct encoding.\r\n *\r\n * @deprecated as of 4.7, please use `CharStreams` interface.\r\n */\r\nexport class ANTLRInputStream implements CharStream {\r\n\t/** The data being scanned */\r\n\tprotected data: string;\r\n\r\n\t/** How many characters are actually in the buffer */\r\n\tprotected n: number;\r\n\r\n\t/** 0..n-1 index into string of next char */\r\n\tprotected p: number = 0;\r\n\r\n\t/** What is name or source of this char stream? */\r\n\tpublic name?: string;\r\n\r\n\t/** Copy data in string to a local char array */\r\n\tconstructor(input: string) {\r\n\t\tthis.data = input;\r\n\t\tthis.n = input.length;\r\n\t}\r\n\r\n\t/** Reset the stream so that it's in the same state it was\r\n\t * when the object was created *except* the data array is not\r\n\t * touched.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis.p = 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tif (this.p >= this.n) {\r\n\t\t\tassert(this.LA(1) === IntStream.EOF);\r\n\t\t\tthrow new Error(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\t//System.out.println(\"prev p=\"+p+\", c=\"+(char)data[p]);\r\n\t\tif (this.p < this.n) {\r\n\t\t\tthis.p++;\r\n\t\t\t//System.out.println(\"p moves to \"+p+\" (c='\"+(char)data[p]+\"')\");\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tif (i === 0) {\r\n\t\t\treturn 0; // undefined\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\ti++; // e.g., translate LA(-1) to use offset i=0; then data[p+0-1]\r\n\t\t\tif ((this.p + i - 1) < 0) {\r\n\t\t\t\treturn IntStream.EOF; // invalid; no char before first char\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((this.p + i - 1) >= this.n) {\r\n\t\t\t//System.out.println(\"char LA(\"+i+\")=EOF; p=\"+p);\r\n\t\t\treturn IntStream.EOF;\r\n\t\t}\r\n\t\t//System.out.println(\"char LA(\"+i+\")=\"+(char)data[p+i-1]+\"; p=\"+p);\r\n\t\t//System.out.println(\"LA(\"+i+\"); p=\"+p+\" n=\"+n+\" data.length=\"+data.length);\r\n\t\treturn this.data.charCodeAt(this.p + i - 1);\r\n\t}\r\n\r\n\tpublic LT(i: number): number {\r\n\t\treturn this.LA(i);\r\n\t}\r\n\r\n\t/** Return the current input symbol index 0..n where n indicates the\r\n\t * last symbol has been read. The index is the index of char to\r\n\t * be returned from LA(1).\r\n\t */\r\n\t@Override\r\n\tget index(): number {\r\n\t\treturn this.p;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.n;\r\n\t}\r\n\r\n\t/** mark/release do nothing; we have entire buffer */\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// No default implementation since this stream buffers the entire input\r\n\t}\r\n\r\n\t/** consume() ahead until p==index; can't just set p=index as we must\r\n\t * update line and charPositionInLine. If we seek backwards, just set p\r\n\t */\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tif (index <= this.p) {\r\n\t\t\tthis.p = index; // just jump; don't update stream state (line, ...)\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// seek forward, consume until p hits index or n (whichever comes first)\r\n\t\tindex = Math.min(index, this.n);\r\n\t\twhile (this.p < index) {\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getText(interval: Interval): string {\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\t\tif (stop >= this.n) {\r\n\t\t\tstop = this.n - 1;\r\n\t\t}\r\n\t\tlet count: number = stop - start + 1;\r\n\t\tif (start >= this.n) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\t// System.err.println(\"data: \"+Arrays.toString(data)+\", n=\"+n+\r\n\t\t// \t\t\t\t \", start=\"+start+\r\n\t\t// \t\t\t\t \", stop=\"+stop);\r\n\t\treturn this.data.substr(start, count);\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\tif (!this.name) {\r\n\t\t\treturn IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString() { return this.data; }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.4734328-07:00\r\n\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\n\r\nconst INITIAL_NUM_TRANSITIONS: number = 4;\r\n\r\n/**\r\n * The following images show the relation of states and\r\n * {@link ATNState#transitions} for various grammar constructs.\r\n *\r\n * * Solid edges marked with an ε indicate a required\r\n * {@link EpsilonTransition}.\r\n *\r\n * * Dashed edges indicate locations where any transition derived from\r\n * {@link Transition} might appear.\r\n *\r\n * * Dashed nodes are place holders for either a sequence of linked\r\n * {@link BasicState} states or the inclusion of a block representing a nested\r\n * construct in one of the forms below.\r\n *\r\n * * Nodes showing multiple outgoing alternatives with a `...` support\r\n * any number of alternatives (one or more). Nodes without the `...` only\r\n * support the exact number of alternatives shown in the diagram.\r\n *\r\n *

Basic Blocks

\r\n *\r\n *

Rule

\r\n *\r\n * \r\n *\r\n *

Block of 1 or more alternatives

\r\n *\r\n * \r\n *\r\n *

Greedy Loops

\r\n *\r\n *

Greedy Closure: `(...)*`

\r\n *\r\n * \r\n *\r\n *

Greedy Positive Closure: `(...)+`

\r\n *\r\n * \r\n *\r\n *

Greedy Optional: `(...)?`

\r\n *\r\n * \r\n *\r\n *

Non-Greedy Loops

\r\n *\r\n *

Non-Greedy Closure: `(...)*?`

\r\n *\r\n * \r\n *\r\n *

Non-Greedy Positive Closure: `(...)+?`

\r\n *\r\n * \r\n *\r\n *

Non-Greedy Optional: `(...)??`

\r\n *\r\n * \r\n */\r\nexport abstract class ATNState {\r\n\r\n\t/** Which ATN are we in? */\r\n\tpublic atn?: ATN;\r\n\r\n\tpublic stateNumber: number = ATNState.INVALID_STATE_NUMBER;\r\n\r\n\tpublic ruleIndex: number = 0; // at runtime, we don't have Rule objects\r\n\r\n\tpublic epsilonOnlyTransitions: boolean = false;\r\n\r\n\t/** Track the transitions emanating from this ATN state. */\r\n\tprotected transitions: Transition[] = [];\r\n\r\n\tprotected optimizedTransitions: Transition[] = this.transitions;\r\n\r\n\t/** Used to cache lookahead during parsing, not used during construction */\r\n\tpublic nextTokenWithinRule?: IntervalSet;\r\n\r\n\t/**\r\n\t * Gets the state number.\r\n\t *\r\n\t * @returns the state number\r\n\t */\r\n\tpublic getStateNumber(): number {\r\n\t\treturn this.stateNumber;\r\n\t}\r\n\r\n\t/**\r\n\t * For all states except {@link RuleStopState}, this returns the state\r\n\t * number. Returns -1 for stop states.\r\n\t *\r\n\t * @returns -1 for {@link RuleStopState}, otherwise the state number\r\n\t */\r\n\tget nonStopStateNumber(): number {\r\n\t\treturn this.getStateNumber();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.stateNumber;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\t// are these states same object?\r\n\t\tif (o instanceof ATNState) {\r\n\t\t\treturn this.stateNumber === o.stateNumber;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isNonGreedyExitState(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn String(this.stateNumber);\r\n\t}\r\n\r\n\tpublic getTransitions(): Transition[] {\r\n\t\treturn this.transitions.slice(0);\r\n\t}\r\n\r\n\tget numberOfTransitions(): number {\r\n\t\treturn this.transitions.length;\r\n\t}\r\n\r\n\tpublic addTransition(e: Transition, index?: number): void {\r\n\t\tif (this.transitions.length === 0) {\r\n\t\t\tthis.epsilonOnlyTransitions = e.isEpsilon;\r\n\t\t}\r\n\t\telse if (this.epsilonOnlyTransitions !== e.isEpsilon) {\r\n\t\t\tthis.epsilonOnlyTransitions = false;\r\n\t\t\tthrow new Error(\"ATN state \" + this.stateNumber + \" has both epsilon and non-epsilon transitions.\");\r\n\t\t}\r\n\r\n\t\tthis.transitions.splice(index !== undefined ? index : this.transitions.length, 0, e);\r\n\t}\r\n\r\n\tpublic transition(i: number): Transition {\r\n\t\treturn this.transitions[i];\r\n\t}\r\n\r\n\tpublic setTransition(i: number, e: Transition): void {\r\n\t\tthis.transitions[i] = e;\r\n\t}\r\n\r\n\tpublic removeTransition(index: number): Transition {\r\n\t\treturn this.transitions.splice(index, 1)[0];\r\n\t}\r\n\r\n\tpublic abstract readonly stateType: ATNStateType;\r\n\r\n\tget onlyHasEpsilonTransitions(): boolean {\r\n\t\treturn this.epsilonOnlyTransitions;\r\n\t}\r\n\r\n\tpublic setRuleIndex(ruleIndex: number): void {\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\tget isOptimized(): boolean {\r\n\t\treturn this.optimizedTransitions !== this.transitions;\r\n\t}\r\n\r\n\tget numberOfOptimizedTransitions(): number {\r\n\t\treturn this.optimizedTransitions.length;\r\n\t}\r\n\r\n\tpublic getOptimizedTransition(i: number): Transition {\r\n\t\treturn this.optimizedTransitions[i];\r\n\t}\r\n\r\n\tpublic addOptimizedTransition(e: Transition): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthis.optimizedTransitions = new Array();\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions.push(e);\r\n\t}\r\n\r\n\tpublic setOptimizedTransition(i: number, e: Transition): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthrow new Error(\"This ATNState is not optimized.\");\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions[i] = e;\r\n\t}\r\n\r\n\tpublic removeOptimizedTransition(i: number): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthrow new Error(\"This ATNState is not optimized.\");\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions.splice(i, 1);\r\n\t}\r\n}\r\n\r\nexport namespace ATNState {\r\n\texport const INVALID_STATE_NUMBER: number = -1;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.4734328-07:00\r\n\r\nexport enum ATNStateType {\r\n\tINVALID_TYPE = 0,\r\n\tBASIC = 1,\r\n\tRULE_START = 2,\r\n\tBLOCK_START = 3,\r\n\tPLUS_BLOCK_START = 4,\r\n\tSTAR_BLOCK_START = 5,\r\n\tTOKEN_START = 6,\r\n\tRULE_STOP = 7,\r\n\tBLOCK_END = 8,\r\n\tSTAR_LOOP_BACK = 9,\r\n\tSTAR_LOOP_ENTRY = 10,\r\n\tPLUS_LOOP_BACK = 11,\r\n\tLOOP_END = 12,\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.0697674-07:00\r\nimport { CharStream } from \"./CharStream\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\n\r\n\r\n/** The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\r\n * 3 kinds of errors: prediction errors, failed predicate errors, and\r\n * mismatched input errors. In each case, the parser knows where it is\r\n * in the input, where it is in the ATN, the rule invocation stack,\r\n * and what kind of problem occurred.\r\n */\r\nexport class RecognitionException extends Error {\r\n\t// private static serialVersionUID: number = -3861826954750022374L;\r\n\r\n\t/** The {@link Recognizer} where this exception originated. */\r\n\tprivate _recognizer?: Recognizer;\r\n\r\n\tprivate ctx?: RuleContext;\r\n\r\n\tprivate input?: IntStream;\r\n\r\n\t/**\r\n\t * The current {@link Token} when an error occurred. Since not all streams\r\n\t * support accessing symbols by index, we have to track the {@link Token}\r\n\t * instance itself.\r\n\t */\r\n\tprivate offendingToken?: Token;\r\n\r\n\tprivate _offendingState: number = -1;\r\n\r\n\tconstructor(\r\n\t\tlexer: Lexer | undefined,\r\n\t\tinput: CharStream);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer | undefined,\r\n\t\tinput: IntStream | undefined,\r\n\t\tctx: ParserRuleContext | undefined);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer | undefined,\r\n\t\tinput: IntStream | undefined,\r\n\t\tctx: ParserRuleContext | undefined,\r\n\t\tmessage: string);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Lexer | Recognizer | undefined,\r\n\t\tinput: CharStream | IntStream | undefined,\r\n\t\tctx?: ParserRuleContext,\r\n\t\tmessage?: string) {\r\n\t\tsuper(message);\r\n\r\n\t\tthis._recognizer = recognizer;\r\n\t\tthis.input = input;\r\n\t\tthis.ctx = ctx;\r\n\t\tif (recognizer) {\r\n\t\t\tthis._offendingState = recognizer.state;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the ATN state number the parser was in at the time the error\r\n\t * occurred. For {@link NoViableAltException} and\r\n\t * {@link LexerNoViableAltException} exceptions, this is the\r\n\t * {@link DecisionState} number. For others, it is the state whose outgoing\r\n\t * edge we couldn't match.\r\n\t *\r\n\t * If the state number is not known, this method returns -1.\r\n\t */\r\n\tget offendingState(): number {\r\n\t\treturn this._offendingState;\r\n\t}\r\n\r\n\tprotected setOffendingState(offendingState: number): void {\r\n\t\tthis._offendingState = offendingState;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of input symbols which could potentially follow the\r\n\t * previously matched symbol at the time this exception was thrown.\r\n\t *\r\n\t * If the set of expected tokens is not known and could not be computed,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @returns The set of token types that could potentially follow the current\r\n\t * state in the ATN, or `undefined` if the information is not available.\r\n\t */\r\n\tget expectedTokens(): IntervalSet | undefined {\r\n\t\tif (this._recognizer) {\r\n\t\t\treturn this._recognizer.atn.getExpectedTokens(this._offendingState, this.ctx);\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link RuleContext} at the time this exception was thrown.\r\n\t *\r\n\t * If the context is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The {@link RuleContext} at the time this exception was thrown.\r\n\t * If the context is not available, this method returns `undefined`.\r\n\t */\r\n\tget context(): RuleContext | undefined {\r\n\t\treturn this.ctx;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the input stream which is the symbol source for the recognizer where\r\n\t * this exception was thrown.\r\n\t *\r\n\t * If the input stream is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The input stream which is the symbol source for the recognizer\r\n\t * where this exception was thrown, or `undefined` if the stream is not\r\n\t * available.\r\n\t */\r\n\r\n\tget inputStream(): IntStream | undefined {\r\n\t\treturn this.input;\r\n\t}\r\n\r\n\tpublic getOffendingToken(recognizer?: Recognizer): Token | undefined {\r\n\t\tif (recognizer && recognizer !== this._recognizer) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn this.offendingToken;\r\n\t}\r\n\r\n\tprotected setOffendingToken(\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingToken?: TSymbol): void {\r\n\t\tif (recognizer === this._recognizer) {\r\n\t\t\tthis.offendingToken = offendingToken;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link Recognizer} where this exception occurred.\r\n\t *\r\n\t * If the recognizer is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The recognizer where this exception occurred, or `undefined` if\r\n\t * the recognizer is not available.\r\n\t */\r\n\tget recognizer(): Recognizer | undefined {\r\n\t\treturn this._recognizer;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.8530496-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** An ATN transition between any two ATN states. Subclasses define\r\n * atom, set, epsilon, action, predicate, rule transitions.\r\n *\r\n * This is a one way link. It emanates from a state (usually via a list of\r\n * transitions) and has a target state.\r\n *\r\n * Since we never have to change the ATN transitions once we construct it,\r\n * we can fix these transitions as specific classes. The DFA transitions\r\n * on the other hand need to update the labels as it adds transitions to\r\n * the states. We'll use the term Edge for the DFA to distinguish them from\r\n * ATN transitions.\r\n */\r\nexport abstract class Transition {\r\n\tpublic static readonly serializationNames: string[] = [\r\n\t\t\"INVALID\",\r\n\t\t\"EPSILON\",\r\n\t\t\"RANGE\",\r\n\t\t\"RULE\",\r\n\t\t\"PREDICATE\",\r\n\t\t\"ATOM\",\r\n\t\t\"ACTION\",\r\n\t\t\"SET\",\r\n\t\t\"NOT_SET\",\r\n\t\t\"WILDCARD\",\r\n\t\t\"PRECEDENCE\",\r\n\t];\r\n\r\n\t// @SuppressWarnings(\"serial\")\r\n\t// static serializationTypes: Map, number> =\r\n\t// \tCollections.unmodifiableMap(new HashMap, Integer>() {{\r\n\t// \t\tput(EpsilonTransition.class, EPSILON);\r\n\t// \t\tput(RangeTransition.class, RANGE);\r\n\t// \t\tput(RuleTransition.class, RULE);\r\n\t// \t\tput(PredicateTransition.class, PREDICATE);\r\n\t// \t\tput(AtomTransition.class, ATOM);\r\n\t// \t\tput(ActionTransition.class, ACTION);\r\n\t// \t\tput(SetTransition.class, SET);\r\n\t// \t\tput(NotSetTransition.class, NOT_SET);\r\n\t// \t\tput(WildcardTransition.class, WILDCARD);\r\n\t// \t\tput(PrecedencePredicateTransition.class, PRECEDENCE);\r\n\t// \t}});\r\n\r\n\t/** The target of this transition. */\r\n\t@NotNull\r\n\tpublic target: ATNState;\r\n\r\n\tconstructor(@NotNull target: ATNState) {\r\n\t\tif (target == null) {\r\n\t\t\tthrow new Error(\"target cannot be null.\");\r\n\t\t}\r\n\r\n\t\tthis.target = target;\r\n\t}\r\n\r\n\tpublic abstract readonly serializationType: TransitionType;\r\n\r\n\t/**\r\n\t * Determines if the transition is an \"epsilon\" transition.\r\n\t *\r\n\t * The default implementation returns `false`.\r\n\t *\r\n\t * @returns `true` if traversing this transition in the ATN does not\r\n\t * consume an input symbol; otherwise, `false` if traversing this\r\n\t * transition consumes (matches) an input symbol.\r\n\t */\r\n\tget isEpsilon(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget label(): IntervalSet | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic abstract matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.6596177-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Transition } from \"./Transition\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport abstract class AbstractPredicateTransition extends Transition {\r\n\r\n\tconstructor(target: ATNState) {\r\n\t\tsuper(target);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.1239660-07:00\r\nimport { Equatable } from \"./Stubs\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport namespace MurmurHash {\r\n\r\n\tconst DEFAULT_SEED: number = 0;\r\n\r\n\t/**\r\n\t * Initialize the hash using the specified `seed`.\r\n\t *\r\n\t * @param seed the seed (optional)\r\n\t * @returns the intermediate hash value\r\n\t */\r\n\texport function initialize(seed: number = DEFAULT_SEED): number {\r\n\t\treturn seed;\r\n\t}\r\n\r\n\t/**\r\n\t * Update the intermediate hash value for the next input `value`.\r\n\t *\r\n\t * @param hash the intermediate hash value\r\n\t * @param value the value to add to the current hash\r\n\t * @returns the updated intermediate hash value\r\n\t */\r\n\texport function update(hash: number, value: number | string | Equatable | null | undefined): number {\r\n\t\tconst c1: number = 0xCC9E2D51;\r\n\t\tconst c2: number = 0x1B873593;\r\n\t\tconst r1: number = 15;\r\n\t\tconst r2: number = 13;\r\n\t\tconst m: number = 5;\r\n\t\tconst n: number = 0xE6546B64;\r\n\r\n\t\tif (value == null) {\r\n\t\t\tvalue = 0;\r\n\t\t} else if (typeof value === \"string\") {\r\n\t\t\tvalue = hashString(value);\r\n\t\t} else if (typeof value === \"object\") {\r\n\t\t\tvalue = value.hashCode();\r\n\t\t}\r\n\r\n\t\tlet k: number = value;\r\n\t\tk = Math.imul(k, c1);\r\n\t\tk = (k << r1) | (k >>> (32 - r1));\r\n\t\tk = Math.imul(k, c2);\r\n\r\n\t\thash = hash ^ k;\r\n\t\thash = (hash << r2) | (hash >>> (32 - r2));\r\n\t\thash = Math.imul(hash, m) + n;\r\n\r\n\t\treturn hash & 0xFFFFFFFF;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Apply the final computation steps to the intermediate value `hash`\r\n\t * to form the final result of the MurmurHash 3 hash function.\r\n\t *\r\n\t * @param hash the intermediate hash value\r\n\t * @param numberOfWords the number of integer values added to the hash\r\n\t * @returns the final hash result\r\n\t */\r\n\texport function finish(hash: number, numberOfWords: number): number {\r\n\t\thash = hash ^ (numberOfWords * 4);\r\n\t\thash = hash ^ (hash >>> 16);\r\n\t\thash = Math.imul(hash, 0x85EBCA6B);\r\n\t\thash = hash ^ (hash >>> 13);\r\n\t\thash = Math.imul(hash, 0xC2B2AE35);\r\n\t\thash = hash ^ (hash >>> 16);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Utility function to compute the hash code of an array using the\r\n\t * MurmurHash algorithm.\r\n\t *\r\n\t * @param the array element type\r\n\t * @param data the array data\r\n\t * @param seed the seed for the MurmurHash algorithm\r\n\t * @returns the hash code of the data\r\n\t */\r\n\texport function hashCode(data: Iterable, seed: number = DEFAULT_SEED): number {\r\n\t\tlet hash: number = initialize(seed);\r\n\t\tlet length = 0;\r\n\t\tfor (let value of data) {\r\n\t\t\thash = update(hash, value);\r\n\t\t\tlength++;\r\n\t\t}\r\n\r\n\t\thash = finish(hash, length);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Function to hash a string. Based on the implementation found here:\r\n\t * http://stackoverflow.com/a/7616484\r\n\t */\r\n\tfunction hashString(str: string): number {\r\n\t\tlet len = str.length;\r\n\t\tif (len === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet hash = 0;\r\n\t\tfor (let i = 0; i < len; i++) {\r\n\t\t\tlet c = str.charCodeAt(i);\r\n\t\t\thash = (((hash << 5) >>> 0) - hash) + c;\r\n\t\t\thash |= 0;\r\n\t\t}\r\n\r\n\t\treturn hash;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.2127260-07:00\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ObjectEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: ObjectEqualityComparator = new ObjectEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: Equatable | null | undefined): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn obj.hashCode();\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined` or `null`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined` or `null`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: Equatable | null | undefined, b: Equatable | null | undefined): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t}\r\n\r\n\t\treturn a.equals(b);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class DefaultEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: DefaultEqualityComparator = new DefaultEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: any): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t} else if (typeof obj === \"string\" || typeof obj === \"number\") {\r\n\t\t\treturn MurmurHash.hashCode([obj]);\r\n\t\t} else {\r\n\t\t\treturn ObjectEqualityComparator.INSTANCE.hashCode(obj as Equatable);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined` or `null`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined` or `null`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: any, b: any): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t} else if (typeof a === \"string\" || typeof a === \"number\") {\r\n\t\t\treturn a === b;\r\n\t\t} else {\r\n\t\t\treturn ObjectEqualityComparator.INSTANCE.equals(a as Equatable, b as Equatable);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:41.7434086-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { DefaultEqualityComparator } from \"./DefaultEqualityComparator\";\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { NotNull, Nullable, Override, SuppressWarnings } from \"../Decorators\";\r\nimport { JavaCollection, JavaSet } from \"./Stubs\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\n/** {@link Set} implementation with closed hashing (open addressing). */\r\n\r\n// NOTE: JavaScript's Set interface has on significant different diffrence from Java's:\r\n// \t\t e.g. the return type of add() differs!\r\n// For this reason I've commented tweaked the implements clause\r\n\r\nconst INITAL_CAPACITY: number = 16; // must be power of 2\r\nconst LOAD_FACTOR: number = 0.75;\r\n\r\nexport class Array2DHashSet implements JavaSet {\r\n\t@NotNull\r\n\tprotected comparator: EqualityComparator;\r\n\r\n\tprotected buckets: Array;\r\n\r\n\t/** How many elements in set */\r\n\tprotected n: number = 0;\r\n\r\n\tprotected threshold: number = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); // when to expand\r\n\r\n\tconstructor(comparator?: EqualityComparator, initialCapacity?: number);\r\n\tconstructor(set: Array2DHashSet);\r\n\tconstructor(\r\n\t\tcomparatorOrSet?: EqualityComparator | Array2DHashSet,\r\n\t\tinitialCapacity: number = INITAL_CAPACITY) {\r\n\r\n\t\tif (comparatorOrSet instanceof Array2DHashSet) {\r\n\t\t\tthis.comparator = comparatorOrSet.comparator;\r\n\t\t\tthis.buckets = comparatorOrSet.buckets.slice(0);\r\n\t\t\tfor (let i = 0; i < this.buckets.length; i++) {\r\n\t\t\t\tlet bucket = this.buckets[i];\r\n\t\t\t\tif (bucket) {\r\n\t\t\t\t\tthis.buckets[i] = bucket.slice(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.n = comparatorOrSet.n;\r\n\t\t\tthis.threshold = comparatorOrSet.threshold;\r\n\t\t} else {\r\n\t\t\tthis.comparator = comparatorOrSet || DefaultEqualityComparator.INSTANCE;\r\n\t\t\tthis.buckets = this.createBuckets(initialCapacity);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add `o` to set if not there; return existing value if already\r\n\t * there. This method performs the same operation as {@link #add} aside from\r\n\t * the return value.\r\n\t */\r\n\tpublic getOrAdd(o: T): T {\r\n\t\tif (this.n > this.threshold) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this.getOrAddImpl(o);\r\n\t}\r\n\r\n\tprotected getOrAddImpl(o: T): T {\r\n\t\tlet b: number = this.getBucket(o);\r\n\t\tlet bucket = this.buckets[b];\r\n\r\n\t\t// NEW BUCKET\r\n\t\tif (!bucket) {\r\n\t\t\tbucket = [o];\r\n\t\t\tthis.buckets[b] = bucket;\r\n\t\t\tthis.n++;\r\n\t\t\treturn o;\r\n\t\t}\r\n\r\n\t\t// LOOK FOR IT IN BUCKET\r\n\t\tfor (let existing of bucket) {\r\n\t\t\tif (this.comparator.equals(existing, o)) {\r\n\t\t\t\treturn existing; // found existing, quit\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// FULL BUCKET, expand and add to end\r\n\t\tbucket.push(o);\r\n\t\tthis.n++;\r\n\t\treturn o;\r\n\t}\r\n\r\n\tpublic get(o: T): T | undefined {\r\n\t\tif (o == null) {\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\tlet b: number = this.getBucket(o);\r\n\t\tlet bucket = this.buckets[b];\r\n\t\tif (!bucket) {\r\n\t\t\t// no bucket\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tfor (let e of bucket) {\r\n\t\t\tif (this.comparator.equals(e, o)) {\r\n\t\t\t\treturn e;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tprotected getBucket(o: T): number {\r\n\t\tlet hash: number = this.comparator.hashCode(o);\r\n\t\tlet b: number = hash & (this.buckets.length - 1); // assumes len is power of 2\r\n\t\treturn b;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\thash = MurmurHash.update(hash, this.comparator.hashCode(o));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, this.size);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (!(o instanceof Array2DHashSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (o.size !== this.size) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tlet same: boolean = this.containsAll(o);\r\n\t\treturn same;\r\n\t}\r\n\r\n\tprotected expand(): void {\r\n\t\tlet old = this.buckets;\r\n\t\tlet newCapacity: number = this.buckets.length * 2;\r\n\t\tlet newTable: Array = this.createBuckets(newCapacity);\r\n\t\tthis.buckets = newTable;\r\n\t\tthis.threshold = Math.floor(newCapacity * LOAD_FACTOR);\r\n//\t\tSystem.out.println(\"new size=\"+newCapacity+\", thres=\"+threshold);\r\n\t\t// rehash all existing entries\r\n\t\tlet oldSize: number = this.size;\r\n\t\tfor (let bucket of old) {\r\n\t\t\tif (!bucket) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tlet b: number = this.getBucket(o);\r\n\t\t\t\tlet newBucket: T[] | undefined = this.buckets[b];\r\n\t\t\t\tif (!newBucket) {\r\n\t\t\t\t\tnewBucket = [];\r\n\t\t\t\t\tthis.buckets[b] = newBucket;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewBucket.push(o);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tassert(this.n === oldSize);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic add(t: T): boolean {\r\n\t\tlet existing: T = this.getOrAdd(t);\r\n\t\treturn existing === t;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.n;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.n === 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic contains(o: any): boolean {\r\n\t\treturn this.containsFast(this.asElementType(o));\r\n\t}\r\n\r\n\tpublic containsFast(@Nullable obj: T): boolean {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.get(obj) != null;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic *[Symbol.iterator](): IterableIterator {\r\n\t\tyield* this.toArray();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toArray(): T[] {\r\n\t\tconst a = new Array(this.size);\r\n\r\n\t\t// Copy elements from the nested arrays into the destination array\r\n\t\tlet i: number = 0; // Position within destination array\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\ta[i++] = o;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn a;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic containsAll(collection: JavaCollection): boolean {\r\n\t\tif (collection instanceof Array2DHashSet) {\r\n\t\t\tlet s = collection as any as Array2DHashSet;\r\n\t\t\tfor (let bucket of s.buckets) {\r\n\t\t\t\tif (bucket == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let o of bucket) {\r\n\t\t\t\t\tif (o == null) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.containsFast(this.asElementType(o))) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let o of collection) {\r\n\t\t\t\tif (!this.containsFast(this.asElementType(o))) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic addAll(c: Iterable): boolean {\r\n\t\tlet changed: boolean = false;\r\n\r\n\t\tfor (let o of c) {\r\n\t\t\tlet existing: T = this.getOrAdd(o);\r\n\t\t\tif (existing !== o) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clear(): void {\r\n\t\tthis.buckets = this.createBuckets(INITAL_CAPACITY);\r\n\t\tthis.n = 0;\r\n\t\tthis.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this.size === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tlet buf = \"{\";\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += \", \";\r\n\t\t\t\t}\r\n\t\t\t\tbuf += o.toString();\r\n\t\t\t}\r\n\t\t}\r\n\t\tbuf += \"}\";\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic toTableString(): string {\r\n\t\tlet buf = \"\";\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tbuf += \"null\\n\";\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tbuf += \"[\";\r\n\t\t\tlet first: boolean = true;\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbuf += \"_\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += o.toString();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbuf += \"]\\n\";\r\n\t\t}\r\n\t\treturn buf;\r\n\t}\r\n\r\n\t/**\r\n\t * Return `o` as an instance of the element type `T`. If\r\n\t * `o` is non-undefined but known to not be an instance of `T`, this\r\n\t * method returns `undefined`. The base implementation does not perform any\r\n\t * type checks; override this method to provide strong type checks for the\r\n\t * {@link #contains} and {@link #remove} methods to ensure the arguments to\r\n\t * the {@link EqualityComparator} for the set always have the expected\r\n\t * types.\r\n\t *\r\n\t * @param o the object to try and cast to the element type of the set\r\n\t * @returns `o` if it could be an instance of `T`, otherwise\r\n\t * `undefined`.\r\n\t */\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected asElementType(o: any): T {\r\n\t\treturn o as T;\r\n\t}\r\n\r\n\t/**\r\n\t * Return an array of `T[]` with length `capacity`.\r\n\t *\r\n\t * @param capacity the length of the array to return\r\n\t * @returns the newly constructed array\r\n\t */\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected createBuckets(capacity: number): Array {\r\n\t\treturn new Array(capacity);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.2127260-07:00\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ArrayEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: ArrayEqualityComparator = new ArrayEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: Equatable[]): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn MurmurHash.hashCode(obj, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: Equatable[], b: Equatable[]): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t} else if (b == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (a.length !== b.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < a.length; i++) {\r\n\t\t\tif (!ObjectEqualityComparator.INSTANCE.equals(a[i], b[i])) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:45.0833752-07:00\r\n\r\n// Taking a case-by-case approach to pporting this functionaltiy\r\n// as much of it may be supported natively by JavaScript. Or otherwise need\r\n// substantial rethink\r\n\r\nimport { NotNull } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { IntegerList } from \"./IntegerList\";\r\n\r\nexport function escapeWhitespace(s: string, escapeSpaces: boolean): string {\r\n\treturn escapeSpaces ? s.replace(/ /, \"\\u00B7\") : s\r\n\t\t.replace(/\\t/, \"\\\\t\")\r\n\t\t.replace(/\\n/, \"\\\\n\")\r\n\t\t.replace(/\\r/, \"\\\\r\");\r\n}\r\n\r\n// Seriously: why isn't this built in to java? ugh!\r\nexport function join(collection: Iterable, separator: string): string {\r\n\tlet buf = \"\";\r\n\tlet first = true;\r\n\tfor (let current of collection) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t} else {\r\n\t\t\tbuf += separator;\r\n\t\t}\r\n\r\n\t\tbuf += current;\r\n\t}\r\n\r\n\treturn buf;\r\n}\r\n\r\nexport function equals(x: Equatable | undefined, y: Equatable | undefined): boolean {\r\n\tif (x === y) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif (x === undefined || y === undefined) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn x.equals(y);\r\n}\r\n\r\n// export function numNonnull(data: any[]): number {\r\n// \tlet n: number = 0;\r\n// \tif ( data == null ) return n;\r\n// \tfor (let o of data) {\r\n// \t\tif ( o!=null ) n++;\r\n// \t}\r\n// \treturn n;\r\n// }\r\n\r\n// export function removeAllElements(data: Collection, value: T): void {\r\n// \tif ( data==null ) return;\r\n// \twhile ( data.contains(value) ) data.remove(value);\r\n// }\r\n\r\n// export function writeFile(@NotNull file: File, @NotNull content: Uint8Array): void {\r\n// \tlet fos: FileOutputStream = new FileOutputStream(file);\r\n// \ttry {\r\n// \t\tfos.write(content);\r\n// \t} finally {\r\n// \t\tfos.close();\r\n// \t}\r\n// }\r\n\r\n// export function writeFile(@NotNull fileName: string, @NotNull content: string): void {\r\n// \twriteFile(fileName, content, null);\r\n// }\r\n\r\n// export function writeFile(@NotNull fileName: string, @NotNull content: string, @Nullable encoding: string): void {\r\n// \tlet f: File = new File(fileName);\r\n// \tlet fos: FileOutputStream = new FileOutputStream(f);\r\n// \tlet osw: OutputStreamWriter;\r\n// \tif (encoding != null) {\r\n// \t\tosw = new OutputStreamWriter(fos, encoding);\r\n// \t}\r\n// \telse {\r\n// \t\tosw = new OutputStreamWriter(fos);\r\n// \t}\r\n\r\n// \ttry {\r\n// \t\tosw.write(content);\r\n// \t}\r\n// \tfinally {\r\n// \t\tosw.close();\r\n// \t}\r\n// }\r\n\r\n// @NotNull\r\n// export function readFile(@NotNull fileName: string): char[] {\r\n// \treturn readFile(fileName, null);\r\n// }\r\n\r\n// @NotNull\r\n// export function readFile(@NotNull fileName: string, @Nullable encoding: string): char[] {\r\n// \tlet f: File = new File(fileName);\r\n// \tlet size: number = (int)f.length();\r\n// \tlet isr: InputStreamReader;\r\n// \tlet fis: FileInputStream = new FileInputStream(fileName);\r\n// \tif ( encoding!=null ) {\r\n// \t\tisr = new InputStreamReader(fis, encoding);\r\n// \t}\r\n// \telse {\r\n// \t\tisr = new InputStreamReader(fis);\r\n// \t}\r\n// \tlet data: char[] = null;\r\n// \ttry {\r\n// \t\tdata = new char[size];\r\n// \t\tlet n: number = isr.read(data);\r\n// \t\tif (n < data.length) {\r\n// \t\t\tdata = Arrays.copyOf(data, n);\r\n// \t\t}\r\n// \t}\r\n// \tfinally {\r\n// \t\tisr.close();\r\n// \t}\r\n// \treturn data;\r\n// }\r\n\r\n// export function removeAll(@NotNull predicate: List list,@NotNull Predicate): void {\r\n// \tlet j: number = 0;\r\n// \tfor (let i = 0; i < list.size; i++) {\r\n// \t\tlet item: T = list.get(i);\r\n// \t\tif (!predicate.eval(item)) {\r\n// \t\t\tif (j != i) {\r\n// \t\t\t\tlist.set(j, item);\r\n// \t\t\t}\r\n\r\n// \t\t\tj++;\r\n// \t\t}\r\n// \t}\r\n\r\n// \tif (j < list.size) {\r\n// \t\tlist.subList(j, list.size).clear();\r\n// \t}\r\n// }\r\n\r\n// export function removeAll(@NotNull predicate: Iterable iterable,@NotNull Predicate): void {\r\n// \tif (iterable instanceof List) {\r\n// \t\tremoveAll((List)iterable, predicate);\r\n// \t\treturn;\r\n// \t}\r\n\r\n// \tfor (Iterator iterator = iterable.iterator(); iterator.hasNext(); ) {\r\n// \t\tlet item: T = iterator.next();\r\n// \t\tif (predicate.eval(item)) {\r\n// \t\t\titerator.remove();\r\n// \t\t}\r\n// \t}\r\n// }\r\n\r\n/** Convert array of strings to string→index map. Useful for\r\n * converting rulenames to name→ruleindex map.\r\n */\r\nexport function toMap(keys: string[]): Map {\r\n\tlet m: Map = new Map();\r\n\tfor (let i = 0; i < keys.length; i++) {\r\n\t\tm.set(keys[i], i);\r\n\t}\r\n\r\n\treturn m;\r\n}\r\n\r\nexport function toCharArray(str: string): Uint16Array;\r\nexport function toCharArray(data: IntegerList): Uint16Array;\r\nexport function toCharArray(str: string | IntegerList): Uint16Array {\r\n\tif (typeof str === \"string\") {\r\n\t\tlet result = new Uint16Array(str.length);\r\n\t\tfor (let i = 0; i < str.length; i++) {\r\n\t\t\tresult[i] = str.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t} else {\r\n\t\treturn str.toCharArray();\r\n\t}\r\n}\r\n\r\n// /**\r\n// \t* @since 4.5\r\n// \t*/\r\n// @NotNull\r\n// export function toSet(@NotNull bits: BitSet): IntervalSet {\r\n// \tlet s: IntervalSet = new IntervalSet();\r\n// \tlet i: number = bits.nextSetBit(0);\r\n// \twhile ( i >= 0 ) {\r\n// \t\ts.add(i);\r\n// \t\ti = bits.nextSetBit(i+1);\r\n// \t}\r\n// \treturn s;\r\n// }\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.9521478-07:00\r\n\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { Comparable } from \"../misc/Stubs\";\r\nimport { Equatable } from \"../misc/Stubs\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\nfunction max>(items: Iterable): T | undefined {\r\n\tlet result: T | undefined;\r\n\tfor (let current of items) {\r\n\t\tif (result === undefined) {\r\n\t\t\tresult = current;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tlet comparison = result.compareTo(current);\r\n\t\tif (comparison < 0) {\r\n\t\t\tresult = current;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction min>(items: Iterable): T | undefined {\r\n\tlet result: T | undefined;\r\n\tfor (let current of items) {\r\n\t\tif (result === undefined) {\r\n\t\t\tresult = current;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tlet comparison = result.compareTo(current);\r\n\t\tif (comparison > 0) {\r\n\t\t\tresult = current;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/** A tree structure used to record the semantic context in which\r\n * an ATN configuration is valid. It's either a single predicate,\r\n * a conjunction `p1&&p2`, or a sum of products `p1||p2`.\r\n *\r\n * I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\r\n * {@link SemanticContext} within the scope of this outer class.\r\n */\r\nexport abstract class SemanticContext implements Equatable {\r\n\tprivate static _NONE: SemanticContext;\r\n\r\n\t/**\r\n\t * The default {@link SemanticContext}, which is semantically equivalent to\r\n\t * a predicate of the form `{true}?`.\r\n\t */\r\n\tstatic get NONE(): SemanticContext {\r\n\t\tif (SemanticContext._NONE === undefined) {\r\n\t\t\tSemanticContext._NONE = new SemanticContext.Predicate();\r\n\t\t}\r\n\r\n\t\treturn SemanticContext._NONE;\r\n\t}\r\n\r\n\t/**\r\n\t * For context independent predicates, we evaluate them without a local\r\n\t * context (i.e., unedfined context). That way, we can evaluate them without\r\n\t * having to create proper rule-specific context during prediction (as\r\n\t * opposed to the parser, which creates them naturally). In a practical\r\n\t * sense, this avoids a cast exception from RuleContext to myruleContext.\r\n\t *\r\n\t * For context dependent predicates, we must pass in a local context so that\r\n\t * references such as $arg evaluate properly as _localctx.arg. We only\r\n\t * capture context dependent predicates in the context in which we begin\r\n\t * prediction, so we passed in the outer context here in case of context\r\n\t * dependent predicate evaluation.\r\n\t */\r\n\tpublic abstract eval(parser: Recognizer, parserCallStack: RuleContext): boolean;\r\n\r\n\t/**\r\n\t * Evaluate the precedence predicates for the context and reduce the result.\r\n\t *\r\n\t * @param parser The parser instance.\r\n\t * @param parserCallStack\r\n\t * @returns The simplified semantic context after precedence predicates are\r\n\t * evaluated, which will be one of the following values.\r\n\t *\r\n\t * * {@link #NONE}: if the predicate simplifies to `true` after\r\n\t * precedence predicates are evaluated.\r\n\t * * `undefined`: if the predicate simplifies to `false` after\r\n\t * precedence predicates are evaluated.\r\n\t * * `this`: if the semantic context is not changed as a result of\r\n\t * precedence predicate evaluation.\r\n\t * * A non-`undefined` {@link SemanticContext}: the new simplified\r\n\t * semantic context after precedence predicates are evaluated.\r\n\t */\r\n\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic abstract hashCode(): number;\r\n\r\n\tpublic abstract equals(obj: any): boolean;\r\n\r\n\tpublic static and(a: SemanticContext | undefined, b: SemanticContext): SemanticContext {\r\n\t\tif (!a || a === SemanticContext.NONE) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b === SemanticContext.NONE) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\tlet result: SemanticContext.AND = new SemanticContext.AND(a, b);\r\n\t\tif (result.opnds.length === 1) {\r\n\t\t\treturn result.opnds[0];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @see ParserATNSimulator#getPredsForAmbigAlts\r\n\t */\r\n\tpublic static or(a: SemanticContext | undefined, b: SemanticContext): SemanticContext {\r\n\t\tif (!a) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\r\n\t\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\r\n\t\t\treturn SemanticContext.NONE;\r\n\t\t}\r\n\t\tlet result: SemanticContext.OR = new SemanticContext.OR(a, b);\r\n\t\tif (result.opnds.length === 1) {\r\n\t\t\treturn result.opnds[0];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport namespace SemanticContext {\r\n\t/**\r\n\t * This random 30-bit prime represents the value of `AND.class.hashCode()`.\r\n\t */\r\n\tconst AND_HASHCODE = 40363613;\r\n\t/**\r\n\t * This random 30-bit prime represents the value of `OR.class.hashCode()`.\r\n\t */\r\n\tconst OR_HASHCODE = 486279973;\r\n\r\n\tfunction filterPrecedencePredicates(collection: SemanticContext[]): SemanticContext.PrecedencePredicate[] {\r\n\t\tlet result: SemanticContext.PrecedencePredicate[] = [];\r\n\t\tfor (let i = 0; i < collection.length; i++) {\r\n\t\t\tlet context: SemanticContext = collection[i];\r\n\t\t\tif (context instanceof SemanticContext.PrecedencePredicate) {\r\n\t\t\t\tresult.push(context);\r\n\r\n\t\t\t\t// Remove the item from 'collection' and move i back so we look at the same index again\r\n\t\t\t\tcollection.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\texport class Predicate extends SemanticContext {\r\n\t\tpublic ruleIndex: number;\r\n\t\tpublic predIndex: number;\r\n\t\tpublic isCtxDependent: boolean; // e.g., $i ref in pred\r\n\r\n\t\tconstructor();\r\n\t\tconstructor(ruleIndex: number, predIndex: number, isCtxDependent: boolean);\r\n\r\n\t\tconstructor(ruleIndex: number = -1, predIndex: number = -1, isCtxDependent: boolean = false) {\r\n\t\t\tsuper();\r\n\t\t\tthis.ruleIndex = ruleIndex;\r\n\t\t\tthis.predIndex = predIndex;\r\n\t\t\tthis.isCtxDependent = isCtxDependent;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tlet localctx: RuleContext | undefined = this.isCtxDependent ? parserCallStack : undefined;\r\n\t\t\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = MurmurHash.initialize();\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.ruleIndex);\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.predIndex);\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.isCtxDependent ? 1 : 0);\r\n\t\t\thashCode = MurmurHash.finish(hashCode, 3);\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof Predicate)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn this.ruleIndex === obj.ruleIndex &&\r\n\t\t\t\tthis.predIndex === obj.predIndex &&\r\n\t\t\t\tthis.isCtxDependent === obj.isCtxDependent;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\r\n\t\t}\r\n\t}\r\n\r\n\texport class PrecedencePredicate extends SemanticContext implements Comparable {\r\n\t\tpublic precedence: number;\r\n\r\n\t\tconstructor(precedence: number) {\r\n\t\t\tsuper();\r\n\t\t\tthis.precedence = precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\treturn parser.precpred(parserCallStack, this.precedence);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tif (parser.precpred(parserCallStack, this.precedence)) {\r\n\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic compareTo(o: PrecedencePredicate): number {\r\n\t\t\treturn this.precedence - o.precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = 1;\r\n\t\t\thashCode = 31 * hashCode + this.precedence;\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof PrecedencePredicate)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.precedence === obj.precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\t// precedence >= _precedenceStack.peek()\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"{\" + this.precedence + \">=prec}?\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This is the base class for semantic context \"operators\", which operate on\r\n\t * a collection of semantic context \"operands\".\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\texport abstract class Operator extends SemanticContext {\r\n\t\t/**\r\n\t\t * Gets the operands for the semantic context operator.\r\n\t\t *\r\n\t\t * @returns a collection of {@link SemanticContext} operands for the\r\n\t\t * operator.\r\n\t\t *\r\n\t\t * @since 4.3\r\n\t\t */\r\n\t\t// @NotNull\r\n\t\tpublic abstract readonly operands: Iterable;\r\n\t}\r\n\r\n\t/**\r\n\t * A semantic context which is true whenever none of the contained contexts\r\n\t * is false.\r\n\t */\r\n\texport class AND extends Operator {\r\n\t\tpublic opnds: SemanticContext[];\r\n\r\n\t\tconstructor(@NotNull a: SemanticContext, @NotNull b: SemanticContext) {\r\n\t\t\tsuper();\r\n\r\n\t\t\tlet operands: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tif (a instanceof AND) {\r\n\t\t\t\toperands.addAll(a.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(a);\r\n\t\t\t}\r\n\r\n\t\t\tif (b instanceof AND) {\r\n\t\t\t\toperands.addAll(b.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(b);\r\n\t\t\t}\r\n\r\n\t\t\tthis.opnds = operands.toArray();\r\n\t\t\tlet precedencePredicates: PrecedencePredicate[] = filterPrecedencePredicates(this.opnds);\r\n\r\n\t\t\t// interested in the transition with the lowest precedence\r\n\t\t\tlet reduced = min(precedencePredicates);\r\n\t\t\tif (reduced) {\r\n\t\t\t\tthis.opnds.push(reduced);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tget operands(): Iterable {\r\n\t\t\treturn this.opnds;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (!(obj instanceof AND)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn MurmurHash.hashCode(this.opnds, AND_HASHCODE);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * {@inheritDoc}\r\n\t\t *\r\n\t\t * The evaluation of predicates by this context is short-circuiting, but\r\n\t\t * unordered.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tfor (let opnd of this.opnds) {\r\n\t\t\t\tif (!opnd.eval(parser, parserCallStack)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tlet differs: boolean = false;\r\n\t\t\tlet operands: SemanticContext[] = [];\r\n\t\t\tfor (let context of this.opnds) {\r\n\t\t\t\tlet evaluated: SemanticContext | undefined = context.evalPrecedence(parser, parserCallStack);\r\n\t\t\t\tdiffers = differs || (evaluated !== context);\r\n\t\t\t\tif (evaluated == null) {\r\n\t\t\t\t\t// The AND context is false if any element is false\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t\telse if (evaluated !== SemanticContext.NONE) {\r\n\t\t\t\t\t// Reduce the result by skipping true elements\r\n\t\t\t\t\toperands.push(evaluated);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!differs) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (operands.length === 0) {\r\n\t\t\t\t// all elements were true, so the AND context is true\r\n\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t}\r\n\r\n\t\t\tlet result: SemanticContext = operands[0];\r\n\t\t\tfor (let i = 1; i < operands.length; i++) {\r\n\t\t\t\tresult = SemanticContext.and(result, operands[i]);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn Utils.join(this.opnds, \"&&\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A semantic context which is true whenever at least one of the contained\r\n\t * contexts is true.\r\n\t */\r\n\texport class OR extends Operator {\r\n\t\tpublic opnds: SemanticContext[];\r\n\r\n\t\tconstructor(@NotNull a: SemanticContext, @NotNull b: SemanticContext) {\r\n\t\t\tsuper();\r\n\r\n\t\t\tlet operands: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tif (a instanceof OR) {\r\n\t\t\t\toperands.addAll(a.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(a);\r\n\t\t\t}\r\n\r\n\t\t\tif (b instanceof OR) {\r\n\t\t\t\toperands.addAll(b.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(b);\r\n\t\t\t}\r\n\r\n\t\t\tthis.opnds = operands.toArray();\r\n\t\t\tlet precedencePredicates: PrecedencePredicate[] = filterPrecedencePredicates(this.opnds);\r\n\r\n\t\t\t// interested in the transition with the highest precedence\r\n\t\t\tlet reduced = max(precedencePredicates);\r\n\t\t\tif (reduced) {\r\n\t\t\t\tthis.opnds.push(reduced);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tget operands(): Iterable {\r\n\t\t\treturn this.opnds;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (!(obj instanceof OR)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn MurmurHash.hashCode(this.opnds, OR_HASHCODE);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * {@inheritDoc}\r\n\t\t *\r\n\t\t * The evaluation of predicates by this context is short-circuiting, but\r\n\t\t * unordered.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tfor (let opnd of this.opnds) {\r\n\t\t\t\tif (opnd.eval(parser, parserCallStack)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tlet differs: boolean = false;\r\n\t\t\tlet operands: SemanticContext[] = [];\r\n\t\t\tfor (let context of this.opnds) {\r\n\t\t\t\tlet evaluated: SemanticContext | undefined = context.evalPrecedence(parser, parserCallStack);\r\n\t\t\t\tdiffers = differs || (evaluated !== context);\r\n\t\t\t\tif (evaluated === SemanticContext.NONE) {\r\n\t\t\t\t\t// The OR context is true if any element is true\r\n\t\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t\t} else if (evaluated) {\r\n\t\t\t\t\t// Reduce the result by skipping false elements\r\n\t\t\t\t\toperands.push(evaluated);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!differs) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (operands.length === 0) {\r\n\t\t\t\t// all elements were false, so the OR context is false\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\r\n\t\t\tlet result: SemanticContext = operands[0];\r\n\t\t\tfor (let i = 1; i < operands.length; i++) {\r\n\t\t\t\tresult = SemanticContext.or(result, operands[i]);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn Utils.join(this.opnds, \"||\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.2826960-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** TODO: this is old comment:\r\n * A tree of semantic predicates from the grammar AST if label==SEMPRED.\r\n * In the ATN, labels will always be exactly one predicate, but the DFA\r\n * may have to combine a bunch of them as it collects predicates from\r\n * multiple ATN configurations into a single DFA state.\r\n */\r\nexport class PredicateTransition extends AbstractPredicateTransition {\r\n\tpublic ruleIndex: number;\r\n\tpublic predIndex: number;\r\n\tpublic isCtxDependent: boolean; // e.g., $i ref in pred\r\n\r\n\tconstructor(@NotNull target: ATNState, ruleIndex: number, predIndex: number, isCtxDependent: boolean) {\r\n\t\tsuper(target);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.predIndex = predIndex;\r\n\t\tthis.isCtxDependent = isCtxDependent;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.PREDICATE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean { return true; }\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget predicate(): SemanticContext.Predicate {\r\n\t\treturn new SemanticContext.Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.4099946-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./atn/AbstractPredicateTransition\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { Parser } from \"./Parser\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { PredicateTransition } from \"./atn/PredicateTransition\";\r\n\r\n/** A semantic predicate failed during validation. Validation of predicates\r\n * occurs when normally parsing the alternative just like matching a token.\r\n * Disambiguating predicate evaluation occurs when we test a predicate during\r\n * prediction.\r\n */\r\nexport class FailedPredicateException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 5379330841495778709L;\r\n\r\n\tprivate _ruleIndex: number;\r\n\tprivate _predicateIndex: number;\r\n\tprivate _predicate?: string;\r\n\r\n\tconstructor(@NotNull recognizer: Parser, predicate?: string, message?: string) {\r\n\t\tsuper(\r\n\t\t\trecognizer,\r\n\t\t\trecognizer.inputStream,\r\n\t\t\trecognizer.context,\r\n\t\t\tFailedPredicateException.formatMessage(predicate, message));\r\n\t\tlet s: ATNState = recognizer.interpreter.atn.states[recognizer.state];\r\n\r\n\t\tlet trans = s.transition(0) as AbstractPredicateTransition;\r\n\t\tif (trans instanceof PredicateTransition) {\r\n\t\t\tthis._ruleIndex = trans.ruleIndex;\r\n\t\t\tthis._predicateIndex = trans.predIndex;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ruleIndex = 0;\r\n\t\t\tthis._predicateIndex = 0;\r\n\t\t}\r\n\r\n\t\tthis._predicate = predicate;\r\n\t\tsuper.setOffendingToken(recognizer, recognizer.currentToken);\r\n\t}\r\n\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n\r\n\tget predicateIndex(): number {\r\n\t\treturn this._predicateIndex;\r\n\t}\r\n\r\n\tget predicate(): string | undefined {\r\n\t\treturn this._predicate;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprivate static formatMessage(predicate: string | undefined, message: string | undefined): string {\r\n\t\tif (message) {\r\n\t\t\treturn message;\r\n\t\t}\r\n\r\n\t\treturn `failed predicate: {${predicate}}?`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.5187682-07:00\r\n\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** This signifies any kind of mismatched input exceptions such as\r\n * when the current input does not match the expected token.\r\n */\r\nexport class InputMismatchException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 1532568338707443067L;\r\n\r\n\tconstructor(/*@NotNull*/ recognizer: Parser);\r\n\tconstructor(/*@NotNull*/ recognizer: Parser, state: number, context: ParserRuleContext);\r\n\tconstructor(@NotNull recognizer: Parser, state?: number, context?: ParserRuleContext) {\r\n\t\tif (context === undefined) {\r\n\t\t\tcontext = recognizer.context;\r\n\t\t}\r\n\r\n\t\tsuper(recognizer, recognizer.inputStream, context);\r\n\r\n\t\tif (state !== undefined) {\r\n\t\t\tthis.setOffendingState(state);\r\n\t\t}\r\n\r\n\t\tthis.setOffendingToken(recognizer, recognizer.currentToken);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport namespace Arrays {\r\n\t/**\r\n\t * Searches the specified array of numbers for the specified value using the binary search algorithm. The array must\r\n\t * be sorted prior to making this call. If it is not sorted, the results are unspecified. If the array contains\r\n\t * multiple elements with the specified value, there is no guarantee which one will be found.\r\n\t *\r\n\t * @returns index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The\r\n\t * insertion point is defined as the point at which the key would be inserted into the array: the index of the first\r\n\t * element greater than the key, or array.length if all elements in the array are less than the specified key. Note\r\n\t * that this guarantees that the return value will be >= 0 if and only if the key is found.\r\n\t */\r\n\texport function binarySearch(array: ArrayLike, key: number, fromIndex?: number, toIndex?: number): number {\r\n\t\treturn binarySearch0(array, fromIndex !== undefined ? fromIndex : 0, toIndex !== undefined ? toIndex : array.length, key);\r\n\t}\r\n\r\n\tfunction binarySearch0(array: ArrayLike, fromIndex: number, toIndex: number, key: number): number {\r\n\t\tlet low: number = fromIndex;\r\n\t\tlet high: number = toIndex - 1;\r\n\r\n\t\twhile (low <= high) {\r\n\t\t\tlet mid: number = (low + high) >>> 1;\r\n\t\t\tlet midVal: number = array[mid];\r\n\r\n\t\t\tif (midVal < key) {\r\n\t\t\t\tlow = mid + 1;\r\n\t\t\t} else if (midVal > key) {\r\n\t\t\t\thigh = mid - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// key found\r\n\t\t\t\treturn mid;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// key not found.\r\n\t\treturn -(low + 1);\r\n\t}\r\n\r\n\texport function toString(array: Iterable) {\r\n\t\tlet result = \"[\";\r\n\r\n\t\tlet first = true;\r\n\t\tfor (let element of array) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tresult += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tif (element === null) {\r\n\t\t\t\tresult += \"null\";\r\n\t\t\t} else if (element === undefined) {\r\n\t\t\t\tresult += \"undefined\";\r\n\t\t\t} else {\r\n\t\t\t\tresult += element;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult += \"]\";\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.5099429-07:00\r\n\r\nimport { Arrays } from \"./Arrays\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { JavaCollection } from \"./Stubs\";\r\n\r\nconst EMPTY_DATA: Int32Array = new Int32Array(0);\r\n\r\nconst INITIAL_SIZE: number = 4;\r\nconst MAX_ARRAY_SIZE: number = (((1 << 31) >>> 0) - 1) - 8;\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class IntegerList {\r\n\t@NotNull\r\n\tprivate _data: Int32Array;\r\n\r\n\tprivate _size: number;\r\n\r\n\tconstructor(arg?: number | IntegerList | Iterable) {\r\n\t\tif (!arg) {\r\n\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\tthis._size = 0;\r\n\t\t} else if (arg instanceof IntegerList) {\r\n\t\t\tthis._data = arg._data.slice(0);\r\n\t\t\tthis._size = arg._size;\r\n\t\t} else if (typeof arg === \"number\") {\r\n\t\t\tif (arg === 0) {\r\n\t\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\t\tthis._size = 0;\r\n\t\t\t} else {\r\n\t\t\t\tthis._data = new Int32Array(arg);\r\n\t\t\t\tthis._size = 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// arg is Iterable\r\n\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\tthis._size = 0;\r\n\t\t\tfor (let value of arg) {\r\n\t\t\t\tthis.add(value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic add(value: number): void {\r\n\t\tif (this._data.length === this._size) {\r\n\t\t\tthis.ensureCapacity(this._size + 1);\r\n\t\t}\r\n\r\n\t\tthis._data[this._size] = value;\r\n\t\tthis._size++;\r\n\t}\r\n\r\n\tpublic addAll(list: number[] | IntegerList | JavaCollection): void {\r\n\t\tif (Array.isArray(list)) {\r\n\t\t\tthis.ensureCapacity(this._size + list.length);\r\n\t\t\tthis._data.subarray(this._size, this._size + list.length).set(list);\r\n\t\t\tthis._size += list.length;\r\n\t\t} else if (list instanceof IntegerList) {\r\n\t\t\tthis.ensureCapacity(this._size + list._size);\r\n\t\t\tthis._data.subarray(this._size, this._size + list.size).set(list._data);\r\n\t\t\tthis._size += list._size;\r\n\t\t} else {\r\n\t\t\t// list is JavaCollection\r\n\t\t\tthis.ensureCapacity(this._size + list.size);\r\n\t\t\tlet current: number = 0;\r\n\t\t\tfor (let xi of list) {\r\n\t\t\t\tthis._data[this._size + current] = xi;\r\n\t\t\t\tcurrent++;\r\n\t\t\t}\r\n\r\n\t\t\tthis._size += list.size;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get(index: number): number {\r\n\t\tif (index < 0 || index >= this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\treturn this._data[index];\r\n\t}\r\n\r\n\tpublic contains(value: number): boolean {\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tif (this._data[i] === value) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic set(index: number, value: number): number {\r\n\t\tif (index < 0 || index >= this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tlet previous: number = this._data[index];\r\n\t\tthis._data[index] = value;\r\n\t\treturn previous;\r\n\t}\r\n\r\n\tpublic removeAt(index: number): number {\r\n\t\tlet value: number = this.get(index);\r\n\t\tthis._data.copyWithin(index, index + 1, this._size);\r\n\t\tthis._data[this._size - 1] = 0;\r\n\t\tthis._size--;\r\n\t\treturn value;\r\n\t}\r\n\r\n\tpublic removeRange(fromIndex: number, toIndex: number): void {\r\n\t\tif (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tif (fromIndex > toIndex) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tthis._data.copyWithin(toIndex, fromIndex, this._size);\r\n\t\tthis._data.fill(0, this._size - (toIndex - fromIndex), this._size);\r\n\t\tthis._size -= (toIndex - fromIndex);\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\treturn this._size === 0;\r\n\t}\r\n\r\n\tget size(): number {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\tpublic trimToSize(): void {\r\n\t\tif (this._data.length === this._size) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._data = this._data.slice(0, this._size);\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tthis._data.fill(0, 0, this._size);\r\n\t\tthis._size = 0;\r\n\t}\r\n\r\n\tpublic toArray(): number[] {\r\n\t\tif (this._size === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn Array.from(this._data.subarray(0, this._size));\r\n\t}\r\n\r\n\tpublic sort(): void {\r\n\t\tthis._data.subarray(0, this._size).sort();\r\n\t}\r\n\r\n\t/**\r\n\t * Compares the specified object with this list for equality. Returns\r\n\t * `true` if and only if the specified object is also an {@link IntegerList},\r\n\t * both lists have the same size, and all corresponding pairs of elements in\r\n\t * the two lists are equal. In other words, two lists are defined to be\r\n\t * equal if they contain the same elements in the same order.\r\n\t *\r\n\t * This implementation first checks if the specified object is this\r\n\t * list. If so, it returns `true`; if not, it checks if the\r\n\t * specified object is an {@link IntegerList}. If not, it returns `false`;\r\n\t * if so, it checks the size of both lists. If the lists are not the same size,\r\n\t * it returns `false`; otherwise it iterates over both lists, comparing\r\n\t * corresponding pairs of elements. If any comparison returns `false`,\r\n\t * this method returns `false`.\r\n\t *\r\n\t * @param o the object to be compared for equality with this list\r\n\t * @returns `true` if the specified object is equal to this list\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(o instanceof IntegerList)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._size !== o._size) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tif (this._data[i] !== o._data[i]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the hash code value for this list.\r\n\t *\r\n\t * This implementation uses exactly the code that is used to define the\r\n\t * list hash function in the documentation for the {@link List#hashCode}\r\n\t * method.\r\n\t *\r\n\t * @returns the hash code value for this list\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hashCode: number = 1;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\thashCode = 31 * hashCode + this._data[i];\r\n\t\t}\r\n\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representation of this list.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._data.toString();\r\n\t}\r\n\r\n\tpublic binarySearch(key: number, fromIndex?: number, toIndex?: number): number {\r\n\t\tif (fromIndex === undefined) {\r\n\t\t\tfromIndex = 0;\r\n\t\t}\r\n\r\n\t\tif (toIndex === undefined) {\r\n\t\t\ttoIndex = this._size;\r\n\t\t}\r\n\r\n\t\tif (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tif (fromIndex > toIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\treturn Arrays.binarySearch(this._data, key, fromIndex, toIndex);\r\n\t}\r\n\r\n\tprivate ensureCapacity(capacity: number): void {\r\n\t\tif (capacity < 0 || capacity > MAX_ARRAY_SIZE) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet newLength: number;\r\n\t\tif (this._data.length === 0) {\r\n\t\t\tnewLength = INITIAL_SIZE;\r\n\t\t} else {\r\n\t\t\tnewLength = this._data.length;\r\n\t\t}\r\n\r\n\t\twhile (newLength < capacity) {\r\n\t\t\tnewLength = newLength * 2;\r\n\t\t\tif (newLength < 0 || newLength > MAX_ARRAY_SIZE) {\r\n\t\t\t\tnewLength = MAX_ARRAY_SIZE;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet tmp = new Int32Array(newLength);\r\n\t\ttmp.set(this._data);\r\n\t\tthis._data = tmp;\r\n\t}\r\n\r\n\t/** Convert the list to a UTF-16 encoded char array. If all values are less\r\n\t * than the 0xFFFF 16-bit code point limit then this is just a char array\r\n\t * of 16-bit char as usual. For values in the supplementary range, encode\r\n\t * them as two UTF-16 code units.\r\n\t */\r\n\tpublic toCharArray(): Uint16Array {\r\n\t\t// Optimize for the common case (all data values are < 0xFFFF) to avoid an extra scan\r\n\t\tlet resultArray: Uint16Array = new Uint16Array(this._size);\r\n\t\tlet resultIdx = 0;\r\n\t\tlet calculatedPreciseResultSize = false;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tlet codePoint = this._data[i];\r\n\t\t\tif (codePoint >= 0 && codePoint < 0x10000) {\r\n\t\t\t\tresultArray[resultIdx] = codePoint;\r\n\t\t\t\tresultIdx++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate the precise result size if we encounter a code point > 0xFFFF\r\n\t\t\tif (!calculatedPreciseResultSize) {\r\n\t\t\t\tlet newResultArray = new Uint16Array(this.charArraySize());\r\n\t\t\t\tnewResultArray.set(resultArray, 0);\r\n\t\t\t\tresultArray = newResultArray;\r\n\t\t\t\tcalculatedPreciseResultSize = true;\r\n\t\t\t}\r\n\r\n\t\t\t// This will throw RangeError if the code point is not a valid Unicode code point\r\n\t\t\tlet pair = String.fromCodePoint(codePoint);\r\n\t\t\tresultArray[resultIdx] = pair.charCodeAt(0);\r\n\t\t\tresultArray[resultIdx + 1] = pair.charCodeAt(1);\r\n\t\t\tresultIdx += 2;\r\n\t\t}\r\n\t\treturn resultArray;\r\n\t}\r\n\r\n\tprivate charArraySize(): number {\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tresult += this._data[i] >= 0x10000 ? 2 : 1;\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.7402214-07:00\r\n\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\n\r\nconst INTERVAL_POOL_MAX_VALUE: number = 1000;\r\n\r\n/** An immutable inclusive interval a..b */\r\nexport class Interval implements Equatable {\r\n\tprivate static _INVALID: Interval = new Interval(-1, -2);\r\n\tstatic get INVALID(): Interval {\r\n\t\treturn Interval._INVALID;\r\n\t}\r\n\r\n\tprivate static readonly cache: Interval[] = new Array(INTERVAL_POOL_MAX_VALUE + 1);\r\n\r\n\t/**\r\n\t * @param a The start of the interval\r\n\t * @param b The end of the interval (inclusive)\r\n\t */\r\n\tconstructor(public a: number, public b: number) {\r\n\t}\r\n\r\n\t/** Interval objects are used readonly so share all with the\r\n\t * same single value a==b up to some max size. Use an array as a perfect hash.\r\n\t * Return shared object for 0..INTERVAL_POOL_MAX_VALUE or a new\r\n\t * Interval object with a..a in it. On Java.g4, 218623 IntervalSets\r\n\t * have a..a (set with 1 element).\r\n\t */\r\n\tpublic static of(a: number, b: number): Interval {\r\n\t\t// cache just a..a\r\n\t\tif (a !== b || a < 0 || a > INTERVAL_POOL_MAX_VALUE) {\r\n\t\t\treturn new Interval(a, b);\r\n\t\t}\r\n\r\n\t\tif (Interval.cache[a] == null) {\r\n\t\t\tInterval.cache[a] = new Interval(a, a);\r\n\t\t}\r\n\r\n\t\treturn Interval.cache[a];\r\n\t}\r\n\r\n\t/** return number of elements between a and b inclusively. x..x is length 1.\r\n\t * if b < a, then length is 0. 9..10 has length 2.\r\n\t */\r\n\tget length(): number {\r\n\t\tif (this.b < this.a) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn this.b - this.a + 1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse if (!(o instanceof Interval)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.a === o.a && this.b === o.b;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = 23;\r\n\t\thash = hash * 31 + this.a;\r\n\t\thash = hash * 31 + this.b;\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/** Does this start completely before other? Disjoint */\r\n\tpublic startsBeforeDisjoint(other: Interval): boolean {\r\n\t\treturn this.a < other.a && this.b < other.a;\r\n\t}\r\n\r\n\t/** Does this start at or before other? Nondisjoint */\r\n\tpublic startsBeforeNonDisjoint(other: Interval): boolean {\r\n\t\treturn this.a <= other.a && this.b >= other.a;\r\n\t}\r\n\r\n\t/** Does this.a start after other.b? May or may not be disjoint */\r\n\tpublic startsAfter(other: Interval): boolean {\r\n\t\treturn this.a > other.a;\r\n\t}\r\n\r\n\t/** Does this start completely after other? Disjoint */\r\n\tpublic startsAfterDisjoint(other: Interval): boolean {\r\n\t\treturn this.a > other.b;\r\n\t}\r\n\r\n\t/** Does this start after other? NonDisjoint */\r\n\tpublic startsAfterNonDisjoint(other: Interval): boolean {\r\n\t\treturn this.a > other.a && this.a <= other.b; // this.b>=other.b implied\r\n\t}\r\n\r\n\t/** Are both ranges disjoint? I.e., no overlap? */\r\n\tpublic disjoint(other: Interval): boolean {\r\n\t\treturn this.startsBeforeDisjoint(other) || this.startsAfterDisjoint(other);\r\n\t}\r\n\r\n\t/** Are two intervals adjacent such as 0..41 and 42..42? */\r\n\tpublic adjacent(other: Interval): boolean {\r\n\t\treturn this.a === other.b + 1 || this.b === other.a - 1;\r\n\t}\r\n\r\n\tpublic properlyContains(other: Interval): boolean {\r\n\t\treturn other.a >= this.a && other.b <= this.b;\r\n\t}\r\n\r\n\t/** Return the interval computed from combining this and other */\r\n\tpublic union(other: Interval): Interval {\r\n\t\treturn Interval.of(Math.min(this.a, other.a), Math.max(this.b, other.b));\r\n\t}\r\n\r\n\t/** Return the interval in common between this and o */\r\n\tpublic intersection(other: Interval): Interval {\r\n\t\treturn Interval.of(Math.max(this.a, other.a), Math.min(this.b, other.b));\r\n\t}\r\n\r\n\t/** Return the interval with elements from `this` not in `other`;\r\n\t * `other` must not be totally enclosed (properly contained)\r\n\t * within `this`, which would result in two disjoint intervals\r\n\t * instead of the single one returned by this method.\r\n\t */\r\n\tpublic differenceNotProperlyContained(other: Interval): Interval | undefined {\r\n\t\tlet diff: Interval | undefined;\r\n\t\tif (other.startsBeforeNonDisjoint(this)) {\r\n\t\t\t// other.a to left of this.a (or same)\r\n\t\t\tdiff = Interval.of(Math.max(this.a, other.b + 1), this.b);\r\n\t\t} else if (other.startsAfterNonDisjoint(this)) {\r\n\t\t\t// other.a to right of this.a\r\n\t\t\tdiff = Interval.of(this.a, other.a - 1);\r\n\t\t}\r\n\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.a + \"..\" + this.b;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.7862802-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\n/** A token has properties: text, type, line, character position in the line\r\n * (so we can ignore tabs), token channel, index, and source from which\r\n * we obtained this token.\r\n */\r\nexport interface Token {\r\n\t/**\r\n\t * Get the text of the token.\r\n\t */\r\n\treadonly text: string | undefined;\r\n\r\n\t/** Get the token type of the token */\r\n\treadonly type: number;\r\n\r\n\t/** The line number on which the 1st character of this token was matched,\r\n\t * line=1..n\r\n\t */\r\n\treadonly line: number;\r\n\r\n\t/** The index of the first character of this token relative to the\r\n\t * beginning of the line at which it occurs, 0..n-1\r\n\t */\r\n\treadonly charPositionInLine: number;\r\n\r\n\t/** Return the channel this token. Each token can arrive at the parser\r\n\t * on a different channel, but the parser only \"tunes\" to a single channel.\r\n\t * The parser ignores everything not on DEFAULT_CHANNEL.\r\n\t */\r\n\treadonly channel: number;\r\n\r\n\t/** An index from 0..n-1 of the token object in the input stream.\r\n\t * This must be valid in order to print token streams and\r\n\t * use TokenRewriteStream.\r\n\t *\r\n\t * Return -1 to indicate that this token was conjured up since\r\n\t * it doesn't have a valid index.\r\n\t */\r\n\treadonly tokenIndex: number;\r\n\r\n\t/** The starting character index of the token\r\n\t * This method is optional; return -1 if not implemented.\r\n\t */\r\n\treadonly startIndex: number;\r\n\r\n\t/** The last character index of the token.\r\n\t * This method is optional; return -1 if not implemented.\r\n\t */\r\n\treadonly stopIndex: number;\r\n\r\n\t/** Gets the {@link TokenSource} which created this token.\r\n\t */\r\n\treadonly tokenSource: TokenSource | undefined;\r\n\r\n\t/**\r\n\t * Gets the {@link CharStream} from which this token was derived.\r\n\t */\r\n\treadonly inputStream: CharStream | undefined;\r\n}\r\n\r\nexport namespace Token {\r\n\texport const INVALID_TYPE: number = 0;\r\n\r\n\t/** During lookahead operations, this \"token\" signifies we hit rule end ATN state\r\n\t * and did not follow it despite needing to.\r\n\t */\r\n\texport const EPSILON: number = -2;\r\n\r\n\texport const MIN_USER_TOKEN_TYPE: number = 1;\r\n\r\n\texport const EOF: number = IntStream.EOF;\r\n\r\n\t/** All tokens go to the parser (unless skip() is called in that rule)\r\n\t * on a particular \"channel\". The parser tunes to a particular channel\r\n\t * so that whitespace etc... can go to the parser on a \"hidden\" channel.\r\n\t */\r\n\texport const DEFAULT_CHANNEL: number = 0;\r\n\r\n\t/** Anything on different channel than DEFAULT_CHANNEL is not parsed\r\n\t * by parser.\r\n\t */\r\n\texport const HIDDEN_CHANNEL: number = 1;\r\n\r\n\t/**\r\n\t * This is the minimum constant value which can be assigned to a\r\n\t * user-defined token channel.\r\n\t *\r\n\t * The non-negative numbers less than {@link #MIN_USER_CHANNEL_VALUE} are\r\n\t * assigned to the predefined channels {@link #DEFAULT_CHANNEL} and\r\n\t * {@link #HIDDEN_CHANNEL}.\r\n\t *\r\n\t * @see `Token.channel`\r\n\t */\r\n\texport const MIN_USER_CHANNEL_VALUE: number = 2;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.1614404-07:00\r\n\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { WritableToken } from \"./WritableToken\";\r\n\r\nexport class CommonToken implements WritableToken {\r\n\t/**\r\n\t * An empty {@link Tuple2} which is used as the default value of\r\n\t * {@link #source} for tokens that do not have a source.\r\n\t */\r\n\tprotected static readonly EMPTY_SOURCE: { source?: TokenSource, stream?: CharStream } =\r\n\t\t{ source: undefined, stream: undefined };\r\n\r\n\t/**\r\n\t * This is the backing field for `type`.\r\n\t */\r\n\tprivate _type: number;\r\n\t/**\r\n\t * This is the backing field for {@link #getLine} and {@link #setLine}.\r\n\t */\r\n\tprivate _line: number = 0;\r\n\t/**\r\n\t * This is the backing field for {@link #getCharPositionInLine} and\r\n\t * {@link #setCharPositionInLine}.\r\n\t */\r\n\tprivate _charPositionInLine: number = -1; // set to invalid position\r\n\t/**\r\n\t * This is the backing field for {@link #getChannel} and\r\n\t * {@link #setChannel}.\r\n\t */\r\n\tprivate _channel: number = Token.DEFAULT_CHANNEL;\r\n\t/**\r\n\t * This is the backing field for {@link #getTokenSource} and\r\n\t * {@link #getInputStream}.\r\n\t *\r\n\t * These properties share a field to reduce the memory footprint of\r\n\t * {@link CommonToken}. Tokens created by a {@link CommonTokenFactory} from\r\n\t * the same source and input stream share a reference to the same\r\n\t * {@link Tuple2} containing these values.\r\n\t */\r\n\t@NotNull\r\n\tprotected source: { source?: TokenSource, stream?: CharStream };\r\n\r\n\t/**\r\n\t * This is the backing field for {@link #getText} when the token text is\r\n\t * explicitly set in the constructor or via {@link #setText}.\r\n\t *\r\n\t * @see `text`\r\n\t */\r\n\tprivate _text?: string;\r\n\r\n\t/**\r\n\t * This is the backing field for `tokenIndex`.\r\n\t */\r\n\tprotected index: number = -1;\r\n\r\n\t/**\r\n\t * This is the backing field for `startIndex`.\r\n\t */\r\n\tprotected start: number;\r\n\r\n\t/**\r\n\t * This is the backing field for `stopIndex`.\r\n\t */\r\n\tprivate stop: number;\r\n\r\n\tconstructor(type: number, text?: string, @NotNull source: { source?: TokenSource, stream?: CharStream } = CommonToken.EMPTY_SOURCE, channel: number = Token.DEFAULT_CHANNEL, start: number = 0, stop: number = 0) {\r\n\t\tthis._text = text;\r\n\t\tthis._type = type;\r\n\t\tthis.source = source;\r\n\t\tthis._channel = channel;\r\n\t\tthis.start = start;\r\n\t\tthis.stop = stop;\r\n\t\tif (source.source != null) {\r\n\t\t\tthis._line = source.source.line;\r\n\t\t\tthis._charPositionInLine = source.source.charPositionInLine;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a new {@link CommonToken} as a copy of another {@link Token}.\r\n\t *\r\n\t * If `oldToken` is also a {@link CommonToken} instance, the newly\r\n\t * constructed token will share a reference to the {@link #text} field and\r\n\t * the {@link Tuple2} stored in {@link #source}. Otherwise, {@link #text} will\r\n\t * be assigned the result of calling {@link #getText}, and {@link #source}\r\n\t * will be constructed from the result of {@link Token#getTokenSource} and\r\n\t * {@link Token#getInputStream}.\r\n\t *\r\n\t * @param oldToken The token to copy.\r\n\t */\r\n\tpublic static fromToken(@NotNull oldToken: Token): CommonToken {\r\n\t\tlet result: CommonToken = new CommonToken(oldToken.type, undefined, CommonToken.EMPTY_SOURCE, oldToken.channel, oldToken.startIndex, oldToken.stopIndex);\r\n\t\tresult._line = oldToken.line;\r\n\t\tresult.index = oldToken.tokenIndex;\r\n\t\tresult._charPositionInLine = oldToken.charPositionInLine;\r\n\r\n\t\tif (oldToken instanceof CommonToken) {\r\n\t\t\tresult._text = oldToken._text;\r\n\t\t\tresult.source = oldToken.source;\r\n\t\t} else {\r\n\t\t\tresult._text = oldToken.text;\r\n\t\t\tresult.source = { source: oldToken.tokenSource, stream: oldToken.inputStream };\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\t// @Override\r\n\tset type(type: number) {\r\n\t\tthis._type = type;\r\n\t}\r\n\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn this._line;\r\n\t}\r\n\r\n\t// @Override\r\n\tset line(line: number) {\r\n\t\tthis._line = line;\r\n\t}\r\n\r\n\t@Override\r\n\tget text(): string | undefined {\r\n\t\tif (this._text != null) {\r\n\t\t\treturn this._text;\r\n\t\t}\r\n\r\n\t\tlet input: CharStream | undefined = this.inputStream;\r\n\t\tif (input == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet n: number = input.size;\r\n\t\tif (this.start < n && this.stop < n) {\r\n\t\t\treturn input.getText(Interval.of(this.start, this.stop));\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Explicitly set the text for this token. If {code text} is not\r\n\t * `undefined`, then {@link #getText} will return this value rather than\r\n\t * extracting the text from the input.\r\n\t *\r\n\t * @param text The explicit text of the token, or `undefined` if the text\r\n\t * should be obtained from the input along with the start and stop indexes\r\n\t * of the token.\r\n\t */\r\n\t// @Override\r\n\tset text(text: string | undefined) {\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn this._charPositionInLine;\r\n\t}\r\n\r\n\t// @Override\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis._charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\t@Override\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\t// @Override\r\n\tset channel(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\t@Override\r\n\tget startIndex(): number {\r\n\t\treturn this.start;\r\n\t}\r\n\r\n\tset startIndex(start: number) {\r\n\t\tthis.start = start;\r\n\t}\r\n\r\n\t@Override\r\n\tget stopIndex(): number {\r\n\t\treturn this.stop;\r\n\t}\r\n\r\n\tset stopIndex(stop: number) {\r\n\t\tthis.stop = stop;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenIndex(): number {\r\n\t\treturn this.index;\r\n\t}\r\n\r\n\t// @Override\r\n\tset tokenIndex(index: number) {\r\n\t\tthis.index = index;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenSource(): TokenSource | undefined {\r\n\t\treturn this.source.source;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\treturn this.source.stream;\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recognizer: Recognizer | undefined): string;\r\n\r\n\t@Override\r\n\tpublic toString(recognizer?: Recognizer): string {\r\n\t\tlet channelStr: string = \"\";\r\n\t\tif (this._channel > 0) {\r\n\t\t\tchannelStr = \",channel=\" + this._channel;\r\n\t\t}\r\n\r\n\t\tlet txt: string | undefined = this.text;\r\n\t\tif (txt != null) {\r\n\t\t\ttxt = txt.replace(/\\n/g, \"\\\\n\");\r\n\t\t\ttxt = txt.replace(/\\r/g, \"\\\\r\");\r\n\t\t\ttxt = txt.replace(/\\t/g, \"\\\\t\");\r\n\t\t} else {\r\n\t\t\ttxt = \"\";\r\n\t\t}\r\n\r\n\t\tlet typeString = String(this._type);\r\n\t\tif (recognizer) {\r\n\t\t\ttypeString = recognizer.vocabulary.getDisplayName(this._type);\r\n\t\t}\r\n\r\n\t\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" + txt + \"',<\" + typeString + \">\" + channelStr + \",\" + this._line + \":\" + this.charPositionInLine + \"]\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.3010112-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonToken } from \"./CommonToken\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * This default implementation of {@link TokenFactory} creates\r\n * {@link CommonToken} objects.\r\n */\r\nexport class CommonTokenFactory implements TokenFactory {\r\n\t/**\r\n\t * Indicates whether {@link CommonToken#setText} should be called after\r\n\t * constructing tokens to explicitly set the text. This is useful for cases\r\n\t * where the input stream might not be able to provide arbitrary substrings\r\n\t * of text from the input after the lexer creates a token (e.g. the\r\n\t * implementation of {@link CharStream#getText} in\r\n\t * {@link UnbufferedCharStream}\r\n\t * {@link UnsupportedOperationException}). Explicitly setting the token text\r\n\t * allows {@link Token#getText} to be called at any time regardless of the\r\n\t * input stream implementation.\r\n\t *\r\n\t * The default value is `false` to avoid the performance and memory\r\n\t * overhead of copying text for every token unless explicitly requested.\r\n\t */\r\n\tprotected copyText: boolean;\r\n\r\n\t/**\r\n\t * Constructs a {@link CommonTokenFactory} with the specified value for\r\n\t * {@link #copyText}.\r\n\t *\r\n\t * When `copyText` is `false`, the {@link #DEFAULT} instance\r\n\t * should be used instead of constructing a new instance.\r\n\t *\r\n\t * @param copyText The value for {@link #copyText}.\r\n\t */\r\n\tconstructor(copyText: boolean = false) {\r\n\t\tthis.copyText = copyText;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic create(\r\n\t\tsource: { source?: TokenSource, stream?: CharStream },\r\n\t\ttype: number,\r\n\t\ttext: string | undefined,\r\n\t\tchannel: number,\r\n\t\tstart: number,\r\n\t\tstop: number,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number): CommonToken {\r\n\r\n\t\tlet t: CommonToken = new CommonToken(type, text, source, channel, start, stop);\r\n\t\tt.line = line;\r\n\t\tt.charPositionInLine = charPositionInLine;\r\n\t\tif (text == null && this.copyText && source.stream != null) {\r\n\t\t\tt.text = source.stream.getText(Interval.of(start, stop));\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic createSimple(type: number, text: string): CommonToken {\r\n\t\treturn new CommonToken(type, text);\r\n\t}\r\n}\r\n\r\nexport namespace CommonTokenFactory {\r\n\t/**\r\n\t * The default {@link CommonTokenFactory} instance.\r\n\t *\r\n\t * This token factory does not explicitly copy token text when constructing\r\n\t * tokens.\r\n\t */\r\n\texport const DEFAULT: TokenFactory = new CommonTokenFactory();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.6647101-07:00\r\n\r\nimport { IntegerList } from \"./IntegerList\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class IntegerStack extends IntegerList {\r\n\r\n\tconstructor(arg?: number | IntegerStack) {\r\n\t\tsuper(arg);\r\n\t}\r\n\r\n\tpublic push(value: number): void {\r\n\t\tthis.add(value);\r\n\t}\r\n\r\n\tpublic pop(): number {\r\n\t\treturn this.removeAt(this.size - 1);\r\n\t}\r\n\r\n\tpublic peek(): number {\r\n\t\treturn this.get(this.size - 1);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.1172076-07:00\r\n\r\nimport { LexerActionExecutor } from \"../atn/LexerActionExecutor\";\r\n\r\n/**\r\n * Stores information about a {@link DFAState} which is an accept state under\r\n * some condition. Certain settings, such as\r\n * {@link ParserATNSimulator#getPredictionMode()}, may be used in addition to\r\n * this information to determine whether or not a particular state is an accept\r\n * state.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class AcceptStateInfo {\r\n\tprivate readonly _prediction: number;\r\n\tprivate readonly _lexerActionExecutor?: LexerActionExecutor;\r\n\r\n\tconstructor(prediction: number);\r\n\tconstructor(prediction: number, lexerActionExecutor: LexerActionExecutor | undefined);\r\n\tconstructor(prediction: number, lexerActionExecutor?: LexerActionExecutor) {\r\n\t\tthis._prediction = prediction;\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the prediction made by this accept state. Note that this value\r\n\t * assumes the predicates, if any, in the {@link DFAState} evaluate to\r\n\t * `true`. If predicate evaluation is enabled, the final prediction of\r\n\t * the accept state will be determined by the result of predicate\r\n\t * evaluation.\r\n\t */\r\n\tget prediction(): number {\r\n\t\treturn this._prediction;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link LexerActionExecutor} which can be used to execute actions\r\n\t * and/or commands after the lexer matches a token.\r\n\t */\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { Array2DHashSet } from \"./Array2DHashSet\";\r\nimport { DefaultEqualityComparator } from \"./DefaultEqualityComparator\";\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Equatable, JavaCollection, JavaMap, JavaSet } from \"./Stubs\";\r\n\r\n// Since `Array2DHashMap` is implemented on top of `Array2DHashSet`, we defined a bucket type which can store a\r\n// key-value pair. The value is optional since looking up values in the map by a key only needs to include the key.\r\ninterface Bucket { key: K; value?: V; }\r\n\r\nclass MapKeyEqualityComparator implements EqualityComparator> {\r\n\tprivate readonly keyComparator: EqualityComparator;\r\n\r\n\tconstructor(keyComparator: EqualityComparator) {\r\n\t\tthis.keyComparator = keyComparator;\r\n\t}\r\n\r\n\tpublic hashCode(obj: Bucket): number {\r\n\t\treturn this.keyComparator.hashCode(obj.key);\r\n\t}\r\n\r\n\tpublic equals(a: Bucket, b: Bucket): boolean {\r\n\t\treturn this.keyComparator.equals(a.key, b.key);\r\n\t}\r\n}\r\n\r\nexport class Array2DHashMap implements JavaMap {\r\n\tprivate backingStore: Array2DHashSet>;\r\n\r\n\tconstructor(keyComparer: EqualityComparator);\r\n\tconstructor(map: Array2DHashMap);\r\n\tconstructor(keyComparer: EqualityComparator | Array2DHashMap) {\r\n\t\tif (keyComparer instanceof Array2DHashMap) {\r\n\t\t\tthis.backingStore = new Array2DHashSet>(keyComparer.backingStore);\r\n\t\t} else {\r\n\t\t\tthis.backingStore = new Array2DHashSet>(new MapKeyEqualityComparator(keyComparer));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tthis.backingStore.clear();\r\n\t}\r\n\r\n\tpublic containsKey(key: K): boolean {\r\n\t\treturn this.backingStore.contains({ key });\r\n\t}\r\n\r\n\tpublic get(key: K): V | undefined {\r\n\t\tlet bucket = this.backingStore.get({ key });\r\n\t\tif (!bucket) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn bucket.value;\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.backingStore.isEmpty;\r\n\t}\r\n\r\n\tpublic put(key: K, value: V): V | undefined {\r\n\t\tlet element = this.backingStore.get({ key, value });\r\n\t\tlet result: V | undefined;\r\n\t\tif (!element) {\r\n\t\t\tthis.backingStore.add({ key, value });\r\n\t\t} else {\r\n\t\t\tresult = element.value;\r\n\t\t\telement.value = value;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic putIfAbsent(key: K, value: V): V | undefined {\r\n\t\tlet element = this.backingStore.get({ key, value });\r\n\t\tlet result: V | undefined;\r\n\t\tif (!element) {\r\n\t\t\tthis.backingStore.add({ key, value });\r\n\t\t} else {\r\n\t\t\tresult = element.value;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tget size(): number {\r\n\t\treturn this.backingStore.size;\r\n\t}\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn this.backingStore.hashCode();\r\n\t}\r\n\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (!(o instanceof Array2DHashMap)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.backingStore.equals(o.backingStore);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.4381103-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\n\r\nexport abstract class DecisionState extends ATNState {\r\n\tpublic decision: number = -1;\r\n\tpublic nonGreedy: boolean = false;\r\n\tpublic sll: boolean = false;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.6390614-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Override } from \"../Decorators\";\r\nimport { JavaMap } from \"../misc/Stubs\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport * as assert from \"assert\";\r\n\r\n/** Used to cache {@link PredictionContext} objects. Its used for the shared\r\n * context cash associated with contexts in DFA states. This cache\r\n * can be used for both lexers and parsers.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class PredictionContextCache {\r\n\tpublic static UNCACHED: PredictionContextCache = new PredictionContextCache(false);\r\n\r\n\tprivate contexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\tprivate childContexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\tprivate joinContexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\r\n\tprivate enableCache: boolean;\r\n\r\n\tconstructor(enableCache: boolean = true) {\r\n\t\tthis.enableCache = enableCache;\r\n\t}\r\n\r\n\tpublic getAsCached(context: PredictionContext): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tlet result = this.contexts.get(context);\r\n\t\tif (!result) {\r\n\t\t\tresult = context;\r\n\t\t\tthis.contexts.put(context, context);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic getChild(context: PredictionContext, invokingState: number): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn context.getChild(invokingState);\r\n\t\t}\r\n\r\n\t\tlet operands: PredictionContextCache.PredictionContextAndInt = new PredictionContextCache.PredictionContextAndInt(context, invokingState);\r\n\t\tlet result = this.childContexts.get(operands);\r\n\t\tif (!result) {\r\n\t\t\tresult = context.getChild(invokingState);\r\n\t\t\tresult = this.getAsCached(result);\r\n\t\t\tthis.childContexts.put(operands, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic join(x: PredictionContext, y: PredictionContext): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn PredictionContext.join(x, y, this);\r\n\t\t}\r\n\r\n\t\tlet operands: PredictionContextCache.IdentityCommutativePredictionContextOperands = new PredictionContextCache.IdentityCommutativePredictionContextOperands(x, y);\r\n\t\tlet result = this.joinContexts.get(operands);\r\n\t\tif (result) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tresult = PredictionContext.join(x, y, this);\r\n\t\tresult = this.getAsCached(result);\r\n\t\tthis.joinContexts.put(operands, result);\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport namespace PredictionContextCache {\r\n\texport class PredictionContextAndInt {\r\n\t\tprivate obj: PredictionContext;\r\n\t\tprivate value: number;\r\n\r\n\t\tconstructor(obj: PredictionContext, value: number) {\r\n\t\t\tthis.obj = obj;\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof PredictionContextAndInt)) {\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (obj === this) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tlet other: PredictionContextAndInt = obj;\r\n\t\t\treturn this.value === other.value\r\n\t\t\t\t&& (this.obj === other.obj || (this.obj != null && this.obj.equals(other.obj)));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = 5;\r\n\t\t\thashCode = 7 * hashCode + (this.obj != null ? this.obj.hashCode() : 0);\r\n\t\t\thashCode = 7 * hashCode + this.value;\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\t}\r\n\r\n\texport class IdentityCommutativePredictionContextOperands {\r\n\t\tprivate _x: PredictionContext;\r\n\t\tprivate _y: PredictionContext;\r\n\r\n\t\tconstructor(x: PredictionContext, y: PredictionContext) {\r\n\t\t\tassert(x != null);\r\n\t\t\tassert(y != null);\r\n\t\t\tthis._x = x;\r\n\t\t\tthis._y = y;\r\n\t\t}\r\n\r\n\t\tget x(): PredictionContext {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tget y(): PredictionContext {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(o: any): boolean {\r\n\t\t\tif (!(o instanceof IdentityCommutativePredictionContextOperands)) {\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (this === o) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tlet other: IdentityCommutativePredictionContextOperands = o;\r\n\t\t\treturn (this._x === other._x && this._y === other._y) || (this._x === other._y && this._y === other._x);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn this._x.hashCode() ^ this._y.hashCode();\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.3812636-07:00\r\n\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { Equatable, JavaSet } from \"../misc/Stubs\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\nconst INITIAL_HASH: number = 1;\r\n\r\nexport abstract class PredictionContext implements Equatable {\r\n\t/**\r\n\t * Stores the computed hash code of this {@link PredictionContext}. The hash\r\n\t * code is computed in parts to match the following reference algorithm.\r\n\t *\r\n\t * ```\r\n\t * private int referenceHashCode() {\r\n\t * int hash = {@link MurmurHash#initialize MurmurHash.initialize}({@link #INITIAL_HASH});\r\n\t *\r\n\t * for (int i = 0; i < this.size; i++) {\r\n\t * hash = {@link MurmurHash#update MurmurHash.update}(hash, {@link #getParent getParent}(i));\r\n\t * }\r\n\t *\r\n\t * for (int i = 0; i < this.size; i++) {\r\n\t * hash = {@link MurmurHash#update MurmurHash.update}(hash, {@link #getReturnState getReturnState}(i));\r\n\t * }\r\n\t *\r\n\t * hash = {@link MurmurHash#finish MurmurHash.finish}(hash, 2 * this.size);\r\n\t * return hash;\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tprivate readonly cachedHashCode: number;\r\n\r\n\tconstructor(cachedHashCode: number) {\r\n\t\tthis.cachedHashCode = cachedHashCode;\r\n\t}\r\n\r\n\tprotected static calculateEmptyHashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\t\thash = MurmurHash.finish(hash, 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tprotected static calculateSingleHashCode(parent: PredictionContext, returnState: number): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\t\thash = MurmurHash.update(hash, parent);\r\n\t\thash = MurmurHash.update(hash, returnState);\r\n\t\thash = MurmurHash.finish(hash, 2);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tprotected static calculateHashCode(parents: PredictionContext[], returnStates: number[]): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\r\n\t\tfor (let parent of parents) {\r\n\t\t\thash = MurmurHash.update(hash, parent);\r\n\t\t}\r\n\r\n\t\tfor (let returnState of returnStates) {\r\n\t\t\thash = MurmurHash.update(hash, returnState);\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, 2 * parents.length);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tpublic abstract readonly size: number;\r\n\r\n\tpublic abstract getReturnState(index: number): number;\r\n\r\n\tpublic abstract findReturnState(returnState: number): number;\r\n\r\n\t// @NotNull\r\n\tpublic abstract getParent(index: number): PredictionContext;\r\n\r\n\tprotected abstract addEmptyContext(): PredictionContext;\r\n\r\n\tprotected abstract removeEmptyContext(): PredictionContext;\r\n\r\n\tpublic static fromRuleContext(atn: ATN, outerContext: RuleContext, fullContext: boolean = true): PredictionContext {\r\n\t\tif (outerContext.isEmpty) {\r\n\t\t\treturn fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL;\r\n\t\t}\r\n\r\n\t\tlet parent: PredictionContext;\r\n\t\tif (outerContext._parent) {\r\n\t\t\tparent = PredictionContext.fromRuleContext(atn, outerContext._parent, fullContext);\r\n\t\t} else {\r\n\t\t\tparent = fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL;\r\n\t\t}\r\n\r\n\t\tlet state: ATNState = atn.states[outerContext.invokingState];\r\n\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\treturn parent.getChild(transition.followState.stateNumber);\r\n\t}\r\n\r\n\tprivate static addEmptyContext(context: PredictionContext): PredictionContext {\r\n\t\treturn context.addEmptyContext();\r\n\t}\r\n\r\n\tprivate static removeEmptyContext(context: PredictionContext): PredictionContext {\r\n\t\treturn context.removeEmptyContext();\r\n\t}\r\n\r\n\tpublic static join(@NotNull context0: PredictionContext, @NotNull context1: PredictionContext, @NotNull contextCache: PredictionContextCache = PredictionContextCache.UNCACHED): PredictionContext {\r\n\t\tif (context0 === context1) {\r\n\t\t\treturn context0;\r\n\t\t}\r\n\r\n\t\tif (context0.isEmpty) {\r\n\t\t\treturn PredictionContext.isEmptyLocal(context0) ? context0 : PredictionContext.addEmptyContext(context1);\r\n\t\t} else if (context1.isEmpty) {\r\n\t\t\treturn PredictionContext.isEmptyLocal(context1) ? context1 : PredictionContext.addEmptyContext(context0);\r\n\t\t}\r\n\r\n\t\tlet context0size: number = context0.size;\r\n\t\tlet context1size: number = context1.size;\r\n\t\tif (context0size === 1 && context1size === 1 && context0.getReturnState(0) === context1.getReturnState(0)) {\r\n\t\t\tlet merged: PredictionContext = contextCache.join(context0.getParent(0), context1.getParent(0));\r\n\t\t\tif (merged === context0.getParent(0)) {\r\n\t\t\t\treturn context0;\r\n\t\t\t} else if (merged === context1.getParent(0)) {\r\n\t\t\t\treturn context1;\r\n\t\t\t} else {\r\n\t\t\t\treturn merged.getChild(context0.getReturnState(0));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet count: number = 0;\r\n\t\tlet parentsList: PredictionContext[] = new Array(context0size + context1size);\r\n\t\tlet returnStatesList: number[] = new Array(parentsList.length);\r\n\t\tlet leftIndex: number = 0;\r\n\t\tlet rightIndex: number = 0;\r\n\t\tlet canReturnLeft: boolean = true;\r\n\t\tlet canReturnRight: boolean = true;\r\n\t\twhile (leftIndex < context0size && rightIndex < context1size) {\r\n\t\t\tif (context0.getReturnState(leftIndex) === context1.getReturnState(rightIndex)) {\r\n\t\t\t\tparentsList[count] = contextCache.join(context0.getParent(leftIndex), context1.getParent(rightIndex));\r\n\t\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\t\tcanReturnLeft = canReturnLeft && parentsList[count] === context0.getParent(leftIndex);\r\n\t\t\t\tcanReturnRight = canReturnRight && parentsList[count] === context1.getParent(rightIndex);\r\n\t\t\t\tleftIndex++;\r\n\t\t\t\trightIndex++;\r\n\t\t\t} else if (context0.getReturnState(leftIndex) < context1.getReturnState(rightIndex)) {\r\n\t\t\t\tparentsList[count] = context0.getParent(leftIndex);\r\n\t\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\t\tcanReturnRight = false;\r\n\t\t\t\tleftIndex++;\r\n\t\t\t} else {\r\n\t\t\t\tassert(context1.getReturnState(rightIndex) < context0.getReturnState(leftIndex));\r\n\t\t\t\tparentsList[count] = context1.getParent(rightIndex);\r\n\t\t\t\treturnStatesList[count] = context1.getReturnState(rightIndex);\r\n\t\t\t\tcanReturnLeft = false;\r\n\t\t\t\trightIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\twhile (leftIndex < context0size) {\r\n\t\t\tparentsList[count] = context0.getParent(leftIndex);\r\n\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\tleftIndex++;\r\n\t\t\tcanReturnRight = false;\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\twhile (rightIndex < context1size) {\r\n\t\t\tparentsList[count] = context1.getParent(rightIndex);\r\n\t\t\treturnStatesList[count] = context1.getReturnState(rightIndex);\r\n\t\t\trightIndex++;\r\n\t\t\tcanReturnLeft = false;\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\tif (canReturnLeft) {\r\n\t\t\treturn context0;\r\n\t\t} else if (canReturnRight) {\r\n\t\t\treturn context1;\r\n\t\t}\r\n\r\n\t\tif (count < parentsList.length) {\r\n\t\t\tparentsList = parentsList.slice(0, count);\r\n\t\t\treturnStatesList = returnStatesList.slice(0, count);\r\n\t\t}\r\n\r\n\t\tif (parentsList.length === 0) {\r\n\t\t\t// if one of them was EMPTY_LOCAL, it would be empty and handled at the beginning of the method\r\n\t\t\treturn PredictionContext.EMPTY_FULL;\r\n\t\t} else if (parentsList.length === 1) {\r\n\t\t\treturn new SingletonPredictionContext(parentsList[0], returnStatesList[0]);\r\n\t\t} else {\r\n\t\t\treturn new ArrayPredictionContext(parentsList, returnStatesList);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static isEmptyLocal(context: PredictionContext): boolean {\r\n\t\treturn context === PredictionContext.EMPTY_LOCAL;\r\n\t}\r\n\r\n\tpublic static getCachedContext(\r\n\t\t@NotNull context: PredictionContext,\r\n\t\t@NotNull contextCache: Array2DHashMap,\r\n\t\t@NotNull visited: PredictionContext.IdentityHashMap): PredictionContext {\r\n\t\tif (context.isEmpty) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tlet existing = visited.get(context);\r\n\t\tif (existing) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\texisting = contextCache.get(context);\r\n\t\tif (existing) {\r\n\t\t\tvisited.put(context, existing);\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tlet changed: boolean = false;\r\n\t\tlet parents: PredictionContext[] = new Array(context.size);\r\n\t\tfor (let i = 0; i < parents.length; i++) {\r\n\t\t\tlet parent: PredictionContext = PredictionContext.getCachedContext(context.getParent(i), contextCache, visited);\r\n\t\t\tif (changed || parent !== context.getParent(i)) {\r\n\t\t\t\tif (!changed) {\r\n\t\t\t\t\tparents = new Array(context.size);\r\n\t\t\t\t\tfor (let j = 0; j < context.size; j++) {\r\n\t\t\t\t\t\tparents[j] = context.getParent(j);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparents[i] = parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!changed) {\r\n\t\t\texisting = contextCache.putIfAbsent(context, context);\r\n\t\t\tvisited.put(context, existing != null ? existing : context);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\t// We know parents.length>0 because context.isEmpty is checked at the beginning of the method.\r\n\t\tlet updated: PredictionContext;\r\n\t\tif (parents.length === 1) {\r\n\t\t\tupdated = new SingletonPredictionContext(parents[0], context.getReturnState(0));\r\n\t\t} else {\r\n\t\t\tlet returnStates: number[] = new Array(context.size);\r\n\t\t\tfor (let i = 0; i < context.size; i++) {\r\n\t\t\t\treturnStates[i] = context.getReturnState(i);\r\n\t\t\t}\r\n\r\n\t\t\tupdated = new ArrayPredictionContext(parents, returnStates, context.hashCode());\r\n\t\t}\r\n\r\n\t\texisting = contextCache.putIfAbsent(updated, updated);\r\n\t\tvisited.put(updated, existing || updated);\r\n\t\tvisited.put(context, existing || updated);\r\n\r\n\t\treturn updated;\r\n\t}\r\n\r\n\tpublic appendSingleContext(returnContext: number, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn this.appendContext(PredictionContext.EMPTY_FULL.getChild(returnContext), contextCache);\r\n\t}\r\n\r\n\tpublic abstract appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext;\r\n\r\n\tpublic getChild(returnState: number): PredictionContext {\r\n\t\treturn new SingletonPredictionContext(this, returnState);\r\n\t}\r\n\r\n\tpublic abstract readonly isEmpty: boolean;\r\n\r\n\tpublic abstract readonly hasEmpty: boolean;\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.cachedHashCode;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic abstract equals(o: any): boolean;\r\n\r\n\tpublic toStrings(recognizer: Recognizer | undefined, currentState: number, stop: PredictionContext = PredictionContext.EMPTY_FULL): string[] {\r\n\t\tlet result: string[] = [];\r\n\r\n\t\touter:\r\n\t\tfor (let perm = 0; ; perm++) {\r\n\t\t\tlet offset: number = 0;\r\n\t\t\tlet last: boolean = true;\r\n\t\t\tlet p: PredictionContext = this;\r\n\t\t\tlet stateNumber: number = currentState;\r\n\t\t\tlet localBuffer: string = \"\";\r\n\t\t\tlocalBuffer += \"[\";\r\n\t\t\twhile (!p.isEmpty && p !== stop) {\r\n\t\t\t\tlet index: number = 0;\r\n\t\t\t\tif (p.size > 0) {\r\n\t\t\t\t\tlet bits: number = 1;\r\n\t\t\t\t\twhile (((1 << bits) >>> 0) < p.size) {\r\n\t\t\t\t\t\tbits++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet mask: number = ((1 << bits) >>> 0) - 1;\r\n\t\t\t\t\tindex = (perm >> offset) & mask;\r\n\t\t\t\t\tlast = last && index >= p.size - 1;\r\n\t\t\t\t\tif (index >= p.size) {\r\n\t\t\t\t\t\tcontinue outer;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toffset += bits;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (recognizer) {\r\n\t\t\t\t\tif (localBuffer.length > 1) {\r\n\t\t\t\t\t\t// first char is '[', if more than that this isn't the first rule\r\n\t\t\t\t\t\tlocalBuffer += \" \";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet atn: ATN = recognizer.atn;\r\n\t\t\t\t\tlet s: ATNState = atn.states[stateNumber];\r\n\t\t\t\t\tlet ruleName: string = recognizer.ruleNames[s.ruleIndex];\r\n\t\t\t\t\tlocalBuffer += ruleName;\r\n\t\t\t\t} else if (p.getReturnState(index) !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tif (!p.isEmpty) {\r\n\t\t\t\t\t\tif (localBuffer.length > 1) {\r\n\t\t\t\t\t\t\t// first char is '[', if more than that this isn't the first rule\r\n\t\t\t\t\t\t\tlocalBuffer += \" \";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlocalBuffer += p.getReturnState(index);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstateNumber = p.getReturnState(index);\r\n\t\t\t\tp = p.getParent(index);\r\n\t\t\t}\r\n\r\n\t\t\tlocalBuffer += \"]\";\r\n\t\t\tresult.push(localBuffer);\r\n\r\n\t\t\tif (last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nclass EmptyPredictionContext extends PredictionContext {\r\n\tprivate fullContext: boolean;\r\n\r\n\tconstructor(fullContext: boolean) {\r\n\t\tsuper(PredictionContext.calculateEmptyHashCode());\r\n\t\tthis.fullContext = fullContext;\r\n\t}\r\n\r\n\tget isFullContext(): boolean {\r\n\t\treturn this.fullContext;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\tthrow new Error(\"Cannot remove the empty context from itself.\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\tthrow new Error(\"index out of bounds\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\tthrow new Error(\"index out of bounds\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendSingleContext(returnContext: number, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn contextCache.getChild(this, returnContext);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn suffix;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\treturn this === o;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toStrings(recognizer: any, currentState: number, stop?: PredictionContext): string[] {\r\n\t\treturn [\"[]\"];\r\n\t}\r\n\r\n}\r\n\r\nclass ArrayPredictionContext extends PredictionContext {\r\n\t@NotNull\r\n\tpublic parents: PredictionContext[];\r\n\r\n\t@NotNull\r\n\tpublic returnStates: number[];\r\n\r\n\tconstructor( @NotNull parents: PredictionContext[], returnStates: number[], hashCode?: number) {\r\n\t\tsuper(hashCode || PredictionContext.calculateHashCode(parents, returnStates));\r\n\t\tassert(parents.length === returnStates.length);\r\n\t\tassert(returnStates.length > 1 || returnStates[0] !== PredictionContext.EMPTY_FULL_STATE_KEY, \"Should be using PredictionContext.EMPTY instead.\");\r\n\r\n\t\tthis.parents = parents;\r\n\t\tthis.returnStates = returnStates;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\treturn this.parents[index];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\treturn this.returnStates[index];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn Arrays.binarySearch(this.returnStates, returnState);\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.returnStates.length;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn this.returnStates[this.returnStates.length - 1] === PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\tif (this.hasEmpty) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlet parents2: PredictionContext[] = this.parents.slice(0);\r\n\t\tlet returnStates2: number[] = this.returnStates.slice(0);\r\n\t\tparents2.push(PredictionContext.EMPTY_FULL);\r\n\t\treturnStates2.push(PredictionContext.EMPTY_FULL_STATE_KEY);\r\n\t\treturn new ArrayPredictionContext(parents2, returnStates2);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\tif (!this.hasEmpty) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (this.returnStates.length === 2) {\r\n\t\t\treturn new SingletonPredictionContext(this.parents[0], this.returnStates[0]);\r\n\t\t} else {\r\n\t\t\tlet parents2: PredictionContext[] = this.parents.slice(0, this.parents.length - 1);\r\n\t\t\tlet returnStates2: number[] = this.returnStates.slice(0, this.returnStates.length - 1);\r\n\t\t\treturn new ArrayPredictionContext(parents2, returnStates2);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn ArrayPredictionContext.appendContextImpl(this, suffix, new PredictionContext.IdentityHashMap());\r\n\t}\r\n\r\n\tprivate static appendContextImpl(context: PredictionContext, suffix: PredictionContext, visited: PredictionContext.IdentityHashMap): PredictionContext {\r\n\t\tif (suffix.isEmpty) {\r\n\t\t\tif (PredictionContext.isEmptyLocal(suffix)) {\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\treturn PredictionContext.EMPTY_LOCAL;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthrow new Error(\"what to do here?\");\r\n\t\t\t}\r\n\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tif (suffix.size !== 1) {\r\n\t\t\tthrow new Error(\"Appending a tree suffix is not yet supported.\");\r\n\t\t}\r\n\r\n\t\tlet result = visited.get(context);\r\n\t\tif (!result) {\r\n\t\t\tif (context.isEmpty) {\r\n\t\t\t\tresult = suffix;\r\n\t\t\t} else {\r\n\t\t\t\tlet parentCount: number = context.size;\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\tparentCount--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet updatedParents: PredictionContext[] = new Array(parentCount);\r\n\t\t\t\tlet updatedReturnStates: number[] = new Array(parentCount);\r\n\t\t\t\tfor (let i = 0; i < parentCount; i++) {\r\n\t\t\t\t\tupdatedReturnStates[i] = context.getReturnState(i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < parentCount; i++) {\r\n\t\t\t\t\tupdatedParents[i] = ArrayPredictionContext.appendContextImpl(context.getParent(i), suffix, visited);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (updatedParents.length === 1) {\r\n\t\t\t\t\tresult = new SingletonPredictionContext(updatedParents[0], updatedReturnStates[0]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tassert(updatedParents.length > 1);\r\n\t\t\t\t\tresult = new ArrayPredictionContext(updatedParents, updatedReturnStates);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\tresult = PredictionContext.join(result, suffix);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvisited.put(context, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof ArrayPredictionContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.hashCode() !== o.hashCode()) {\r\n\t\t\t// can't be same if hash is different\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: ArrayPredictionContext = o;\r\n\t\treturn this.equalsImpl(other, new Array2DHashSet());\r\n\t}\r\n\r\n\tprivate equalsImpl(other: ArrayPredictionContext, visited: JavaSet): boolean {\r\n\t\tlet selfWorkList: PredictionContext[] = [];\r\n\t\tlet otherWorkList: PredictionContext[] = [];\r\n\t\tselfWorkList.push(this);\r\n\t\totherWorkList.push(other);\r\n\t\twhile (true) {\r\n\t\t\tlet currentSelf = selfWorkList.pop();\r\n\t\t\tlet currentOther = otherWorkList.pop();\r\n\t\t\tif (!currentSelf || !currentOther) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet operands: PredictionContextCache.IdentityCommutativePredictionContextOperands = new PredictionContextCache.IdentityCommutativePredictionContextOperands(currentSelf, currentOther);\r\n\t\t\tif (!visited.add(operands)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet selfSize: number = operands.x.size;\r\n\t\t\tif (selfSize === 0) {\r\n\t\t\t\tif (!operands.x.equals(operands.y)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet otherSize: number = operands.y.size;\r\n\t\t\tif (selfSize !== otherSize) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < selfSize; i++) {\r\n\t\t\t\tif (operands.x.getReturnState(i) !== operands.y.getReturnState(i)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet selfParent: PredictionContext = operands.x.getParent(i);\r\n\t\t\t\tlet otherParent: PredictionContext = operands.y.getParent(i);\r\n\t\t\t\tif (selfParent.hashCode() !== otherParent.hashCode()) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (selfParent !== otherParent) {\r\n\t\t\t\t\tselfWorkList.push(selfParent);\r\n\t\t\t\t\totherWorkList.push(otherParent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class SingletonPredictionContext extends PredictionContext {\r\n\r\n\t@NotNull\r\n\tpublic parent: PredictionContext;\r\n\tpublic returnState: number;\r\n\r\n\tconstructor(@NotNull parent: PredictionContext, returnState: number) {\r\n\t\tsuper(PredictionContext.calculateSingleHashCode(parent, returnState));\r\n\t\t// assert(returnState != PredictionContext.EMPTY_FULL_STATE_KEY && returnState != PredictionContext.EMPTY_LOCAL_STATE_KEY);\r\n\t\tthis.parent = parent;\r\n\t\tthis.returnState = returnState;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\t// assert(index == 0);\r\n\t\treturn this.parent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\t// assert(index == 0);\r\n\t\treturn this.returnState;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn this.returnState === returnState ? 0 : -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn contextCache.getChild(this.parent.appendContext(suffix, contextCache), this.returnState);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\tlet parents: PredictionContext[] = [this.parent, PredictionContext.EMPTY_FULL];\r\n\t\tlet returnStates: number[] = [this.returnState, PredictionContext.EMPTY_FULL_STATE_KEY];\r\n\t\treturn new ArrayPredictionContext(parents, returnStates);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof SingletonPredictionContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: SingletonPredictionContext = o;\r\n\t\tif (this.hashCode() !== other.hashCode()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.returnState === other.returnState\r\n\t\t\t&& this.parent.equals(other.parent);\r\n\t}\r\n}\r\n\r\nexport namespace PredictionContext {\r\n\texport const EMPTY_LOCAL: PredictionContext = new EmptyPredictionContext(false);\r\n\texport const EMPTY_FULL: PredictionContext = new EmptyPredictionContext(true);\r\n\texport const EMPTY_LOCAL_STATE_KEY: number = -((1 << 31) >>> 0);\r\n\texport const EMPTY_FULL_STATE_KEY: number = ((1 << 31) >>> 0) - 1;\r\n\r\n\texport class IdentityHashMap extends Array2DHashMap {\r\n\t\tconstructor() {\r\n\t\t\tsuper(IdentityEqualityComparator.INSTANCE);\r\n\t\t}\r\n\t}\r\n\r\n\texport class IdentityEqualityComparator implements EqualityComparator {\r\n\t\tpublic static readonly INSTANCE: IdentityEqualityComparator = new IdentityEqualityComparator();\r\n\r\n\t\tprivate IdentityEqualityComparator() {\r\n\t\t\t// intentionally empty\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(obj: PredictionContext): number {\r\n\t\t\treturn obj.hashCode();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(a: PredictionContext, b: PredictionContext): boolean {\r\n\t\t\treturn a === b;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.2796692-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Equatable } from \"../misc/Stubs\";\r\nimport { LexerActionExecutor } from \"./LexerActionExecutor\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/**\r\n * This field stores the bit mask for implementing the\r\n * {@link #isPrecedenceFilterSuppressed} property as a bit within the\r\n * existing {@link #altAndOuterContextDepth} field.\r\n */\r\nconst SUPPRESS_PRECEDENCE_FILTER: number = 0x80000000;\r\n\r\n/**\r\n * Represents a location with context in an ATN. The location is identified by the following values:\r\n *\r\n * * The current ATN state\r\n * * The predicted alternative\r\n * * The semantic context which must be true for this configuration to be enabled\r\n * * The syntactic context, which is represented as a graph-structured stack whose path(s) lead to the root of the rule\r\n * invocations leading to this state\r\n *\r\n * In addition to these values, `ATNConfig` stores several properties about paths taken to get to the location which\r\n * were added over time to help with performance, correctness, and/or debugging.\r\n *\r\n * * `reachesIntoOuterContext`:: Used to ensure semantic predicates are not evaluated in the wrong context.\r\n * * `hasPassedThroughNonGreedyDecision`: Used for enabling first-match-wins instead of longest-match-wins after\r\n * crossing a non-greedy decision.\r\n * * `lexerActionExecutor`: Used for tracking the lexer action(s) to execute should this instance be selected during\r\n * lexing.\r\n * * `isPrecedenceFilterSuppressed`: A state variable for one of the dynamic disambiguation strategies employed by\r\n * `ParserATNSimulator.applyPrecedenceFilter`.\r\n *\r\n * Due to the use of a graph-structured stack, a single `ATNConfig` is capable of representing many individual ATN\r\n * configurations which reached the same location in an ATN by following different paths.\r\n *\r\n * PERF: To conserve memory, `ATNConfig` is split into several different concrete types. `ATNConfig` itself stores the\r\n * minimum amount of information typically used to define an `ATNConfig` instance. Various derived types provide\r\n * additional storage space for cases where a non-default value is used for some of the object properties. The\r\n * `ATNConfig.create` and `ATNConfig.transform` methods automatically select the smallest concrete type capable of\r\n * representing the unique information for any given `ATNConfig`.\r\n */\r\nexport class ATNConfig implements Equatable {\r\n\t/** The ATN state associated with this configuration */\r\n\t@NotNull\r\n\tprivate _state: ATNState;\r\n\r\n\t/**\r\n\t * This is a bit-field currently containing the following values.\r\n\t *\r\n\t * * 0x00FFFFFF: Alternative\r\n\t * * 0x7F000000: Outer context depth\r\n\t * * 0x80000000: Suppress precedence filter\r\n\t */\r\n\tprivate altAndOuterContextDepth: number;\r\n\r\n\t/** The stack of invoking states leading to the rule/states associated\r\n\t * with this config. We track only those contexts pushed during\r\n\t * execution of the ATN simulator.\r\n\t */\r\n\t@NotNull\r\n\tprivate _context: PredictionContext;\r\n\r\n\tconstructor(/*@NotNull*/ state: ATNState, alt: number, /*@NotNull*/ context: PredictionContext);\r\n\tconstructor(/*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, /*@NotNull*/ context: PredictionContext);\r\n\r\n\tconstructor(@NotNull state: ATNState, altOrConfig: number | ATNConfig, @NotNull context: PredictionContext) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tassert((altOrConfig & 0xFFFFFF) === altOrConfig);\r\n\t\t\tthis._state = state;\r\n\t\t\tthis.altAndOuterContextDepth = altOrConfig;\r\n\t\t\tthis._context = context;\r\n\t\t} else {\r\n\t\t\tthis._state = state;\r\n\t\t\tthis.altAndOuterContextDepth = altOrConfig.altAndOuterContextDepth;\r\n\t\t\tthis._context = context;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext): ATNConfig;\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, /*@NotNull*/ semanticContext: SemanticContext): ATNConfig;\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, /*@*/ semanticContext: SemanticContext, lexerActionExecutor: LexerActionExecutor | undefined): ATNConfig;\r\n\r\n\tpublic static create(@NotNull state: ATNState, alt: number, context: PredictionContext, @NotNull semanticContext: SemanticContext = SemanticContext.NONE, lexerActionExecutor?: LexerActionExecutor): ATNConfig {\r\n\t\tif (semanticContext !== SemanticContext.NONE) {\r\n\t\t\tif (lexerActionExecutor != null) {\r\n\t\t\t\treturn new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, alt, context, false);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new SemanticContextATNConfig(semanticContext, state, alt, context);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (lexerActionExecutor != null) {\r\n\t\t\treturn new ActionATNConfig(lexerActionExecutor, state, alt, context, false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new ATNConfig(state, alt, context);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Gets the ATN state associated with this configuration */\r\n\t@NotNull\r\n\tget state(): ATNState {\r\n\t\treturn this._state;\r\n\t}\r\n\r\n\t/** What alt (or lexer rule) is predicted by this configuration */\r\n\tget alt(): number {\r\n\t\treturn this.altAndOuterContextDepth & 0x00FFFFFF;\r\n\t}\r\n\r\n\t@NotNull\r\n\tget context(): PredictionContext {\r\n\t\treturn this._context;\r\n\t}\r\n\r\n\tset context(@NotNull context: PredictionContext) {\r\n\t\tthis._context = context;\r\n\t}\r\n\r\n\tget reachesIntoOuterContext(): boolean {\r\n\t\treturn this.outerContextDepth !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * We cannot execute predicates dependent upon local context unless\r\n\t * we know for sure we are in the correct context. Because there is\r\n\t * no way to do this efficiently, we simply cannot evaluate\r\n\t * dependent predicates unless we are in the rule that initially\r\n\t * invokes the ATN simulator.\r\n\t *\r\n\t * closure() tracks the depth of how far we dip into the outer context:\r\n\t * depth > 0. Note that it may not be totally accurate depth since I\r\n\t * don't ever decrement. TODO: make it a boolean then\r\n\t */\r\n\tget outerContextDepth(): number {\r\n\t\treturn (this.altAndOuterContextDepth >>> 24) & 0x7F;\r\n\t}\r\n\r\n\tset outerContextDepth(outerContextDepth: number) {\r\n\t\tassert(outerContextDepth >= 0);\r\n\t\t// saturate at 0x7F - everything but zero/positive is only used for debug information anyway\r\n\t\touterContextDepth = Math.min(outerContextDepth, 0x7F);\r\n\t\tthis.altAndOuterContextDepth = ((outerContextDepth << 24) | (this.altAndOuterContextDepth & ~0x7F000000) >>> 0);\r\n\t}\r\n\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@NotNull\r\n\tget semanticContext(): SemanticContext {\r\n\t\treturn SemanticContext.NONE;\r\n\t}\r\n\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clone(): ATNConfig {\r\n\t\treturn this.transform(this.state, false);\r\n\t}\r\n\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, /*@NotNull*/ semanticContext: SemanticContext): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, context: PredictionContext): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, lexerActionExecutor: LexerActionExecutor): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, arg2?: SemanticContext | PredictionContext | LexerActionExecutor): ATNConfig {\r\n\t\tif (arg2 == null) {\r\n\t\t\treturn this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else if (arg2 instanceof PredictionContext) {\r\n\t\t\treturn this.transformImpl(state, arg2, this.semanticContext, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else if (arg2 instanceof SemanticContext) {\r\n\t\t\treturn this.transformImpl(state, this._context, arg2, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else {\r\n\t\t\treturn this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, arg2);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate transformImpl(@NotNull state: ATNState, context: PredictionContext, @NotNull semanticContext: SemanticContext, checkNonGreedy: boolean, lexerActionExecutor: LexerActionExecutor | undefined): ATNConfig {\r\n\t\tlet passedThroughNonGreedy: boolean = checkNonGreedy && ATNConfig.checkNonGreedyDecision(this, state);\r\n\t\tif (semanticContext !== SemanticContext.NONE) {\r\n\t\t\tif (lexerActionExecutor != null || passedThroughNonGreedy) {\r\n\t\t\t\treturn new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, this, context, passedThroughNonGreedy);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new SemanticContextATNConfig(semanticContext, state, this, context);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (lexerActionExecutor != null || passedThroughNonGreedy) {\r\n\t\t\treturn new ActionATNConfig(lexerActionExecutor, state, this, context, passedThroughNonGreedy);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new ATNConfig(state, this, context);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static checkNonGreedyDecision(source: ATNConfig, target: ATNState): boolean {\r\n\t\treturn source.hasPassedThroughNonGreedyDecision\r\n\t\t\t|| target instanceof DecisionState && target.nonGreedy;\r\n\t}\r\n\r\n\tpublic appendContext(context: number, contextCache: PredictionContextCache): ATNConfig;\r\n\tpublic appendContext(context: PredictionContext, contextCache: PredictionContextCache): ATNConfig;\r\n\tpublic appendContext(context: number | PredictionContext, contextCache: PredictionContextCache): ATNConfig {\r\n\t\tif (typeof context === \"number\") {\r\n\t\t\tlet appendedContext: PredictionContext = this.context.appendSingleContext(context, contextCache);\r\n\t\t\tlet result: ATNConfig = this.transform(this.state, false, appendedContext);\r\n\t\t\treturn result;\r\n\t\t} else {\r\n\t\t\tlet appendedContext: PredictionContext = this.context.appendContext(context, contextCache);\r\n\t\t\tlet result: ATNConfig = this.transform(this.state, false, appendedContext);\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if this `ATNConfig` fully contains another `ATNConfig`.\r\n\t *\r\n\t * An ATN configuration represents a position (including context) in an ATN during parsing. Since `ATNConfig` stores\r\n\t * the context as a graph, a single `ATNConfig` instance is capable of representing many ATN configurations which\r\n\t * are all in the same \"location\" but have different contexts. These `ATNConfig` instances are again merged when\r\n\t * they are added to an `ATNConfigSet`. This method supports `ATNConfigSet.contains` by evaluating whether a\r\n\t * particular `ATNConfig` contains all of the ATN configurations represented by another `ATNConfig`.\r\n\t *\r\n\t * An `ATNConfig` _a_ contains another `ATNConfig` _b_ if all of the following conditions are met:\r\n\t *\r\n\t * * The configurations are in the same state (`state`)\r\n\t * * The configurations predict the same alternative (`alt`)\r\n\t * * The semantic context of _a_ implies the semantic context of _b_ (this method performs a weaker equality check)\r\n\t * * Joining the prediction contexts of _a_ and _b_ results in the prediction context of _a_\r\n\t *\r\n\t * This method implements a conservative approximation of containment. As a result, when this method returns `true`\r\n\t * it is known that parsing from `subconfig` can only recognize a subset of the inputs which can be recognized\r\n\t * starting at the current `ATNConfig`. However, due to the imprecise evaluation of implication for the semantic\r\n\t * contexts, no assumptions can be made about the relationship between the configurations when this method returns\r\n\t * `false`.\r\n\t *\r\n\t * @param subconfig The sub configuration.\r\n\t * @returns `true` if this configuration contains `subconfig`; otherwise, `false`.\r\n\t */\r\n\tpublic contains(subconfig: ATNConfig): boolean {\r\n\t\tif (this.state.stateNumber !== subconfig.state.stateNumber\r\n\t\t\t|| this.alt !== subconfig.alt\r\n\t\t\t|| !this.semanticContext.equals(subconfig.semanticContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet leftWorkList: PredictionContext[] = [];\r\n\t\tlet rightWorkList: PredictionContext[] = [];\r\n\t\tleftWorkList.push(this.context);\r\n\t\trightWorkList.push(subconfig.context);\r\n\t\twhile (true) {\r\n\t\t\tlet left = leftWorkList.pop();\r\n\t\t\tlet right = rightWorkList.pop();\r\n\t\t\tif (!left || !right) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (left === right) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (left.size < right.size) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (right.isEmpty) {\r\n\t\t\t\treturn left.hasEmpty;\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = 0; i < right.size; i++) {\r\n\t\t\t\t\tlet index: number = left.findReturnState(right.getReturnState(i));\r\n\t\t\t\t\tif (index < 0) {\r\n\t\t\t\t\t\t// assumes invokingStates has no duplicate entries\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tleftWorkList.push(left.getParent(index));\r\n\t\t\t\t\trightWorkList.push(right.getParent(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isPrecedenceFilterSuppressed(): boolean {\r\n\t\treturn (this.altAndOuterContextDepth & SUPPRESS_PRECEDENCE_FILTER) !== 0;\r\n\t}\r\n\r\n\tset isPrecedenceFilterSuppressed(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.altAndOuterContextDepth |= SUPPRESS_PRECEDENCE_FILTER;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.altAndOuterContextDepth &= ~SUPPRESS_PRECEDENCE_FILTER;\r\n\t\t}\r\n\t}\r\n\r\n\t/** An ATN configuration is equal to another if both have\r\n\t * the same state, they predict the same alternative, and\r\n\t * syntactic/semantic contexts are the same.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof ATNConfig)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.state.stateNumber === o.state.stateNumber\r\n\t\t\t&& this.alt === o.alt\r\n\t\t\t&& this.reachesIntoOuterContext === o.reachesIntoOuterContext\r\n\t\t\t&& this.context.equals(o.context)\r\n\t\t\t&& this.semanticContext.equals(o.semanticContext)\r\n\t\t\t&& this.isPrecedenceFilterSuppressed === o.isPrecedenceFilterSuppressed\r\n\t\t\t&& this.hasPassedThroughNonGreedyDecision === o.hasPassedThroughNonGreedyDecision\r\n\t\t\t&& ObjectEqualityComparator.INSTANCE.equals(this.lexerActionExecutor, o.lexerActionExecutor);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hashCode: number = MurmurHash.initialize(7);\r\n\t\thashCode = MurmurHash.update(hashCode, this.state.stateNumber);\r\n\t\thashCode = MurmurHash.update(hashCode, this.alt);\r\n\t\thashCode = MurmurHash.update(hashCode, this.reachesIntoOuterContext ? 1 : 0);\r\n\t\thashCode = MurmurHash.update(hashCode, this.context);\r\n\t\thashCode = MurmurHash.update(hashCode, this.semanticContext);\r\n\t\thashCode = MurmurHash.update(hashCode, this.hasPassedThroughNonGreedyDecision ? 1 : 0);\r\n\t\thashCode = MurmurHash.update(hashCode, this.lexerActionExecutor);\r\n\t\thashCode = MurmurHash.finish(hashCode, 7);\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a graphical representation of the current `ATNConfig` in Graphviz format. The graph can be stored to a\r\n\t * **.dot** file and then rendered to an image using Graphviz.\r\n\t *\r\n\t * @returns A Graphviz graph representing the current `ATNConfig`.\r\n\t *\r\n\t * @see http://www.graphviz.org/\r\n\t */\r\n\tpublic toDotString(): string {\r\n\t\tlet builder = \"\";\r\n\t\tbuilder += (\"digraph G {\\n\");\r\n\t\tbuilder += (\"rankdir=LR;\\n\");\r\n\r\n\t\tlet visited = new Array2DHashMap(PredictionContext.IdentityEqualityComparator.INSTANCE);\r\n\t\tlet workList: PredictionContext[] = [];\r\n\t\tfunction getOrAddContext(context: PredictionContext): number {\r\n\t\t\tlet newNumber = visited.size;\r\n\t\t\tlet result = visited.putIfAbsent(context, newNumber);\r\n\t\t\tif (result != null) {\r\n\t\t\t\t// Already saw this context\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\r\n\t\t\tworkList.push(context);\r\n\t\t\treturn newNumber;\r\n\t\t}\r\n\r\n\t\tworkList.push(this.context);\r\n\t\tvisited.put(this.context, 0);\r\n\t\twhile (true) {\r\n\t\t\tlet current = workList.pop();\r\n\t\t\tif (!current) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < current.size; i++) {\r\n\t\t\t\tbuilder += (\" s\") + (getOrAddContext(current));\r\n\t\t\t\tbuilder += (\"->\");\r\n\t\t\t\tbuilder += (\"s\") + (getOrAddContext(current.getParent(i)));\r\n\t\t\t\tbuilder += (\"[label=\\\"\") + (current.getReturnState(i)) + (\"\\\"];\\n\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbuilder += (\"}\\n\");\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recog: Recognizer | undefined, showAlt: boolean): string;\r\n\tpublic toString(recog: Recognizer | undefined, showAlt: boolean, showContext: boolean): string;\r\n\tpublic toString(recog?: Recognizer, showAlt?: boolean, showContext?: boolean): string {\r\n\t\t// Must check showContext before showAlt to preserve original overload behavior\r\n\t\tif (showContext == null) {\r\n\t\t\tshowContext = showAlt != null;\r\n\t\t}\r\n\r\n\t\tif (showAlt == null) {\r\n\t\t\tshowAlt = true;\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\t\t// if (this.state.ruleIndex >= 0) {\r\n\t\t// \tif (recog != null) {\r\n\t\t// \t\tbuf += (recog.ruleNames[this.state.ruleIndex] + \":\");\r\n\t\t// \t} else {\r\n\t\t// \t\tbuf += (this.state.ruleIndex + \":\");\r\n\t\t// \t}\r\n\t\t// }\r\n\t\tlet contexts: string[];\r\n\t\tif (showContext) {\r\n\t\t\tcontexts = this.context.toStrings(recog, this.state.stateNumber);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcontexts = [\"?\"];\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let contextDesc of contexts) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbuf += (\", \");\r\n\t\t\t}\r\n\r\n\t\t\tbuf += (\"(\");\r\n\t\t\tbuf += (this.state);\r\n\t\t\tif (showAlt) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (this.alt);\r\n\t\t\t}\r\n\t\t\tif (this.context) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (contextDesc);\r\n\t\t\t}\r\n\t\t\tif (this.semanticContext !== SemanticContext.NONE) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (this.semanticContext);\r\n\t\t\t}\r\n\t\t\tif (this.reachesIntoOuterContext) {\r\n\t\t\t\tbuf += (\",up=\") + (this.outerContextDepth);\r\n\t\t\t}\r\n\t\t\tbuf += (\")\");\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n\r\n/**\r\n * This class was derived from `ATNConfig` purely as a memory optimization. It allows for the creation of an `ATNConfig`\r\n * with a non-default semantic context.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass SemanticContextATNConfig extends ATNConfig {\r\n\t@NotNull\r\n\tprivate _semanticContext: SemanticContext;\r\n\r\n\tconstructor(semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext);\r\n\tconstructor(semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext);\r\n\tconstructor(semanticContext: SemanticContext, @NotNull state: ATNState, @NotNull altOrConfig: number | ATNConfig, context: PredictionContext) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t}\r\n\r\n\t\tthis._semanticContext = semanticContext;\r\n\t}\r\n\r\n\t@Override\r\n\tget semanticContext(): SemanticContext {\r\n\t\treturn this._semanticContext;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * This class was derived from `ATNConfig` purely as a memory optimization. It allows for the creation of an `ATNConfig`\r\n * with a lexer action.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass ActionATNConfig extends ATNConfig {\r\n\tprivate _lexerActionExecutor?: LexerActionExecutor;\r\n\tprivate passedThroughNonGreedyDecision: boolean;\r\n\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull state: ATNState, @NotNull altOrConfig: number | ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t\tif (altOrConfig.semanticContext !== SemanticContext.NONE) {\r\n\t\t\t\tthrow new Error(\"Not supported\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t\tthis.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision;\r\n\t}\r\n\r\n\t@Override\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn this.passedThroughNonGreedyDecision;\r\n\t}\r\n}\r\n\r\n/**\r\n * This class was derived from `SemanticContextATNConfig` purely as a memory optimization. It allows for the creation of\r\n * an `ATNConfig` with both a lexer action and a non-default semantic context.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass ActionSemanticContextATNConfig extends SemanticContextATNConfig {\r\n\tprivate _lexerActionExecutor?: LexerActionExecutor;\r\n\tprivate passedThroughNonGreedyDecision: boolean;\r\n\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull semanticContext: SemanticContext, @NotNull state: ATNState, altOrConfig: number | ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(semanticContext, state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(semanticContext, state, altOrConfig, context);\r\n\t\t}\r\n\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t\tthis.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision;\r\n\t}\r\n\r\n\t@Override\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn this.passedThroughNonGreedyDecision;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport * as util from \"util\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\n/**\r\n * Private empty array used to construct empty BitSets\r\n */\r\nconst EMPTY_DATA: Uint16Array = new Uint16Array(0);\r\n\r\n/**\r\n * Gets the word index of the `UInt16` element in `BitSet.data` containing the bit with the specified index.\r\n */\r\nfunction getIndex(bitNumber: number) {\r\n\treturn bitNumber >>> 4;\r\n}\r\n\r\n/**\r\n * Convert a word index into the bit index of the LSB of that word\r\n */\r\n\r\nfunction unIndex(n: number) {\r\n\treturn n * 16;\r\n}\r\n\r\n/**\r\n * Get's the bit number of the least signficant bit set LSB which is set in a word non-zero word;\r\n * Bit numbers run from LSB to MSB starting with 0.\r\n */\r\nfunction findLSBSet(word: number) {\r\n\tlet bit = 1;\r\n\tfor (let i = 0; i < 16; i++) {\r\n\t\tif ((word & bit) !== 0) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t\tbit = (bit << 1) >>> 0;\r\n\t}\r\n\tthrow new RangeError(\"No specified bit found\");\r\n}\r\n\r\nfunction findMSBSet(word: number) {\r\n\tlet bit = (1 << 15) >>> 0;\r\n\tfor (let i = 15; i >= 0; i--) {\r\n\t\tif ((word & bit) !== 0) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t\tbit = bit >>> 1;\r\n\t}\r\n\tthrow new RangeError(\"No specified bit found\");\r\n}\r\n\r\n/**\r\n * Gets a 16-bit mask with bit numbers fromBit to toBit (inclusive) set.\r\n * Bit numbers run from LSB to MSB starting with 0.\r\n */\r\nfunction bitsFor(fromBit: number, toBit: number): number {\r\n\tfromBit &= 0xF;\r\n\ttoBit &= 0xF;\r\n\tif (fromBit === toBit) {\r\n\t\treturn (1 << fromBit) >>> 0;\r\n\t}\r\n\treturn ((0xFFFF >>> (15 - toBit)) ^ (0xFFFF >>> (16 - fromBit)));\r\n}\r\n\r\n/**\r\n * A lookup table for number of set bits in a 16-bit integer. This is used to quickly count the cardinality (number of unique elements) of a BitSet.\r\n */\r\nconst POP_CNT: Uint8Array = new Uint8Array(65536);\r\nfor (let i = 0; i < 16; i++) {\r\n\tconst stride = (1 << i) >>> 0;\r\n\tlet index = 0;\r\n\twhile (index < POP_CNT.length) {\r\n\t\t// skip the numbers where the bit isn't set\r\n\t\tindex += stride;\r\n\r\n\t\t// increment the ones where the bit is set\r\n\t\tfor (let j = 0; j < stride; j++) {\r\n\t\t\tPOP_CNT[index]++;\r\n\t\t\tindex++;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class BitSet implements Iterable{\r\n\tprivate data: Uint16Array;\r\n\r\n\t/**\r\n\t * Creates a new bit set. All bits are initially `false`.\r\n\t */\r\n\tconstructor();\r\n\r\n\t/**\r\n\t * Creates a bit set whose initial size is large enough to explicitly represent bits with indices in the range `0`\r\n\t * through `nbits-1`. All bits are initially `false`.\r\n\t */\r\n\tconstructor(nbits: number);\r\n\r\n\t/**\r\n\t * Creates a bit set from a iterable list of numbers (including another BitSet);\r\n\t */\r\n\tconstructor(numbers: Iterable);\r\n\r\n\t/*\r\n\t** constructor implementation\r\n\t*/\r\n\tconstructor(arg?: number | Iterable) {\r\n\t\tif (!arg) {\r\n\t\t\t// covering the case of unspecified and nbits===0\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (typeof arg === \"number\") {\r\n\t\t\tif (arg < 0) {\r\n\t\t\t\tthrow new RangeError(\"nbits cannot be negative\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.data = new Uint16Array(getIndex(arg - 1) + 1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (arg instanceof BitSet) {\r\n\t\t\t\tthis.data = arg.data.slice(0); // Clone the data\r\n\t\t\t} else {\r\n\t\t\t\tlet max = -1;\r\n\t\t\t\tfor (let v of arg) {\r\n\t\t\t\t\tif (max < v) {\r\n\t\t\t\t\t\tmax = v;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.data = new Uint16Array(getIndex(max - 1) + 1);\r\n\t\t\t\tfor (let v of arg) {\r\n\t\t\t\t\tthis.set(v);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a logical **AND** of this target bit set with the argument bit set. This bit set is modified so that\r\n\t * each bit in it has the value `true` if and only if it both initially had the value `true` and the corresponding\r\n\t * bit in the bit set argument also had the value `true`.\r\n\t */\r\n\tpublic and(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst words = Math.min(data.length, other.length);\r\n\r\n\t\tlet lastWord = -1;\t// Keep track of index of last non-zero word\r\n\r\n\t\tfor (let i = 0; i < words; i++) {\r\n\t\t\tlet value = data[i] &= other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t}\r\n\r\n\t\tif (lastWord < data.length - 1) {\r\n\t\t\tthis.data = data.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all of the bits in this `BitSet` whose corresponding bit is set in the specified `BitSet`.\r\n\t */\r\n\tpublic andNot(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst words = Math.min(data.length, other.length);\r\n\r\n\t\tlet lastWord = -1;\t// Keep track of index of last non-zero word\r\n\r\n\t\tfor (let i = 0; i < words; i++) {\r\n\t\t\tlet value = data[i] &= (other[i] ^ 0xFFFF);\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t}\r\n\r\n\t\tif (lastWord < data.length - 1) {\r\n\t\t\tthis.data = data.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns the number of bits set to `true` in this `BitSet`.\r\n\t */\r\n\tpublic cardinality(): number {\r\n\t\tif (this.isEmpty) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet result = 0;\r\n\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tresult += POP_CNT[data[i]];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all of the bits in this `BitSet` to `false`.\r\n\t */\r\n\tpublic clear(): void;\r\n\r\n\t/**\r\n\t * Sets the bit specified by the index to `false`.\r\n\t *\r\n\t * @param bitIndex the index of the bit to be cleared\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic clear(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to `false`.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be cleared\r\n\t * @param toIndex index after the last bit to be cleared\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic clear(fromIndex: number, toIndex: number): void;\r\n\tpublic clear(fromIndex?: number, toIndex?: number): void {\r\n\t\tif (fromIndex == null) {\r\n\t\t\tthis.data.fill(0);\r\n\t\t} else if (toIndex == null) {\r\n\t\t\tthis.set(fromIndex, false);\r\n\t\t} else {\r\n\t\t\tthis.set(fromIndex, toIndex, false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to the complement of its current value.\r\n\t *\r\n\t * @param bitIndex the index of the bit to flip\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic flip(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets each bit from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to the complement\r\n\t * of its current value.\r\n\t *\r\n\t * @param fromIndex index of the first bit to flip\r\n\t * @param toIndex index after the last bit to flip\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic flip(fromIndex: number, toIndex: number): void;\r\n\tpublic flip(fromIndex: number, toIndex?: number): void {\r\n\t\tif (toIndex == null) {\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t}\r\n\t\tif (fromIndex < 0 || toIndex < fromIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tconst lastWord = getIndex(toIndex);\r\n\r\n\t\tif (word === lastWord) {\r\n\t\t\tthis.data[word] ^= bitsFor(fromIndex, toIndex);\r\n\t\t} else {\r\n\t\t\tthis.data[word++] ^= bitsFor(fromIndex, 15);\r\n\t\t\twhile (word < lastWord) {\r\n\t\t\t\tthis.data[word++] ^= 0xFFFF;\r\n\t\t\t}\r\n\t\t\tthis.data[word++] ^= bitsFor(0, toIndex);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the value of the bit with the specified index. The value is `true` if the bit with the index `bitIndex`\r\n\t * is currently set in this `BitSet`; otherwise, the result is `false`.\r\n\t *\r\n\t * @param bitIndex the bit index\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic get(bitIndex: number): boolean;\r\n\r\n\t/**\r\n\t * Returns a new `BitSet` composed of bits from this `BitSet` from `fromIndex` (inclusive) to `toIndex` (exclusive).\r\n\t *\r\n\t * @param fromIndex index of the first bit to include\r\n\t * @param toIndex index after the last bit to include\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic get(fromIndex: number, toIndex: number): BitSet;\r\n\tpublic get(fromIndex: number, toIndex?: number): boolean | BitSet {\r\n\t\tif (toIndex === undefined) {\r\n\t\t\treturn !!(this.data[getIndex(fromIndex)] & bitsFor(fromIndex, fromIndex));\r\n\t\t} else {\r\n\t\t\t// return a BitSet\r\n\t\t\tlet result = new BitSet(toIndex + 1);\r\n\t\t\tfor (let i = fromIndex; i <= toIndex; i++) {\r\n\t\t\t\tresult.set(i, this.get(i));\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if the specified `BitSet` has any bits set to `true` that are also set to `true` in this `BitSet`.\r\n\t *\r\n\t * @param set `BitSet` to intersect with\r\n\t */\r\n\tpublic intersects(set: BitSet): boolean {\r\n\t\tlet smallerLength = Math.min(this.length(), set.length());\r\n\t\tif (smallerLength === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet bound = getIndex(smallerLength - 1);\r\n\t\tfor (let i = 0; i <= bound; i++) {\r\n\t\t\tif ((this.data[i] & set.data[i]) !== 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if this `BitSet` contains no bits that are set to `true`.\r\n\t */\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.length() === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"logical size\" of this `BitSet`: the index of the highest set bit in the `BitSet` plus one. Returns\r\n\t * zero if the `BitSet` contains no set bits.\r\n\t */\r\n\tpublic length(): number {\r\n\t\tif (!this.data.length) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn this.previousSetBit(unIndex(this.data.length) - 1) + 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the first bit that is set to `false` that occurs on or after the specified starting index,\r\n\t * If no such bit exists then `-1` is returned.\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic nextClearBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word > length) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tlet ignore = 0xFFFF ^ bitsFor(fromIndex, 15);\r\n\r\n\t\tif ((data[word] | ignore) === 0xFFFF) {\r\n\t\t\tword++;\r\n\t\t\tignore = 0;\r\n\t\t\tfor (; word < length; word++) {\r\n\t\t\t\tif (data[word] !== 0xFFFF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word === length) {\r\n\t\t\t\t// Hit the end\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findLSBSet((data[word] | ignore) ^ 0xFFFF);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the first bit that is set to `true` that occurs on or after the specified starting index.\r\n\t * If no such bit exists then `-1` is returned.\r\n\t *\r\n\t * To iterate over the `true` bits in a `BitSet`, use the following loop:\r\n\t *\r\n\t * ```\r\n\t * for (let i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {\r\n\t * // operate on index i here\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic nextSetBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word > length) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\tlet mask = bitsFor(fromIndex, 15);\r\n\r\n\t\tif ((data[word] & mask) === 0) {\r\n\t\t\tword++;\r\n\t\t\tmask = 0xFFFF;\r\n\t\t\tfor (; word < length; word++) {\r\n\t\t\t\tif (data[word] !== 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word >= length) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findLSBSet(data[word] & mask);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a logical **OR** of this bit set with the bit set argument. This bit set is modified so that a bit in it\r\n\t * has the value `true` if and only if it either already had the value `true` or the corresponding bit in the bit\r\n\t * set argument has the value `true`.\r\n\t */\r\n\tpublic or(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst minWords = Math.min(data.length, other.length);\r\n\t\tconst words = Math.max(data.length, other.length);\r\n\t\tconst dest = data.length === words ? data : new Uint16Array(words);\r\n\r\n\t\tlet lastWord = -1;\r\n\r\n\t\t// Or those words both sets have in common\r\n\r\n\t\tfor (let i = 0; i < minWords; i++) {\r\n\t\t\tlet value = dest[i] = data[i] | other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy words from larger set (if there is one)\r\n\r\n\t\tconst longer = data.length > other.length ? data : other;\r\n\t\tfor (let i = minWords; i < words; i++) {\r\n\t\t\tlet value = dest[i] = longer[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (dest.length === lastWord + 1) {\r\n\t\t\tthis.data = dest;\r\n\t\t} else {\r\n\t\t\tthis.data = dest.slice(0, lastWord);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the nearest bit that is set to `false` that occurs on or before the specified starting\r\n\t * index. If no such bit exists, or if `-1` is given as the starting index, then `-1` is returned.\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is less than `-1`\r\n\t */\r\n\tpublic previousClearBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word >= length) {\r\n\t\t\tword = length - 1;\r\n\t\t}\r\n\r\n\t\tlet ignore = 0xFFFF ^ bitsFor(0, fromIndex);\r\n\r\n\t\tif ((data[word] | ignore) === 0xFFFF) {\r\n\t\t\tignore = 0;\r\n\t\t\tword--;\r\n\t\t\tfor (; word >= 0; word--) {\r\n\t\t\t\tif (data[word] !== 0xFFFF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word < 0) {\r\n\t\t\t\t// Hit the end\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findMSBSet((data[word] | ignore) ^ 0xFFFF);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns the index of the nearest bit that is set to `true` that occurs on or before the specified starting index.\r\n\t * If no such bit exists, or if `-1` is given as the starting index, then `-1` is returned.\r\n\t *\r\n\t * To iterate over the `true` bits in a `BitSet`, use the following loop:\r\n\t *\r\n\t * ```\r\n\t * for (let i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) {\r\n\t * // operate on index i here\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is less than `-1`\r\n\t */\r\n\tpublic previousSetBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word >= length) {\r\n\t\t\tword = length - 1;\r\n\t\t}\r\n\r\n\t\tlet mask = bitsFor(0, fromIndex);\r\n\r\n\t\tif ((data[word] & mask) === 0) {\r\n\t\t\tword--;\r\n\t\t\tmask = 0xFFFF;\r\n\t\t\tfor (; word >= 0; word--) {\r\n\t\t\t\tif (data[word] !== 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word < 0) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findMSBSet(data[word] & mask);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to `true`.\r\n\t *\r\n\t * @param bitIndex a bit index\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic set(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to the specified value.\r\n\t *\r\n\t * @param bitIndex a bit index\r\n\t * @param value a boolean value to set\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic set(bitIndex: number, value: boolean): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to `true`.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be set\r\n\t * @param toIndex index after the last bit to be set\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic set(fromIndex: number, toIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to the specified\r\n\t * value.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be set\r\n\t * @param toIndex index after the last bit to be set\r\n\t * @param value value to set the selected bits to\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic set(fromIndex: number, toIndex: number, value: boolean): void;\r\n\tpublic set(fromIndex: number, toIndex?: boolean | number, value?: boolean): void {\r\n\t\tif (toIndex === undefined) {\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t\tvalue = true;\r\n\t\t} else if (typeof toIndex === \"boolean\") {\r\n\t\t\tvalue = toIndex;\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t}\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tvalue = true;\r\n\t\t}\r\n\r\n\t\tif (fromIndex < 0 || fromIndex > toIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tlet lastWord = getIndex(toIndex);\r\n\r\n\t\tif (value && lastWord >= this.data.length) {\r\n\t\t\t// Grow array \"just enough\" for bits we need to set\r\n\t\t\tlet temp = new Uint16Array(lastWord + 1);\r\n\t\t\tthis.data.forEach((value, index) => temp[index] = value);\r\n\t\t\tthis.data = temp;\r\n\t\t} else if (!value) {\r\n\t\t\t// But there is no need to grow array to clear bits.\r\n\t\t\tif (word >= this.data.length) {\r\n\t\t\t\t// Early exit\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (lastWord >= this.data.length) {\r\n\t\t\t\t// Adjust work to fit array\r\n\t\t\t\tlastWord = this.data.length - 1;\r\n\t\t\t\ttoIndex = this.data.length * 16 - 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (word === lastWord) {\r\n\t\t\tthis._setBits(word, value, bitsFor(fromIndex, toIndex));\r\n\t\t} else {\r\n\t\t\tthis._setBits(word++, value, bitsFor(fromIndex, 15));\r\n\t\t\twhile (word < lastWord) {\r\n\t\t\t\tthis.data[word++] = value ? 0xFFFF : 0;\r\n\t\t\t}\r\n\t\t\tthis._setBits(word, value, bitsFor(0, toIndex));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setBits(word: number, value: boolean, mask: number) {\r\n\t\tif (value) {\r\n\t\t\tthis.data[word] |= mask;\r\n\t\t} else {\r\n\t\t\tthis.data[word] &= 0xFFFF ^ mask;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the number of bits of space actually in use by this `BitSet` to represent bit values. The maximum element\r\n\t * in the set is the size - 1st element.\r\n\t */\r\n\tget size(): number {\r\n\t\treturn this.data.byteLength * 8;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new byte array containing all the bits in this bit set.\r\n\t *\r\n\t * More precisely, if\r\n\t * `let bytes = s.toByteArray();`\r\n\t * then `bytes.length === (s.length()+7)/8` and `s.get(n) === ((bytes[n/8] & (1<<(n%8))) != 0)` for all\r\n\t * `n < 8 * bytes.length`.\r\n\t */\r\n\t// toByteArray(): Int8Array {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Returns a new integer array containing all the bits in this bit set.\r\n\t *\r\n\t * More precisely, if\r\n\t * `let integers = s.toIntegerArray();`\r\n\t * then `integers.length === (s.length()+31)/32` and `s.get(n) === ((integers[n/32] & (1<<(n%32))) != 0)` for all\r\n\t * `n < 32 * integers.length`.\r\n\t */\r\n\t// toIntegerArray(): Int32Array {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn MurmurHash.hashCode(this.data, 22);\r\n\t}\r\n\r\n\t/**\r\n\t * Compares this object against the specified object. The result is `true` if and only if the argument is not\r\n\t * `undefined` and is a `Bitset` object that has exactly the same set of bits set to `true` as this bit set. That\r\n\t * is, for every nonnegative index `k`,\r\n\t *\r\n\t * ```\r\n\t * ((BitSet)obj).get(k) == this.get(k)\r\n\t * ```\r\n\t *\r\n\t * must be true. The current sizes of the two bit sets are not compared.\r\n\t */\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof BitSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst len = this.length();\r\n\r\n\t\tif (len !== obj.length()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (len === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet bound = getIndex(len - 1);\r\n\t\tfor (let i = 0; i <= bound; i++) {\r\n\t\t\tif (this.data[i] !== obj.data[i]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representation of this bit set. For every index for which this `BitSet` contains a bit in the\r\n\t * set state, the decimal representation of that index is included in the result. Such indices are listed in order\r\n\t * from lowest to highest, separated by \", \" (a comma and a space) and surrounded by braces, resulting in the usual\r\n\t * mathematical notation for a set of integers.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * BitSet drPepper = new BitSet();\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{}\"`.\r\n\t *\r\n\t * drPepper.set(2);\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{2}\"`.\r\n\t *\r\n\t * drPepper.set(4);\r\n\t * drPepper.set(10);\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{2, 4, 10}\"`.\r\n\t */\r\n\tpublic toString(): string {\r\n\t\tlet result = \"{\";\r\n\r\n\t\tlet first = true;\r\n\t\tfor (let i = this.nextSetBit(0); i >= 0; i = this.nextSetBit(i + 1)) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tresult += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tresult += i;\r\n\t\t}\r\n\r\n\t\tresult += \"}\";\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// static valueOf(bytes: Int8Array): BitSet;\r\n\t// static valueOf(buffer: ArrayBuffer): BitSet;\r\n\t// static valueOf(integers: Int32Array): BitSet;\r\n\t// static valueOf(data: Int8Array | Int32Array | ArrayBuffer): BitSet {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Performs a logical **XOR** of this bit set with the bit set argument. This bit set is modified so that a bit in\r\n\t * it has the value `true` if and only if one of the following statements holds:\r\n\t *\r\n\t * * The bit initially has the value `true`, and the corresponding bit in the argument has the value `false`.\r\n\t * * The bit initially has the value `false`, and the corresponding bit in the argument has the value `true`.\r\n\t */\r\n\tpublic xor(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst minWords = Math.min(data.length, other.length);\r\n\t\tconst words = Math.max(data.length, other.length);\r\n\t\tconst dest = data.length === words ? data : new Uint16Array(words);\r\n\r\n\t\tlet lastWord = -1;\r\n\r\n\t\t// Xor those words both sets have in common\r\n\r\n\t\tfor (let i = 0; i < minWords; i++) {\r\n\t\t\tlet value = dest[i] = data[i] ^ other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy words from larger set (if there is one)\r\n\r\n\t\tconst longer = data.length > other.length ? data : other;\r\n\t\tfor (let i = minWords; i < words; i++) {\r\n\t\t\tlet value = dest[i] = longer[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (dest.length === lastWord + 1) {\r\n\t\t\tthis.data = dest;\r\n\t\t} else {\r\n\t\t\tthis.data = dest.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clone() {\r\n\t\treturn new BitSet(this);\r\n\t}\r\n\r\n\tpublic [Symbol.iterator](): IterableIterator {\r\n\t\treturn new BitSetIterator(this.data);\r\n\t}\r\n\r\n\t// Overrides formatting for nodejs assert etc.\r\n\tpublic [(util.inspect as any).custom](): string {\r\n\t\treturn \"BitSet \" + this.toString();\r\n\t}\r\n}\r\n\r\nclass BitSetIterator implements IterableIterator{\r\n\tprivate index = 0;\r\n\tprivate mask = 0xFFFF;\r\n\r\n\tconstructor(private data: Uint16Array) { }\r\n\r\n\tpublic next() {\r\n\t\twhile (this.index < this.data.length) {\r\n\t\t\tconst bits = this.data[this.index] & this.mask;\r\n\t\t\tif (bits !== 0) {\r\n\t\t\t\tconst bitNumber = unIndex(this.index) + findLSBSet(bits);\r\n\t\t\t\tthis.mask = bitsFor(bitNumber + 1, 15);\r\n\t\t\t\treturn { done: false, value: bitNumber };\r\n\t\t\t}\r\n\t\t\tthis.index++;\r\n\t\t\tthis.mask = 0xFFFF;\r\n\t\t}\r\n\t\treturn { done: true, value: -1 };\r\n\t}\r\n\r\n\tpublic [Symbol.iterator](): IterableIterator { return this; }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.5488013-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ConflictInfo } from \"./ConflictInfo\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { JavaSet } from \"../misc/Stubs\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\ninterface KeyType { state: number; alt: number; }\r\n\r\nclass KeyTypeEqualityComparer implements EqualityComparator {\r\n\tpublic hashCode(key: KeyType) {\r\n\t\treturn key.state ^ key.alt;\r\n\t}\r\n\r\n\tpublic equals(a: KeyType, b: KeyType) {\r\n\t\treturn a.state === b.state && a.alt === b.alt;\r\n\t}\r\n\r\n\tpublic static readonly INSTANCE = new KeyTypeEqualityComparer();\r\n}\r\n\r\nfunction NewKeyedConfigMap(map?: Array2DHashMap) {\r\n\tif (map) {\r\n\t\treturn new Array2DHashMap(map);\r\n\t} else {\r\n\t\treturn new Array2DHashMap(KeyTypeEqualityComparer.INSTANCE);\r\n\t}\r\n}\r\n\r\n/**\r\n * Represents a set of ATN configurations (see `ATNConfig`). As configurations are added to the set, they are merged\r\n * with other `ATNConfig` instances already in the set when possible using the graph-structured stack.\r\n *\r\n * An instance of this class represents the complete set of positions (with context) in an ATN which would be associated\r\n * with a single DFA state. Its internal representation is more complex than traditional state used for NFA to DFA\r\n * conversion due to performance requirements (both improving speed and reducing memory overhead) as well as supporting\r\n * features such as semantic predicates and non-greedy operators in a form to support ANTLR's prediction algorithm.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNConfigSet implements JavaSet {\r\n\t/**\r\n\t * This maps (state, alt) -> merged {@link ATNConfig}. The key does not account for\r\n\t * the {@link ATNConfig#getSemanticContext} of the value, which is only a problem if a single\r\n\t * `ATNConfigSet` contains two configs with the same state and alternative\r\n\t * but different semantic contexts. When this case arises, the first config\r\n\t * added to this map stays, and the remaining configs are placed in {@link #unmerged}.\r\n\t *\r\n\t * This map is only used for optimizing the process of adding configs to the set,\r\n\t * and is `undefined` for read-only sets stored in the DFA.\r\n\t */\r\n\tprivate mergedConfigs?: Array2DHashMap;\r\n\r\n\t/**\r\n\t * This is an \"overflow\" list holding configs which cannot be merged with one\r\n\t * of the configs in {@link #mergedConfigs} but have a colliding key. This\r\n\t * occurs when two configs in the set have the same state and alternative but\r\n\t * different semantic contexts.\r\n\t *\r\n\t * This list is only used for optimizing the process of adding configs to the set,\r\n\t * and is `undefined` for read-only sets stored in the DFA.\r\n\t */\r\n\tprivate unmerged?: ATNConfig[];\r\n\r\n\t/**\r\n\t * This is a list of all configs in this set.\r\n\t */\r\n\tprivate configs: ATNConfig[];\r\n\r\n\tprivate _uniqueAlt: number = 0;\r\n\tprivate _conflictInfo?: ConflictInfo;\r\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\r\n\t// while computing a closure operation. Don't make a DFA state from this.\r\n\tprivate _hasSemanticContext: boolean = false;\r\n\tprivate _dipsIntoOuterContext: boolean = false;\r\n\t/**\r\n\t * When `true`, this config set represents configurations where the entire\r\n\t * outer context has been consumed by the ATN interpreter. This prevents the\r\n\t * {@link ParserATNSimulator#closure} from pursuing the global FOLLOW when a\r\n\t * rule stop state is reached with an empty prediction context.\r\n\t *\r\n\t * Note: `outermostConfigSet` and {@link #dipsIntoOuterContext} should never\r\n\t * be true at the same time.\r\n\t */\r\n\tprivate outermostConfigSet: boolean = false;\r\n\r\n\tprivate cachedHashCode: number = -1;\r\n\r\n\tconstructor();\r\n\tconstructor(set: ATNConfigSet, readonly: boolean);\r\n\tconstructor(set?: ATNConfigSet, readonly?: boolean) {\r\n\t\tif (!set) {\r\n\t\t\tthis.mergedConfigs = NewKeyedConfigMap();\r\n\t\t\tthis.unmerged = [];\r\n\t\t\tthis.configs = [];\r\n\r\n\t\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\t} else {\r\n\r\n\t\t\tif (readonly) {\r\n\t\t\t\tthis.mergedConfigs = undefined;\r\n\t\t\t\tthis.unmerged = undefined;\r\n\t\t\t} else if (!set.isReadOnly) {\r\n\t\t\t\tthis.mergedConfigs = NewKeyedConfigMap(set.mergedConfigs);\r\n\t\t\t\tthis.unmerged = (set.unmerged as ATNConfig[]).slice(0);\r\n\t\t\t} else {\r\n\t\t\t\tthis.mergedConfigs = NewKeyedConfigMap();\r\n\t\t\t\tthis.unmerged = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.configs = set.configs.slice(0);\r\n\r\n\t\t\tthis._dipsIntoOuterContext = set._dipsIntoOuterContext;\r\n\t\t\tthis._hasSemanticContext = set._hasSemanticContext;\r\n\t\t\tthis.outermostConfigSet = set.outermostConfigSet;\r\n\r\n\t\t\tif (readonly || !set.isReadOnly) {\r\n\t\t\t\tthis._uniqueAlt = set._uniqueAlt;\r\n\t\t\t\tthis._conflictInfo = set._conflictInfo;\r\n\t\t\t}\r\n\r\n\t\t\t// if (!readonly && set.isReadOnly) -> addAll is called from clone()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the set of all alternatives represented by configurations in this\r\n\t * set.\r\n\t */\r\n\t@NotNull\r\n\tpublic getRepresentedAlternatives(): BitSet {\r\n\t\tif (this._conflictInfo != null) {\r\n\t\t\treturn this._conflictInfo.conflictedAlts.clone();\r\n\t\t}\r\n\r\n\t\tlet alts: BitSet = new BitSet();\r\n\t\tfor (let config of this) {\r\n\t\t\talts.set(config.alt);\r\n\t\t}\r\n\r\n\t\treturn alts;\r\n\t}\r\n\r\n\tget isReadOnly(): boolean {\r\n\t\treturn this.mergedConfigs == null;\r\n\t}\r\n\r\n\tget isOutermostConfigSet(): boolean {\r\n\t\treturn this.outermostConfigSet;\r\n\t}\r\n\r\n\tset isOutermostConfigSet(outermostConfigSet: boolean) {\r\n\t\tif (this.outermostConfigSet && !outermostConfigSet) {\r\n\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t}\r\n\r\n\t\tassert(!outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t\tthis.outermostConfigSet = outermostConfigSet;\r\n\t}\r\n\r\n\tpublic getStates(): Array2DHashSet {\r\n\t\tlet states = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\tfor (let c of this.configs) {\r\n\t\t\tstates.add(c.state);\r\n\t\t}\r\n\r\n\t\treturn states;\r\n\t}\r\n\r\n\tpublic optimizeConfigs(interpreter: ATNSimulator): void {\r\n\t\tif (this.configs.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let config of this.configs) {\r\n\t\t\tconfig.context = interpreter.atn.getCachedContext(config.context);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clone(readonly: boolean): ATNConfigSet {\r\n\t\tlet copy: ATNConfigSet = new ATNConfigSet(this, readonly);\r\n\t\tif (!readonly && this.isReadOnly) {\r\n\t\t\tcopy.addAll(this.configs);\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.configs.length;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.configs.length === 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic contains(o: any): boolean {\r\n\t\tif (!(o instanceof ATNConfig)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.mergedConfigs && this.unmerged) {\r\n\t\t\tlet config: ATNConfig = o;\r\n\t\t\tlet configKey = this.getKey(config);\r\n\t\t\tlet mergedConfig = this.mergedConfigs.get(configKey);\r\n\t\t\tif (mergedConfig != null && this.canMerge(config, configKey, mergedConfig)) {\r\n\t\t\t\treturn mergedConfig.contains(config);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let c of this.unmerged) {\r\n\t\t\t\tif (c.contains(o)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (let c of this.configs) {\r\n\t\t\t\tif (c.contains(o)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic *[Symbol.iterator](): IterableIterator {\r\n\t\tyield* this.configs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toArray(): ATNConfig[] {\r\n\t\treturn this.configs;\r\n\t}\r\n\r\n\tpublic add(e: ATNConfig): boolean;\r\n\tpublic add(e: ATNConfig, contextCache: PredictionContextCache | undefined): boolean;\r\n\tpublic add(e: ATNConfig, contextCache?: PredictionContextCache): boolean {\r\n\t\tthis.ensureWritable();\r\n\t\tif (!this.mergedConfigs || !this.unmerged) {\r\n\t\t\tthrow new Error(\"Covered by ensureWritable but duplicated here for strict null check limitation\");\r\n\t\t}\r\n\r\n\t\tassert(!this.outermostConfigSet || !e.reachesIntoOuterContext);\r\n\r\n\t\tif (contextCache == null) {\r\n\t\t\tcontextCache = PredictionContextCache.UNCACHED;\r\n\t\t}\r\n\r\n\t\tlet addKey: boolean;\r\n\t\tlet key = this.getKey(e);\r\n\t\tlet mergedConfig = this.mergedConfigs.get(key);\r\n\t\taddKey = (mergedConfig == null);\r\n\t\tif (mergedConfig != null && this.canMerge(e, key, mergedConfig)) {\r\n\t\t\tmergedConfig.outerContextDepth = Math.max(mergedConfig.outerContextDepth, e.outerContextDepth);\r\n\t\t\tif (e.isPrecedenceFilterSuppressed) {\r\n\t\t\t\tmergedConfig.isPrecedenceFilterSuppressed = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet joined: PredictionContext = PredictionContext.join(mergedConfig.context, e.context, contextCache);\r\n\t\t\tthis.updatePropertiesForMergedConfig(e);\r\n\t\t\tif (mergedConfig.context === joined) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tmergedConfig.context = joined;\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.unmerged.length; i++) {\r\n\t\t\tlet unmergedConfig: ATNConfig = this.unmerged[i];\r\n\t\t\tif (this.canMerge(e, key, unmergedConfig)) {\r\n\t\t\t\tunmergedConfig.outerContextDepth = Math.max(unmergedConfig.outerContextDepth, e.outerContextDepth);\r\n\t\t\t\tif (e.isPrecedenceFilterSuppressed) {\r\n\t\t\t\t\tunmergedConfig.isPrecedenceFilterSuppressed = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet joined: PredictionContext = PredictionContext.join(unmergedConfig.context, e.context, contextCache);\r\n\t\t\t\tthis.updatePropertiesForMergedConfig(e);\r\n\t\t\t\tif (unmergedConfig.context === joined) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tunmergedConfig.context = joined;\r\n\r\n\t\t\t\tif (addKey) {\r\n\t\t\t\t\tthis.mergedConfigs.put(key, unmergedConfig);\r\n\t\t\t\t\tthis.unmerged.splice(i, 1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.configs.push(e);\r\n\t\tif (addKey) {\r\n\t\t\tthis.mergedConfigs.put(key, e);\r\n\t\t} else {\r\n\t\t\tthis.unmerged.push(e);\r\n\t\t}\r\n\r\n\t\tthis.updatePropertiesForAddedConfig(e);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate updatePropertiesForMergedConfig(config: ATNConfig): void {\r\n\t\t// merged configs can't change the alt or semantic context\r\n\t\tthis._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext;\r\n\t\tassert(!this.outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t}\r\n\r\n\tprivate updatePropertiesForAddedConfig(config: ATNConfig): void {\r\n\t\tif (this.configs.length === 1) {\r\n\t\t\tthis._uniqueAlt = config.alt;\r\n\t\t} else if (this._uniqueAlt !== config.alt) {\r\n\t\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\t}\r\n\r\n\t\tthis._hasSemanticContext = this._hasSemanticContext || !SemanticContext.NONE.equals(config.semanticContext);\r\n\t\tthis._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext;\r\n\t\tassert(!this.outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t}\r\n\r\n\tprotected canMerge(left: ATNConfig, leftKey: { state: number, alt: number }, right: ATNConfig): boolean {\r\n\t\tif (left.state.stateNumber !== right.state.stateNumber) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (leftKey.alt !== right.alt) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn left.semanticContext.equals(right.semanticContext);\r\n\t}\r\n\r\n\tprotected getKey(e: ATNConfig): { state: number, alt: number } {\r\n\t\treturn { state: e.state.stateNumber, alt: e.alt };\r\n\t}\r\n\r\n\t@Override\r\n\tpublic containsAll(c: Iterable): boolean {\r\n\t\tfor (let o of c) {\r\n\t\t\tif (!(o instanceof ATNConfig)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.contains(o)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic addAll(c: Iterable): boolean;\r\n\tpublic addAll(c: Iterable, contextCache: PredictionContextCache): boolean;\r\n\tpublic addAll(c: Iterable, contextCache?: PredictionContextCache): boolean {\r\n\t\tthis.ensureWritable();\r\n\r\n\t\tlet changed: boolean = false;\r\n\t\tfor (let group of c) {\r\n\t\t\tif (this.add(group, contextCache)) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clear(): void {\r\n\t\tthis.ensureWritable();\r\n\t\tif (!this.mergedConfigs || !this.unmerged) {\r\n\t\t\tthrow new Error(\"Covered by ensureWritable but duplicated here for strict null check limitation\");\r\n\t\t}\r\n\r\n\t\tthis.mergedConfigs.clear();\r\n\t\tthis.unmerged.length = 0;\r\n\t\tthis.configs.length = 0;\r\n\r\n\t\tthis._dipsIntoOuterContext = false;\r\n\t\tthis._hasSemanticContext = false;\r\n\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\tthis._conflictInfo = undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (this === obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(obj instanceof ATNConfigSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.outermostConfigSet === obj.outermostConfigSet\r\n\t\t\t&& Utils.equals(this._conflictInfo, obj._conflictInfo)\r\n\t\t\t&& ArrayEqualityComparator.INSTANCE.equals(this.configs, obj.configs);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tif (this.isReadOnly && this.cachedHashCode !== -1) {\r\n\t\t\treturn this.cachedHashCode;\r\n\t\t}\r\n\r\n\t\tlet hashCode: number = 1;\r\n\t\thashCode = 5 * hashCode ^ (this.outermostConfigSet ? 1 : 0);\r\n\t\thashCode = 5 * hashCode ^ ArrayEqualityComparator.INSTANCE.hashCode(this.configs);\r\n\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthis.cachedHashCode = hashCode;\r\n\t\t}\r\n\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(showContext: boolean): string;\r\n\tpublic toString(showContext?: boolean): string {\r\n\t\tif (showContext == null) {\r\n\t\t\tshowContext = false;\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\t\tlet sortedConfigs = this.configs.slice(0);\r\n\t\tsortedConfigs.sort((o1, o2) => {\r\n\t\t\tif (o1.alt !== o2.alt) {\r\n\t\t\t\treturn o1.alt - o2.alt;\r\n\t\t\t}\r\n\t\t\telse if (o1.state.stateNumber !== o2.state.stateNumber) {\r\n\t\t\t\treturn o1.state.stateNumber - o2.state.stateNumber;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn o1.semanticContext.toString().localeCompare(o2.semanticContext.toString());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tbuf += (\"[\");\r\n\t\tfor (let i = 0; i < sortedConfigs.length; i++) {\r\n\t\t\tif (i > 0) {\r\n\t\t\t\tbuf += (\", \");\r\n\t\t\t}\r\n\t\t\tbuf += (sortedConfigs[i].toString(undefined, true, showContext));\r\n\t\t}\r\n\t\tbuf += (\"]\");\r\n\r\n\t\tif (this._hasSemanticContext) {\r\n\t\t\tbuf += (\",hasSemanticContext=\") + (this._hasSemanticContext);\r\n\t\t}\r\n\t\tif (this._uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tbuf += (\",uniqueAlt=\") + (this._uniqueAlt);\r\n\t\t}\r\n\t\tif (this._conflictInfo != null) {\r\n\t\t\tbuf += (\",conflictingAlts=\") + (this._conflictInfo.conflictedAlts);\r\n\t\t\tif (!this._conflictInfo.isExact) {\r\n\t\t\t\tbuf += (\"*\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._dipsIntoOuterContext) {\r\n\t\t\tbuf += (\",dipsIntoOuterContext\");\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n\r\n\tget uniqueAlt(): number {\r\n\t\treturn this._uniqueAlt;\r\n\t}\r\n\r\n\tget hasSemanticContext(): boolean {\r\n\t\treturn this._hasSemanticContext;\r\n\t}\r\n\r\n\tset hasSemanticContext(value: boolean) {\r\n\t\tthis.ensureWritable();\r\n\t\tthis._hasSemanticContext = value;\r\n\t}\r\n\r\n\tget conflictInfo(): ConflictInfo | undefined {\r\n\t\treturn this._conflictInfo;\r\n\t}\r\n\r\n\tset conflictInfo(conflictInfo: ConflictInfo | undefined) {\r\n\t\tthis.ensureWritable();\r\n\t\tthis._conflictInfo = conflictInfo;\r\n\t}\r\n\r\n\tget conflictingAlts(): BitSet | undefined {\r\n\t\tif (this._conflictInfo == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this._conflictInfo.conflictedAlts;\r\n\t}\r\n\r\n\tget isExactConflict(): boolean {\r\n\t\tif (this._conflictInfo == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._conflictInfo.isExact;\r\n\t}\r\n\r\n\tget dipsIntoOuterContext(): boolean {\r\n\t\treturn this._dipsIntoOuterContext;\r\n\t}\r\n\r\n\tpublic get(index: number): ATNConfig {\r\n\t\treturn this.configs[index];\r\n\t}\r\n\r\n\tprotected ensureWritable(): void {\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthrow new Error(\"This ATNConfigSet is read only.\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.7771056-07:00\r\n\r\nimport { AcceptStateInfo } from \"./AcceptStateInfo\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNConfigSet } from \"../atn/ATNConfigSet\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { LexerActionExecutor } from \"../atn/LexerActionExecutor\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { PredictionContext } from \"../atn/PredictionContext\";\r\nimport { SemanticContext } from \"../atn/SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/** A DFA state represents a set of possible ATN configurations.\r\n * As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\r\n * to keep track of all possible states the ATN can be in after\r\n * reading each input symbol. That is to say, after reading\r\n * input a1a2..an, the DFA is in a state that represents the\r\n * subset T of the states of the ATN that are reachable from the\r\n * ATN's start state along some path labeled a1a2..an.\"\r\n * In conventional NFA→DFA conversion, therefore, the subset T\r\n * would be a bitset representing the set of states the\r\n * ATN could be in. We need to track the alt predicted by each\r\n * state as well, however. More importantly, we need to maintain\r\n * a stack of states, tracking the closure operations as they\r\n * jump from rule to rule, emulating rule invocations (method calls).\r\n * I have to add a stack to simulate the proper lookahead sequences for\r\n * the underlying LL grammar from which the ATN was derived.\r\n *\r\n * I use a set of ATNConfig objects not simple states. An ATNConfig\r\n * is both a state (ala normal conversion) and a RuleContext describing\r\n * the chain of rules (if any) followed to arrive at that state.\r\n *\r\n * A DFA state may have multiple references to a particular state,\r\n * but with different ATN contexts (with same or different alts)\r\n * meaning that state was reached via a different set of rule invocations.\r\n */\r\nexport class DFAState {\r\n\tpublic stateNumber: number = -1;\r\n\r\n\t@NotNull\r\n\tpublic configs: ATNConfigSet;\r\n\r\n\t/** `edges.get(symbol)` points to target of symbol.\r\n\t */\r\n\t@NotNull\r\n\tprivate readonly edges: Map;\r\n\r\n\tprivate _acceptStateInfo: AcceptStateInfo | undefined;\r\n\r\n\t/** These keys for these edges are the top level element of the global context. */\r\n\t@NotNull\r\n\tprivate readonly contextEdges: Map;\r\n\r\n\t/** Symbols in this set require a global context transition before matching an input symbol. */\r\n\tprivate contextSymbols: BitSet | undefined;\r\n\r\n\t/**\r\n\t * This list is computed by {@link ParserATNSimulator#predicateDFAState}.\r\n\t */\r\n\tpublic predicates: DFAState.PredPrediction[] | undefined;\r\n\r\n\t/**\r\n\t * Constructs a new `DFAState`.\r\n\t *\r\n\t * @param configs The set of ATN configurations defining this state.\r\n\t */\r\n\tconstructor(configs: ATNConfigSet) {\r\n\t\tthis.configs = configs;\r\n\t\tthis.edges = new Map();\r\n\t\tthis.contextEdges = new Map();\r\n\t}\r\n\r\n\tget isContextSensitive(): boolean {\r\n\t\treturn !!this.contextSymbols;\r\n\t}\r\n\r\n\tpublic isContextSymbol(symbol: number): boolean {\r\n\t\tif (!this.isContextSensitive) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.contextSymbols!.get(symbol);\r\n\t}\r\n\r\n\tpublic setContextSymbol(symbol: number): void {\r\n\t\tassert(this.isContextSensitive);\r\n\t\tthis.contextSymbols!.set(symbol);\r\n\t}\r\n\r\n\tpublic setContextSensitive(atn: ATN): void {\r\n\t\tassert(!this.configs.isOutermostConfigSet);\r\n\t\tif (this.isContextSensitive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.contextSymbols) {\r\n\t\t\tthis.contextSymbols = new BitSet();\r\n\t\t}\r\n\t}\r\n\r\n\tget acceptStateInfo(): AcceptStateInfo | undefined {\r\n\t\treturn this._acceptStateInfo;\r\n\t}\r\n\r\n\tset acceptStateInfo(acceptStateInfo: AcceptStateInfo | undefined) {\r\n\t\tthis._acceptStateInfo = acceptStateInfo;\r\n\t}\r\n\r\n\tget isAcceptState(): boolean {\r\n\t\treturn !!this._acceptStateInfo;\r\n\t}\r\n\r\n\tget prediction(): number {\r\n\t\tif (!this._acceptStateInfo) {\r\n\t\t\treturn ATN.INVALID_ALT_NUMBER;\r\n\t\t}\r\n\r\n\t\treturn this._acceptStateInfo.prediction;\r\n\t}\r\n\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\tif (!this._acceptStateInfo) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this._acceptStateInfo.lexerActionExecutor;\r\n\t}\r\n\r\n\tpublic getTarget(symbol: number): DFAState | undefined {\r\n\t\treturn this.edges.get(symbol);\r\n\t}\r\n\r\n\tpublic setTarget(symbol: number, target: DFAState): void {\r\n\t\tthis.edges.set(symbol, target);\r\n\t}\r\n\r\n\tpublic getEdgeMap(): Map {\r\n\t\treturn this.edges;\r\n\t}\r\n\r\n\tpublic getContextTarget(invokingState: number): DFAState | undefined {\r\n\t\tif (invokingState === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tinvokingState = -1;\r\n\t\t}\r\n\r\n\t\treturn this.contextEdges.get(invokingState);\r\n\t}\r\n\r\n\tpublic setContextTarget(invokingState: number, target: DFAState): void {\r\n\t\tif (!this.isContextSensitive) {\r\n\t\t\tthrow new Error(\"The state is not context sensitive.\");\r\n\t\t}\r\n\r\n\t\tif (invokingState === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tinvokingState = -1;\r\n\t\t}\r\n\r\n\t\tthis.contextEdges.set(invokingState, target);\r\n\t}\r\n\r\n\tpublic getContextEdgeMap(): Map {\r\n\t\tlet map = new Map(this.contextEdges);\r\n\t\tlet existing = map.get(-1);\r\n\t\tif (existing !== undefined) {\r\n\t\t\tif (map.size === 1) {\r\n\t\t\t\tlet result = new Map();\r\n\t\t\t\tresult.set(PredictionContext.EMPTY_FULL_STATE_KEY, existing);\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmap.delete(-1);\r\n\t\t\t\tmap.set(PredictionContext.EMPTY_FULL_STATE_KEY, existing);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn map;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize(7);\r\n\t\thash = MurmurHash.update(hash, this.configs.hashCode());\r\n\t\thash = MurmurHash.finish(hash, 1);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Two {@link DFAState} instances are equal if their ATN configuration sets\r\n\t * are the same. This method is used to see if a state already exists.\r\n\t *\r\n\t * Because the number of alternatives and number of ATN configurations are\r\n\t * finite, there is a finite number of DFA states that can be processed.\r\n\t * This is necessary to show that the algorithm terminates.\r\n\t *\r\n\t * Cannot test the DFA state numbers here because in\r\n\t * {@link ParserATNSimulator#addDFAState} we need to know if any other state\r\n\t * exists that has this exact set of ATN configurations. The\r\n\t * {@link #stateNumber} is irrelevant.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\t// compare set of ATN configurations in this set with other\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(o instanceof DFAState)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: DFAState = o;\r\n\t\tlet sameSet: boolean = this.configs.equals(other.configs);\r\n//\t\tSystem.out.println(\"DFAState.equals: \"+configs+(sameSet?\"==\":\"!=\")+other.configs);\r\n\t\treturn sameSet;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet buf = \"\";\r\n\t\tbuf += (this.stateNumber) + (\":\") + (this.configs);\r\n\t\tif (this.isAcceptState) {\r\n\t\t\tbuf += (\"=>\");\r\n\t\t\tif (this.predicates) {\r\n\t\t\t\tbuf += this.predicates;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbuf += (this.prediction);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n\r\nexport namespace DFAState {\r\n\t/** Map a predicate to a predicted alternative. */\r\n\texport class PredPrediction {\r\n\t\t@NotNull\r\n\t\tpublic pred: SemanticContext; // never null; at least SemanticContext.NONE\r\n\t\tpublic alt: number;\r\n\t\tconstructor(@NotNull pred: SemanticContext, alt: number) {\r\n\t\t\tthis.alt = alt;\r\n\t\t\tthis.pred = pred;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.3184311-07:00\r\n\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\n\r\nexport abstract class ATNSimulator {\r\n\t/** Must distinguish between missing edge and edge we know leads nowhere */\r\n\tprivate static _ERROR: DFAState;\r\n\t@NotNull\r\n\tstatic get ERROR(): DFAState {\r\n\t\tif (!ATNSimulator._ERROR) {\r\n\t\t\tATNSimulator._ERROR = new DFAState(new ATNConfigSet());\r\n\t\t\tATNSimulator._ERROR.stateNumber = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t}\r\n\r\n\t\treturn ATNSimulator._ERROR;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tconstructor(@NotNull atn: ATN) {\r\n\t\tthis.atn = atn;\r\n\t}\r\n\r\n\tpublic abstract reset(): void;\r\n\r\n\t/**\r\n\t * Clear the DFA cache used by the current instance. Since the DFA cache may\r\n\t * be shared by multiple ATN simulators, this method may affect the\r\n\t * performance (but not accuracy) of other parsers which are being used\r\n\t * concurrently.\r\n\t *\r\n\t * @ if the current instance does not\r\n\t * support clearing the DFA.\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tpublic clearDFA(): void {\r\n\t\tthis.atn.clearDFA();\r\n\t}\r\n}\r\n\r\nexport namespace ATNSimulator {\r\n\tconst RULE_VARIANT_DELIMITER: string = \"$\";\r\n\tconst RULE_LF_VARIANT_MARKER: string = \"$lf$\";\r\n\tconst RULE_NOLF_VARIANT_MARKER: string = \"$nolf$\";\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.5479602-07:00\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ConsoleErrorListener implements ANTLRErrorListener {\r\n\t/**\r\n\t * Provides a default instance of {@link ConsoleErrorListener}.\r\n\t */\r\n\tpublic static readonly INSTANCE: ConsoleErrorListener = new ConsoleErrorListener();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation prints messages to {@link System#err} containing the\r\n\t * values of `line`, `charPositionInLine`, and `msg` using\r\n\t * the following format.\r\n\t *\r\n\t *
\r\n\t * line *line*:*charPositionInLine* *msg*\r\n\t * 
\r\n\t */\r\n\tpublic syntaxError(\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\tconsole.error(`line ${line}:${charPositionInLine} ${msg}`);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.8126690-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorListener} dispatches all calls to a\r\n * collection of delegate listeners. This reduces the effort required to support multiple\r\n * listeners.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ProxyErrorListener> implements ANTLRErrorListener {\r\n\r\n\tconstructor(private delegates: TListener[]) {\r\n\t\tif (!delegates) {\r\n\t\t\tthrow new Error(\"Invalid delegates\");\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getDelegates(): ReadonlyArray {\r\n\t\treturn this.delegates;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\t@NotNull recognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t@NotNull msg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\tthis.delegates.forEach((listener) => {\r\n\t\t\tif (listener.syntaxError) {\r\n\t\t\t\tlistener.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.1954441-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { ConsoleErrorListener } from \"./ConsoleErrorListener\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { ParseInfo } from \"./atn/ParseInfo\";\r\nimport { ProxyErrorListener } from \"./ProxyErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { SuppressWarnings, NotNull } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\nimport { VocabularyImpl } from \"./VocabularyImpl\";\r\n\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nexport abstract class Recognizer {\r\n\tpublic static readonly EOF: number = -1;\r\n\r\n\tprivate static tokenTypeMapCache =\r\n\t\tnew WeakMap>();\r\n\tprivate static ruleIndexMapCache =\r\n\t\tnew WeakMap>();\r\n\r\n\t@SuppressWarnings(\"serial\")\r\n\t@NotNull\r\n\tprivate readonly _listeners: Array> = [ConsoleErrorListener.INSTANCE];\r\n\r\n\tprotected _interp!: ATNInterpreter;\r\n\r\n\tprivate _stateNumber = -1;\r\n\r\n\tpublic abstract readonly ruleNames: string[];\r\n\r\n\t/**\r\n\t * Get the vocabulary used by the recognizer.\r\n\t *\r\n\t * @returns A {@link Vocabulary} instance providing information about the\r\n\t * vocabulary used by the grammar.\r\n\t */\r\n\tpublic abstract readonly vocabulary: Vocabulary;\r\n\r\n\t/**\r\n\t * Get a map from token names to token types.\r\n\t *\r\n\t * Used for XPath and tree pattern compilation.\r\n\t */\r\n\t@NotNull\r\n\tpublic getTokenTypeMap(): ReadonlyMap {\r\n\t\tlet vocabulary: Vocabulary = this.vocabulary;\r\n\t\tlet result = Recognizer.tokenTypeMapCache.get(vocabulary);\r\n\t\tif (result == null) {\r\n\t\t\tlet intermediateResult = new Map();\r\n\t\t\tfor (let i = 0; i <= this.atn.maxTokenType; i++) {\r\n\t\t\t\tlet literalName = vocabulary.getLiteralName(i);\r\n\t\t\t\tif (literalName != null) {\r\n\t\t\t\t\tintermediateResult.set(literalName, i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet symbolicName = vocabulary.getSymbolicName(i);\r\n\t\t\t\tif (symbolicName != null) {\r\n\t\t\t\t\tintermediateResult.set(symbolicName, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tintermediateResult.set(\"EOF\", Token.EOF);\r\n\t\t\tresult = intermediateResult;\r\n\t\t\tRecognizer.tokenTypeMapCache.set(vocabulary, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Get a map from rule names to rule indexes.\r\n\t *\r\n\t * Used for XPath and tree pattern compilation.\r\n\t */\r\n\t@NotNull\r\n\tpublic getRuleIndexMap(): ReadonlyMap {\r\n\t\tlet ruleNames: string[] = this.ruleNames;\r\n\t\tif (ruleNames == null) {\r\n\t\t\tthrow new Error(\"The current recognizer does not provide a list of rule names.\");\r\n\t\t}\r\n\r\n\t\tlet result: ReadonlyMap | undefined = Recognizer.ruleIndexMapCache.get(ruleNames);\r\n\t\tif (result == null) {\r\n\t\t\tresult = Utils.toMap(ruleNames);\r\n\t\t\tRecognizer.ruleIndexMapCache.set(ruleNames, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic getTokenType(tokenName: string): number {\r\n\t\tlet ttype = this.getTokenTypeMap().get(tokenName);\r\n\t\tif (ttype != null) {\r\n\t\t\treturn ttype;\r\n\t\t}\r\n\t\treturn Token.INVALID_TYPE;\r\n\t}\r\n\r\n\t/**\r\n\t * If this recognizer was generated, it will have a serialized ATN\r\n\t * representation of the grammar.\r\n\t *\r\n\t * For interpreters, we don't know their serialized ATN despite having\r\n\t * created the interpreter from it.\r\n\t */\r\n\t@NotNull\r\n\tget serializedATN(): string {\r\n\t\tthrow new Error(\"there is no serialized ATN\");\r\n\t}\r\n\r\n\t/** For debugging and other purposes, might want the grammar name.\r\n\t * Have ANTLR generate an implementation for this method.\r\n\t */\r\n\tpublic abstract readonly grammarFileName: string;\r\n\r\n\t/**\r\n\t * Get the {@link ATN} used by the recognizer for prediction.\r\n\t *\r\n\t * @returns The {@link ATN} used by the recognizer for prediction.\r\n\t */\r\n\t@NotNull\r\n\tget atn(): ATN {\r\n\t\treturn this._interp.atn;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the ATN interpreter used by the recognizer for prediction.\r\n\t *\r\n\t * @returns The ATN interpreter used by the recognizer for prediction.\r\n\t */\r\n\t@NotNull\r\n\tget interpreter(): ATNInterpreter {\r\n\t\treturn this._interp;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the ATN interpreter used by the recognizer for prediction.\r\n\t *\r\n\t * @param interpreter The ATN interpreter used by the recognizer for\r\n\t * prediction.\r\n\t */\r\n\tset interpreter(@NotNull interpreter: ATNInterpreter) {\r\n\t\tthis._interp = interpreter;\r\n\t}\r\n\r\n\t/** If profiling during the parse/lex, this will return DecisionInfo records\r\n\t * for each decision in recognizer in a ParseInfo object.\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tget parseInfo(): Promise {\r\n\t\treturn Promise.resolve(undefined);\r\n\t}\r\n\r\n\t/** What is the error header, normally line/character position information? */\r\n\t@NotNull\r\n\tpublic getErrorHeader(@NotNull e: RecognitionException): string {\r\n\t\tlet token = e.getOffendingToken();\r\n\t\tif (!token) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\tlet line = token.line;\r\n\t\tlet charPositionInLine: number = token.charPositionInLine;\r\n\t\treturn \"line \" + line + \":\" + charPositionInLine;\r\n\t}\r\n\r\n\t/**\r\n\t * @exception NullPointerException if `listener` is `undefined`.\r\n\t */\r\n\tpublic addErrorListener(@NotNull listener: ANTLRErrorListener): void {\r\n\t\tif (!listener) {\r\n\t\t\tthrow new TypeError(\"listener must not be null\");\r\n\t\t}\r\n\t\tthis._listeners.push(listener);\r\n\t}\r\n\r\n\tpublic removeErrorListener(@NotNull listener: ANTLRErrorListener): void {\r\n\t\tlet position = this._listeners.indexOf(listener);\r\n\t\tif (position !== -1) {\r\n\t\t\tthis._listeners.splice(position, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeErrorListeners(): void {\r\n\t\tthis._listeners.length = 0;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getErrorListeners(): Array> {\r\n\t\treturn this._listeners.slice(0);\r\n\t}\r\n\r\n\tpublic getErrorListenerDispatch(): ANTLRErrorListener {\r\n\t\treturn new ProxyErrorListener>(this.getErrorListeners());\r\n\t}\r\n\r\n\t// subclass needs to override these if there are sempreds or actions\r\n\t// that the ATN interp needs to execute\r\n\tpublic sempred(\r\n\t\t_localctx: RuleContext | undefined,\r\n\t\truleIndex: number,\r\n\t\tactionIndex: number): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic precpred(\r\n\t\tlocalctx: RuleContext | undefined,\r\n\t\tprecedence: number): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic action(\r\n\t\t_localctx: RuleContext | undefined,\r\n\t\truleIndex: number,\r\n\t\tactionIndex: number): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\tget state(): number {\r\n\t\treturn this._stateNumber;\r\n\t}\r\n\r\n\t/** Indicate that the recognizer has changed internal state that is\r\n\t * consistent with the ATN state passed in. This way we always know\r\n\t * where we are in the ATN as the parser goes along. The rule\r\n\t * context objects form a stack that lets us see the stack of\r\n\t * invoking rules. Combine this and we have complete ATN\r\n\t * configuration information.\r\n\t */\r\n\tset state(atnState: number) {\r\n//\t\tSystem.err.println(\"setState \"+atnState);\r\n\t\tthis._stateNumber = atnState;\r\n//\t\tif ( traceATNStates ) _ctx.trace(atnState);\r\n\t}\r\n\r\n\tpublic abstract readonly inputStream: IntStream | undefined;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.5829654-07:00\r\n\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\n/**\r\n * This class provides a default implementation of the {@link Vocabulary}\r\n * interface.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class VocabularyImpl implements Vocabulary {\r\n\t/**\r\n\t * Gets an empty {@link Vocabulary} instance.\r\n\t *\r\n\t * No literal or symbol names are assigned to token types, so\r\n\t * {@link #getDisplayName(int)} returns the numeric value for all tokens\r\n\t * except {@link Token#EOF}.\r\n\t */\r\n\t@NotNull\r\n\tpublic static readonly EMPTY_VOCABULARY: VocabularyImpl = new VocabularyImpl([], [], []);\r\n\r\n\t@NotNull\r\n\tprivate readonly literalNames: Array;\r\n\t@NotNull\r\n\tprivate readonly symbolicNames: Array;\r\n\t@NotNull\r\n\tprivate readonly displayNames: Array;\r\n\r\n\tprivate _maxTokenType: number;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link VocabularyImpl} from the specified\r\n\t * literal, symbolic, and display token names.\r\n\t *\r\n\t * @param literalNames The literal names assigned to tokens, or an empty array\r\n\t * if no literal names are assigned.\r\n\t * @param symbolicNames The symbolic names assigned to tokens, or\r\n\t * an empty array if no symbolic names are assigned.\r\n\t * @param displayNames The display names assigned to tokens, or an empty array\r\n\t * to use the values in `literalNames` and `symbolicNames` as\r\n\t * the source of display names, as described in\r\n\t * {@link #getDisplayName(int)}.\r\n\t *\r\n\t * @see #getLiteralName(int)\r\n\t * @see #getSymbolicName(int)\r\n\t * @see #getDisplayName(int)\r\n\t */\r\n\tconstructor(literalNames: Array, symbolicNames: Array, displayNames: Array) {\r\n\t\tthis.literalNames = literalNames;\r\n\t\tthis.symbolicNames = symbolicNames;\r\n\t\tthis.displayNames = displayNames;\r\n\t\t// See note here on -1 part: https://github.com/antlr/antlr4/pull/1146\r\n\t\tthis._maxTokenType =\r\n\t\t\tMath.max(this.displayNames.length,\r\n\t\t\t\tMath.max(this.literalNames.length, this.symbolicNames.length)) - 1;\r\n\t}\r\n\r\n\t@Override\r\n\tget maxTokenType(): number {\r\n\t\treturn this._maxTokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getLiteralName(tokenType: number): string | undefined {\r\n\t\tif (tokenType >= 0 && tokenType < this.literalNames.length) {\r\n\t\t\treturn this.literalNames[tokenType];\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getSymbolicName(tokenType: number): string | undefined {\r\n\t\tif (tokenType >= 0 && tokenType < this.symbolicNames.length) {\r\n\t\t\treturn this.symbolicNames[tokenType];\r\n\t\t}\r\n\r\n\t\tif (tokenType === Token.EOF) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic getDisplayName(tokenType: number): string {\r\n\t\tif (tokenType >= 0 && tokenType < this.displayNames.length) {\r\n\t\t\tlet displayName = this.displayNames[tokenType];\r\n\t\t\tif (displayName) {\r\n\t\t\t\treturn displayName;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet literalName = this.getLiteralName(tokenType);\r\n\t\tif (literalName) {\r\n\t\t\treturn literalName;\r\n\t\t}\r\n\r\n\t\tlet symbolicName = this.getSymbolicName(tokenType);\r\n\t\tif (symbolicName) {\r\n\t\t\treturn symbolicName;\r\n\t\t}\r\n\r\n\t\treturn String(tokenType);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.5097925-07:00\r\n\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNSimulator } from \"../atn/ATNSimulator\";\r\nimport { ATNState } from \"../atn/ATNState\";\r\nimport { DFA } from \"./DFA\";\r\nimport { DFAState } from \"./DFAState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { PredictionContext } from \"../atn/PredictionContext\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\n/** A DFA walker that knows how to dump them to serialized strings. */\r\nexport class DFASerializer {\r\n\t@NotNull\r\n\tprivate dfa: DFA;\r\n\t@NotNull\r\n\tprivate vocabulary: Vocabulary;\r\n\r\n\tpublic ruleNames?: string[];\r\n\r\n\tpublic atn?: ATN;\r\n\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@NotNull*/ vocabulary: Vocabulary);\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@Nullable*/ parser: Recognizer | undefined);\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@NotNull*/ vocabulary: Vocabulary, /*@Nullable*/ ruleNames: string[] | undefined, /*@Nullable*/ atn: ATN | undefined);\r\n\tconstructor(dfa: DFA, vocabulary: Vocabulary | Recognizer | undefined, ruleNames?: string[], atn?: ATN) {\r\n\t\tif (vocabulary instanceof Recognizer) {\r\n\t\t\truleNames = vocabulary.ruleNames;\r\n\t\t\tatn = vocabulary.atn;\r\n\t\t\tvocabulary = vocabulary.vocabulary;\r\n\t\t} else if (!vocabulary) {\r\n\t\t\tvocabulary = VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\t}\r\n\r\n\t\tthis.dfa = dfa;\r\n\t\tthis.vocabulary = vocabulary;\r\n\t\tthis.ruleNames = ruleNames;\r\n\t\tthis.atn = atn;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (!this.dfa.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\r\n\t\tif (this.dfa.states) {\r\n\t\t\tlet states: DFAState[] = new Array(...this.dfa.states.toArray());\r\n\t\t\tstates.sort((o1, o2) => o1.stateNumber - o2.stateNumber);\r\n\r\n\t\t\tfor (let s of states) {\r\n\t\t\t\tlet edges: Map = s.getEdgeMap();\r\n\t\t\t\tlet edgeKeys = [...edges.keys()].sort((a, b) => a - b);\r\n\t\t\t\tlet contextEdges: Map = s.getContextEdgeMap();\r\n\t\t\t\tlet contextEdgeKeys = [...contextEdges.keys()].sort((a, b) => a - b);\r\n\t\t\t\tfor (let entry of edgeKeys) {\r\n\t\t\t\t\tlet value = edges.get(entry);\r\n\t\t\t\t\tif ((value == null || value === ATNSimulator.ERROR) && !s.isContextSymbol(entry)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet contextSymbol: boolean = false;\r\n\t\t\t\t\tbuf += (this.getStateString(s)) + (\"-\") + (this.getEdgeLabel(entry)) + (\"->\");\r\n\t\t\t\t\tif (s.isContextSymbol(entry)) {\r\n\t\t\t\t\t\tbuf += (\"!\");\r\n\t\t\t\t\t\tcontextSymbol = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet t: DFAState | undefined = value;\r\n\t\t\t\t\tif (t && t.stateNumber !== ATNSimulator.ERROR.stateNumber) {\r\n\t\t\t\t\t\tbuf += (this.getStateString(t)) + (\"\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (contextSymbol) {\r\n\t\t\t\t\t\tbuf += (\"ctx\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (s.isContextSensitive) {\r\n\t\t\t\t\tfor (let entry of contextEdgeKeys) {\r\n\t\t\t\t\t\tbuf += (this.getStateString(s))\r\n\t\t\t\t\t\t\t+ (\"-\")\r\n\t\t\t\t\t\t\t+ (this.getContextLabel(entry))\r\n\t\t\t\t\t\t\t+ (\"->\")\r\n\t\t\t\t\t\t\t+ (this.getStateString(contextEdges.get(entry)!))\r\n\t\t\t\t\t\t\t+ (\"\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet output: string = buf;\r\n\t\tif (output.length === 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\t//return Utils.sortLinesInString(output);\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprotected getContextLabel(i: number): string {\r\n\t\tif (i === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\treturn \"ctx:EMPTY_FULL\";\r\n\t\t}\r\n\t\telse if (i === PredictionContext.EMPTY_LOCAL_STATE_KEY) {\r\n\t\t\treturn \"ctx:EMPTY_LOCAL\";\r\n\t\t}\r\n\r\n\t\tif (this.atn && i > 0 && i <= this.atn.states.length) {\r\n\t\t\tlet state: ATNState = this.atn.states[i];\r\n\t\t\tlet ruleIndex: number = state.ruleIndex;\r\n\t\t\tif (this.ruleNames && ruleIndex >= 0 && ruleIndex < this.ruleNames.length) {\r\n\t\t\t\treturn \"ctx:\" + String(i) + \"(\" + this.ruleNames[ruleIndex] + \")\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn \"ctx:\" + String(i);\r\n\t}\r\n\r\n\tprotected getEdgeLabel(i: number): string {\r\n\t\treturn this.vocabulary.getDisplayName(i);\r\n\t}\r\n\r\n\tpublic getStateString(s: DFAState): string {\r\n\t\tif (s === ATNSimulator.ERROR) {\r\n\t\t\treturn \"ERROR\";\r\n\t\t}\r\n\r\n\t\tlet n: number = s.stateNumber;\r\n\t\tlet stateStr: string = \"s\" + n;\r\n\t\tif (s.isAcceptState) {\r\n\t\t\tif (s.predicates) {\r\n\t\t\t\tstateStr = \":s\" + n + \"=>\" + s.predicates;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tstateStr = \":s\" + n + \"=>\" + s.prediction;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s.isContextSensitive) {\r\n\t\t\tstateStr += \"*\";\r\n\t\t\tfor (let config of s.configs) {\r\n\t\t\t\tif (config.reachesIntoOuterContext) {\r\n\t\t\t\t\tstateStr += \"*\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stateStr;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:39.2167238-07:00\r\n\r\nimport { DFA } from \"./DFA\";\r\nimport { DFASerializer } from \"./DFASerializer\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nexport class LexerDFASerializer extends DFASerializer {\r\n\tconstructor( @NotNull dfa: DFA) {\r\n\t\tsuper(dfa, VocabularyImpl.EMPTY_VOCABULARY);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tprotected getEdgeLabel(i: number): string {\r\n\t\treturn \"'\" + String.fromCodePoint(i) + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.7099201-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\nimport { StarLoopbackState } from \"./StarLoopbackState\";\r\n\r\nexport class StarLoopEntryState extends DecisionState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: StarLoopbackState;\r\n\r\n\t/**\r\n\t * Indicates whether this state can benefit from a precedence DFA during SLL\r\n\t * decision making.\r\n\t *\r\n\t * This is a computed property that is calculated during ATN deserialization\r\n\t * and stored for use in {@link ParserATNSimulator} and\r\n\t * {@link ParserInterpreter}.\r\n\t *\r\n\t * @see `DFA.isPrecedenceDfa`\r\n\t */\r\n\tpublic precedenceRuleDecision: boolean = false;\r\n\r\n\t/**\r\n\t * For precedence decisions, this set marks states *S* which have all\r\n\t * of the following characteristics:\r\n\t *\r\n\t * * One or more invocation sites of the current rule returns to\r\n\t * *S*.\r\n\t * * The closure from *S* includes the current decision without\r\n\t * passing through any rule invocations or stepping out of the current\r\n\t * rule.\r\n\t *\r\n\t * This field is not used when {@link #precedenceRuleDecision} is\r\n\t * `false`.\r\n\t */\r\n\tpublic precedenceLoopbackStates: BitSet = new BitSet();\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_LOOP_ENTRY;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.3567094-07:00\r\n\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNConfigSet } from \"../atn/ATNConfigSet\";\r\nimport { ATNState } from \"../atn/ATNState\";\r\nimport { ATNType } from \"../atn/ATNType\";\r\nimport { DecisionState } from \"../atn/DecisionState\";\r\nimport { DFASerializer } from \"./DFASerializer\";\r\nimport { DFAState } from \"./DFAState\";\r\nimport { LexerATNSimulator } from \"../atn/LexerATNSimulator\";\r\nimport { LexerDFASerializer } from \"./LexerDFASerializer\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { StarLoopEntryState } from \"../atn/StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"../atn/TokensStartState\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nexport class DFA {\r\n\t/**\r\n\t * A set of all states in the `DFA`.\r\n\t *\r\n\t * Note that this collection of states holds the DFA states for both SLL and LL prediction. Only the start state\r\n\t * needs to be differentiated for these cases, which is tracked by the `s0` and `s0full` fields.\r\n\t */\r\n\t@NotNull\r\n\tpublic readonly states: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\r\n\tpublic s0: DFAState | undefined;\r\n\r\n\tpublic s0full: DFAState | undefined;\r\n\r\n\tpublic readonly decision: number;\r\n\r\n\t/** From which ATN state did we create this DFA? */\r\n\t@NotNull\r\n\tpublic atnStartState: ATNState;\r\n\t/**\r\n\t * Note: this field is accessed as `atnStartState.atn` in other targets. The TypeScript target keeps a separate copy\r\n\t * to avoid a number of additional null/undefined checks each time the ATN is accessed.\r\n\t */\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tprivate nextStateNumber: number = 0;\r\n\r\n\t/**\r\n\t * `true` if this DFA is for a precedence decision; otherwise,\r\n\t * `false`. This is the backing field for {@link #isPrecedenceDfa}.\r\n\t */\r\n\tprivate precedenceDfa: boolean;\r\n\r\n\t/**\r\n\t * Constructs a `DFA` instance associated with a lexer mode.\r\n\t *\r\n\t * The start state for a `DFA` constructed with this constructor should be a `TokensStartState`, which is the start\r\n\t * state for a lexer mode. The prediction made by this DFA determines the lexer rule which matches the current\r\n\t * input.\r\n\t *\r\n\t * @param atnStartState The start state for the mode.\r\n\t */\r\n\tconstructor(atnStartState: TokensStartState);\r\n\t/**\r\n\t * Constructs a `DFA` instance associated with a decision.\r\n\t *\r\n\t * @param atnStartState The decision associated with this DFA.\r\n\t * @param decision The decision number.\r\n\t */\r\n\tconstructor(atnStartState: DecisionState, decision: number);\r\n\tconstructor(@NotNull atnStartState: ATNState, decision: number = 0) {\r\n\t\tif (!atnStartState.atn) {\r\n\t\t\tthrow new Error(\"The ATNState must be associated with an ATN\");\r\n\t\t}\r\n\r\n\t\tthis.atnStartState = atnStartState;\r\n\t\tthis.atn = atnStartState.atn;\r\n\t\tthis.decision = decision;\r\n\r\n\t\t// Precedence DFAs are associated with the special precedence decision created for left-recursive rules which\r\n\t\t// evaluate their alternatives using a precedence hierarchy. When such a decision is encountered, we mark this\r\n\t\t// DFA instance as a precedence DFA and initialize the initial states s0 and s0full to special DFAState\r\n\t\t// instances which use outgoing edges to link to the actual start state used for each precedence level.\r\n\t\tlet isPrecedenceDfa: boolean = false;\r\n\t\tif (atnStartState instanceof StarLoopEntryState) {\r\n\t\t\tif (atnStartState.precedenceRuleDecision) {\r\n\t\t\t\tisPrecedenceDfa = true;\r\n\t\t\t\tthis.s0 = new DFAState(new ATNConfigSet());\r\n\t\t\t\tthis.s0full = new DFAState(new ATNConfigSet());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.precedenceDfa = isPrecedenceDfa;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether this DFA is a precedence DFA. Precedence DFAs use a special\r\n\t * start state {@link #s0} which is not stored in {@link #states}. The\r\n\t * {@link DFAState#edges} array for this start state contains outgoing edges\r\n\t * supplying individual start states corresponding to specific precedence\r\n\t * values.\r\n\t *\r\n\t * @returns `true` if this is a precedence DFA; otherwise,\r\n\t * `false`.\r\n\t * @see Parser.precedence\r\n\t */\r\n\tget isPrecedenceDfa(): boolean {\r\n\t\treturn this.precedenceDfa;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the start state for a specific precedence value.\r\n\t *\r\n\t * @param precedence The current precedence.\r\n\t * @returns The start state corresponding to the specified precedence, or\r\n\t * `undefined` if no start state exists for the specified precedence.\r\n\t *\r\n\t * @ if this is not a precedence DFA.\r\n\t * @see `isPrecedenceDfa`\r\n\t */\r\n\tpublic getPrecedenceStartState(precedence: number, fullContext: boolean): DFAState | undefined {\r\n\t\tif (!this.isPrecedenceDfa) {\r\n\t\t\tthrow new Error(\"Only precedence DFAs may contain a precedence start state.\");\r\n\t\t}\r\n\r\n\t\t// s0 and s0full are never null for a precedence DFA\r\n\t\tif (fullContext) {\r\n\t\t\treturn (this.s0full as DFAState).getTarget(precedence);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn (this.s0 as DFAState).getTarget(precedence);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set the start state for a specific precedence value.\r\n\t *\r\n\t * @param precedence The current precedence.\r\n\t * @param startState The start state corresponding to the specified\r\n\t * precedence.\r\n\t *\r\n\t * @ if this is not a precedence DFA.\r\n\t * @see `isPrecedenceDfa`\r\n\t */\r\n\tpublic setPrecedenceStartState(precedence: number, fullContext: boolean, startState: DFAState): void {\r\n\t\tif (!this.isPrecedenceDfa) {\r\n\t\t\tthrow new Error(\"Only precedence DFAs may contain a precedence start state.\");\r\n\t\t}\r\n\r\n\t\tif (precedence < 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (fullContext) {\r\n\t\t\t// s0full is never null for a precedence DFA\r\n\t\t\t(this.s0full as DFAState).setTarget(precedence, startState);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// s0 is never null for a precedence DFA\r\n\t\t\t(this.s0 as DFAState).setTarget(precedence, startState);\r\n\t\t}\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\tif (this.isPrecedenceDfa) {\r\n\t\t\t// s0 and s0full are never null for a precedence DFA\r\n\t\t\treturn this.s0!.getEdgeMap().size === 0 && this.s0full!.getEdgeMap().size === 0;\r\n\t\t}\r\n\r\n\t\treturn this.s0 == null && this.s0full == null;\r\n\t}\r\n\r\n\tget isContextSensitive(): boolean {\r\n\t\tif (this.isPrecedenceDfa) {\r\n\t\t\t// s0full is never null for a precedence DFA\r\n\t\t\treturn (this.s0full as DFAState).getEdgeMap().size > 0;\r\n\t\t}\r\n\r\n\t\treturn this.s0full != null;\r\n\t}\r\n\r\n\tpublic addState(state: DFAState): DFAState {\r\n\t\tstate.stateNumber = this.nextStateNumber++;\r\n\t\treturn this.states.getOrAdd(state);\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(/*@NotNull*/ vocabulary: Vocabulary): string;\r\n\tpublic toString(/*@NotNull*/ vocabulary: Vocabulary, ruleNames: string[] | undefined): string;\r\n\tpublic toString(vocabulary?: Vocabulary, ruleNames?: string[]): string {\r\n\t\tif (!vocabulary) {\r\n\t\t\tvocabulary = VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\t}\r\n\r\n\t\tif (!this.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet serializer: DFASerializer;\r\n\t\tif (ruleNames) {\r\n\t\t\tserializer = new DFASerializer(this, vocabulary, ruleNames, this.atnStartState.atn);\r\n\t\t} else {\r\n\t\t\tserializer = new DFASerializer(this, vocabulary);\r\n\t\t}\r\n\r\n\t\treturn serializer.toString();\r\n\t}\r\n\r\n\tpublic toLexerString(): string {\r\n\t\tif (!this.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet serializer: DFASerializer = new LexerDFASerializer(this);\r\n\t\treturn serializer.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.8389930-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class BasicState extends ATNState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BASIC;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BasicState } from \"./BasicState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class InvalidState extends BasicState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.INVALID_TYPE;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.3060135-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull, Nullable } from \"../Decorators\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** A transition containing a set of values. */\r\nexport class SetTransition extends Transition {\r\n\t@NotNull\r\n\tpublic set: IntervalSet;\r\n\r\n\t// TODO (sam): should we really allow undefined here?\r\n\tconstructor(@NotNull target: ATNState, @Nullable set: IntervalSet) {\r\n\t\tsuper(target);\r\n\t\tif (set == null) {\r\n\t\t\tset = IntervalSet.of(Token.INVALID_TYPE);\r\n\t\t}\r\n\r\n\t\tthis.set = set;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.SET;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn this.set;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn this.set.contains(symbol);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn this.set.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.8483617-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull, Nullable } from \"../Decorators\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class NotSetTransition extends SetTransition {\r\n\tconstructor(@NotNull target: ATNState, @Nullable set: IntervalSet) {\r\n\t\tsuper(target, set);\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.NOT_SET;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= minVocabSymbol\r\n\t\t\t&& symbol <= maxVocabSymbol\r\n\t\t\t&& !super.matches(symbol, minVocabSymbol, maxVocabSymbol);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"~\" + super.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.7513856-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The last node in the ATN for a rule, unless that rule is the start symbol.\r\n * In that case, there is one transition to EOF. Later, we might encode\r\n * references to all calls to this rule to compute FOLLOW sets for\r\n * error handling.\r\n */\r\nexport class RuleStopState extends ATNState {\r\n\r\n\t@Override\r\n\tget nonStopStateNumber(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.RULE_STOP;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.8294453-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** */\r\nexport class RuleTransition extends Transition {\r\n\t/** Ptr to the rule definition object for this rule ref */\r\n\tpublic ruleIndex: number; // no Rule object at runtime\r\n\r\n\tpublic precedence: number;\r\n\r\n\t/** What node to begin computations following ref to rule */\r\n\t@NotNull\r\n\tpublic followState: ATNState;\r\n\r\n\tpublic tailCall: boolean = false;\r\n\tpublic optimizedTailCall: boolean = false;\r\n\r\n\tconstructor(@NotNull ruleStart: RuleStartState, ruleIndex: number, precedence: number, @NotNull followState: ATNState) {\r\n\t\tsuper(ruleStart);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.precedence = precedence;\r\n\t\tthis.followState = followState;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.RULE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.9456839-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class WildcardTransition extends Transition {\r\n\tconstructor(@NotNull target: ATNState) {\r\n\t\tsuper(target);\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.WILDCARD;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \".\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.4445360-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { WildcardTransition } from \"./WildcardTransition\";\r\n\r\nexport class LL1Analyzer {\r\n\t/** Special value added to the lookahead sets to indicate that we hit\r\n\t * a predicate during analysis if `seeThruPreds==false`.\r\n\t */\r\n\tpublic static readonly HIT_PRED: number = Token.INVALID_TYPE;\r\n\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tconstructor(@NotNull atn: ATN) { this.atn = atn; }\r\n\r\n\t/**\r\n\t * Calculates the SLL(1) expected lookahead set for each outgoing transition\r\n\t * of an {@link ATNState}. The returned array has one element for each\r\n\t * outgoing transition in `s`. If the closure from transition\r\n\t * *i* leads to a semantic predicate before matching a symbol, the\r\n\t * element at index *i* of the result will be `undefined`.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @returns the expected symbols for each outgoing transition of `s`.\r\n\t */\r\n\tpublic getDecisionLookahead(s: ATNState | undefined): Array | undefined {\r\n//\t\tSystem.out.println(\"LOOK(\"+s.stateNumber+\")\");\r\n\t\tif (s == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet look: Array = new Array(s.numberOfTransitions);\r\n\t\tfor (let alt = 0; alt < s.numberOfTransitions; alt++) {\r\n\t\t\tlet current: IntervalSet | undefined = new IntervalSet();\r\n\t\t\tlook[alt] = current;\r\n\t\t\tlet lookBusy: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tlet seeThruPreds: boolean = false; // fail to get lookahead upon pred\r\n\t\t\tthis._LOOK(s.transition(alt).target, undefined, PredictionContext.EMPTY_LOCAL,\r\n\t\t\t\tcurrent, lookBusy, new BitSet(), seeThruPreds, false);\r\n\t\t\t// Wipe out lookahead for this alternative if we found nothing\r\n\t\t\t// or we had a predicate when we !seeThruPreds\r\n\t\t\tif (current.size === 0 || current.contains(LL1Analyzer.HIT_PRED)) {\r\n\t\t\t\tcurrent = undefined;\r\n\t\t\t\tlook[alt] = current;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn look;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *\r\n\t * If `ctx` is `undefined` and the end of the rule containing\r\n\t * `s` is reached, {@link Token#EPSILON} is added to the result set.\r\n\t * If `ctx` is not `undefined` and the end of the outermost rule is\r\n\t * reached, {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @param ctx the complete parser context, or `undefined` if the context\r\n\t * should be ignored\r\n\t *\r\n\t * @returns The set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t */\r\n\t// @NotNull\r\n\tpublic LOOK(/*@NotNull*/ s: ATNState, /*@NotNull*/ ctx: PredictionContext): IntervalSet;\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *\r\n\t * If `ctx` is `undefined` and the end of the rule containing\r\n\t * `s` is reached, {@link Token#EPSILON} is added to the result set.\r\n\t * If `ctx` is not `PredictionContext#EMPTY_LOCAL` and the end of the outermost rule is\r\n\t * reached, {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @param stopState the ATN state to stop at. This can be a\r\n\t * {@link BlockEndState} to detect epsilon paths through a closure.\r\n\t * @param ctx the complete parser context, or `undefined` if the context\r\n\t * should be ignored\r\n\t *\r\n\t * @returns The set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t */\r\n\t// @NotNull\r\n\tpublic LOOK(/*@NotNull*/ s: ATNState, /*@NotNull*/ ctx: PredictionContext, stopState: ATNState | null): IntervalSet;\r\n\r\n\t@NotNull\r\n\tpublic LOOK(@NotNull s: ATNState, @NotNull ctx: PredictionContext, stopState?: ATNState | null): IntervalSet {\r\n\t\tif (stopState === undefined) {\r\n\t\t\tif (s.atn == null) {\r\n\t\t\t\tthrow new Error(\"Illegal state\");\r\n\t\t\t}\r\n\r\n\t\t\tstopState = s.atn.ruleToStopState[s.ruleIndex];\r\n\t\t} else if (stopState === null) {\r\n\t\t\t// This is an explicit request to pass undefined as the stopState to _LOOK. Used to distinguish an overload\r\n\t\t\t// from the method which simply omits the stopState parameter.\r\n\t\t\tstopState = undefined;\r\n\t\t}\r\n\r\n\t\tlet r: IntervalSet = new IntervalSet();\r\n\t\tlet seeThruPreds: boolean = true; // ignore preds; get all lookahead\r\n\t\tlet addEOF: boolean = true;\r\n\t\tthis._LOOK(s, stopState, ctx, r, new Array2DHashSet(), new BitSet(), seeThruPreds, addEOF);\r\n\t\treturn r;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *

\r\n\t * If `ctx` is {@link PredictionContext#EMPTY_LOCAL} and\r\n\t * `stopState` or the end of the rule containing `s` is reached,\r\n\t * {@link Token#EPSILON} is added to the result set. If `ctx` is not\r\n\t * {@link PredictionContext#EMPTY_LOCAL} and `addEOF` is `true`\r\n\t * and `stopState` or the end of the outermost rule is reached,\r\n\t * {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state.\r\n\t * @param stopState the ATN state to stop at. This can be a\r\n\t * {@link BlockEndState} to detect epsilon paths through a closure.\r\n\t * @param ctx The outer context, or {@link PredictionContext#EMPTY_LOCAL} if\r\n\t * the outer context should not be used.\r\n\t * @param look The result lookahead set.\r\n\t * @param lookBusy A set used for preventing epsilon closures in the ATN\r\n\t * from causing a stack overflow. Outside code should pass\r\n\t * `new HashSet` for this argument.\r\n\t * @param calledRuleStack A set used for preventing left recursion in the\r\n\t * ATN from causing a stack overflow. Outside code should pass\r\n\t * `new BitSet()` for this argument.\r\n\t * @param seeThruPreds `true` to true semantic predicates as\r\n\t * implicitly `true` and \"see through them\", otherwise `false`\r\n\t * to treat semantic predicates as opaque and add {@link #HIT_PRED} to the\r\n\t * result if one is encountered.\r\n\t * @param addEOF Add {@link Token#EOF} to the result if the end of the\r\n\t * outermost context is reached. This parameter has no effect if `ctx`\r\n\t * is {@link PredictionContext#EMPTY_LOCAL}.\r\n\t */\r\n\tprotected _LOOK(\r\n\t\t@NotNull s: ATNState,\r\n\t\tstopState: ATNState | undefined,\r\n\t\t@NotNull ctx: PredictionContext,\r\n\t\t@NotNull look: IntervalSet,\r\n\t\t@NotNull lookBusy: Array2DHashSet,\r\n\t\t@NotNull calledRuleStack: BitSet,\r\n\t\tseeThruPreds: boolean,\r\n\t\taddEOF: boolean): void {\r\n//\t\tSystem.out.println(\"_LOOK(\"+s.stateNumber+\", ctx=\"+ctx);\r\n\t\tlet c: ATNConfig = ATNConfig.create(s, 0, ctx);\r\n\t\tif (!lookBusy.add(c)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (s === stopState) {\r\n\t\t\tif (PredictionContext.isEmptyLocal(ctx)) {\r\n\t\t\t\tlook.add(Token.EPSILON);\r\n\t\t\t\treturn;\r\n\t\t\t} else if (ctx.isEmpty) {\r\n\t\t\t\tif (addEOF) {\r\n\t\t\t\t\tlook.add(Token.EOF);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s instanceof RuleStopState) {\r\n\t\t\tif (ctx.isEmpty && !PredictionContext.isEmptyLocal(ctx)) {\r\n\t\t\t\tif (addEOF) {\r\n\t\t\t\t\tlook.add(Token.EOF);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet removed: boolean = calledRuleStack.get(s.ruleIndex);\r\n\t\t\ttry {\r\n\t\t\t\tcalledRuleStack.clear(s.ruleIndex);\r\n\t\t\t\tfor (let i = 0; i < ctx.size; i++) {\r\n\t\t\t\t\tif (ctx.getReturnState(i) === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet returnState: ATNState = this.atn.states[ctx.getReturnState(i)];\r\n//\t\t\t\t\tSystem.out.println(\"popping back to \"+retState);\r\n\t\t\t\t\tthis._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfinally {\r\n\t\t\t\tif (removed) {\r\n\t\t\t\t\tcalledRuleStack.set(s.ruleIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet n: number = s.numberOfTransitions;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet t: Transition = s.transition(i);\r\n\t\t\tif (t instanceof RuleTransition) {\r\n\t\t\t\tif (calledRuleStack.get(t.ruleIndex)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newContext: PredictionContext = ctx.getChild(t.followState.stateNumber);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcalledRuleStack.set(t.ruleIndex);\r\n\t\t\t\t\tthis._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t\tfinally {\r\n\t\t\t\t\tcalledRuleStack.clear(t.ruleIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (t instanceof AbstractPredicateTransition) {\r\n\t\t\t\tif (seeThruPreds) {\r\n\t\t\t\t\tthis._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlook.add(LL1Analyzer.HIT_PRED);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (t.isEpsilon) {\r\n\t\t\t\tthis._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t}\r\n\t\t\telse if (t instanceof WildcardTransition) {\r\n\t\t\t\tlook.addAll(IntervalSet.of(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType));\r\n\t\t\t}\r\n\t\t\telse {\r\n//\t\t\t\tSystem.out.println(\"adding \"+ t);\r\n\t\t\t\tlet set: IntervalSet | undefined = t.label;\r\n\t\t\t\tif (set != null) {\r\n\t\t\t\t\tif (t instanceof NotSetTransition) {\r\n\t\t\t\t\t\tset = set.complement(IntervalSet.of(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlook.addAll(set);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.1063510-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNType } from \"./ATNType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { InvalidState } from \"./InvalidState\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LL1Analyzer } from \"./LL1Analyzer\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"./TokensStartState\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/** */\r\nexport class ATN {\r\n\t@NotNull\r\n\tpublic readonly states: ATNState[] = [];\r\n\r\n\t/** Each subrule/rule is a decision point and we must track them so we\r\n\t * can go back later and build DFA predictors for them. This includes\r\n\t * all the rules, subrules, optional blocks, ()+, ()* etc...\r\n\t */\r\n\t@NotNull\r\n\tpublic decisionToState: DecisionState[] = [];\r\n\r\n\t/**\r\n\t * Maps from rule index to starting state number.\r\n\t */\r\n\tpublic ruleToStartState!: RuleStartState[];\r\n\r\n\t/**\r\n\t * Maps from rule index to stop state number.\r\n\t */\r\n\tpublic ruleToStopState!: RuleStopState[];\r\n\r\n\t@NotNull\r\n\tpublic modeNameToStartState: Map =\r\n\t\tnew Map();\r\n\r\n\t/**\r\n\t * The type of the ATN.\r\n\t */\r\n\tpublic grammarType: ATNType;\r\n\r\n\t/**\r\n\t * The maximum value for any symbol recognized by a transition in the ATN.\r\n\t */\r\n\tpublic maxTokenType: number;\r\n\r\n\t/**\r\n\t * For lexer ATNs, this maps the rule index to the resulting token type.\r\n\t * For parser ATNs, this maps the rule index to the generated bypass token\r\n\t * type if the\r\n\t * {@link ATNDeserializationOptions#isGenerateRuleBypassTransitions}\r\n\t * deserialization option was specified; otherwise, this is `undefined`.\r\n\t */\r\n\tpublic ruleToTokenType!: Int32Array;\r\n\r\n\t/**\r\n\t * For lexer ATNs, this is an array of {@link LexerAction} objects which may\r\n\t * be referenced by action transitions in the ATN.\r\n\t */\r\n\tpublic lexerActions!: LexerAction[];\r\n\r\n\t@NotNull\r\n\tpublic modeToStartState: TokensStartState[] = [];\r\n\r\n\tprivate contextCache: Array2DHashMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\r\n\t@NotNull\r\n\tpublic decisionToDFA: DFA[] = [];\r\n\t@NotNull\r\n\tpublic modeToDFA: DFA[] = [];\r\n\r\n\tpublic LL1Table: Map = new Map();\r\n\r\n\t/** Used for runtime deserialization of ATNs from strings */\r\n\tconstructor(@NotNull grammarType: ATNType, maxTokenType: number) {\r\n\t\tthis.grammarType = grammarType;\r\n\t\tthis.maxTokenType = maxTokenType;\r\n\t}\r\n\r\n\tpublic clearDFA(): void {\r\n\t\tthis.decisionToDFA = new Array(this.decisionToState.length);\r\n\t\tfor (let i = 0; i < this.decisionToDFA.length; i++) {\r\n\t\t\tthis.decisionToDFA[i] = new DFA(this.decisionToState[i], i);\r\n\t\t}\r\n\r\n\t\tthis.modeToDFA = new Array(this.modeToStartState.length);\r\n\t\tfor (let i = 0; i < this.modeToDFA.length; i++) {\r\n\t\t\tthis.modeToDFA[i] = new DFA(this.modeToStartState[i]);\r\n\t\t}\r\n\r\n\t\tthis.contextCache.clear();\r\n\t\tthis.LL1Table.clear();\r\n\t}\r\n\r\n\tget contextCacheSize(): number {\r\n\t\treturn this.contextCache.size;\r\n\t}\r\n\r\n\tpublic getCachedContext(context: PredictionContext): PredictionContext {\r\n\t\treturn PredictionContext.getCachedContext(context, this.contextCache, new PredictionContext.IdentityHashMap());\r\n\t}\r\n\r\n\tpublic getDecisionToDFA(): DFA[] {\r\n\t\tassert(this.decisionToDFA != null && this.decisionToDFA.length === this.decisionToState.length);\r\n\t\treturn this.decisionToDFA;\r\n\t}\r\n\r\n\t/** Compute the set of valid tokens that can occur starting in state `s`.\r\n\t * If `ctx` is {@link PredictionContext#EMPTY_LOCAL}, the set of tokens will not include what can follow\r\n\t * the rule surrounding `s`. In other words, the set will be\r\n\t * restricted to tokens reachable staying within `s`'s rule.\r\n\t */\r\n\t// @NotNull\r\n\tpublic nextTokens(s: ATNState, /*@NotNull*/ ctx: PredictionContext): IntervalSet;\r\n\r\n\t/**\r\n\t * Compute the set of valid tokens that can occur starting in `s` and\r\n\t * staying in same rule. {@link Token#EPSILON} is in set if we reach end of\r\n\t * rule.\r\n\t */\r\n\t// @NotNull\r\n\tpublic nextTokens(/*@NotNull*/ s: ATNState): IntervalSet;\r\n\r\n\t@NotNull\r\n\tpublic nextTokens(s: ATNState, ctx?: PredictionContext): IntervalSet {\r\n\t\tif (ctx) {\r\n\t\t\tlet anal: LL1Analyzer = new LL1Analyzer(this);\r\n\t\t\tlet next: IntervalSet = anal.LOOK(s, ctx);\r\n\t\t\treturn next;\r\n\t\t} else {\r\n\t\t\tif (s.nextTokenWithinRule) {\r\n\t\t\t\treturn s.nextTokenWithinRule;\r\n\t\t\t}\r\n\r\n\t\t\ts.nextTokenWithinRule = this.nextTokens(s, PredictionContext.EMPTY_LOCAL);\r\n\t\t\ts.nextTokenWithinRule.setReadonly(true);\r\n\t\t\treturn s.nextTokenWithinRule;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic addState(state: ATNState): void {\r\n\t\tstate.atn = this;\r\n\t\tstate.stateNumber = this.states.length;\r\n\t\tthis.states.push(state);\r\n\t}\r\n\r\n\tpublic removeState(@NotNull state: ATNState): void {\r\n\t\t// just replace the state, don't shift states in list\r\n\t\tlet invalidState = new InvalidState();\r\n\t\tinvalidState.atn = this;\r\n\t\tinvalidState.stateNumber = state.stateNumber;\r\n\t\tthis.states[state.stateNumber] = invalidState;\r\n\t}\r\n\r\n\tpublic defineMode(@NotNull name: string, @NotNull s: TokensStartState): void {\r\n\t\tthis.modeNameToStartState.set(name, s);\r\n\t\tthis.modeToStartState.push(s);\r\n\t\tthis.modeToDFA.push(new DFA(s));\r\n\t\tthis.defineDecisionState(s);\r\n\t}\r\n\r\n\tpublic defineDecisionState(@NotNull s: DecisionState): number {\r\n\t\tthis.decisionToState.push(s);\r\n\t\ts.decision = this.decisionToState.length - 1;\r\n\t\tthis.decisionToDFA.push(new DFA(s, s.decision));\r\n\t\treturn s.decision;\r\n\t}\r\n\r\n\tpublic getDecisionState(decision: number): DecisionState | undefined {\r\n\t\tif (this.decisionToState.length > 0) {\r\n\t\t\treturn this.decisionToState[decision];\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tget numberOfDecisions(): number {\r\n\t\treturn this.decisionToState.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of input symbols which could follow ATN state number\r\n\t * `stateNumber` in the specified full `context`. This method\r\n\t * considers the complete parser context, but does not evaluate semantic\r\n\t * predicates (i.e. all predicates encountered during the calculation are\r\n\t * assumed true). If a path in the ATN exists from the starting state to the\r\n\t * {@link RuleStopState} of the outermost context without matching any\r\n\t * symbols, {@link Token#EOF} is added to the returned set.\r\n\t *\r\n\t * If `context` is `undefined`, it is treated as\r\n\t * {@link ParserRuleContext#EMPTY}.\r\n\t *\r\n\t * Note that this does NOT give you the set of all tokens that could\r\n\t * appear at a given token position in the input phrase. In other words, it\r\n\t * does not answer:\r\n\t *\r\n\t * > Given a specific partial input phrase, return the set of all\r\n\t * > tokens that can follow the last token in the input phrase.\r\n\t *\r\n\t * The big difference is that with just the input, the parser could land\r\n\t * right in the middle of a lookahead decision. Getting all\r\n\t * *possible* tokens given a partial input stream is a separate\r\n\t * computation. See https://github.com/antlr/antlr4/issues/1428\r\n\t *\r\n\t * For this function, we are specifying an ATN state and call stack to\r\n\t * compute what token(s) can come next and specifically: outside of a\r\n\t * lookahead decision. That is what you want for error reporting and\r\n\t * recovery upon parse error.\r\n\t *\r\n\t * @param stateNumber the ATN state number\r\n\t * @param context the full parse context\r\n\t * @returns The set of potentially valid input symbols which could follow the\r\n\t * specified state in the specified context.\r\n\t * @ if the ATN does not contain a state with\r\n\t * number `stateNumber`\r\n\t */\r\n\t@NotNull\r\n\tpublic getExpectedTokens(stateNumber: number, context: RuleContext | undefined): IntervalSet {\r\n\t\tif (stateNumber < 0 || stateNumber >= this.states.length) {\r\n\t\t\tthrow new RangeError(\"Invalid state number.\");\r\n\t\t}\r\n\r\n\t\tlet ctx: RuleContext | undefined = context;\r\n\t\tlet s: ATNState = this.states[stateNumber];\r\n\t\tlet following: IntervalSet = this.nextTokens(s);\r\n\t\tif (!following.contains(Token.EPSILON)) {\r\n\t\t\treturn following;\r\n\t\t}\r\n\r\n\t\tlet expected: IntervalSet = new IntervalSet();\r\n\t\texpected.addAll(following);\r\n\t\texpected.remove(Token.EPSILON);\r\n\t\twhile (ctx != null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\r\n\t\t\tlet invokingState: ATNState = this.states[ctx.invokingState];\r\n\t\t\tlet rt: RuleTransition = invokingState.transition(0) as RuleTransition;\r\n\t\t\tfollowing = this.nextTokens(rt.followState);\r\n\t\t\texpected.addAll(following);\r\n\t\t\texpected.remove(Token.EPSILON);\r\n\t\t\tctx = ctx._parent;\r\n\t\t}\r\n\r\n\t\tif (following.contains(Token.EPSILON)) {\r\n\t\t\texpected.add(Token.EOF);\r\n\t\t}\r\n\r\n\t\treturn expected;\r\n\t}\r\n}\r\n\r\nexport namespace ATN {\r\n\texport const INVALID_ALT_NUMBER: number = 0;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.7613038-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * This implementation of {@link LexerAction} is used for tracking input offsets\r\n * for position-dependent actions within a {@link LexerActionExecutor}.\r\n *\r\n * This action is not serialized as part of the ATN, and is only required for\r\n * position-dependent lexer actions which appear at a location other than the\r\n * end of a rule. For more information about DFA optimizations employed for\r\n * lexer actions, see {@link LexerActionExecutor#append} and\r\n * {@link LexerActionExecutor#fixOffsetBeforeMatch}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerIndexedCustomAction implements LexerAction {\r\n\tprivate readonly _offset: number;\r\n\tprivate readonly _action: LexerAction;\r\n\r\n\t/**\r\n\t * Constructs a new indexed custom action by associating a character offset\r\n\t * with a {@link LexerAction}.\r\n\t *\r\n\t * Note: This class is only required for lexer actions for which\r\n\t * {@link LexerAction#isPositionDependent} returns `true`.\r\n\t *\r\n\t * @param offset The offset into the input {@link CharStream}, relative to\r\n\t * the token start index, at which the specified lexer action should be\r\n\t * executed.\r\n\t * @param action The lexer action to execute at a particular offset in the\r\n\t * input {@link CharStream}.\r\n\t */\r\n\tconstructor(offset: number, @NotNull action: LexerAction) {\r\n\t\tthis._offset = offset;\r\n\t\tthis._action = action;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the location in the input {@link CharStream} at which the lexer\r\n\t * action should be executed. The value is interpreted as an offset relative\r\n\t * to the token start index.\r\n\t *\r\n\t * @returns The location in the input {@link CharStream} at which the lexer\r\n\t * action should be executed.\r\n\t */\r\n\tget offset(): number {\r\n\t\treturn this._offset;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the lexer action to execute.\r\n\t *\r\n\t * @returns A {@link LexerAction} object which executes the lexer action.\r\n\t */\r\n\t@NotNull\r\n\tget action(): LexerAction {\r\n\t\treturn this._action;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * @returns This method returns the result of calling {@link #getActionType}\r\n\t * on the {@link LexerAction} returned by {@link #getAction}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn this._action.actionType;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `true`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This method calls {@link #execute} on the result of {@link #getAction}\r\n\t * using the provided `lexer`.\r\n\t */\r\n\t@Override\r\n\tpublic execute(lexer: Lexer): void {\r\n\t\t// assume the input stream position was properly set by the calling code\r\n\t\tthis._action.execute(lexer);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this._offset);\r\n\t\thash = MurmurHash.update(hash, this._action);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerIndexedCustomAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._offset === obj._offset\r\n\t\t\t&& this._action.equals(obj._action);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.8810453-07:00\r\n\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { CharStream } from \"../CharStream\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerIndexedCustomAction } from \"./LexerIndexedCustomAction\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Represents an executor for a sequence of lexer actions which traversed during\r\n * the matching operation of a lexer rule (token).\r\n *\r\n * The executor tracks position information for position-dependent lexer actions\r\n * efficiently, ensuring that actions appearing only at the end of the rule do\r\n * not cause bloating of the {@link DFA} created for the lexer.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerActionExecutor {\r\n\t@NotNull\r\n\tprivate _lexerActions: LexerAction[];\r\n\r\n\t/**\r\n\t * Caches the result of {@link #hashCode} since the hash code is an element\r\n\t * of the performance-critical {@link LexerATNConfig#hashCode} operation.\r\n\t */\r\n\tprivate cachedHashCode: number;\r\n\r\n\t/**\r\n\t * Constructs an executor for a sequence of {@link LexerAction} actions.\r\n\t * @param lexerActions The lexer actions to execute.\r\n\t */\r\n\tconstructor(@NotNull lexerActions: LexerAction[]) {\r\n\t\tthis._lexerActions = lexerActions;\r\n\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let lexerAction of lexerActions) {\r\n\t\t\thash = MurmurHash.update(hash, lexerAction);\r\n\t\t}\r\n\r\n\t\tthis.cachedHashCode = MurmurHash.finish(hash, lexerActions.length);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a {@link LexerActionExecutor} which executes the actions for\r\n\t * the input `lexerActionExecutor` followed by a specified\r\n\t * `lexerAction`.\r\n\t *\r\n\t * @param lexerActionExecutor The executor for actions already traversed by\r\n\t * the lexer while matching a token within a particular\r\n\t * {@link ATNConfig}. If this is `undefined`, the method behaves as though\r\n\t * it were an empty executor.\r\n\t * @param lexerAction The lexer action to execute after the actions\r\n\t * specified in `lexerActionExecutor`.\r\n\t *\r\n\t * @returns A {@link LexerActionExecutor} for executing the combine actions\r\n\t * of `lexerActionExecutor` and `lexerAction`.\r\n\t */\r\n\t@NotNull\r\n\tpublic static append(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull lexerAction: LexerAction): LexerActionExecutor {\r\n\t\tif (!lexerActionExecutor) {\r\n\t\t\treturn new LexerActionExecutor([lexerAction]);\r\n\t\t}\r\n\r\n\t\tlet lexerActions = lexerActionExecutor._lexerActions.slice(0);\r\n\t\tlexerActions.push(lexerAction);\r\n\t\treturn new LexerActionExecutor(lexerActions);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a {@link LexerActionExecutor} which encodes the current offset\r\n\t * for position-dependent lexer actions.\r\n\t *\r\n\t * Normally, when the executor encounters lexer actions where\r\n\t * {@link LexerAction#isPositionDependent} returns `true`, it calls\r\n\t * {@link IntStream#seek} on the input {@link CharStream} to set the input\r\n\t * position to the *end* of the current token. This behavior provides\r\n\t * for efficient DFA representation of lexer actions which appear at the end\r\n\t * of a lexer rule, even when the lexer rule matches a variable number of\r\n\t * characters.\r\n\t *\r\n\t * Prior to traversing a match transition in the ATN, the current offset\r\n\t * from the token start index is assigned to all position-dependent lexer\r\n\t * actions which have not already been assigned a fixed offset. By storing\r\n\t * the offsets relative to the token start index, the DFA representation of\r\n\t * lexer actions which appear in the middle of tokens remains efficient due\r\n\t * to sharing among tokens of the same length, regardless of their absolute\r\n\t * position in the input stream.\r\n\t *\r\n\t * If the current executor already has offsets assigned to all\r\n\t * position-dependent lexer actions, the method returns `this`.\r\n\t *\r\n\t * @param offset The current offset to assign to all position-dependent\r\n\t * lexer actions which do not already have offsets assigned.\r\n\t *\r\n\t * @returns A {@link LexerActionExecutor} which stores input stream offsets\r\n\t * for all position-dependent lexer actions.\r\n\t */\r\n\tpublic fixOffsetBeforeMatch(offset: number): LexerActionExecutor {\r\n\t\tlet updatedLexerActions: LexerAction[] | undefined;\r\n\t\tfor (let i = 0; i < this._lexerActions.length; i++) {\r\n\t\t\tif (this._lexerActions[i].isPositionDependent && !(this._lexerActions[i] instanceof LexerIndexedCustomAction)) {\r\n\t\t\t\tif (!updatedLexerActions) {\r\n\t\t\t\t\tupdatedLexerActions = this._lexerActions.slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset, this._lexerActions[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!updatedLexerActions) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\treturn new LexerActionExecutor(updatedLexerActions);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the lexer actions to be executed by this executor.\r\n\t * @returns The lexer actions to be executed by this executor.\r\n\t */\r\n\t@NotNull\r\n\tget lexerActions(): LexerAction[] {\r\n\t\treturn this._lexerActions;\r\n\t}\r\n\r\n\t/**\r\n\t * Execute the actions encapsulated by this executor within the context of a\r\n\t * particular {@link Lexer}.\r\n\t *\r\n\t * This method calls {@link IntStream#seek} to set the position of the\r\n\t * `input` {@link CharStream} prior to calling\r\n\t * {@link LexerAction#execute} on a position-dependent action. Before the\r\n\t * method returns, the input position will be restored to the same position\r\n\t * it was in when the method was invoked.\r\n\t *\r\n\t * @param lexer The lexer instance.\r\n\t * @param input The input stream which is the source for the current token.\r\n\t * When this method is called, the current {@link IntStream#index} for\r\n\t * `input` should be the start of the following token, i.e. 1\r\n\t * character past the end of the current token.\r\n\t * @param startIndex The token start index. This value may be passed to\r\n\t * {@link IntStream#seek} to set the `input` position to the beginning\r\n\t * of the token.\r\n\t */\r\n\tpublic execute(@NotNull lexer: Lexer, input: CharStream, startIndex: number): void {\r\n\t\tlet requiresSeek: boolean = false;\r\n\t\tlet stopIndex: number = input.index;\r\n\t\ttry {\r\n\t\t\tfor (let lexerAction of this._lexerActions) {\r\n\t\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\r\n\t\t\t\t\tlet offset: number = lexerAction.offset;\r\n\t\t\t\t\tinput.seek(startIndex + offset);\r\n\t\t\t\t\tlexerAction = lexerAction.action;\r\n\t\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\r\n\t\t\t\t} else if (lexerAction.isPositionDependent) {\r\n\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t\trequiresSeek = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlexerAction.execute(lexer);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tif (requiresSeek) {\r\n\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.cachedHashCode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerActionExecutor)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.cachedHashCode === obj.cachedHashCode\r\n\t\t\t&& ArrayEqualityComparator.INSTANCE.equals(this._lexerActions, obj._lexerActions);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.0961136-07:00\r\n\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nexport class LexerNoViableAltException extends RecognitionException {\r\n\t//private static serialVersionUID: number = -730999203913001726L;\r\n\r\n\t/** Matching attempted at what input index? */\r\n\tprivate _startIndex: number;\r\n\r\n\t/** Which configurations did we try at input.index that couldn't match input.LA(1)? */\r\n\tprivate _deadEndConfigs?: ATNConfigSet;\r\n\r\n\tconstructor(\r\n\t\tlexer: Lexer | undefined,\r\n\t\t@NotNull input: CharStream,\r\n\t\tstartIndex: number,\r\n\t\tdeadEndConfigs: ATNConfigSet | undefined) {\r\n\t\tsuper(lexer, input);\r\n\t\tthis._startIndex = startIndex;\r\n\t\tthis._deadEndConfigs = deadEndConfigs;\r\n\t}\r\n\r\n\tget startIndex(): number {\r\n\t\treturn this._startIndex;\r\n\t}\r\n\r\n\tget deadEndConfigs(): ATNConfigSet | undefined {\r\n\t\treturn this._deadEndConfigs;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream {\r\n\t\treturn super.inputStream as CharStream;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet symbol = \"\";\r\n\t\tif (this._startIndex >= 0 && this._startIndex < this.inputStream.size) {\r\n\t\t\tsymbol = this.inputStream.getText(Interval.of(this._startIndex, this._startIndex));\r\n\t\t\tsymbol = Utils.escapeWhitespace(symbol, false);\r\n\t\t}\r\n\r\n\t\t// return String.format(Locale.getDefault(), \"%s('%s')\", LexerNoViableAltException.class.getSimpleName(), symbol);\r\n\t\treturn `LexerNoViableAltException('${symbol}')`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.9444556-07:00\r\n\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class OrderedATNConfigSet extends ATNConfigSet {\r\n\r\n\tconstructor();\r\n\tconstructor(set: ATNConfigSet, readonly: boolean);\r\n\tconstructor(set?: ATNConfigSet, readonly?: boolean) {\r\n\t\tif (set != null && readonly != null) {\r\n\t\t\tsuper(set, readonly);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clone(readonly: boolean): ATNConfigSet {\r\n\t\tlet copy: OrderedATNConfigSet = new OrderedATNConfigSet(this, readonly);\r\n\t\tif (!readonly && this.isReadOnly) {\r\n\t\t\tcopy.addAll(this);\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getKey(e: ATNConfig): { state: number, alt: number } {\r\n\t\t// This is a specially crafted key to ensure configurations are only merged if they are equal\r\n\t\treturn { state: 0, alt: e.hashCode() };\r\n\t}\r\n\r\n\t@Override\r\n\tprotected canMerge(left: ATNConfig, leftKey: { state: number, alt: number }, right: ATNConfig): boolean {\r\n\t\treturn left.equals(right);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.1083066-07:00\r\n\r\nimport { AcceptStateInfo } from \"../dfa/AcceptStateInfo\";\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { CharStream } from \"../CharStream\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntStream } from \"../IntStream\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerActionExecutor } from \"./LexerActionExecutor\";\r\nimport { LexerNoViableAltException } from \"../LexerNoViableAltException\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { OrderedATNConfigSet } from \"./OrderedATNConfigSet\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport * as assert from \"assert\";\r\n\r\n/** \"dup\" of ParserInterpreter */\r\nexport class LexerATNSimulator extends ATNSimulator {\r\n\tpublic optimize_tail_calls: boolean = true;\r\n\r\n\tprotected recog: Lexer | undefined;\r\n\r\n\t/** The current token's starting index into the character stream.\r\n\t * Shared across DFA to ATN simulation in case the ATN fails and the\r\n\t * DFA did not have a previous accept state. In this case, we use the\r\n\t * ATN-generated exception object.\r\n\t */\r\n\tprotected startIndex: number = -1;\r\n\r\n\t/** line number 1..n within the input */\r\n\tprivate _line: number = 1;\r\n\r\n\t/** The index of the character relative to the beginning of the line 0..n-1 */\r\n\tprivate _charPositionInLine: number = 0;\r\n\r\n\tprotected mode: number = Lexer.DEFAULT_MODE;\r\n\r\n\t/** Used during DFA/ATN exec to record the most recent accept configuration info */\r\n\t@NotNull\r\n\tprotected prevAccept: LexerATNSimulator.SimState = new LexerATNSimulator.SimState();\r\n\r\n\tconstructor(/*@NotNull*/ atn: ATN);\r\n\tconstructor(/*@NotNull*/ atn: ATN, recog: Lexer | undefined);\r\n\tconstructor(@NotNull atn: ATN, recog?: Lexer) {\r\n\t\tsuper(atn);\r\n\t\tthis.recog = recog;\r\n\t}\r\n\r\n\tpublic copyState(@NotNull simulator: LexerATNSimulator): void {\r\n\t\tthis._charPositionInLine = simulator.charPositionInLine;\r\n\t\tthis._line = simulator._line;\r\n\t\tthis.mode = simulator.mode;\r\n\t\tthis.startIndex = simulator.startIndex;\r\n\t}\r\n\r\n\tpublic match(@NotNull input: CharStream, mode: number): number {\r\n\t\tthis.mode = mode;\r\n\t\tlet mark: number = input.mark();\r\n\t\ttry {\r\n\t\t\tthis.startIndex = input.index;\r\n\t\t\tthis.prevAccept.reset();\r\n\t\t\tlet s0: DFAState | undefined = this.atn.modeToDFA[mode].s0;\r\n\t\t\tif (s0 == null) {\r\n\t\t\t\treturn this.matchATN(input);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.execATN(input, s0);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tinput.release(mark);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(): void {\r\n\t\tthis.prevAccept.reset();\r\n\t\tthis.startIndex = -1;\r\n\t\tthis._line = 1;\r\n\t\tthis._charPositionInLine = 0;\r\n\t\tthis.mode = Lexer.DEFAULT_MODE;\r\n\t}\r\n\r\n\tprotected matchATN(@NotNull input: CharStream): number {\r\n\t\tlet startState: ATNState = this.atn.modeToStartState[this.mode];\r\n\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`matchATN mode ${this.mode} start: ${startState}`);\r\n\t\t}\r\n\r\n\t\tlet old_mode: number = this.mode;\r\n\r\n\t\tlet s0_closure: ATNConfigSet = this.computeStartState(input, startState);\r\n\t\tlet suppressEdge: boolean = s0_closure.hasSemanticContext;\r\n\t\tif (suppressEdge) {\r\n\t\t\ts0_closure.hasSemanticContext = false;\r\n\t\t}\r\n\r\n\t\tlet next: DFAState = this.addDFAState(s0_closure);\r\n\t\tif (!suppressEdge) {\r\n\t\t\tlet dfa = this.atn.modeToDFA[this.mode];\r\n\t\t\tif (!dfa.s0) {\r\n\t\t\t\tdfa.s0 = next;\r\n\t\t\t} else {\r\n\t\t\t\tnext = dfa.s0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet predict: number = this.execATN(input, next);\r\n\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`DFA after matchATN: ${this.atn.modeToDFA[old_mode].toLexerString()}`);\r\n\t\t}\r\n\r\n\t\treturn predict;\r\n\t}\r\n\r\n\tprotected execATN(@NotNull input: CharStream, @NotNull ds0: DFAState): number {\r\n\t\t// console.log(\"enter exec index \"+input.index+\" from \"+ds0.configs);\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`start state closure=${ds0.configs}`);\r\n\t\t}\r\n\r\n\t\tif (ds0.isAcceptState) {\r\n\t\t\t// allow zero-length tokens\r\n\t\t\tthis.captureSimState(this.prevAccept, input, ds0);\r\n\t\t}\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\t\t// @NotNull\r\n\t\tlet s: DFAState = ds0; // s is current/from DFA state\r\n\r\n\t\twhile (true) { // while more work\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(`execATN loop starting closure: ${s.configs}`);\r\n\t\t\t}\r\n\r\n\t\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\r\n\t\t\t// avoid looking up the DFA state again, which is expensive.\r\n\t\t\t// If the previous target was already part of the DFA, we might\r\n\t\t\t// be able to avoid doing a reach operation upon t. If s!=null,\r\n\t\t\t// it means that semantic predicates didn't prevent us from\r\n\t\t\t// creating a DFA state. Once we know s!=null, we check to see if\r\n\t\t\t// the DFA state has an edge already for t. If so, we can just reuse\r\n\t\t\t// it's configuration set; there's no point in re-computing it.\r\n\t\t\t// This is kind of like doing DFA simulation within the ATN\r\n\t\t\t// simulation because DFA simulation is really just a way to avoid\r\n\t\t\t// computing reach/closure sets. Technically, once we know that\r\n\t\t\t// we have a previously added DFA state, we could jump over to\r\n\t\t\t// the DFA simulator. But, that would mean popping back and forth\r\n\t\t\t// a lot and making things more complicated algorithmically.\r\n\t\t\t// This optimization makes a lot of sense for loops within DFA.\r\n\t\t\t// A character will take us back to an existing DFA state\r\n\t\t\t// that already has lots of edges out of it. e.g., .* in comments.\r\n\t\t\tlet target: DFAState | undefined = this.getExistingTargetState(s, t);\r\n\t\t\tif (target == null) {\r\n\t\t\t\ttarget = this.computeTargetState(input, s, t);\r\n\t\t\t}\r\n\r\n\t\t\tif (target === ATNSimulator.ERROR) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a consumable input element, make sure to consume before\r\n\t\t\t// capturing the accept state so the input index, line, and char\r\n\t\t\t// position accurately reflect the state of the interpreter at the\r\n\t\t\t// end of the token.\r\n\t\t\tif (t !== IntStream.EOF) {\r\n\t\t\t\tthis.consume(input);\r\n\t\t\t}\r\n\r\n\t\t\tif (target.isAcceptState) {\r\n\t\t\t\tthis.captureSimState(this.prevAccept, input, target);\r\n\t\t\t\tif (t === IntStream.EOF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tt = input.LA(1);\r\n\t\t\ts = target; // flip; current DFA target becomes new src/from state\r\n\t\t}\r\n\r\n\t\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\r\n\t}\r\n\r\n\t/**\r\n\t * Get an existing target state for an edge in the DFA. If the target state\r\n\t * for the edge has not yet been computed or is otherwise not available,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t * @returns The existing target DFA state for the given input symbol\r\n\t * `t`, or `undefined` if the target state for this edge is not\r\n\t * already cached\r\n\t */\r\n\tprotected getExistingTargetState(@NotNull s: DFAState, t: number): DFAState | undefined {\r\n\t\tlet target: DFAState | undefined = s.getTarget(t);\r\n\t\tif (LexerATNSimulator.debug && target != null) {\r\n\t\t\tconsole.log(\"reuse state \" + s.stateNumber +\r\n\t\t\t\t\" edge to \" + target.stateNumber);\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute a target state for an edge in the DFA, and attempt to add the\r\n\t * computed state and corresponding edge to the DFA.\r\n\t *\r\n\t * @param input The input stream\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t *\r\n\t * @returns The computed target DFA state for the given input symbol\r\n\t * `t`. If `t` does not lead to a valid DFA state, this method\r\n\t * returns {@link #ERROR}.\r\n\t */\r\n\t@NotNull\r\n\tprotected computeTargetState(@NotNull input: CharStream, @NotNull s: DFAState, t: number): DFAState {\r\n\t\tlet reach: ATNConfigSet = new OrderedATNConfigSet();\r\n\r\n\t\t// if we don't find an existing DFA state\r\n\t\t// Fill reach starting from closure, following t transitions\r\n\t\tthis.getReachableConfigSet(input, s.configs, reach, t);\r\n\r\n\t\tif (reach.isEmpty) { // we got nowhere on t from s\r\n\t\t\tif (!reach.hasSemanticContext) {\r\n\t\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\r\n\t\t\t\t// cause a failover from DFA later.\r\n\t\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\r\n\t\t\t}\r\n\r\n\t\t\t// stop when we can't match any more char\r\n\t\t\treturn ATNSimulator.ERROR;\r\n\t\t}\r\n\r\n\t\t// Add an edge from s to target DFA found/created for reach\r\n\t\treturn this.addDFAEdge(s, t, reach);\r\n\t}\r\n\r\n\tprotected failOrAccept(\r\n\t\tprevAccept: LexerATNSimulator.SimState, input: CharStream,\r\n\t\treach: ATNConfigSet, t: number): number {\r\n\t\tif (prevAccept.dfaState != null) {\r\n\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = prevAccept.dfaState.lexerActionExecutor;\r\n\t\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\r\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.charPos);\r\n\t\t\treturn prevAccept.dfaState.prediction;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// if no accept and EOF is first char, return EOF\r\n\t\t\tif (t === IntStream.EOF && input.index === this.startIndex) {\r\n\t\t\t\treturn Token.EOF;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Given a starting configuration set, figure out all ATN configurations\r\n\t * we can reach upon input `t`. Parameter `reach` is a return\r\n\t * parameter.\r\n\t */\r\n\tprotected getReachableConfigSet(@NotNull input: CharStream, @NotNull closure: ATNConfigSet, @NotNull reach: ATNConfigSet, t: number): void {\r\n\t\t// this is used to skip processing for configs which have a lower priority\r\n\t\t// than a config that already reached an accept state for the same rule\r\n\t\tlet skipAlt: number = ATN.INVALID_ALT_NUMBER;\r\n\t\tfor (let c of closure) {\r\n\t\t\tlet currentAltReachedAcceptState: boolean = c.alt === skipAlt;\r\n\t\t\tif (currentAltReachedAcceptState && c.hasPassedThroughNonGreedyDecision) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(`testing ${this.getTokenName(t)} at ${c.toString(this.recog, true)}`);\r\n\t\t\t}\r\n\r\n\t\t\tlet n: number = c.state.numberOfOptimizedTransitions;\r\n\t\t\tfor (let ti = 0; ti < n; ti++) { // for each optimized transition\r\n\t\t\t\tlet trans: Transition = c.state.getOptimizedTransition(ti);\r\n\t\t\t\tlet target: ATNState | undefined = this.getReachableTarget(trans, t);\r\n\t\t\t\tif (target != null) {\r\n\t\t\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = c.lexerActionExecutor;\r\n\t\t\t\t\tlet config: ATNConfig;\r\n\t\t\t\t\tif (lexerActionExecutor != null) {\r\n\t\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\r\n\t\t\t\t\t\tconfig = c.transform(target, true, lexerActionExecutor);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tassert(c.lexerActionExecutor == null);\r\n\t\t\t\t\t\tconfig = c.transform(target, true);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet treatEofAsEpsilon: boolean = t === IntStream.EOF;\r\n\t\t\t\t\tif (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) {\r\n\t\t\t\t\t\t// any remaining configs for this alt have a lower priority than\r\n\t\t\t\t\t\t// the one that just reached an accept state.\r\n\t\t\t\t\t\tskipAlt = c.alt;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected accept(\r\n\t\t@NotNull input: CharStream, lexerActionExecutor: LexerActionExecutor | undefined,\r\n\t\tstartIndex: number, index: number, line: number, charPos: number): void {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`ACTION ${lexerActionExecutor}`);\r\n\t\t}\r\n\r\n\t\t// seek to after last char in token\r\n\t\tinput.seek(index);\r\n\t\tthis._line = line;\r\n\t\tthis._charPositionInLine = charPos;\r\n\r\n\t\tif (lexerActionExecutor != null && this.recog != null) {\r\n\t\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getReachableTarget(trans: Transition, t: number): ATNState | undefined {\r\n\t\tif (trans.matches(t, Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE)) {\r\n\t\t\treturn trans.target;\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected computeStartState(\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull p: ATNState): ATNConfigSet {\r\n\t\tlet initialContext: PredictionContext = PredictionContext.EMPTY_FULL;\r\n\t\tlet configs: ATNConfigSet = new OrderedATNConfigSet();\r\n\t\tfor (let i = 0; i < p.numberOfTransitions; i++) {\r\n\t\t\tlet target: ATNState = p.transition(i).target;\r\n\t\t\tlet c: ATNConfig = ATNConfig.create(target, i + 1, initialContext);\r\n\t\t\tthis.closure(input, c, configs, false, false, false);\r\n\t\t}\r\n\t\treturn configs;\r\n\t}\r\n\r\n\t/**\r\n\t * Since the alternatives within any lexer decision are ordered by\r\n\t * preference, this method stops pursuing the closure as soon as an accept\r\n\t * state is reached. After the first accept state is reached by depth-first\r\n\t * search from `config`, all other (potentially reachable) states for\r\n\t * this rule would have a lower priority.\r\n\t *\r\n\t * @returns `true` if an accept state is reached, otherwise\r\n\t * `false`.\r\n\t */\r\n\tprotected closure(@NotNull input: CharStream, @NotNull config: ATNConfig, @NotNull configs: ATNConfigSet, currentAltReachedAcceptState: boolean, speculative: boolean, treatEofAsEpsilon: boolean): boolean {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\r\n\t\t}\r\n\r\n\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tif (this.recog != null) {\r\n\t\t\t\t\tconsole.log(`closure at ${this.recog.ruleNames[config.state.ruleIndex]} rule stop ${config}`);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log(`closure at rule stop ${config}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet context: PredictionContext = config.context;\r\n\t\t\tif (context.isEmpty) {\r\n\t\t\t\tconfigs.add(config);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse if (context.hasEmpty) {\r\n\t\t\t\tconfigs.add(config.transform(config.state, true, PredictionContext.EMPTY_FULL));\r\n\t\t\t\tcurrentAltReachedAcceptState = true;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < context.size; i++) {\r\n\t\t\t\tlet returnStateNumber: number = context.getReturnState(i);\r\n\t\t\t\tif (returnStateNumber === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newContext: PredictionContext = context.getParent(i); // \"pop\" return state\r\n\t\t\t\tlet returnState: ATNState = this.atn.states[returnStateNumber];\r\n\t\t\t\tlet c: ATNConfig = config.transform(returnState, false, newContext);\r\n\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentAltReachedAcceptState;\r\n\t\t}\r\n\r\n\t\t// optimization\r\n\t\tif (!config.state.onlyHasEpsilonTransitions) {\r\n\t\t\tif (!currentAltReachedAcceptState || !config.hasPassedThroughNonGreedyDecision) {\r\n\t\t\t\tconfigs.add(config);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet p: ATNState = config.state;\r\n\t\tfor (let i = 0; i < p.numberOfOptimizedTransitions; i++) {\r\n\t\t\tlet t: Transition = p.getOptimizedTransition(i);\r\n\t\t\tlet c: ATNConfig | undefined = this.getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon);\r\n\t\t\tif (c != null) {\r\n\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn currentAltReachedAcceptState;\r\n\t}\r\n\r\n\t// side-effect: can alter configs.hasSemanticContext\r\n\tprotected getEpsilonTarget(\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull t: Transition,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tspeculative: boolean,\r\n\t\ttreatEofAsEpsilon: boolean): ATNConfig | undefined {\r\n\t\tlet c: ATNConfig | undefined;\r\n\r\n\t\tswitch (t.serializationType) {\r\n\t\tcase TransitionType.RULE:\r\n\t\t\tlet ruleTransition: RuleTransition = t as RuleTransition;\r\n\t\t\tif (this.optimize_tail_calls && ruleTransition.optimizedTailCall && !config.context.hasEmpty) {\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet newContext: PredictionContext = config.context.getChild(ruleTransition.followState.stateNumber);\r\n\t\t\t\tc = config.transform(t.target, true, newContext);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\tthrow new Error(\"Precedence predicates are not supported in lexers.\");\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\t/* Track traversing semantic predicates. If we traverse,\r\n\t\t\t\twe cannot add a DFA state for this \"reach\" computation\r\n\t\t\t\tbecause the DFA would not test the predicate again in the\r\n\t\t\t\tfuture. Rather than creating collections of semantic predicates\r\n\t\t\t\tlike v3 and testing them on prediction, v4 will test them on the\r\n\t\t\t\tfly all the time using the ATN not the DFA. This is slower but\r\n\t\t\t\tsemantically it's not used that often. One of the key elements to\r\n\t\t\t\tthis predicate mechanism is not adding DFA states that see\r\n\t\t\t\tpredicates immediately afterwards in the ATN. For example,\r\n\r\n\t\t\t\ta : ID {p1}? | ID {p2}? ;\r\n\r\n\t\t\t\tshould create the start state for rule 'a' (to save start state\r\n\t\t\t\tcompetition), but should not create target of ID state. The\r\n\t\t\t\tcollection of ATN states the following ID references includes\r\n\t\t\t\tstates reached by traversing predicates. Since this is when we\r\n\t\t\t\ttest them, we cannot cash the DFA state target of ID.\r\n\t\t\t*/\r\n\t\t\tlet pt: PredicateTransition = t as PredicateTransition;\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"EVAL rule \" + pt.ruleIndex + \":\" + pt.predIndex);\r\n\t\t\t}\r\n\t\t\tconfigs.hasSemanticContext = true;\r\n\t\t\tif (this.evaluatePredicate(input, pt.ruleIndex, pt.predIndex, speculative)) {\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tc = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\tif (config.context.hasEmpty) {\r\n\t\t\t\t// execute actions anywhere in the start rule for a token.\r\n\t\t\t\t//\r\n\t\t\t\t// TODO: if the entry rule is invoked recursively, some\r\n\t\t\t\t// actions may be executed during the recursive call. The\r\n\t\t\t\t// problem can appear when hasEmpty is true but\r\n\t\t\t\t// isEmpty is false. In this case, the config needs to be\r\n\t\t\t\t// split into two contexts - one with just the empty path\r\n\t\t\t\t// and another with everything but the empty path.\r\n\t\t\t\t// Unfortunately, the current algorithm does not allow\r\n\t\t\t\t// getEpsilonTarget to return two configurations, so\r\n\t\t\t\t// additional modifications are needed before we can support\r\n\t\t\t\t// the split operation.\r\n\t\t\t\tlet lexerActionExecutor: LexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor, this.atn.lexerActions[(t as ActionTransition).actionIndex]);\r\n\t\t\t\tc = config.transform(t.target, true, lexerActionExecutor);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// ignore actions in referenced rules\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\tc = config.transform(t.target, true);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\t\tif (treatEofAsEpsilon) {\r\n\t\t\t\tif (t.matches(IntStream.EOF, Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE)) {\r\n\t\t\t\t\tc = config.transform(t.target, false);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tc = undefined;\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tc = undefined;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn c;\r\n\t}\r\n\r\n\t/**\r\n\t * Evaluate a predicate specified in the lexer.\r\n\t *\r\n\t * If `speculative` is `true`, this method was called before\r\n\t * {@link #consume} for the matched character. This method should call\r\n\t * {@link #consume} before evaluating the predicate to ensure position\r\n\t * sensitive values, including {@link Lexer#getText}, {@link Lexer#getLine},\r\n\t * and {@link Lexer#getCharPositionInLine}, properly reflect the current\r\n\t * lexer state. This method should restore `input` and the simulator\r\n\t * to the original state before returning (i.e. undo the actions made by the\r\n\t * call to {@link #consume}.\r\n\t *\r\n\t * @param input The input stream.\r\n\t * @param ruleIndex The rule containing the predicate.\r\n\t * @param predIndex The index of the predicate within the rule.\r\n\t * @param speculative `true` if the current index in `input` is\r\n\t * one character before the predicate's location.\r\n\t *\r\n\t * @returns `true` if the specified predicate evaluates to\r\n\t * `true`.\r\n\t */\r\n\tprotected evaluatePredicate(@NotNull input: CharStream, ruleIndex: number, predIndex: number, speculative: boolean): boolean {\r\n\t\t// assume true if no recognizer was provided\r\n\t\tif (this.recog == null) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!speculative) {\r\n\t\t\treturn this.recog.sempred(undefined, ruleIndex, predIndex);\r\n\t\t}\r\n\r\n\t\tlet savedCharPositionInLine: number = this._charPositionInLine;\r\n\t\tlet savedLine: number = this._line;\r\n\t\tlet index: number = input.index;\r\n\t\tlet marker: number = input.mark();\r\n\t\ttry {\r\n\t\t\tthis.consume(input);\r\n\t\t\treturn this.recog.sempred(undefined, ruleIndex, predIndex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis._charPositionInLine = savedCharPositionInLine;\r\n\t\t\tthis._line = savedLine;\r\n\t\t\tinput.seek(index);\r\n\t\t\tinput.release(marker);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected captureSimState(\r\n\t\t@NotNull settings: LexerATNSimulator.SimState,\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull dfaState: DFAState): void {\r\n\t\tsettings.index = input.index;\r\n\t\tsettings.line = this._line;\r\n\t\tsettings.charPos = this._charPositionInLine;\r\n\t\tsettings.dfaState = dfaState;\r\n\t}\r\n\r\n\t// @NotNull\r\n\tprotected addDFAEdge(/*@NotNull*/ p: DFAState, t: number, /*@NotNull*/ q: ATNConfigSet): DFAState;\r\n\tprotected addDFAEdge(/*@NotNull*/ p: DFAState, t: number, /*@NotNull*/ q: DFAState): void;\r\n\tprotected addDFAEdge(p: DFAState, t: number, q: ATNConfigSet | DFAState): DFAState | void {\r\n\t\tif (q instanceof ATNConfigSet) {\r\n\t\t\t/* leading to this call, ATNConfigSet.hasSemanticContext is used as a\r\n\t\t\t* marker indicating dynamic predicate evaluation makes this edge\r\n\t\t\t* dependent on the specific input sequence, so the static edge in the\r\n\t\t\t* DFA should be omitted. The target DFAState is still created since\r\n\t\t\t* execATN has the ability to resynchronize with the DFA state cache\r\n\t\t\t* following the predicate evaluation step.\r\n\t\t\t*\r\n\t\t\t* TJP notes: next time through the DFA, we see a pred again and eval.\r\n\t\t\t* If that gets us to a previously created (but dangling) DFA\r\n\t\t\t* state, we can continue in pure DFA mode from there.\r\n\t\t\t*/\r\n\t\t\tlet suppressEdge: boolean = q.hasSemanticContext;\r\n\t\t\tif (suppressEdge) {\r\n\t\t\t\tq.hasSemanticContext = false;\r\n\t\t\t}\r\n\r\n\t\t\t// @NotNull\r\n\t\t\tlet to: DFAState = this.addDFAState(q);\r\n\r\n\t\t\tif (suppressEdge) {\r\n\t\t\t\treturn to;\r\n\t\t\t}\r\n\r\n\t\t\tthis.addDFAEdge(p, t, to);\r\n\t\t\treturn to;\r\n\t\t} else {\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"EDGE \" + p + \" -> \" + q + \" upon \" + String.fromCharCode(t));\r\n\t\t\t}\r\n\r\n\t\t\tif (p != null) {\r\n\t\t\t\tp.setTarget(t, q);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** Add a new DFA state if there isn't one with this set of\r\n\t * \tconfigurations already. This method also detects the first\r\n\t * \tconfiguration containing an ATN rule stop state. Later, when\r\n\t * \ttraversing the DFA, we will know which rule to accept.\r\n\t */\r\n\t@NotNull\r\n\tprotected addDFAState(@NotNull configs: ATNConfigSet): DFAState {\r\n\t\t/* the lexer evaluates predicates on-the-fly; by this point configs\r\n\t\t * should not contain any configurations with unevaluated predicates.\r\n\t\t */\r\n\t\tassert(!configs.hasSemanticContext);\r\n\r\n\t\tlet proposed: DFAState = new DFAState(configs);\r\n\t\tlet existing: DFAState | undefined = this.atn.modeToDFA[this.mode].states.get(proposed);\r\n\t\tif (existing != null) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tconfigs.optimizeConfigs(this);\r\n\t\tlet newState: DFAState = new DFAState(configs.clone(true));\r\n\r\n\t\tlet firstConfigWithRuleStopState: ATNConfig | undefined;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\tfirstConfigWithRuleStopState = c;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (firstConfigWithRuleStopState != null) {\r\n\t\t\tlet prediction: number = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\r\n\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = firstConfigWithRuleStopState.lexerActionExecutor;\r\n\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(prediction, lexerActionExecutor);\r\n\t\t}\r\n\r\n\t\treturn this.atn.modeToDFA[this.mode].addState(newState);\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getDFA(mode: number): DFA {\r\n\t\treturn this.atn.modeToDFA[mode];\r\n\t}\r\n\r\n\t/** Get the text matched so far for the current token.\r\n\t */\r\n\t@NotNull\r\n\tpublic getText(@NotNull input: CharStream): string {\r\n\t\t// index is first lookahead char, don't include.\r\n\t\treturn input.getText(Interval.of(this.startIndex, input.index - 1));\r\n\t}\r\n\r\n\tget line(): number {\r\n\t\treturn this._line;\r\n\t}\r\n\r\n\tset line(line: number) {\r\n\t\tthis._line = line;\r\n\t}\r\n\r\n\tget charPositionInLine(): number {\r\n\t\treturn this._charPositionInLine;\r\n\t}\r\n\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis._charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\tpublic consume(@NotNull input: CharStream): void {\r\n\t\tlet curChar: number = input.LA(1);\r\n\t\tif (curChar === \"\\n\".charCodeAt(0)) {\r\n\t\t\tthis._line++;\r\n\t\t\tthis._charPositionInLine = 0;\r\n\t\t} else {\r\n\t\t\tthis._charPositionInLine++;\r\n\t\t}\r\n\t\tinput.consume();\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getTokenName(t: number): string {\r\n\t\tif (t === -1) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\t\t//if ( atn.g!=null ) return atn.g.getTokenDisplayName(t);\r\n\t\treturn \"'\" + String.fromCharCode(t) + \"'\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerATNSimulator {\r\n\texport const debug: boolean = false;\r\n\texport const dfa_debug: boolean = false;\r\n\r\n\t/** When we hit an accept state in either the DFA or the ATN, we\r\n\t * have to notify the character stream to start buffering characters\r\n\t * via {@link IntStream#mark} and record the current state. The current sim state\r\n\t * includes the current index into the input, the current line,\r\n\t * and current character position in that line. Note that the Lexer is\r\n\t * tracking the starting line and characterization of the token. These\r\n\t * variables track the \"state\" of the simulator when it hits an accept state.\r\n\t *\r\n\t * We track these variables separately for the DFA and ATN simulation\r\n\t * because the DFA simulation often has to fail over to the ATN\r\n\t * simulation. If the ATN simulation fails, we need the DFA to fall\r\n\t * back to its previously accepted state, if any. If the ATN succeeds,\r\n\t * then the ATN does the accept and the DFA simulator that invoked it\r\n\t * can simply return the predicted token type.\r\n\t */\r\n\texport class SimState {\r\n\t\tpublic index: number = -1;\r\n\t\tpublic line: number = 0;\r\n\t\tpublic charPos: number = -1;\r\n\t\tpublic dfaState?: DFAState;\r\n\r\n\t\tpublic reset(): void {\r\n\t\t\tthis.index = -1;\r\n\t\t\tthis.line = 0;\r\n\t\t\tthis.charPos = -1;\r\n\t\t\tthis.dfaState = undefined;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.7913318-07:00\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonTokenFactory } from \"./CommonTokenFactory\";\r\nimport { IntegerStack } from \"./misc/IntegerStack\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { LexerATNSimulator } from \"./atn/LexerATNSimulator\";\r\nimport { LexerNoViableAltException } from \"./LexerNoViableAltException\";\r\nimport { Override } from \"./Decorators\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/** A lexer is recognizer that draws input symbols from a character stream.\r\n * lexer grammars result in a subclass of this object. A Lexer object\r\n * uses simplified match() and error recovery mechanisms in the interest\r\n * of speed.\r\n */\r\nexport abstract class Lexer extends Recognizer\r\n\timplements TokenSource {\r\n\tpublic static readonly DEFAULT_MODE: number = 0;\r\n\tpublic static readonly MORE: number = -2;\r\n\tpublic static readonly SKIP: number = -3;\r\n\r\n\tstatic get DEFAULT_TOKEN_CHANNEL(): number {\r\n\t\treturn Token.DEFAULT_CHANNEL;\r\n\t}\r\n\r\n\tstatic get HIDDEN(): number {\r\n\t\treturn Token.HIDDEN_CHANNEL;\r\n\t}\r\n\r\n\tpublic static readonly MIN_CHAR_VALUE: number = 0x0000;\r\n\tpublic static readonly MAX_CHAR_VALUE: number = 0x10FFFF;\r\n\r\n\tpublic _input: CharStream;\r\n\r\n\tprotected _tokenFactorySourcePair: { source: TokenSource, stream: CharStream };\r\n\r\n\t/** How to create token objects */\r\n\tprotected _factory: TokenFactory = CommonTokenFactory.DEFAULT;\r\n\r\n\t/** The goal of all lexer rules/methods is to create a token object.\r\n\t * This is an instance variable as multiple rules may collaborate to\r\n\t * create a single token. nextToken will return this object after\r\n\t * matching lexer rule(s). If you subclass to allow multiple token\r\n\t * emissions, then set this to the last token to be matched or\r\n\t * something non-undefined so that the auto token emit mechanism will not\r\n\t * emit another token.\r\n\t */\r\n\tpublic _token: Token | undefined;\r\n\r\n\t/** What character index in the stream did the current token start at?\r\n\t * Needed, for example, to get the text for current token. Set at\r\n\t * the start of nextToken.\r\n\t */\r\n\tpublic _tokenStartCharIndex: number = -1;\r\n\r\n\t/** The line on which the first character of the token resides */\r\n\tpublic _tokenStartLine: number = 0;\r\n\r\n\t/** The character position of first character within the line */\r\n\tpublic _tokenStartCharPositionInLine: number = 0;\r\n\r\n\t/** Once we see EOF on char stream, next token will be EOF.\r\n\t * If you have DONE : EOF ; then you see DONE EOF.\r\n\t */\r\n\tpublic _hitEOF: boolean = false;\r\n\r\n\t/** The channel number for the current token */\r\n\tpublic _channel: number = 0;\r\n\r\n\t/** The token type for the current token */\r\n\tpublic _type: number = 0;\r\n\r\n\tpublic readonly _modeStack: IntegerStack = new IntegerStack();\r\n\tpublic _mode: number = Lexer.DEFAULT_MODE;\r\n\r\n\t/** You can set the text for the current token to override what is in\r\n\t * the input char buffer. Set `text` or can set this instance var.\r\n\t */\r\n\tpublic _text: string | undefined;\r\n\r\n\tconstructor(input: CharStream) {\r\n\t\tsuper();\r\n\t\tthis._input = input;\r\n\t\tthis._tokenFactorySourcePair = { source: this, stream: input };\r\n\t}\r\n\r\n\tpublic reset(): void;\r\n\tpublic reset(resetInput: boolean): void;\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\t// wack Lexer state variables\r\n\t\tif (resetInput === undefined || resetInput) {\r\n\t\t\tthis._input.seek(0); // rewind the input\r\n\t\t}\r\n\r\n\t\tthis._token = undefined;\r\n\t\tthis._type = Token.INVALID_TYPE;\r\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\r\n\t\tthis._tokenStartCharIndex = -1;\r\n\t\tthis._tokenStartCharPositionInLine = -1;\r\n\t\tthis._tokenStartLine = -1;\r\n\t\tthis._text = undefined;\r\n\r\n\t\tthis._hitEOF = false;\r\n\t\tthis._mode = Lexer.DEFAULT_MODE;\r\n\t\tthis._modeStack.clear();\r\n\r\n\t\tthis.interpreter.reset();\r\n\t}\r\n\r\n\t/** Return a token from this source; i.e., match a token on the char\r\n\t * stream.\r\n\t */\r\n\t@Override\r\n\tpublic nextToken(): Token {\r\n\t\tif (this._input == null) {\r\n\t\t\tthrow new Error(\"nextToken requires a non-null input stream.\");\r\n\t\t}\r\n\r\n\t\t// Mark start location in char stream so unbuffered streams are\r\n\t\t// guaranteed at least have text of current token\r\n\t\tlet tokenStartMarker: number = this._input.mark();\r\n\t\ttry {\r\n\t\t\touter:\r\n\t\t\twhile (true) {\r\n\t\t\t\tif (this._hitEOF) {\r\n\t\t\t\t\treturn this.emitEOF();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._token = undefined;\r\n\t\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\r\n\t\t\t\tthis._tokenStartCharIndex = this._input.index;\r\n\t\t\t\tthis._tokenStartCharPositionInLine = this.interpreter.charPositionInLine;\r\n\t\t\t\tthis._tokenStartLine = this.interpreter.line;\r\n\t\t\t\tthis._text = undefined;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tthis._type = Token.INVALID_TYPE;\r\n//\t\t\t\tSystem.out.println(\"nextToken line \"+tokenStartLine+\" at \"+((char)input.LA(1))+\r\n//\t\t\t\t\t\t\t\t \" in mode \"+mode+\r\n//\t\t\t\t\t\t\t\t \" at index \"+input.index);\r\n\t\t\t\t\tlet ttype: number;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tttype = this.interpreter.match(this._input, this._mode);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\tif (e instanceof LexerNoViableAltException) {\r\n\t\t\t\t\t\t\tthis.notifyListeners(e);\t\t// report error\r\n\t\t\t\t\t\t\tthis.recover(e);\r\n\t\t\t\t\t\t\tttype = Lexer.SKIP;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._input.LA(1) === IntStream.EOF) {\r\n\t\t\t\t\t\tthis._hitEOF = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._type === Token.INVALID_TYPE) {\r\n\t\t\t\t\t\tthis._type = ttype;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._type === Lexer.SKIP) {\r\n\t\t\t\t\t\tcontinue outer;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (this._type === Lexer.MORE);\r\n\t\t\t\tif (this._token == null) {\r\n\t\t\t\t\treturn this.emit();\r\n\t\t\t\t}\r\n\t\t\t\treturn this._token;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\t// make sure we release marker after match or\r\n\t\t\t// unbuffered char stream will keep buffering\r\n\t\t\tthis._input.release(tokenStartMarker);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Instruct the lexer to skip creating a token for current lexer rule\r\n\t * and look for another token. nextToken() knows to keep looking when\r\n\t * a lexer rule finishes with token set to SKIP_TOKEN. Recall that\r\n\t * if token==undefined at end of any token rule, it creates one for you\r\n\t * and emits it.\r\n\t */\r\n\tpublic skip(): void {\r\n\t\tthis._type = Lexer.SKIP;\r\n\t}\r\n\r\n\tpublic more(): void {\r\n\t\tthis._type = Lexer.MORE;\r\n\t}\r\n\r\n\tpublic mode(m: number): void {\r\n\t\tthis._mode = m;\r\n\t}\r\n\r\n\tpublic pushMode(m: number): void {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"pushMode \" + m);\r\n\t\t}\r\n\t\tthis._modeStack.push(this._mode);\r\n\t\tthis.mode(m);\r\n\t}\r\n\r\n\tpublic popMode(): number {\r\n\t\tif (this._modeStack.isEmpty) {\r\n\t\t\tthrow new Error(\"EmptyStackException\");\r\n\t\t}\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"popMode back to \" + this._modeStack.peek());\r\n\t\t}\r\n\t\tthis.mode(this._modeStack.pop());\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._factory;\r\n\t}\r\n\r\n\t// @Override\r\n\tset tokenFactory(factory: TokenFactory) {\r\n\t\tthis._factory = factory;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream {\r\n\t\treturn this._input;\r\n\t}\r\n\r\n\t/** Set the char stream and reset the lexer */\r\n\tset inputStream(input: CharStream) {\r\n\t\tthis.reset(false);\r\n\t\tthis._input = input;\r\n\t\tthis._tokenFactorySourcePair = { source: this, stream: this._input };\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\treturn this._input.sourceName;\r\n\t}\r\n\r\n\r\n\t/** The standard method called to automatically emit a token at the\r\n\t * outermost lexical rule. The token object should point into the\r\n\t * char buffer start..stop. If there is a text override in 'text',\r\n\t * use that to set the token's text. Override this method to emit\r\n\t * custom Token objects or provide a new factory.\r\n\t */\r\n\tpublic emit(token: Token): Token;\r\n\r\n\t/** By default does not support multiple emits per nextToken invocation\r\n\t * for efficiency reasons. Subclass and override this method, nextToken,\r\n\t * and getToken (to push tokens into a list and pull from that list\r\n\t * rather than a single variable as this implementation does).\r\n\t */\r\n\tpublic emit(): Token;\r\n\r\n\tpublic emit(token?: Token): Token {\r\n\t\tif (!token) {\r\n\t\t\ttoken = this._factory.create(\r\n\t\t\t\tthis._tokenFactorySourcePair, this._type, this._text, this._channel,\r\n\t\t\t\tthis._tokenStartCharIndex, this.charIndex - 1, this._tokenStartLine,\r\n\t\t\t\tthis._tokenStartCharPositionInLine);\r\n\t\t}\r\n\t\tthis._token = token;\r\n\t\treturn token;\r\n\t}\r\n\r\n\tpublic emitEOF(): Token {\r\n\t\tlet cpos: number = this.charPositionInLine;\r\n\t\tlet line: number = this.line;\r\n\t\tlet eof: Token = this._factory.create(\r\n\t\t\tthis._tokenFactorySourcePair, Token.EOF, undefined,\r\n\t\t\tToken.DEFAULT_CHANNEL, this._input.index, this._input.index - 1,\r\n\t\t\tline, cpos);\r\n\t\tthis.emit(eof);\r\n\t\treturn eof;\r\n\t}\r\n\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn this.interpreter.line;\r\n\t}\r\n\r\n\tset line(line: number) {\r\n\t\tthis.interpreter.line = line;\r\n\t}\r\n\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn this.interpreter.charPositionInLine;\r\n\t}\r\n\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis.interpreter.charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\t/** What is the index of the current character of lookahead? */\r\n\tget charIndex(): number {\r\n\t\treturn this._input.index;\r\n\t}\r\n\r\n\t/** Return the text matched so far for the current token or any\r\n\t * text override.\r\n\t */\r\n\tget text(): string {\r\n\t\tif (this._text != null) {\r\n\t\t\treturn this._text;\r\n\t\t}\r\n\t\treturn this.interpreter.getText(this._input);\r\n\t}\r\n\r\n\t/** Set the complete text of this token; it wipes any previous\r\n\t * changes to the text.\r\n\t */\r\n\tset text(text: string) {\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t/** Override if emitting multiple tokens. */\r\n\tget token(): Token | undefined { return this._token; }\r\n\r\n\tset token(_token: Token | undefined) {\r\n\t\tthis._token = _token;\r\n\t}\r\n\r\n\tset type(ttype: number) {\r\n\t\tthis._type = ttype;\r\n\t}\r\n\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\tset channel(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\tpublic abstract readonly channelNames: string[];\r\n\r\n\tpublic abstract readonly modeNames: string[];\r\n\r\n\t/** Return a list of all Token objects in input char stream.\r\n\t * Forces load of all tokens. Does not include EOF token.\r\n\t */\r\n\tpublic getAllTokens(): Token[] {\r\n\t\tlet tokens: Token[] = [];\r\n\t\tlet t: Token = this.nextToken();\r\n\t\twhile (t.type !== Token.EOF) {\r\n\t\t\ttokens.push(t);\r\n\t\t\tt = this.nextToken();\r\n\t\t}\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\tpublic notifyListeners(e: LexerNoViableAltException): void {\r\n\t\tlet text: string = this._input.getText(\r\n\t\t\tInterval.of(this._tokenStartCharIndex, this._input.index));\r\n\t\tlet msg: string = \"token recognition error at: '\" +\r\n\t\t\tthis.getErrorDisplay(text) + \"'\";\r\n\r\n\t\tlet listener: ANTLRErrorListener = this.getErrorListenerDispatch();\r\n\t\tif (listener.syntaxError) {\r\n\t\t\tlistener.syntaxError(this, undefined, this._tokenStartLine, this._tokenStartCharPositionInLine, msg, e);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getErrorDisplay(s: string | number): string {\r\n\t\tif (typeof s === \"number\") {\r\n\t\t\tswitch (s) {\r\n\t\t\tcase Token.EOF:\r\n\t\t\t\treturn \"\";\r\n\t\t\tcase 0x0a:\r\n\t\t\t\treturn \"\\\\n\";\r\n\t\t\tcase 0x09:\r\n\t\t\t\treturn \"\\\\t\";\r\n\t\t\tcase 0x0d:\r\n\t\t\t\treturn \"\\\\r\";\r\n\t\t\t}\r\n\t\t\treturn String.fromCharCode(s);\r\n\t\t}\r\n\t\treturn s.replace(/\\n/g, \"\\\\n\")\r\n\t\t\t.replace(/\\t/g, \"\\\\t\")\r\n\t\t\t.replace(/\\r/g, \"\\\\r\");\r\n\t}\r\n\r\n\tpublic getCharErrorDisplay(c: number): string {\r\n\t\tlet s: string = this.getErrorDisplay(c);\r\n\t\treturn \"'\" + s + \"'\";\r\n\t}\r\n\r\n\t/** Lexers can normally match any char in it's vocabulary after matching\r\n\t * a token, so do the easy thing and just kill a character and hope\r\n\t * it all works out. You can instead use the rule invocation stack\r\n\t * to do sophisticated error recovery if you are in a fragment rule.\r\n\t */\r\n\tpublic recover(re: RecognitionException): void;\r\n\tpublic recover(re: LexerNoViableAltException): void;\r\n\tpublic recover(re: RecognitionException): void {\r\n\t\tif (re instanceof LexerNoViableAltException) {\r\n\t\t\tif (this._input.LA(1) !== IntStream.EOF) {\r\n\t\t\t\t// skip a char and try again\r\n\t\t\t\tthis.interpreter.consume(this._input);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//System.out.println(\"consuming char \"+(char)input.LA(1)+\" during recovery\");\r\n\t\t\t//re.printStackTrace();\r\n\t\t\t// TODO: Do we lose character or line position information?\r\n\t\t\tthis._input.consume();\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.8683480-07:00\r\n\r\nimport { ArrayEqualityComparator } from \"./ArrayEqualityComparator\";\r\nimport { IntegerList } from \"./IntegerList\";\r\nimport { Interval } from \"./Interval\";\r\nimport { IntSet } from \"./IntSet\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Token } from \"../Token\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\n\r\n/**\r\n * This class implements the {@link IntSet} backed by a sorted array of\r\n * non-overlapping intervals. It is particularly efficient for representing\r\n * large collections of numbers, where the majority of elements appear as part\r\n * of a sequential range of numbers that are all part of the set. For example,\r\n * the set { 1, 2, 3, 4, 7, 8 } may be represented as { [1, 4], [7, 8] }.\r\n *\r\n * This class is able to represent sets containing any combination of values in\r\n * the range {@link Integer#MIN_VALUE} to {@link Integer#MAX_VALUE}\r\n * (inclusive).\r\n */\r\nexport class IntervalSet implements IntSet {\r\n\tprivate static _COMPLETE_CHAR_SET: IntervalSet;\r\n\tstatic get COMPLETE_CHAR_SET(): IntervalSet {\r\n\t\tif (IntervalSet._COMPLETE_CHAR_SET === undefined) {\r\n\t\t\tIntervalSet._COMPLETE_CHAR_SET = IntervalSet.of(Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE);\r\n\t\t\tIntervalSet._COMPLETE_CHAR_SET.setReadonly(true);\r\n\t\t}\r\n\r\n\t\treturn IntervalSet._COMPLETE_CHAR_SET;\r\n\t}\r\n\r\n\tprivate static _EMPTY_SET: IntervalSet;\r\n\tstatic get EMPTY_SET(): IntervalSet {\r\n\t\tif (IntervalSet._EMPTY_SET == null) {\r\n\t\t\tIntervalSet._EMPTY_SET = new IntervalSet();\r\n\t\t\tIntervalSet._EMPTY_SET.setReadonly(true);\r\n\t\t}\r\n\r\n\t\treturn IntervalSet._EMPTY_SET;\r\n\t}\r\n\r\n\t/** The list of sorted, disjoint intervals. */\r\n\tprivate _intervals: Interval[];\r\n\r\n\tprivate readonly: boolean = false;\r\n\r\n\tconstructor(intervals?: Interval[]) {\r\n\t\tif (intervals != null) {\r\n\t\t\tthis._intervals = intervals.slice(0);\r\n\t\t} else {\r\n\t\t\tthis._intervals = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Create a set with all ints within range [a..b] (inclusive). If b is omitted, the set contains the single element\r\n\t * a.\r\n\t */\r\n\t@NotNull\r\n\tpublic static of(a: number, b: number = a): IntervalSet {\r\n\t\tlet s: IntervalSet = new IntervalSet();\r\n\t\ts.add(a, b);\r\n\t\treturn s;\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tthis._intervals.length = 0;\r\n\t}\r\n\r\n\t/** Add interval; i.e., add all integers from a to b to set.\r\n\t * If b<a, do nothing.\r\n\t * Keep list in sorted order (by left range value).\r\n\t * If overlap, combine ranges. For example,\r\n\t * If this is {1..5, 10..20}, adding 6..7 yields\r\n\t * {1..5, 6..7, 10..20}. Adding 4..8 yields {1..8, 10..20}.\r\n\t */\r\n\tpublic add(a: number, b: number = a): void {\r\n\t\tthis.addRange(Interval.of(a, b));\r\n\t}\r\n\r\n\t// copy on write so we can cache a..a intervals and sets of that\r\n\tprotected addRange(addition: Interval): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\t//System.out.println(\"add \"+addition+\" to \"+intervals.toString());\r\n\t\tif (addition.b < addition.a) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find position in list\r\n\t\t// Use iterators as we modify list in place\r\n\t\tfor (let i: number = 0; i < this._intervals.length; i++) {\r\n\t\t\tlet r: Interval = this._intervals[i];\r\n\t\t\tif (addition.equals(r)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (addition.adjacent(r) || !addition.disjoint(r)) {\r\n\t\t\t\t// next to each other, make a single larger interval\r\n\t\t\t\tlet bigger: Interval = addition.union(r);\r\n\t\t\t\tthis._intervals[i] = bigger;\r\n\t\t\t\t// make sure we didn't just create an interval that\r\n\t\t\t\t// should be merged with next interval in list\r\n\t\t\t\twhile (i < this._intervals.length - 1) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tlet next: Interval = this._intervals[i];\r\n\t\t\t\t\tif (!bigger.adjacent(next) && bigger.disjoint(next)) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if we bump up against or overlap next, merge\r\n\t\t\t\t\t// remove this one\r\n\t\t\t\t\tthis._intervals.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t\t// move backwards to what we just set\r\n\t\t\t\t\tthis._intervals[i] = bigger.union(next);\r\n\t\t\t\t\t// set to 3 merged ones\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// first call to next after previous duplicates the result\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (addition.startsBeforeDisjoint(r)) {\r\n\t\t\t\t// insert before r\r\n\t\t\t\tthis._intervals.splice(i, 0, addition);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if disjoint and after r, a future iteration will handle it\r\n\t\t}\r\n\r\n\t\t// ok, must be after last interval (and disjoint from last interval)\r\n\t\t// just add it\r\n\t\tthis._intervals.push(addition);\r\n\t}\r\n\r\n\t/** combine all sets in the array returned the or'd value */\r\n\tpublic static or(sets: IntervalSet[]): IntervalSet {\r\n\t\tlet r: IntervalSet = new IntervalSet();\r\n\t\tfor (let s of sets) {\r\n\t\t\tr.addAll(s);\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic addAll(set: IntSet): IntervalSet {\r\n\t\tif (set == null) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (set instanceof IntervalSet) {\r\n\t\t\tlet other: IntervalSet = set;\r\n\t\t\t// walk set and add each interval\r\n\t\t\tlet n: number = other._intervals.length;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\tlet I: Interval = other._intervals[i];\r\n\t\t\t\tthis.add(I.a, I.b);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let value of set.toArray()) {\r\n\t\t\t\tthis.add(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic complementRange(minElement: number, maxElement: number): IntervalSet {\r\n\t\treturn this.complement(IntervalSet.of(minElement, maxElement));\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic complement(vocabulary: IntSet): IntervalSet {\r\n\t\tif (vocabulary.isNil) {\r\n\t\t\t// nothing in common with null set\r\n\t\t\treturn IntervalSet.EMPTY_SET;\r\n\t\t}\r\n\r\n\t\tlet vocabularyIS: IntervalSet;\r\n\t\tif (vocabulary instanceof IntervalSet) {\r\n\t\t\tvocabularyIS = vocabulary;\r\n\t\t} else {\r\n\t\t\tvocabularyIS = new IntervalSet();\r\n\t\t\tvocabularyIS.addAll(vocabulary);\r\n\t\t}\r\n\r\n\t\treturn vocabularyIS.subtract(this);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic subtract(a: IntSet): IntervalSet {\r\n\t\tif (a == null || a.isNil) {\r\n\t\t\treturn new IntervalSet(this._intervals);\r\n\t\t}\r\n\r\n\t\tif (a instanceof IntervalSet) {\r\n\t\t\treturn IntervalSet.subtract(this, a);\r\n\t\t}\r\n\r\n\t\tlet other: IntervalSet = new IntervalSet();\r\n\t\tother.addAll(a);\r\n\t\treturn IntervalSet.subtract(this, other);\r\n\t}\r\n\r\n\t/**\r\n\t * Compute the set difference between two interval sets. The specific\r\n\t * operation is `left - right`.\r\n\t */\r\n\t@NotNull\r\n\tpublic static subtract(left: IntervalSet, right: IntervalSet): IntervalSet {\r\n\t\tif (left.isNil) {\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\tlet result: IntervalSet = new IntervalSet(left._intervals);\r\n\t\tif (right.isNil) {\r\n\t\t\t// right set has no elements; just return the copy of the current set\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet resultI: number = 0;\r\n\t\tlet rightI: number = 0;\r\n\t\twhile (resultI < result._intervals.length && rightI < right._intervals.length) {\r\n\t\t\tlet resultInterval: Interval = result._intervals[resultI];\r\n\t\t\tlet rightInterval: Interval = right._intervals[rightI];\r\n\r\n\t\t\t// operation: (resultInterval - rightInterval) and update indexes\r\n\r\n\t\t\tif (rightInterval.b < resultInterval.a) {\r\n\t\t\t\trightI++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (rightInterval.a > resultInterval.b) {\r\n\t\t\t\tresultI++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet beforeCurrent: Interval | undefined;\r\n\t\t\tlet afterCurrent: Interval | undefined;\r\n\t\t\tif (rightInterval.a > resultInterval.a) {\r\n\t\t\t\tbeforeCurrent = new Interval(resultInterval.a, rightInterval.a - 1);\r\n\t\t\t}\r\n\r\n\t\t\tif (rightInterval.b < resultInterval.b) {\r\n\t\t\t\tafterCurrent = new Interval(rightInterval.b + 1, resultInterval.b);\r\n\t\t\t}\r\n\r\n\t\t\tif (beforeCurrent) {\r\n\t\t\t\tif (afterCurrent) {\r\n\t\t\t\t\t// split the current interval into two\r\n\t\t\t\t\tresult._intervals[resultI] = beforeCurrent;\r\n\t\t\t\t\tresult._intervals.splice(resultI + 1, 0, afterCurrent);\r\n\t\t\t\t\tresultI++;\r\n\t\t\t\t\trightI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// replace the current interval\r\n\t\t\t\t\tresult._intervals[resultI] = beforeCurrent;\r\n\t\t\t\t\tresultI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (afterCurrent) {\r\n\t\t\t\t\t// replace the current interval\r\n\t\t\t\t\tresult._intervals[resultI] = afterCurrent;\r\n\t\t\t\t\trightI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// remove the current interval (thus no need to increment resultI)\r\n\t\t\t\t\tresult._intervals.splice(resultI, 1);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If rightI reached right.intervals.size, no more intervals to subtract from result.\r\n\t\t// If resultI reached result.intervals.size, we would be subtracting from an empty set.\r\n\t\t// Either way, we are done.\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic or(a: IntSet): IntervalSet {\r\n\t\tlet o: IntervalSet = new IntervalSet();\r\n\t\to.addAll(this);\r\n\t\to.addAll(a);\r\n\t\treturn o;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic and(other: IntSet): IntervalSet {\r\n\t\tif (other.isNil) { //|| !(other instanceof IntervalSet) ) {\r\n\t\t\t// nothing in common with null set\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\tlet myIntervals: Interval[] = this._intervals;\r\n\t\tlet theirIntervals: Interval[] = (other as IntervalSet)._intervals;\r\n\t\tlet intersection: IntervalSet | undefined;\r\n\t\tlet mySize: number = myIntervals.length;\r\n\t\tlet theirSize: number = theirIntervals.length;\r\n\t\tlet i: number = 0;\r\n\t\tlet j: number = 0;\r\n\t\t// iterate down both interval lists looking for nondisjoint intervals\r\n\t\twhile (i < mySize && j < theirSize) {\r\n\t\t\tlet mine: Interval = myIntervals[i];\r\n\t\t\tlet theirs: Interval = theirIntervals[j];\r\n\t\t\t//System.out.println(\"mine=\"+mine+\" and theirs=\"+theirs);\r\n\t\t\tif (mine.startsBeforeDisjoint(theirs)) {\r\n\t\t\t\t// move this iterator looking for interval that might overlap\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\telse if (theirs.startsBeforeDisjoint(mine)) {\r\n\t\t\t\t// move other iterator looking for interval that might overlap\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\telse if (mine.properlyContains(theirs)) {\r\n\t\t\t\t// overlap, add intersection, get next theirs\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\telse if (theirs.properlyContains(mine)) {\r\n\t\t\t\t// overlap, add intersection, get next mine\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\telse if (!mine.disjoint(theirs)) {\r\n\t\t\t\t// overlap, add intersection\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\t// Move the iterator of lower range [a..b], but not\r\n\t\t\t\t// the upper range as it may contain elements that will collide\r\n\t\t\t\t// with the next iterator. So, if mine=[0..115] and\r\n\t\t\t\t// theirs=[115..200], then intersection is 115 and move mine\r\n\t\t\t\t// but not theirs as theirs may collide with the next range\r\n\t\t\t\t// in thisIter.\r\n\t\t\t\t// move both iterators to next ranges\r\n\t\t\t\tif (mine.startsAfterNonDisjoint(theirs)) {\r\n\t\t\t\t\tj++;\r\n\t\t\t\t}\r\n\t\t\t\telse if (theirs.startsAfterNonDisjoint(mine)) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!intersection) {\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\treturn intersection;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic contains(el: number): boolean {\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tlet l: number = 0;\r\n\t\tlet r: number = n - 1;\r\n\t\t// Binary search for the element in the (sorted, disjoint) array of intervals.\r\n\t\twhile (l <= r) {\r\n\t\t\tlet m: number = (l + r) >> 1;\r\n\t\t\tlet I: Interval = this._intervals[m];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (b < el) {\r\n\t\t\t\tl = m + 1;\r\n\t\t\t} else if (a > el) {\r\n\t\t\t\tr = m - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// el >= a && el <= b\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tget isNil(): boolean {\r\n\t\treturn this._intervals == null || this._intervals.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the maximum value contained in the set if not isNil.\r\n\t *\r\n\t * @return the maximum value contained in the set.\r\n\t * @throws RangeError if set is empty\r\n\t */\r\n\tget maxElement(): number {\r\n\t\tif (this.isNil) {\r\n\t\t\tthrow new RangeError(\"set is empty\");\r\n\t\t}\r\n\r\n\t\tlet last: Interval = this._intervals[this._intervals.length - 1];\r\n\t\treturn last.b;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the minimum value contained in the set if not isNil.\r\n\t *\r\n\t * @return the minimum value contained in the set.\r\n\t * @throws RangeError if set is empty\r\n\t */\r\n\tget minElement(): number {\r\n\t\tif (this.isNil) {\r\n\t\t\tthrow new RangeError(\"set is empty\");\r\n\t\t}\r\n\r\n\t\treturn this._intervals[0].a;\r\n\t}\r\n\r\n\t/** Return a list of Interval objects. */\r\n\tget intervals(): Interval[] {\r\n\t\treturn this._intervals;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\thash = MurmurHash.update(hash, I.a);\r\n\t\t\thash = MurmurHash.update(hash, I.b);\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, this._intervals.length * 2);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/** Are two IntervalSets equal? Because all intervals are sorted\r\n\t * and disjoint, equals is a simple linear walk over both lists\r\n\t * to make sure they are the same. Interval.equals() is used\r\n\t * by the List.equals() method to check the ranges.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o == null || !(o instanceof IntervalSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn ArrayEqualityComparator.INSTANCE.equals(this._intervals, o._intervals);\r\n\t}\r\n\r\n\tpublic toString(elemAreChar: boolean = false): string {\r\n\t\tlet buf: string = \"\";\r\n\t\tif (this._intervals == null || this._intervals.length === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"{\";\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuf += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (a === b) {\r\n\t\t\t\tif (a === Token.EOF) {\r\n\t\t\t\t\tbuf += \"\";\r\n\t\t\t\t} else if (elemAreChar) {\r\n\t\t\t\t\tbuf += \"'\" + String.fromCodePoint(a) + \"'\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += a;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (elemAreChar) {\r\n\t\t\t\t\tbuf += \"'\" + String.fromCodePoint(a) + \"'..'\" + String.fromCodePoint(b) + \"'\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += a + \"..\" + b;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"}\";\r\n\t\t}\r\n\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic toStringVocabulary( @NotNull vocabulary: Vocabulary): string {\r\n\t\tif (this._intervals == null || this._intervals.length === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tlet buf: string = \"\";\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"{\";\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuf += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (a === b) {\r\n\t\t\t\tbuf += this.elementName(vocabulary, a);\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = a; i <= b; i++) {\r\n\t\t\t\t\tif (i > a) {\r\n\t\t\t\t\t\tbuf += \", \";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbuf += this.elementName(vocabulary, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"}\";\r\n\t\t}\r\n\r\n\t\treturn buf;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected elementName( @NotNull vocabulary: Vocabulary, a: number): string {\r\n\t\tif (a === Token.EOF) {\r\n\t\t\treturn \"\";\r\n\t\t} else if (a === Token.EPSILON) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn vocabulary.getDisplayName(a);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\tlet n: number = 0;\r\n\t\tlet numIntervals: number = this._intervals.length;\r\n\t\tif (numIntervals === 1) {\r\n\t\t\tlet firstInterval: Interval = this._intervals[0];\r\n\t\t\treturn firstInterval.b - firstInterval.a + 1;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < numIntervals; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tn += (I.b - I.a + 1);\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n\r\n\tpublic toIntegerList(): IntegerList {\r\n\t\tlet values: IntegerList = new IntegerList(this.size);\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\tvalues.add(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\tpublic toSet(): Set {\r\n\t\tlet s: Set = new Set();\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\ts.add(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn s;\r\n\t}\r\n\r\n\tpublic toArray(): number[] {\r\n\t\tlet values: number[] = new Array();\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\tvalues.push(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic remove(el: number): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (el < a) {\r\n\t\t\t\tbreak; // list is sorted and el is before this interval; not here\r\n\t\t\t}\r\n\t\t\t// if whole interval x..x, rm\r\n\t\t\tif (el === a && el === b) {\r\n\t\t\t\tthis._intervals.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if on left edge x..b, adjust left\r\n\t\t\tif (el === a) {\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a + 1, I.b);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if on right edge a..x, adjust right\r\n\t\t\tif (el === b) {\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a, I.b - 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if in middle a..x..b, split interval\r\n\t\t\tif (el > a && el < b) { // found in this interval\r\n\t\t\t\tlet oldb: number = I.b;\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a, el - 1); // [a..x-1]\r\n\t\t\t\tthis.add(el + 1, oldb); // add [x+1..b]\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget isReadonly(): boolean {\r\n\t\treturn this.readonly;\r\n\t}\r\n\r\n\tpublic setReadonly(readonly: boolean): void {\r\n\t\tif (this.readonly && !readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tthis.readonly = readonly;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.8187912-07:00\r\n\r\nimport { NotNull } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNDeserializationOptions {\r\n\tprivate static _defaultOptions?: ATNDeserializationOptions;\r\n\r\n\tprivate readOnly: boolean = false;\r\n\tprivate verifyATN: boolean;\r\n\tprivate generateRuleBypassTransitions: boolean;\r\n\tprivate optimize: boolean;\r\n\r\n\tconstructor(options?: ATNDeserializationOptions) {\r\n\t\tif (options) {\r\n\t\t\tthis.verifyATN = options.verifyATN;\r\n\t\t\tthis.generateRuleBypassTransitions = options.generateRuleBypassTransitions;\r\n\t\t\tthis.optimize = options.optimize;\r\n\t\t} else {\r\n\t\t\tthis.verifyATN = true;\r\n\t\t\tthis.generateRuleBypassTransitions = false;\r\n\t\t\tthis.optimize = true;\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tstatic get defaultOptions(): ATNDeserializationOptions {\r\n\t\tif (ATNDeserializationOptions._defaultOptions == null) {\r\n\t\t\tATNDeserializationOptions._defaultOptions = new ATNDeserializationOptions();\r\n\t\t\tATNDeserializationOptions._defaultOptions.makeReadOnly();\r\n\t\t}\r\n\r\n\t\treturn ATNDeserializationOptions._defaultOptions;\r\n\t}\r\n\r\n\tget isReadOnly(): boolean {\r\n\t\treturn this.readOnly;\r\n\t}\r\n\r\n\tpublic makeReadOnly(): void {\r\n\t\tthis.readOnly = true;\r\n\t}\r\n\r\n\tget isVerifyATN(): boolean {\r\n\t\treturn this.verifyATN;\r\n\t}\r\n\r\n\tset isVerifyATN(verifyATN: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.verifyATN = verifyATN;\r\n\t}\r\n\r\n\tget isGenerateRuleBypassTransitions(): boolean {\r\n\t\treturn this.generateRuleBypassTransitions;\r\n\t}\r\n\r\n\tset isGenerateRuleBypassTransitions(generateRuleBypassTransitions: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.generateRuleBypassTransitions = generateRuleBypassTransitions;\r\n\t}\r\n\r\n\tget isOptimize(): boolean {\r\n\t\treturn this.optimize;\r\n\t}\r\n\r\n\tset isOptimize(optimize: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.optimize = optimize;\r\n\t}\r\n\r\n\tprotected throwIfReadOnly(): void {\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthrow new Error(\"The object is read only.\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.7363448-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class ActionTransition extends Transition {\r\n\tpublic ruleIndex: number;\r\n\tpublic actionIndex: number;\r\n\tpublic isCtxDependent: boolean; // e.g., $i ref in action\r\n\r\n\tconstructor(@NotNull target: ATNState, ruleIndex: number, actionIndex: number = -1, isCtxDependent: boolean = false) {\r\n\t\tsuper(target);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.actionIndex = actionIndex;\r\n\t\tthis.isCtxDependent = isCtxDependent;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.ACTION;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true; // we are to be ignored by analysis 'cept for predicates\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.6769122-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** TODO: make all transitions sets? no, should remove set edges */\r\nexport class AtomTransition extends Transition {\r\n\t/** The token type or character value; or, signifies special label. */\r\n\tpublic _label: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, label: number) {\r\n\t\tsuper(target);\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.ATOM;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn IntervalSet.of(this._label);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn this._label === symbol;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn String(this.label);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.9930394-07:00\r\n\r\nimport { BlockEndState } from \"./BlockEndState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The start of a regular `(...)` block. */\r\nexport abstract class BlockStartState extends DecisionState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic endState!: BlockEndState;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.7669801-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class BasicBlockStartState extends BlockStartState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BLOCK_START;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.9125304-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Terminal node of a simple `(a|b|c)` block. */\r\nexport class BlockEndState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic startState!: BlockStartState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BLOCK_END;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.6283213-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class EpsilonTransition extends Transition {\r\n\r\n\tprivate _outermostPrecedenceReturn: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, outermostPrecedenceReturn: number = -1) {\r\n\t\tsuper(target);\r\n\t\tthis._outermostPrecedenceReturn = outermostPrecedenceReturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @returns the rule index of a precedence rule for which this transition is\r\n\t * returning from, where the precedence value is 0; otherwise, -1.\r\n\t *\r\n\t * @see ATNConfig.isPrecedenceFilterSuppressed\r\n\t * @see ParserATNSimulator#applyPrecedenceFilter(ATNConfigSet, ParserRuleContext, PredictionContextCache)\r\n\t * @since 4.4.1\r\n\t */\r\n\tget outermostPrecedenceReturn(): number {\r\n\t\treturn this._outermostPrecedenceReturn;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.EPSILON;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"epsilon\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.5634388-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `channel` lexer action by calling\r\n * {@link Lexer#setChannel} with the assigned channel.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerChannelAction implements LexerAction {\r\n\tprivate readonly _channel: number;\r\n\r\n\t/**\r\n\t * Constructs a new `channel` action with the specified channel value.\r\n\t * @param channel The channel value to pass to {@link Lexer#setChannel}.\r\n\t */\r\n\tconstructor(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the channel to use for the {@link Token} created by the lexer.\r\n\t *\r\n\t * @returns The channel to use for the {@link Token} created by the lexer.\r\n\t */\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#CHANNEL}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.CHANNEL;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#setChannel} with the\r\n\t * value provided by {@link #getChannel}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.channel = this._channel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._channel);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerChannelAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._channel === obj._channel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `channel(${this._channel})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.6567992-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Executes a custom lexer action by calling {@link Recognizer#action} with the\r\n * rule and action indexes assigned to the custom action. The implementation of\r\n * a custom action is added to the generated code for the lexer in an override\r\n * of {@link Recognizer#action} when the grammar is compiled.\r\n *\r\n * This class may represent embedded actions created with the `{...}`\r\n * syntax in ANTLR 4, as well as actions created for lexer commands where the\r\n * command argument could not be evaluated when the grammar was compiled.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerCustomAction implements LexerAction {\r\n\tprivate readonly _ruleIndex: number;\r\n\tprivate readonly _actionIndex: number;\r\n\r\n\t/**\r\n\t * Constructs a custom lexer action with the specified rule and action\r\n\t * indexes.\r\n\t *\r\n\t * @param ruleIndex The rule index to use for calls to\r\n\t * {@link Recognizer#action}.\r\n\t * @param actionIndex The action index to use for calls to\r\n\t * {@link Recognizer#action}.\r\n\t */\r\n\tconstructor(ruleIndex: number, actionIndex: number) {\r\n\t\tthis._ruleIndex = ruleIndex;\r\n\t\tthis._actionIndex = actionIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the rule index to use for calls to {@link Recognizer#action}.\r\n\t *\r\n\t * @returns The rule index for the custom action.\r\n\t */\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the action index to use for calls to {@link Recognizer#action}.\r\n\t *\r\n\t * @returns The action index for the custom action.\r\n\t */\r\n\tget actionIndex(): number {\r\n\t\treturn this._actionIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * @returns This method returns {@link LexerActionType#CUSTOM}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.CUSTOM;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether the lexer action is position-dependent. Position-dependent\r\n\t * actions may have different semantics depending on the {@link CharStream}\r\n\t * index at the time the action is executed.\r\n\t *\r\n\t * Custom actions are position-dependent since they may represent a\r\n\t * user-defined embedded action which makes calls to methods like\r\n\t * {@link Lexer#getText}.\r\n\t *\r\n\t * @returns This method returns `true`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Custom actions are implemented by calling {@link Lexer#action} with the\r\n\t * appropriate rule and action indexes.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.action(undefined, this._ruleIndex, this._actionIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._ruleIndex);\r\n\t\thash = MurmurHash.update(hash, this._actionIndex);\r\n\t\treturn MurmurHash.finish(hash, 3);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerCustomAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._ruleIndex === obj._ruleIndex\r\n\t\t\t&& this._actionIndex === obj._actionIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.8653427-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `mode` lexer action by calling {@link Lexer#mode} with\r\n * the assigned mode.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerModeAction implements LexerAction {\r\n\tprivate readonly _mode: number;\r\n\r\n\t/**\r\n\t * Constructs a new `mode` action with the specified mode value.\r\n\t * @param mode The mode value to pass to {@link Lexer#mode}.\r\n\t */\r\n\tconstructor(mode: number) {\r\n\t\tthis._mode = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the lexer mode this action should transition the lexer to.\r\n\t *\r\n\t * @returns The lexer mode for this `mode` command.\r\n\t */\r\n\tget mode(): number {\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#mode} with the\r\n\t * value provided by {@link #getMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.mode(this._mode);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._mode);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerModeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._mode === obj._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `mode(${this._mode})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.9613221-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `more` lexer action by calling {@link Lexer#more}.\r\n *\r\n * The `more` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerMoreAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `more` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#MORE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.MORE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#more}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.more();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"more\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerMoreAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerMoreAction = new LexerMoreAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.0449220-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `popMode` lexer action by calling {@link Lexer#popMode}.\r\n *\r\n * The `popMode` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerPopModeAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `popMode` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#POP_MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.POP_MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#popMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.popMode();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"popMode\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerPopModeAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerPopModeAction = new LexerPopModeAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.1378801-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `pushMode` lexer action by calling\r\n * {@link Lexer#pushMode} with the assigned mode.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerPushModeAction implements LexerAction {\r\n\tprivate readonly _mode: number;\r\n\r\n\t/**\r\n\t * Constructs a new `pushMode` action with the specified mode value.\r\n\t * @param mode The mode value to pass to {@link Lexer#pushMode}.\r\n\t */\r\n\tconstructor(mode: number) {\r\n\t\tthis._mode = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the lexer mode this action should transition the lexer to.\r\n\t *\r\n\t * @returns The lexer mode for this `pushMode` command.\r\n\t */\r\n\tget mode(): number {\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#PUSH_MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.PUSH_MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#pushMode} with the\r\n\t * value provided by {@link #getMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.pushMode(this._mode);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._mode);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerPushModeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._mode === obj._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `pushMode(${this._mode})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.2324460-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `skip` lexer action by calling {@link Lexer#skip}.\r\n *\r\n * The `skip` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerSkipAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `skip` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#SKIP}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.SKIP;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#skip}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.skip();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"skip\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerSkipAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerSkipAction = new LexerSkipAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.3204839-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `type` lexer action by setting `Lexer.type`\r\n * with the assigned type.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerTypeAction implements LexerAction {\r\n\tprivate readonly _type: number;\r\n\r\n\t/**\r\n\t * Constructs a new `type` action with the specified token type value.\r\n\t * @param type The type to assign to the token using `Lexer.type`.\r\n\t */\r\n\tconstructor(type: number) {\r\n\t\tthis._type = type;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the type to assign to a token created by the lexer.\r\n\t * @returns The type to assign to a token created by the lexer.\r\n\t */\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#TYPE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.TYPE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by setting `Lexer.type` with the\r\n\t * value provided by `type`.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.type = this._type;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._type);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerTypeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._type === obj._type;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `type(${this._type})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.7737978-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Mark the end of a * or + loop. */\r\nexport class LoopEndState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: ATNState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.LOOP_END;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.0710131-07:00\r\n\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { Override } from \"../Decorators\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\n/**\r\n * This class stores information about a configuration conflict.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ConflictInfo {\r\n\tprivate _conflictedAlts: BitSet;\r\n\r\n\tprivate exact: boolean;\r\n\r\n\tconstructor(conflictedAlts: BitSet, exact: boolean) {\r\n\t\tthis._conflictedAlts = conflictedAlts;\r\n\t\tthis.exact = exact;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of conflicting alternatives for the configuration set.\r\n\t */\r\n\tget conflictedAlts(): BitSet {\r\n\t\treturn this._conflictedAlts;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether or not the configuration conflict is an exact conflict.\r\n\t * An exact conflict occurs when the prediction algorithm determines that\r\n\t * the represented alternatives for a particular configuration set cannot be\r\n\t * further reduced by consuming additional input. After reaching an exact\r\n\t * conflict during an SLL prediction, only switch to full-context prediction\r\n\t * could reduce the set of viable alternatives. In LL prediction, an exact\r\n\t * conflict indicates a true ambiguity in the input.\r\n\t *\r\n\t * For the {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} prediction mode,\r\n\t * accept states are conflicting but not exact are treated as non-accept\r\n\t * states.\r\n\t */\r\n\tget isExact(): boolean {\r\n\t\treturn this.exact;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof ConflictInfo)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.isExact === obj.isExact\r\n\t\t\t&& Utils.equals(this.conflictedAlts, obj.conflictedAlts);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.conflictedAlts.hashCode();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.1433686-07:00\r\n\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { Token } from \"../Token\";\r\n\r\nexport class TerminalNode implements ParseTree {\r\n\tpublic _symbol: Token;\r\n\tpublic _parent: RuleNode | undefined;\r\n\r\n\tconstructor(symbol: Token) {\r\n\t\tthis._symbol = symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getChild(i: number): never {\r\n\t\tthrow new RangeError(\"Terminal Node has no children.\");\r\n\t}\r\n\r\n\tget symbol(): Token {\r\n\t\treturn this._symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tget parent(): RuleNode | undefined {\r\n\t\treturn this._parent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic setParent(parent: RuleContext): void {\r\n\t\tthis._parent = parent;\r\n\t}\r\n\r\n\t@Override\r\n\tget payload(): Token {\r\n\t\treturn this._symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\tlet tokenIndex: number = this._symbol.tokenIndex;\r\n\t\treturn new Interval(tokenIndex, tokenIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitTerminal(this);\r\n\t}\r\n\r\n\t@Override\r\n\tget text(): string {\r\n\t\treturn this._symbol.text || \"\";\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toStringTree(parser?: Parser): string {\r\n\t\treturn this.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this._symbol.type === Token.EOF) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\treturn this._symbol.text || \"\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.4646355-07:00\r\n\r\nimport { Override } from \"../Decorators\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\nimport { Token } from \"../Token\";\r\n\r\n/** Represents a token that was consumed during resynchronization\r\n * rather than during a valid match operation. For example,\r\n * we will create this kind of a node during single token insertion\r\n * and deletion as well as during \"consume until error recovery set\"\r\n * upon no viable alternative exceptions.\r\n */\r\nexport class ErrorNode extends TerminalNode {\r\n\tconstructor(token: Token) {\r\n\t\tsuper(token);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitErrorNode(this);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.9232756-07:00\r\n\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { Parser } from \"../Parser\";\r\nimport { Interval } from \"../misc/Interval\";\r\n\r\nexport abstract class RuleNode implements ParseTree {\r\n\tpublic abstract readonly ruleContext: RuleContext;\r\n\r\n\t//@Override\r\n\tpublic abstract readonly parent: RuleNode | undefined;\r\n\r\n\tpublic abstract setParent(parent: RuleContext): void;\r\n\r\n\tpublic abstract getChild(i: number): ParseTree;\r\n\r\n\tpublic abstract accept(visitor: ParseTreeVisitor): T;\r\n\r\n\tpublic abstract readonly text: string;\r\n\r\n\tpublic abstract toStringTree(parser?: Parser | undefined): string;\r\n\r\n\tpublic abstract readonly sourceInterval: Interval;\r\n\r\n\tpublic abstract readonly payload: any;\r\n\r\n\tpublic abstract readonly childCount: number;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.3187865-07:00\r\n\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { CommonToken } from \"../CommonToken\";\r\nimport { ErrorNode } from \"./ErrorNode\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\nimport { Token } from \"../Token\";\r\nimport { Tree } from \"./Tree\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\n/** A set of utility routines useful for all kinds of ANTLR trees. */\r\nexport class Trees {\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes. Detect\r\n\t * parse trees and extract data appropriately.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree): string;\r\n\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes. Detect\r\n\t * parse trees and extract data appropriately.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, recog: Parser | undefined): string;\r\n\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, /*@Nullable*/ ruleNames: string[] | undefined): string;\r\n\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, arg2?: Parser | string[]): string;\r\n\tpublic static toStringTree(@NotNull t: Tree, arg2?: Parser | string[]): string {\r\n\t\tlet ruleNames: string[] | undefined;\r\n\t\tif (arg2 instanceof Parser) {\r\n\t\t\truleNames = arg2.ruleNames;\r\n\t\t} else {\r\n\t\t\truleNames = arg2;\r\n\t\t}\r\n\r\n\t\tlet s: string = Utils.escapeWhitespace(this.getNodeText(t, ruleNames), false);\r\n\t\tif (t.childCount === 0) {\r\n\t\t\treturn s;\r\n\t\t}\r\n\t\tlet buf = \"\";\r\n\t\tbuf += (\"(\");\r\n\t\ts = Utils.escapeWhitespace(this.getNodeText(t, ruleNames), false);\r\n\t\tbuf += (s);\r\n\t\tbuf += (\" \");\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tif (i > 0) {\r\n\t\t\t\tbuf += (\" \");\r\n\t\t\t}\r\n\t\t\tbuf += (this.toStringTree(t.getChild(i), ruleNames));\r\n\t\t}\r\n\t\tbuf += (\")\");\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic static getNodeText(/*@NotNull*/ t: Tree, recog: Parser | undefined): string;\r\n\tpublic static getNodeText(/*@NotNull*/ t: Tree, ruleNames: string[] | undefined): string;\r\n\tpublic static getNodeText(t: Tree, arg2: Parser | string[] | undefined): string {\r\n\t\tlet ruleNames: string[] | undefined;\r\n\t\tif (arg2 instanceof Parser) {\r\n\t\t\truleNames = arg2.ruleNames;\r\n\t\t} else if (arg2) {\r\n\t\t\truleNames = arg2;\r\n\t\t} else {\r\n\t\t\t// no recog or rule names\r\n\t\t\tlet payload = t.payload;\r\n\t\t\tif (typeof payload.text === \"string\") {\r\n\t\t\t\treturn payload.text;\r\n\t\t\t}\r\n\t\t\treturn t.payload.toString();\r\n\t\t}\r\n\r\n\t\tif (t instanceof RuleNode) {\r\n\t\t\tlet ruleContext: RuleContext = t.ruleContext;\r\n\t\t\tlet ruleIndex: number = ruleContext.ruleIndex;\r\n\t\t\tlet ruleName: string = ruleNames[ruleIndex];\r\n\t\t\tlet altNumber: number = ruleContext.altNumber;\r\n\t\t\tif (altNumber !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\treturn ruleName + \":\" + altNumber;\r\n\t\t\t}\r\n\t\t\treturn ruleName;\r\n\t\t}\r\n\t\telse if (t instanceof ErrorNode) {\r\n\t\t\treturn t.toString();\r\n\t\t}\r\n\t\telse if (t instanceof TerminalNode) {\r\n\t\t\tlet symbol = t.symbol;\r\n\t\t\treturn symbol.text || \"\";\r\n\t\t}\r\n\t\tthrow new TypeError(\"Unexpected node type\");\r\n\t}\r\n\r\n\t/** Return ordered list of all children of this node */\r\n\tpublic static getChildren(t: ParseTree): ParseTree[];\r\n\tpublic static getChildren(t: Tree): Tree[];\r\n\tpublic static getChildren(t: Tree): Tree[] {\r\n\t\tlet kids: Tree[] = [];\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tkids.push(t.getChild(i));\r\n\t\t}\r\n\t\treturn kids;\r\n\t}\r\n\r\n\t/** Return a list of all ancestors of this node. The first node of\r\n\t * list is the root and the last is the parent of this node.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static getAncestors(t: ParseTree): ParseTree[];\r\n\tpublic static getAncestors(t: Tree): Tree[];\r\n\t@NotNull\r\n\tpublic static getAncestors(@NotNull t: Tree): Tree[] {\r\n\t\tlet ancestors: Tree[] = [];\r\n\t\tlet p = t.parent;\r\n\t\twhile (p) {\r\n\t\t\tancestors.unshift(p); // insert at start\r\n\t\t\tp = p.parent;\r\n\t\t}\r\n\t\treturn ancestors;\r\n\t}\r\n\r\n\t/** Return true if t is u's parent or a node on path to root from u.\r\n\t * Use === not equals().\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static isAncestorOf(t: Tree, u: Tree): boolean {\r\n\t\tif (!t || !u || !t.parent) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tlet p = u.parent;\r\n\t\twhile (p) {\r\n\t\t\tif (t === p) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tp = p.parent;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic static findAllTokenNodes(t: ParseTree, ttype: number): ParseTree[] {\r\n\t\treturn Trees.findAllNodes(t, ttype, true);\r\n\t}\r\n\r\n\tpublic static findAllRuleNodes(t: ParseTree, ruleIndex: number): ParseTree[] {\r\n\t\treturn Trees.findAllNodes(t, ruleIndex, false);\r\n\t}\r\n\r\n\tpublic static findAllNodes(t: ParseTree, index: number, findTokens: boolean): ParseTree[] {\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tTrees._findAllNodes(t, index, findTokens, nodes);\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\tpublic static _findAllNodes(t: ParseTree, index: number, findTokens: boolean, nodes: ParseTree[]): void {\r\n\t\t// check this node (the root) first\r\n\t\tif (findTokens && t instanceof TerminalNode) {\r\n\t\t\tif (t.symbol.type === index) {\r\n\t\t\t\tnodes.push(t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (!findTokens && t instanceof ParserRuleContext) {\r\n\t\t\tif (t.ruleIndex === index) {\r\n\t\t\t\tnodes.push(t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// check children\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Get all descendents; includes t itself.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static getDescendants(t: ParseTree): ParseTree[] {\r\n\t\tlet nodes: ParseTree[] = [];\r\n\r\n\t\tfunction recurse(e: ParseTree): void {\r\n\t\t\tnodes.push(e);\r\n\t\t\tconst n = e.childCount;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\trecurse(e.getChild(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trecurse(t);\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\t/** Find smallest subtree of t enclosing range startTokenIndex..stopTokenIndex\r\n\t * inclusively using postorder traversal. Recursive depth-first-search.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic static getRootOfSubtreeEnclosingRegion(\r\n\t\t@NotNull t: ParseTree,\r\n\t\tstartTokenIndex: number, // inclusive\r\n\t\tstopTokenIndex: number, // inclusive\r\n\t): ParserRuleContext | undefined {\r\n\t\tlet n: number = t.childCount;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet child: ParseTree = t.getChild(i);\r\n\t\t\tlet r = Trees.getRootOfSubtreeEnclosingRegion(child, startTokenIndex, stopTokenIndex);\r\n\t\t\tif (r) {\r\n\t\t\t\treturn r;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (t instanceof ParserRuleContext) {\r\n\t\t\tlet stopToken = t.stop;\r\n\t\t\tif (startTokenIndex >= t.start.tokenIndex && // is range fully contained in t?\r\n\t\t\t\t(stopToken == null || stopTokenIndex <= stopToken.tokenIndex)) {\r\n\t\t\t\t// note: r.stop==null likely implies that we bailed out of parser and there's nothing to the right\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** Replace any subtree siblings of root that are completely to left\r\n\t * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,\"...\")\r\n\t * node. The source interval for t is not altered to suit smaller range!\r\n\t *\r\n\t * WARNING: destructive to t.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static stripChildrenOutOfRange(\r\n\t\tt: ParserRuleContext,\r\n\t\troot: ParserRuleContext,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number): void {\r\n\t\tif (!t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet count = t.childCount;\r\n\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\tlet child = t.getChild(i);\r\n\t\t\tlet range: Interval = child.sourceInterval;\r\n\t\t\tif (child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex)) {\r\n\t\t\t\tif (Trees.isAncestorOf(child, root)) { // replace only if subtree doesn't have displayed root\r\n\t\t\t\t\tlet abbrev: CommonToken = new CommonToken(Token.INVALID_TYPE, \"...\");\r\n\t\t\t\t\tt.children![i] = new TerminalNode(abbrev); // HACK access to private\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** Return first node satisfying the pred\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static findNodeSuchThat(t: ParseTree, pred: (tree: ParseTree) => boolean): ParseTree | undefined;\r\n\tpublic static findNodeSuchThat(t: Tree, pred: (tree: Tree) => boolean): Tree | undefined;\r\n\tpublic static findNodeSuchThat(t: Tree, pred: (tree: ParseTree) => boolean): Tree | undefined {\r\n\t\t// No type check needed as long as users only use one of the available overloads\r\n\t\tif (pred(t as ParseTree)) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\r\n\t\tlet n: number = t.childCount;\r\n\t\tfor (let i = 0 ; i < n ; i++){\r\n\t\t\tlet u = Trees.findNodeSuchThat(t.getChild(i), pred as (tree: Tree) => boolean);\r\n\t\t\tif (u !== undefined) {\r\n\t\t\t\treturn u;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.3490837-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { Parser } from \"./Parser\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleNode } from \"./tree/RuleNode\";\r\nimport { ParseTree } from \"./tree/ParseTree\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Trees } from \"./tree/Trees\";\r\nimport { ParseTreeVisitor } from \"./tree/ParseTreeVisitor\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** A rule context is a record of a single rule invocation.\r\n *\r\n * We form a stack of these context objects using the parent\r\n * pointer. A parent pointer of `undefined` indicates that the current\r\n * context is the bottom of the stack. The ParserRuleContext subclass\r\n * as a children list so that we can turn this data structure into a\r\n * tree.\r\n *\r\n * The root node always has a `undefined` pointer and invokingState of -1.\r\n *\r\n * Upon entry to parsing, the first invoked rule function creates a\r\n * context object (a subclass specialized for that rule such as\r\n * SContext) and makes it the root of a parse tree, recorded by field\r\n * Parser._ctx.\r\n *\r\n * public final SContext s() throws RecognitionException {\r\n * SContext _localctx = new SContext(_ctx, state); <-- create new node\r\n * enterRule(_localctx, 0, RULE_s); <-- push it\r\n * ...\r\n * exitRule(); <-- pop back to _localctx\r\n * return _localctx;\r\n * }\r\n *\r\n * A subsequent rule invocation of r from the start rule s pushes a\r\n * new context object for r whose parent points at s and use invoking\r\n * state is the state with r emanating as edge label.\r\n *\r\n * The invokingState fields from a context object to the root\r\n * together form a stack of rule indication states where the root\r\n * (bottom of the stack) has a -1 sentinel value. If we invoke start\r\n * symbol s then call r1, which calls r2, the would look like\r\n * this:\r\n *\r\n * SContext[-1] <- root node (bottom of the stack)\r\n * R1Context[p] <- p in rule s called r1\r\n * R2Context[q] <- q in rule r1 called r2\r\n *\r\n * So the top of the stack, _ctx, represents a call to the current\r\n * rule and it holds the return address from another rule that invoke\r\n * to this rule. To invoke a rule, we must always have a current context.\r\n *\r\n * The parent contexts are useful for computing lookahead sets and\r\n * getting error information.\r\n *\r\n * These objects are used during parsing and prediction.\r\n * For the special case of parsers, we use the subclass\r\n * ParserRuleContext.\r\n *\r\n * @see ParserRuleContext\r\n */\r\nexport class RuleContext extends RuleNode {\r\n\tpublic _parent: RuleContext | undefined;\r\n\tpublic invokingState: number;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: RuleContext | undefined, invokingState: number);\r\n\tconstructor(parent?: RuleContext, invokingState?: number) {\r\n\t\tsuper();\r\n\t\tthis._parent = parent;\r\n\t\tthis.invokingState = invokingState != null ? invokingState : -1;\r\n\t}\r\n\r\n\tpublic static getChildContext(parent: RuleContext, invokingState: number): RuleContext {\r\n\t\treturn new RuleContext(parent, invokingState);\r\n\t}\r\n\r\n\tpublic depth(): number {\r\n\t\tlet n = 0;\r\n\t\tlet p: RuleContext | undefined = this;\r\n\t\twhile (p) {\r\n\t\t\tp = p._parent;\r\n\t\t\tn++;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\t/** A context is empty if there is no invoking state; meaning nobody called\r\n\t * current context.\r\n\t */\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.invokingState === -1;\r\n\t}\r\n\r\n\t// satisfy the ParseTree / SyntaxTree interface\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\treturn Interval.INVALID;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleContext(): RuleContext { return this; }\r\n\r\n\t@Override\r\n\tget parent(): RuleContext | undefined { return this._parent; }\r\n\r\n\t/** @since 4.7. {@see ParseTree#setParent} comment */\r\n\t@Override\r\n\tpublic setParent(parent: RuleContext): void {\r\n\t\tthis._parent = parent;\r\n\t}\r\n\r\n\t@Override\r\n\tget payload(): RuleContext { return this; }\r\n\r\n\t/** Return the combined text of all child nodes. This method only considers\r\n\t * tokens which have been added to the parse tree.\r\n\t *\r\n\t * Since tokens on hidden channels (e.g. whitespace or comments) are not\r\n\t * added to the parse trees, they will not appear in the output of this\r\n\t * method.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this.childCount === 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet builder = \"\";\r\n\t\tfor (let i = 0; i < this.childCount; i++) {\r\n\t\t\tbuilder += this.getChild(i).text;\r\n\t\t}\r\n\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tget ruleIndex(): number { return -1; }\r\n\r\n\t/** For rule associated with this parse tree internal node, return\r\n\t * the outer alternative number used to match the input. Default\r\n\t * implementation does not compute nor store this alt num. Create\r\n\t * a subclass of ParserRuleContext with backing field and set\r\n\t * option contextSuperClass.\r\n\t * to set it.\r\n\t *\r\n\t * @since 4.5.3\r\n\t */\r\n\tget altNumber(): number { return ATN.INVALID_ALT_NUMBER; }\r\n\r\n\t/** Set the outer alternative number for this context node. Default\r\n\t * implementation does nothing to avoid backing field overhead for\r\n\t * trees that don't need it. Create\r\n\t * a subclass of ParserRuleContext with backing field and set\r\n\t * option contextSuperClass.\r\n\t *\r\n\t * @since 4.5.3\r\n\t */\r\n\tset altNumber(altNumber: number) {\r\n\t\t// intentionally ignored by the base implementation\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getChild(i: number): ParseTree {\r\n\t\tthrow new RangeError(\"i must be greater than or equal to 0 and less than childCount\");\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitChildren(this);\r\n\t}\r\n\r\n\t/** Print out a whole tree, not just a node, in LISP format\r\n\t * (root child1 .. childN). Print just a node if this is a leaf.\r\n\t * We have to know the recognizer so we can get rule names.\r\n\t */\r\n\tpublic toStringTree(recog: Parser): string;\r\n\r\n\t/** Print out a whole tree, not just a node, in LISP format\r\n\t * (root child1 .. childN). Print just a node if this is a leaf.\r\n\t */\r\n\tpublic toStringTree(ruleNames: string[] | undefined): string;\r\n\r\n\tpublic toStringTree(): string;\r\n\r\n\t@Override\r\n\tpublic toStringTree(recog?: Parser | string[]): string {\r\n\t\treturn Trees.toStringTree(this, recog);\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recog: Recognizer | undefined): string;\r\n\tpublic toString(ruleNames: string[] | undefined): string;\r\n\r\n\t// // recog undefined unless ParserRuleContext, in which case we use subclass toString(...)\r\n\tpublic toString(recog: Recognizer | undefined, stop: RuleContext | undefined): string;\r\n\r\n\tpublic toString(ruleNames: string[] | undefined, stop: RuleContext | undefined): string;\r\n\r\n\tpublic toString(\r\n\t\targ1?: Recognizer | string[],\r\n\t\tstop?: RuleContext)\r\n\t\t: string {\r\n\t\tconst ruleNames = (arg1 instanceof Recognizer) ? arg1.ruleNames : arg1;\r\n\t\tstop = stop || ParserRuleContext.emptyContext();\r\n\r\n\t\tlet buf = \"\";\r\n\t\tlet p: RuleContext | undefined = this;\r\n\t\tbuf += (\"[\");\r\n\t\twhile (p && p !== stop) {\r\n\t\t\tif (!ruleNames) {\r\n\t\t\t\tif (!p.isEmpty) {\r\n\t\t\t\t\tbuf += (p.invokingState);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlet ruleIndex: number = p.ruleIndex;\r\n\t\t\t\tlet ruleName: string = (ruleIndex >= 0 && ruleIndex < ruleNames.length)\r\n\t\t\t\t\t? ruleNames[ruleIndex] : ruleIndex.toString();\r\n\t\t\t\tbuf += (ruleName);\r\n\t\t\t}\r\n\r\n\t\t\tif (p._parent && (ruleNames || !p._parent.isEmpty)) {\r\n\t\t\t\tbuf += (\" \");\r\n\t\t\t}\r\n\r\n\t\t\tp = p._parent;\r\n\t\t}\r\n\r\n\t\tbuf += (\"]\");\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.6285494-07:00\r\nimport { ErrorNode } from \"./tree/ErrorNode\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParseTree } from \"./tree/ParseTree\";\r\nimport { ParseTreeListener } from \"./tree/ParseTreeListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { TerminalNode } from \"./tree/TerminalNode\";\r\nimport { Token } from \"./Token\";\r\n\r\n/** A rule invocation record for parsing.\r\n *\r\n * Contains all of the information about the current rule not stored in the\r\n * RuleContext. It handles parse tree children list, Any ATN state\r\n * tracing, and the default values available for rule invocations:\r\n * start, stop, rule index, current alt number.\r\n *\r\n * Subclasses made for each rule and grammar track the parameters,\r\n * return values, locals, and labels specific to that rule. These\r\n * are the objects that are returned from rules.\r\n *\r\n * Note text is not an actual field of a rule return value; it is computed\r\n * from start and stop using the input stream's toString() method. I\r\n * could add a ctor to this so that we can pass in and store the input\r\n * stream, but I'm not sure we want to do that. It would seem to be undefined\r\n * to get the .text property anyway if the rule matches tokens from multiple\r\n * input streams.\r\n *\r\n * I do not use getters for fields of objects that are used simply to\r\n * group values such as this aggregate. The getters/setters are there to\r\n * satisfy the superclass interface.\r\n */\r\nexport class ParserRuleContext extends RuleContext {\r\n\tprivate static readonly EMPTY: ParserRuleContext = new ParserRuleContext();\r\n\r\n\t/** If we are debugging or building a parse tree for a visitor,\r\n\t * we need to track all of the tokens and rule invocations associated\r\n\t * with this rule's context. This is empty for parsing w/o tree constr.\r\n\t * operation because we don't the need to track the details about\r\n\t * how we parse this rule.\r\n\t */\r\n\tpublic children?: ParseTree[];\r\n\r\n\t/** For debugging/tracing purposes, we want to track all of the nodes in\r\n\t * the ATN traversed by the parser for a particular rule.\r\n\t * This list indicates the sequence of ATN nodes used to match\r\n\t * the elements of the children list. This list does not include\r\n\t * ATN nodes and other rules used to match rule invocations. It\r\n\t * traces the rule invocation node itself but nothing inside that\r\n\t * other rule's ATN submachine.\r\n\t *\r\n\t * There is NOT a one-to-one correspondence between the children and\r\n\t * states list. There are typically many nodes in the ATN traversed\r\n\t * for each element in the children list. For example, for a rule\r\n\t * invocation there is the invoking state and the following state.\r\n\t *\r\n\t * The parser state property updates field s and adds it to this list\r\n\t * if we are debugging/tracing.\r\n\t *\r\n\t * This does not trace states visited during prediction.\r\n\t */\r\n//\tpublic Array states;\r\n\r\n\tpublic _start!: Token;\r\n\tpublic _stop: Token | undefined;\r\n\r\n\t/**\r\n\t * The exception that forced this rule to return. If the rule successfully\r\n\t * completed, this is `undefined`.\r\n\t */\r\n\tpublic exception?: RecognitionException;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\tconstructor(parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber == null) {\r\n\t\t\tsuper();\r\n\t\t} else {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static emptyContext(): ParserRuleContext {\r\n\t\treturn ParserRuleContext.EMPTY;\r\n\t}\r\n\r\n\t/**\r\n\t * COPY a ctx (I'm deliberately not using copy constructor) to avoid\r\n\t * confusion with creating node with parent. Does not copy children\r\n\t * (except error leaves).\r\n\t *\r\n\t * This is used in the generated parser code to flip a generic XContext\r\n\t * node for rule X to a YContext for alt label Y. In that sense, it is not\r\n\t * really a generic copy function.\r\n\t *\r\n\t * If we do an error sync() at start of a rule, we might add error nodes\r\n\t * to the generic XContext so this function must copy those nodes to the\r\n\t * YContext as well else they are lost!\r\n\t */\r\n\tpublic copyFrom(ctx: ParserRuleContext): void {\r\n\t\tthis._parent = ctx._parent;\r\n\t\tthis.invokingState = ctx.invokingState;\r\n\r\n\t\tthis._start = ctx._start;\r\n\t\tthis._stop = ctx._stop;\r\n\r\n\t\t// copy any error nodes to alt label node\r\n\t\tif (ctx.children) {\r\n\t\t\tthis.children = [];\r\n\t\t\t// reset parent pointer for any error nodes\r\n\t\t\tfor (let child of ctx.children) {\r\n\t\t\t\tif (child instanceof ErrorNode) {\r\n\t\t\t\t\tthis.addChild(child);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Double dispatch methods for listeners\r\n\r\n\tpublic enterRule(listener: ParseTreeListener): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\tpublic exitRule(listener: ParseTreeListener): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/** Add a parse tree node to this as a child. Works for\r\n\t * internal and leaf nodes. Does not set parent link;\r\n\t * other add methods must do that. Other addChild methods\r\n\t * call this.\r\n\t *\r\n\t * We cannot set the parent pointer of the incoming node\r\n\t * because the existing interfaces do not have a setParent()\r\n\t * method and I don't want to break backward compatibility for this.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic addAnyChild(t: T): T {\r\n\t\tif (!this.children) {\r\n\t\t\tthis.children = [t];\r\n\t\t} else {\r\n\t\t\tthis.children.push(t);\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/** Add a token leaf node child and force its parent to be this node. */\r\n\tpublic addChild(t: TerminalNode): void;\r\n\tpublic addChild(ruleInvocation: RuleContext): void;\r\n\t/**\r\n\t * Add a child to this node based upon matchedToken. It\r\n\t * creates a TerminalNodeImpl rather than using\r\n\t * {@link Parser#createTerminalNode(ParserRuleContext, Token)}. I'm leaving this\r\n\t * in for compatibility but the parser doesn't use this anymore.\r\n\t *\r\n\t * @deprecated Use another overload instead.\r\n\t */\r\n\tpublic addChild(matchedToken: Token): TerminalNode;\r\n\tpublic addChild(t: TerminalNode | RuleContext | Token): TerminalNode | void {\r\n\t\tlet result: TerminalNode | void;\r\n\t\tif (t instanceof TerminalNode) {\r\n\t\t\tt.setParent(this);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\treturn;\r\n\t\t} else if (t instanceof RuleContext) {\r\n\t\t\t// Does not set parent link\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\t// Deprecated code path\r\n\t\t\tt = new TerminalNode(t);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\tt.setParent(this);\r\n\t\t\treturn t;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Add an error node child and force its parent to be this node.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic addErrorNode(errorNode: ErrorNode): ErrorNode;\r\n\r\n\t/**\r\n\t * Add a child to this node based upon badToken. It\r\n\t * creates a ErrorNode rather than using\r\n\t * {@link Parser#createErrorNode(ParserRuleContext, Token)}. I'm leaving this\r\n\t * in for compatibility but the parser doesn't use this anymore.\r\n\t *\r\n\t * @deprecated Use another overload instead.\r\n\t */\r\n\tpublic addErrorNode(badToken: Token): ErrorNode;\r\n\tpublic addErrorNode(node: ErrorNode | Token): ErrorNode {\r\n\t\tif (node instanceof ErrorNode) {\r\n\t\t\tconst errorNode: ErrorNode = node;\r\n\t\t\terrorNode.setParent(this);\r\n\t\t\treturn this.addAnyChild(errorNode);\r\n\t\t} else {\r\n\t\t\t// deprecated path\r\n\t\t\tconst badToken: Token = node;\r\n\t\t\tlet t = new ErrorNode(badToken);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\tt.setParent(this);\r\n\t\t\treturn t;\r\n\t\t}\r\n\t}\r\n\r\n//\tpublic void trace(int s) {\r\n//\t\tif ( states==null ) states = new ArrayList();\r\n//\t\tstates.add(s);\r\n//\t}\r\n\r\n\t/** Used by enterOuterAlt to toss out a RuleContext previously added as\r\n\t * we entered a rule. If we have # label, we will need to remove\r\n\t * generic ruleContext object.\r\n\t */\r\n\tpublic removeLastChild(): void {\r\n\t\tif (this.children) {\r\n\t\t\tthis.children.pop();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\t/** Override to make type more specific */\r\n\tget parent(): ParserRuleContext | undefined {\r\n\t\tlet parent = super.parent;\r\n\t\tif (parent === undefined || parent instanceof ParserRuleContext) {\r\n\t\t\treturn parent;\r\n\t\t}\r\n\r\n\t\tthrow new TypeError(\"Invalid parent type for ParserRuleContext\");\r\n\t}\r\n\r\n\tpublic getChild(i: number): ParseTree;\r\n\tpublic getChild(i: number, ctxType: { new (...args: any[]): T; }): T;\r\n\t// Note: in TypeScript, order or arguments reversed\r\n\tpublic getChild(i: number, ctxType?: { new (...args: any[]): T; }): ParseTree {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\tthrow new RangeError(\"index parameter must be between >= 0 and <= number of children.\");\r\n\t\t}\r\n\r\n\t\tif (ctxType == null) {\r\n\t\t\treturn this.children[i];\r\n\t\t}\r\n\r\n\t\tlet result = this.tryGetChild(i, ctxType);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new Error(\"The specified node does not exist\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryGetChild(i: number, ctxType: { new (...args: any[]): T; }): T | undefined {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet j: number = -1; // what node with ctxType have we found?\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof ctxType) {\r\n\t\t\t\tj++;\r\n\t\t\t\tif (j === i) {\r\n\t\t\t\t\treturn o;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic getToken(ttype: number, i: number): TerminalNode {\r\n\t\tlet result = this.tryGetToken(ttype, i);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new Error(\"The specified token does not exist\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryGetToken(ttype: number, i: number): TerminalNode | undefined {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet j: number = -1; // what token with ttype have we found?\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof TerminalNode) {\r\n\t\t\t\tlet symbol: Token = o.symbol;\r\n\t\t\t\tif (symbol.type === ttype) {\r\n\t\t\t\t\tj++;\r\n\t\t\t\t\tif (j === i) {\r\n\t\t\t\t\t\treturn o;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic getTokens(ttype: number): TerminalNode[] {\r\n\t\tlet tokens: TerminalNode[] = [];\r\n\r\n\t\tif (!this.children) {\r\n\t\t\treturn tokens;\r\n\t\t}\r\n\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof TerminalNode) {\r\n\t\t\t\tlet symbol = o.symbol;\r\n\t\t\t\tif (symbol.type === ttype) {\r\n\t\t\t\t\ttokens.push(o);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\tget ruleContext(): this {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// NOTE: argument order change from Java version\r\n\tpublic getRuleContext(i: number, ctxType: { new (...args: any[]): T; }): T {\r\n\t\treturn this.getChild(i, ctxType);\r\n\t}\r\n\r\n\tpublic tryGetRuleContext(i: number, ctxType: { new (...args: any[]): T; }): T | undefined {\r\n\t\treturn this.tryGetChild(i, ctxType);\r\n\t}\r\n\r\n\tpublic getRuleContexts(ctxType: { new (...args: any[]): T; }): T[] {\r\n\t\tlet contexts: T[] = [];\r\n\t\tif (!this.children) {\r\n\t\t\treturn contexts;\r\n\t\t}\r\n\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof ctxType) {\r\n\t\t\t\tcontexts.push(o);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn contexts;\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount() {\r\n\t\treturn this.children ? this.children.length : 0;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\tif (!this._start) {\r\n\t\t\treturn Interval.INVALID;\r\n\t\t}\r\n\t\tif (!this._stop || this._stop.tokenIndex < this._start.tokenIndex) {\r\n\t\t\treturn Interval.of(this._start.tokenIndex, this._start.tokenIndex - 1); // empty\r\n\t\t}\r\n\t\treturn Interval.of(this._start.tokenIndex, this._stop.tokenIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the initial token in this context.\r\n\t * Note that the range from start to stop is inclusive, so for rules that do not consume anything\r\n\t * (for example, zero length or error productions) this token may exceed stop.\r\n\t */\r\n\tget start(): Token { return this._start; }\r\n\t/**\r\n\t * Get the final token in this context.\r\n\t * Note that the range from start to stop is inclusive, so for rules that do not consume anything\r\n\t * (for example, zero length or error productions) this token may precede start.\r\n\t */\r\n\tget stop(): Token | undefined { return this._stop; }\r\n\r\n\t/** Used for rule context info debugging during parse-time, not so much for ATN debugging */\r\n\tpublic toInfoString(recognizer: Parser): string {\r\n\t\tlet rules: string[] =\r\n\t\t\trecognizer.getRuleInvocationStack(this).reverse();\r\n\t\treturn \"ParserRuleContext\" + rules + \"{\" +\r\n\t\t\t\"start=\" + this._start +\r\n\t\t\t\", stop=\" + this._stop +\r\n\t\t\t\"}\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.2673893-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\n/**\r\n * This enumeration defines the prediction modes available in ANTLR 4 along with\r\n * utility methods for analyzing configuration sets for conflicts and/or\r\n * ambiguities.\r\n */\r\nexport enum PredictionMode {\r\n\t/**\r\n\t * The SLL(*) prediction mode. This prediction mode ignores the current\r\n\t * parser context when making predictions. This is the fastest prediction\r\n\t * mode, and provides correct results for many grammars. This prediction\r\n\t * mode is more powerful than the prediction mode provided by ANTLR 3, but\r\n\t * may result in syntax errors for grammar and input combinations which are\r\n\t * not SLL.\r\n\t *\r\n\t * When using this prediction mode, the parser will either return a correct\r\n\t * parse tree (i.e. the same parse tree that would be returned with the\r\n\t * {@link #LL} prediction mode), or it will report a syntax error. If a\r\n\t * syntax error is encountered when using the {@link #SLL} prediction mode,\r\n\t * it may be due to either an actual syntax error in the input or indicate\r\n\t * that the particular combination of grammar and input requires the more\r\n\t * powerful {@link #LL} prediction abilities to complete successfully.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tSLL,\r\n\t/**\r\n\t * The LL(*) prediction mode. This prediction mode allows the current parser\r\n\t * context to be used for resolving SLL conflicts that occur during\r\n\t * prediction. This is the fastest prediction mode that guarantees correct\r\n\t * parse results for all combinations of grammars with syntactically correct\r\n\t * inputs.\r\n\t *\r\n\t * When using this prediction mode, the parser will make correct decisions\r\n\t * for all syntactically-correct grammar and input combinations. However, in\r\n\t * cases where the grammar is truly ambiguous this prediction mode might not\r\n\t * report a precise answer for *exactly which* alternatives are\r\n\t * ambiguous.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tLL,\r\n\t/**\r\n\t * The LL(*) prediction mode with exact ambiguity detection. In addition to\r\n\t * the correctness guarantees provided by the {@link #LL} prediction mode,\r\n\t * this prediction mode instructs the prediction algorithm to determine the\r\n\t * complete and exact set of ambiguous alternatives for every ambiguous\r\n\t * decision encountered while parsing.\r\n\t *\r\n\t * This prediction mode may be used for diagnosing ambiguities during\r\n\t * grammar development. Due to the performance overhead of calculating sets\r\n\t * of ambiguous alternatives, this prediction mode should be avoided when\r\n\t * the exact results are not necessary.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tLL_EXACT_AMBIG_DETECTION,\r\n}\r\n\r\nexport namespace PredictionMode {\r\n\t/** A Map that uses just the state and the stack context as the key. */\r\n\t// NOTE: Base type used to be FlexibleHashMap\r\n\tclass AltAndContextMap extends Array2DHashMap {\r\n\t\tconstructor() {\r\n\t\t\tsuper(AltAndContextConfigEqualityComparator.INSTANCE);\r\n\t\t}\r\n\t}\r\n\r\n\tclass AltAndContextConfigEqualityComparator implements EqualityComparator {\r\n\t\tpublic static readonly INSTANCE: AltAndContextConfigEqualityComparator = new AltAndContextConfigEqualityComparator();\r\n\r\n\t\tprivate AltAndContextConfigEqualityComparator() {\r\n\t\t\t// intentionally empty\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The hash code is only a function of the {@link ATNState#stateNumber}\r\n\t\t * and {@link ATNConfig#context}.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic hashCode(o: ATNConfig): number {\r\n\t\t\tlet hashCode: number = MurmurHash.initialize(7);\r\n\t\t\thashCode = MurmurHash.update(hashCode, o.state.stateNumber);\r\n\t\t\thashCode = MurmurHash.update(hashCode, o.context);\r\n\t\t\thashCode = MurmurHash.finish(hashCode, 2);\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(a: ATNConfig, b: ATNConfig): boolean {\r\n\t\t\tif (a === b) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (a == null || b == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn a.state.stateNumber === b.state.stateNumber\r\n\t\t\t\t&& a.context.equals(b.context);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if any configuration in `configs` is in a\r\n\t * {@link RuleStopState}. Configurations meeting this condition have reached\r\n\t * the end of the decision rule (local context) or end of start rule (full\r\n\t * context).\r\n\t *\r\n\t * @param configs the configuration set to test\r\n\t * @returns `true` if any configuration in `configs` is in a\r\n\t * {@link RuleStopState}, otherwise `false`\r\n\t */\r\n\texport function hasConfigInRuleStopState(configs: ATNConfigSet): boolean {\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all configurations in `configs` are in a\r\n\t * {@link RuleStopState}. Configurations meeting this condition have reached\r\n\t * the end of the decision rule (local context) or end of start rule (full\r\n\t * context).\r\n\t *\r\n\t * @param configs the configuration set to test\r\n\t * @returns `true` if all configurations in `configs` are in a\r\n\t * {@link RuleStopState}, otherwise `false`\r\n\t */\r\n\texport function allConfigsInRuleStopStates(/*@NotNull*/ configs: ATNConfigSet): boolean {\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (!(config.state instanceof RuleStopState)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.3871984-07:00\r\n\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class SimulatorState {\r\n\tpublic outerContext: ParserRuleContext;\r\n\r\n\tpublic s0: DFAState;\r\n\r\n\tpublic useContext: boolean;\r\n\tpublic remainingOuterContext: ParserRuleContext | undefined;\r\n\r\n\tconstructor(outerContext: ParserRuleContext, @NotNull s0: DFAState, useContext: boolean, remainingOuterContext: ParserRuleContext | undefined) {\r\n\t\tthis.outerContext = outerContext != null ? outerContext : ParserRuleContext.emptyContext();\r\n\t\tthis.s0 = s0;\r\n\t\tthis.useContext = useContext;\r\n\t\tthis.remainingOuterContext = remainingOuterContext;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:31.1989835-07:00\r\n\r\nimport { AcceptStateInfo } from \"../dfa/AcceptStateInfo\";\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { AtomTransition } from \"./AtomTransition\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ConflictInfo } from \"./ConflictInfo\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { EpsilonTransition } from \"./EpsilonTransition\";\r\nimport { IntegerList } from \"../misc/IntegerList\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntStream } from \"../IntStream\";\r\nimport { NotNull, Nullable, Override } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { NoViableAltException } from \"../NoViableAltException\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { PrecedencePredicateTransition } from \"./PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { PredictionMode } from \"./PredictionMode\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokenStream } from \"../TokenStream\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\nconst MAX_SHORT_VALUE = 0xFFFF;\r\nconst MIN_INTEGER_VALUE = -((1 << 31) >>> 0);\r\n\r\n/**\r\n * The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\r\n *\r\n * The basic complexity of the adaptive strategy makes it harder to understand.\r\n * We begin with ATN simulation to build paths in a DFA. Subsequent prediction\r\n * requests go through the DFA first. If they reach a state without an edge for\r\n * the current symbol, the algorithm fails over to the ATN simulation to\r\n * complete the DFA path for the current input (until it finds a conflict state\r\n * or uniquely predicting state).\r\n *\r\n * All of that is done without using the outer context because we want to create\r\n * a DFA that is not dependent upon the rule invocation stack when we do a\r\n * prediction. One DFA works in all contexts. We avoid using context not\r\n * necessarily because it's slower, although it can be, but because of the DFA\r\n * caching problem. The closure routine only considers the rule invocation stack\r\n * created during prediction beginning in the decision rule. For example, if\r\n * prediction occurs without invoking another rule's ATN, there are no context\r\n * stacks in the configurations. When lack of context leads to a conflict, we\r\n * don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\r\n * strategy (versus full LL(*)).\r\n *\r\n * When SLL yields a configuration set with conflict, we rewind the input and\r\n * retry the ATN simulation, this time using full outer context without adding\r\n * to the DFA. Configuration context stacks will be the full invocation stacks\r\n * from the start rule. If we get a conflict using full context, then we can\r\n * definitively say we have a true ambiguity for that input sequence. If we\r\n * don't get a conflict, it implies that the decision is sensitive to the outer\r\n * context. (It is not context-sensitive in the sense of context-sensitive\r\n * grammars.)\r\n *\r\n * The next time we reach this DFA state with an SLL conflict, through DFA\r\n * simulation, we will again retry the ATN simulation using full context mode.\r\n * This is slow because we can't save the results and have to \"interpret\" the\r\n * ATN each time we get that input.\r\n *\r\n * **CACHING FULL CONTEXT PREDICTIONS**\r\n *\r\n * We could cache results from full context to predicted alternative easily and\r\n * that saves a lot of time but doesn't work in presence of predicates. The set\r\n * of visible predicates from the ATN start state changes depending on the\r\n * context, because closure can fall off the end of a rule. I tried to cache\r\n * tuples (stack context, semantic context, predicted alt) but it was slower\r\n * than interpreting and much more complicated. Also required a huge amount of\r\n * memory. The goal is not to create the world's fastest parser anyway. I'd like\r\n * to keep this algorithm simple. By launching multiple threads, we can improve\r\n * the speed of parsing across a large number of files.\r\n *\r\n * There is no strict ordering between the amount of input used by SLL vs LL,\r\n * which makes it really hard to build a cache for full context. Let's say that\r\n * we have input A B C that leads to an SLL conflict with full context X. That\r\n * implies that using X we might only use A B but we could also use A B C D to\r\n * resolve conflict. Input A B C D could predict alternative 1 in one position\r\n * in the input and A B C E could predict alternative 2 in another position in\r\n * input. The conflicting SLL configurations could still be non-unique in the\r\n * full context prediction, which would lead us to requiring more input than the\r\n * original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\r\n * input\tused during the previous prediction. That amounts to a cache that maps\r\n * X to a specific DFA for that context.\r\n *\r\n * Something should be done for left-recursive expression predictions. They are\r\n * likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\r\n * with full LL thing Sam does.\r\n *\r\n * **AVOIDING FULL CONTEXT PREDICTION**\r\n *\r\n * We avoid doing full context retry when the outer context is empty, we did not\r\n * dip into the outer context by falling off the end of the decision state rule,\r\n * or when we force SLL mode.\r\n *\r\n * As an example of the not dip into outer context case, consider as super\r\n * constructor calls versus function calls. One grammar might look like\r\n * this:\r\n *\r\n * ```antlr\r\n * ctorBody\r\n * : '{' superCall? stat* '}'\r\n * ;\r\n * ```\r\n *\r\n * Or, you might see something like\r\n *\r\n * ```antlr\r\n * stat\r\n * : superCall ';'\r\n * | expression ';'\r\n * | ...\r\n * ;\r\n * ```\r\n *\r\n * In both cases I believe that no closure operations will dip into the outer\r\n * context. In the first case ctorBody in the worst case will stop at the '}'.\r\n * In the 2nd case it should stop at the ';'. Both cases should stay within the\r\n * entry rule and not dip into the outer context.\r\n *\r\n * **PREDICATES**\r\n *\r\n * Predicates are always evaluated if present in either SLL or LL both. SLL and\r\n * LL simulation deals with predicates differently. SLL collects predicates as\r\n * it performs closure operations like ANTLR v3 did. It delays predicate\r\n * evaluation until it reaches and accept state. This allows us to cache the SLL\r\n * ATN simulation whereas, if we had evaluated predicates on-the-fly during\r\n * closure, the DFA state configuration sets would be different and we couldn't\r\n * build up a suitable DFA.\r\n *\r\n * When building a DFA accept state during ATN simulation, we evaluate any\r\n * predicates and return the sole semantically valid alternative. If there is\r\n * more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\r\n * we throw an exception. Alternatives without predicates act like they have\r\n * true predicates. The simple way to think about it is to strip away all\r\n * alternatives with false predicates and choose the minimum alternative that\r\n * remains.\r\n *\r\n * When we start in the DFA and reach an accept state that's predicated, we test\r\n * those and return the minimum semantically viable alternative. If no\r\n * alternatives are viable, we throw an exception.\r\n *\r\n * During full LL ATN simulation, closure always evaluates predicates and\r\n * on-the-fly. This is crucial to reducing the configuration set size during\r\n * closure. It hits a landmine when parsing with the Java grammar, for example,\r\n * without this on-the-fly evaluation.\r\n *\r\n * **SHARING DFA**\r\n *\r\n * All instances of the same parser share the same decision DFAs through a\r\n * static field. Each instance gets its own ATN simulator but they share the\r\n * same {@link ATN#decisionToDFA} field. They also share a\r\n * {@link PredictionContextCache} object that makes sure that all\r\n * {@link PredictionContext} objects are shared among the DFA states. This makes\r\n * a big size difference.\r\n *\r\n * **THREAD SAFETY**\r\n *\r\n * The {@link ParserATNSimulator} locks on the {@link ATN#decisionToDFA} field when\r\n * it adds a new DFA object to that array. {@link #addDFAEdge}\r\n * locks on the DFA for the current decision when setting the\r\n * {@link DFAState#edges} field. {@link #addDFAState} locks on\r\n * the DFA for the current decision when looking up a DFA state to see if it\r\n * already exists. We must make sure that all requests to add DFA states that\r\n * are equivalent result in the same shared DFA object. This is because lots of\r\n * threads will be trying to update the DFA at once. The\r\n * {@link #addDFAState} method also locks inside the DFA lock\r\n * but this time on the shared context cache when it rebuilds the\r\n * configurations' {@link PredictionContext} objects using cached\r\n * subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\r\n * safe as long as we can guarantee that all threads referencing\r\n * `s.edge[t]` get the same physical target {@link DFAState}, or\r\n * `undefined`. Once into the DFA, the DFA simulation does not reference the\r\n * {@link DFA#states} map. It follows the {@link DFAState#edges} field to new\r\n * targets. The DFA simulator will either find {@link DFAState#edges} to be\r\n * `undefined`, to be non-`undefined` and `dfa.edges[t]` undefined, or\r\n * `dfa.edges[t]` to be non-undefined. The\r\n * {@link #addDFAEdge} method could be racing to set the field\r\n * but in either case the DFA simulator works; if `undefined`, and requests ATN\r\n * simulation. It could also race trying to get `dfa.edges[t]`, but either\r\n * way it will work because it's not doing a test and set operation.\r\n *\r\n * **Starting with SLL then failing to combined SLL/LL (Two-Stage\r\n * Parsing)**\r\n *\r\n * Sam pointed out that if SLL does not give a syntax error, then there is no\r\n * point in doing full LL, which is slower. We only have to try LL if we get a\r\n * syntax error. For maximum speed, Sam starts the parser set to pure SLL\r\n * mode with the {@link BailErrorStrategy}:\r\n *\r\n * ```\r\n * parser.interpreter.{@link #setPredictionMode setPredictionMode}`(`{@link PredictionMode#SLL}`)`;\r\n * parser.{@link Parser#setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\r\n * ```\r\n *\r\n * If it does not get a syntax error, then we're done. If it does get a syntax\r\n * error, we need to retry with the combined SLL/LL strategy.\r\n *\r\n * The reason this works is as follows. If there are no SLL conflicts, then the\r\n * grammar is SLL (at least for that input set). If there is an SLL conflict,\r\n * the full LL analysis must yield a set of viable alternatives which is a\r\n * subset of the alternatives reported by SLL. If the LL set is a singleton,\r\n * then the grammar is LL but not SLL. If the LL set is the same size as the SLL\r\n * set, the decision is SLL. If the LL set has size > 1, then that decision\r\n * is truly ambiguous on the current input. If the LL set is smaller, then the\r\n * SLL conflict resolution might choose an alternative that the full LL would\r\n * rule out as a possibility based upon better context information. If that's\r\n * the case, then the SLL parse will definitely get an error because the full LL\r\n * analysis says it's not viable. If SLL conflict resolution chooses an\r\n * alternative within the LL set, them both SLL and LL would choose the same\r\n * alternative because they both choose the minimum of multiple conflicting\r\n * alternatives.\r\n *\r\n * Let's say we have a set of SLL conflicting alternatives `{1, 2, 3}` and\r\n * a smaller LL set called *s*. If *s* is `{2, 3}`, then SLL\r\n * parsing will get an error because SLL will pursue alternative 1. If\r\n * *s* is `{1, 2}` or `{1, 3}` then both SLL and LL will\r\n * choose the same alternative because alternative one is the minimum of either\r\n * set. If *s* is `{2}` or `{3}` then SLL will get a syntax\r\n * error. If *s* is `{1}` then SLL will succeed.\r\n *\r\n * Of course, if the input is invalid, then we will get an error for sure in\r\n * both SLL and LL parsing. Erroneous input will therefore require 2 passes over\r\n * the input.\r\n */\r\nexport class ParserATNSimulator extends ATNSimulator {\r\n\tpublic static debug: boolean = false;\r\n\tpublic static dfa_debug: boolean = false;\r\n\tpublic static retry_debug: boolean = false;\r\n\r\n\t@NotNull\r\n\tprivate predictionMode: PredictionMode = PredictionMode.LL;\r\n\tpublic force_global_context: boolean = false;\r\n\tpublic always_try_local_context: boolean = true;\r\n\r\n\t/**\r\n\t * Determines whether the DFA is used for full-context predictions. When\r\n\t * `true`, the DFA stores transition information for both full-context\r\n\t * and SLL parsing; otherwise, the DFA only stores SLL transition\r\n\t * information.\r\n\t *\r\n\t * For some grammars, enabling the full-context DFA can result in a\r\n\t * substantial performance improvement. However, this improvement typically\r\n\t * comes at the expense of memory used for storing the cached DFA states,\r\n\t * configuration sets, and prediction contexts.\r\n\t *\r\n\t * The default value is `false`.\r\n\t */\r\n\tpublic enable_global_context_dfa: boolean = false;\r\n\tpublic optimize_unique_closure: boolean = true;\r\n\tpublic optimize_ll1: boolean = true;\r\n\tpublic optimize_tail_calls: boolean = true;\r\n\tpublic tail_call_preserves_sll: boolean = true;\r\n\tpublic treat_sllk1_conflict_as_ambiguity: boolean = false;\r\n\r\n\tprotected _parser: Parser;\r\n\r\n\t/**\r\n\t * When `true`, ambiguous alternatives are reported when they are\r\n\t * encountered within {@link #execATN}. When `false`, these messages\r\n\t * are suppressed. The default is `false`.\r\n\t *\r\n\t * When messages about ambiguous alternatives are not required, setting this\r\n\t * to `false` enables additional internal optimizations which may lose\r\n\t * this information.\r\n\t */\r\n\tpublic reportAmbiguities: boolean = false;\r\n\r\n\t/** By default we do full context-sensitive LL(*) parsing not\r\n\t * Strong LL(*) parsing. If we fail with Strong LL(*) we\r\n\t * try full LL(*). That means we rewind and use context information\r\n\t * when closure operations fall off the end of the rule that\r\n\t * holds the decision were evaluating.\r\n\t */\r\n\tprotected userWantsCtxSensitive: boolean = true;\r\n\r\n\tprivate dfa?: DFA;\r\n\r\n\tconstructor(@NotNull atn: ATN, parser: Parser) {\r\n\t\tsuper(atn);\r\n\t\tthis._parser = parser;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getPredictionMode(): PredictionMode {\r\n\t\treturn this.predictionMode;\r\n\t}\r\n\r\n\tpublic setPredictionMode(@NotNull predictionMode: PredictionMode): void {\r\n\t\tthis.predictionMode = predictionMode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined): number;\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined, useContext: boolean): number;\r\n\tpublic adaptivePredict(\r\n\t\t@NotNull input: TokenStream,\r\n\t\tdecision: number,\r\n\t\touterContext: ParserRuleContext | undefined,\r\n\t\tuseContext?: boolean): number {\r\n\t\tif (useContext === undefined) {\r\n\t\t\tuseContext = false;\r\n\t\t}\r\n\r\n\t\tlet dfa: DFA = this.atn.decisionToDFA[decision];\r\n\t\tassert(dfa != null);\r\n\t\tif (this.optimize_ll1 && !dfa.isPrecedenceDfa && !dfa.isEmpty) {\r\n\t\t\tlet ll_1: number = input.LA(1);\r\n\t\t\tif (ll_1 >= 0 && ll_1 <= 0xFFFF) {\r\n\t\t\t\tlet key: number = ((decision << 16) >>> 0) + ll_1;\r\n\t\t\t\tlet alt: number | undefined = this.atn.LL1Table.get(key);\r\n\t\t\t\tif (alt != null) {\r\n\t\t\t\t\treturn alt;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dfa = dfa;\r\n\r\n\t\tif (this.force_global_context) {\r\n\t\t\tuseContext = true;\r\n\t\t}\r\n\t\telse if (!this.always_try_local_context) {\r\n\t\t\tuseContext = useContext || dfa.isContextSensitive;\r\n\t\t}\r\n\r\n\t\tthis.userWantsCtxSensitive = useContext || (this.predictionMode !== PredictionMode.SLL && outerContext != null && !this.atn.decisionToState[decision].sll);\r\n\t\tif (outerContext == null) {\r\n\t\t\touterContext = ParserRuleContext.emptyContext();\r\n\t\t}\r\n\r\n\t\tlet state: SimulatorState | undefined;\r\n\t\tif (!dfa.isEmpty) {\r\n\t\t\tstate = this.getStartState(dfa, input, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\tif (state == null) {\r\n\t\t\tif (outerContext == null) {\r\n\t\t\t\touterContext = ParserRuleContext.emptyContext();\r\n\t\t\t}\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"ATN decision \" + dfa.decision +\r\n\t\t\t\t\t\" exec LA(1)==\" + this.getLookaheadName(input) +\r\n\t\t\t\t\t\", outerContext=\" + outerContext.toString(this._parser));\r\n\t\t\t}\r\n\r\n\t\t\tstate = this.computeStartState(dfa, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\tlet m: number = input.mark();\r\n\t\tlet index: number = input.index;\r\n\t\ttry {\r\n\t\t\tlet alt: number = this.execDFA(dfa, input, index, state);\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"DFA after predictATN: \" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t\t}\r\n\t\t\treturn alt;\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.dfa = undefined;\r\n\t\t\tinput.seek(index);\r\n\t\t\tinput.release(m);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getStartState(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream,\r\n\t\t@NotNull outerContext: ParserRuleContext,\r\n\t\tuseContext: boolean): SimulatorState | undefined {\r\n\r\n\t\tif (!useContext) {\r\n\t\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\t\t// the start state for a precedence DFA depends on the current\r\n\t\t\t\t// parser precedence, and is provided by a DFA method.\r\n\t\t\t\tlet state: DFAState | undefined = dfa.getPrecedenceStartState(this._parser.precedence, false);\r\n\t\t\t\tif (state == null) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn new SimulatorState(outerContext, state, false, outerContext);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (dfa.s0 == null) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn new SimulatorState(outerContext, dfa.s0, false, outerContext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.enable_global_context_dfa) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet remainingContext: ParserRuleContext | undefined = outerContext;\r\n\t\tassert(outerContext != null);\r\n\t\tlet s0: DFAState | undefined;\r\n\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\ts0 = dfa.getPrecedenceStartState(this._parser.precedence, true);\r\n\t\t}\r\n\t\telse {\r\n\t\t\ts0 = dfa.s0full;\r\n\t\t}\r\n\r\n\t\twhile (remainingContext != null && s0 != null && s0.isContextSensitive) {\r\n\t\t\tremainingContext = this.skipTailCalls(remainingContext);\r\n\t\t\ts0 = s0.getContextTarget(this.getReturnState(remainingContext));\r\n\t\t\tif (remainingContext.isEmpty) {\r\n\t\t\t\tassert(s0 == null || !s0.isContextSensitive);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tremainingContext = remainingContext.parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s0 == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn new SimulatorState(outerContext, s0, useContext, remainingContext);\r\n\t}\r\n\r\n\tprotected execDFA(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream, startIndex: number,\r\n\t\t@NotNull state: SimulatorState): number {\r\n\t\tlet outerContext: ParserRuleContext = state.outerContext;\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\" exec LA(1)==\" + this.getLookaheadName(input) +\r\n\t\t\t\t\", outerContext=\" + outerContext.toString(this._parser));\r\n\t\t}\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t}\r\n\t\tlet s: DFAState = state.s0;\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\t\tlet remainingOuterContext: ParserRuleContext | undefined = state.remainingOuterContext;\r\n\r\n\t\twhile (true) {\r\n\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\tconsole.log(\"DFA state \" + s.stateNumber + \" LA(1)==\" + this.getLookaheadName(input));\r\n\t\t\t}\r\n\t\t\tif (state.useContext) {\r\n\t\t\t\twhile (s.isContextSymbol(t)) {\r\n\t\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\t\tif (remainingOuterContext != null) {\r\n\t\t\t\t\t\tremainingOuterContext = this.skipTailCalls(remainingOuterContext);\r\n\t\t\t\t\t\tnext = s.getContextTarget(this.getReturnState(remainingOuterContext));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (next == null) {\r\n\t\t\t\t\t\t// fail over to ATN\r\n\t\t\t\t\t\tlet initialState: SimulatorState = new SimulatorState(state.outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\t\t\treturn this.execATN(dfa, input, startIndex, initialState);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tassert(remainingOuterContext != null);\r\n\t\t\t\t\tremainingOuterContext = remainingOuterContext.parent;\r\n\t\t\t\t\ts = next;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isAcceptState(s, state.useContext)) {\r\n\t\t\t\tif (s.predicates != null) {\r\n\t\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\t\tconsole.log(\"accept \" + s);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\t\tconsole.log(\"accept; predict \" + s.prediction + \" in state \" + s.stateNumber);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// keep going unless we're at EOF or state only has one alt number\r\n\t\t\t\t// mentioned in configs; check if something else could match\r\n\t\t\t\t// TODO: don't we always stop? only lexer would keep going\r\n\t\t\t\t// TODO: v3 dfa don't do this.\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// t is not updated if one of these states is reached\r\n\t\t\tassert(!this.isAcceptState(s, state.useContext));\r\n\r\n\t\t\t// if no edge, pop over to ATN interpreter, update DFA and return\r\n\t\t\tlet target: DFAState | undefined = this.getExistingTargetState(s, t);\r\n\t\t\tif (target == null) {\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug && t >= 0) {\r\n\t\t\t\t\tconsole.log(\"no edge for \" + this._parser.vocabulary.getDisplayName(t));\r\n\t\t\t\t}\r\n\t\t\t\tlet alt: number;\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tlet interval: Interval = Interval.of(startIndex, this._parser.inputStream.index);\r\n\t\t\t\t\tconsole.log(\"ATN exec upon \" +\r\n\t\t\t\t\t\tthis._parser.inputStream.getText(interval) +\r\n\t\t\t\t\t\t\" at DFA state \" + s.stateNumber);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet initialState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\talt = this.execATN(dfa, input, startIndex, initialState);\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"back from DFA update, alt=\" + alt + \", dfa=\\n\" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t\t\t\t//dump(dfa);\r\n\t\t\t\t}\r\n\t\t\t\t// action already executed\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\t\t\" predicts \" + alt);\r\n\t\t\t\t}\r\n\t\t\t\treturn alt; // we've updated DFA, exec'd action, and have our deepest answer\r\n\t\t\t}\r\n\t\t\telse if (target === ATNSimulator.ERROR) {\r\n\t\t\t\tlet errorState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\treturn this.handleNoViableAlt(input, startIndex, errorState);\r\n\t\t\t}\r\n\t\t\ts = target;\r\n\t\t\tif (!this.isAcceptState(s, state.useContext) && t !== IntStream.EOF) {\r\n\t\t\t\tinput.consume();\r\n\t\t\t\tt = input.LA(1);\r\n\t\t\t}\r\n\t\t}\r\n//\t\tif ( acceptState==null ) {\r\n//\t\t\tif ( debug ) System.out.println(\"!!! no viable alt in dfa\");\r\n//\t\t\treturn -1;\r\n//\t\t}\r\n\r\n\t\tif (!state.useContext && s.configs.conflictInfo != null) {\r\n\t\t\tif (dfa.atnStartState instanceof DecisionState) {\r\n\t\t\t\tif (!this.userWantsCtxSensitive ||\r\n\t\t\t\t\t(!s.configs.dipsIntoOuterContext && s.configs.isExactConflict) ||\r\n\t\t\t\t\t(this.treat_sllk1_conflict_as_ambiguity && input.index === startIndex)) {\r\n\t\t\t\t\t// we don't report the ambiguity again\r\n\t\t\t\t\t//if ( !this.acceptState.configset.hasSemanticContext ) {\r\n\t\t\t\t\t// \tthis.reportAmbiguity(dfa, acceptState, startIndex, input.index, acceptState.configset.conflictingAlts, acceptState.configset);\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tassert(!state.useContext);\r\n\r\n\t\t\t\t\t// Before attempting full context prediction, check to see if there are\r\n\t\t\t\t\t// disambiguating or validating predicates to evaluate which allow an\r\n\t\t\t\t\t// immediate decision\r\n\t\t\t\t\tlet conflictingAlts: BitSet | undefined;\r\n\t\t\t\t\tlet predicates: DFAState.PredPrediction[] | undefined = s.predicates;\r\n\t\t\t\t\tif (predicates != null) {\r\n\t\t\t\t\t\tlet conflictIndex: number = input.index;\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconflictingAlts = this.evalSemanticContext(predicates, outerContext, true);\r\n\t\t\t\t\t\tif (conflictingAlts.cardinality() === 1) {\r\n\t\t\t\t\t\t\treturn conflictingAlts.nextSetBit(0);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\t// restore the index so reporting the fallback to full\r\n\t\t\t\t\t\t\t// context occurs with the index at the correct spot\r\n\t\t\t\t\t\t\tinput.seek(conflictIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.reportAmbiguities) {\r\n\t\t\t\t\t\tlet conflictState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\t\t\tthis.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\treturn this.adaptivePredict(input, dfa.decision, outerContext, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Before jumping to prediction, check to see if there are\r\n\t\t// disambiguating or validating predicates to evaluate\r\n\t\tlet predicates: DFAState.PredPrediction[] | undefined = s.predicates;\r\n\t\tif (predicates != null) {\r\n\t\t\tlet stopIndex: number = input.index;\r\n\t\t\tif (startIndex !== stopIndex) {\r\n\t\t\t\tinput.seek(startIndex);\r\n\t\t\t}\r\n\r\n\t\t\tlet alts: BitSet = this.evalSemanticContext(predicates, outerContext, this.reportAmbiguities && this.predictionMode === PredictionMode.LL_EXACT_AMBIG_DETECTION);\r\n\t\t\tswitch (alts.cardinality()) {\r\n\t\t\tcase 0:\r\n\t\t\t\tthrow this.noViableAlt(input, outerContext, s.configs, startIndex);\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\t// report ambiguity after predicate evaluation to make sure the correct\r\n\t\t\t\t// set of ambig alts is reported.\r\n\t\t\t\tif (startIndex !== stopIndex) {\r\n\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.reportAmbiguity(dfa, s, startIndex, stopIndex, s.configs.isExactConflict, alts, s.configs);\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\" predicts \" + s.prediction);\r\n\t\t}\r\n\t\treturn s.prediction;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if a particular DFA state should be treated as an accept state\r\n\t * for the current prediction mode. In addition to the `useContext`\r\n\t * parameter, the {@link #getPredictionMode()} method provides the\r\n\t * prediction mode controlling the prediction algorithm as a whole.\r\n\t *\r\n\t * The default implementation simply returns the value of\r\n\t * `DFAState.isAcceptState` except for conflict states when\r\n\t * `useContext` is `true` and {@link #getPredictionMode()} is\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}. In that case, only\r\n\t * conflict states where {@link ATNConfigSet#isExactConflict} is\r\n\t * `true` are considered accept states.\r\n\t *\r\n\t * @param state The DFA state to check.\r\n\t * @param useContext `true` if the prediction algorithm is currently\r\n\t * considering the full parser context; otherwise, `false` if the\r\n\t * algorithm is currently performing a local context prediction.\r\n\t *\r\n\t * @returns `true` if the specified `state` is an accept state;\r\n\t * otherwise, `false`.\r\n\t */\r\n\tprotected isAcceptState(state: DFAState, useContext: boolean): boolean {\r\n\t\tif (!state.isAcceptState) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (state.configs.conflictingAlts == null) {\r\n\t\t\t// unambiguous\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// More picky when we need exact conflicts\r\n\t\tif (useContext && this.predictionMode === PredictionMode.LL_EXACT_AMBIG_DETECTION) {\r\n\t\t\treturn state.configs.isExactConflict;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** Performs ATN simulation to compute a predicted alternative based\r\n\t * upon the remaining input, but also updates the DFA cache to avoid\r\n\t * having to traverse the ATN again for the same input sequence.\r\n\t *\r\n\t * There are some key conditions we're looking for after computing a new\r\n\t * set of ATN configs (proposed DFA state):\r\n\t *\r\n\t * * if the set is empty, there is no viable alternative for current symbol\r\n\t * * does the state uniquely predict an alternative?\r\n\t * * does the state have a conflict that would prevent us from\r\n\t * putting it on the work list?\r\n\t * * if in non-greedy decision is there a config at a rule stop state?\r\n\t *\r\n\t * We also have some key operations to do:\r\n\t *\r\n\t * * add an edge from previous DFA state to potentially new DFA state, D,\r\n\t * upon current symbol but only if adding to work list, which means in all\r\n\t * cases except no viable alternative (and possibly non-greedy decisions?)\r\n\t * * collecting predicates and adding semantic context to DFA accept states\r\n\t * * adding rule context to context-sensitive DFA accept states\r\n\t * * consuming an input symbol\r\n\t * * reporting a conflict\r\n\t * * reporting an ambiguity\r\n\t * * reporting a context sensitivity\r\n\t * * reporting insufficient predicates\r\n\t *\r\n\t * We should isolate those operations, which are side-effecting, to the\r\n\t * main work loop. We can isolate lots of code into other functions, but\r\n\t * they should be side effect free. They can return package that\r\n\t * indicates whether we should report something, whether we need to add a\r\n\t * DFA edge, whether we need to augment accept state with semantic\r\n\t * context or rule invocation context. Actually, it seems like we always\r\n\t * add predicates if they exist, so that can simply be done in the main\r\n\t * loop for any accept state creation or modification request.\r\n\t *\r\n\t * cover these cases:\r\n\t * dead end\r\n\t * single alt\r\n\t * single alt + preds\r\n\t * conflict\r\n\t * conflict + preds\r\n\t *\r\n\t * TODO: greedy + those\r\n\t */\r\n\tprotected execATN(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream, startIndex: number,\r\n\t\t@NotNull initialState: SimulatorState): number {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"execATN decision \" + dfa.decision + \" exec LA(1)==\" + this.getLookaheadName(input));\r\n\t\t}\r\n\r\n\t\tlet outerContext: ParserRuleContext = initialState.outerContext;\r\n\t\tlet useContext: boolean = initialState.useContext;\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\r\n\t\tlet previous: SimulatorState = initialState;\r\n\r\n\t\tlet contextCache: PredictionContextCache = new PredictionContextCache();\r\n\t\twhile (true) { // while more work\r\n\t\t\tlet nextState: SimulatorState | undefined = this.computeReachSet(dfa, previous, t, contextCache);\r\n\t\t\tif (nextState == null) {\r\n\t\t\t\tthis.setDFAEdge(previous.s0, input.LA(1), ATNSimulator.ERROR);\r\n\t\t\t\treturn this.handleNoViableAlt(input, startIndex, previous);\r\n\t\t\t}\r\n\r\n\t\t\tlet D: DFAState = nextState.s0;\r\n\r\n\t\t\t// predicted alt => accept state\r\n\t\t\tassert(D.isAcceptState || D.prediction === ATN.INVALID_ALT_NUMBER);\r\n\t\t\t// conflicted => accept state\r\n\t\t\tassert(D.isAcceptState || D.configs.conflictInfo == null);\r\n\r\n\t\t\tif (this.isAcceptState(D, useContext)) {\r\n\t\t\t\tlet conflictingAlts: BitSet | undefined = D.configs.conflictingAlts;\r\n\t\t\t\tlet predictedAlt: number = conflictingAlts == null ? D.prediction : ATN.INVALID_ALT_NUMBER;\r\n\t\t\t\tif (predictedAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\t\tif (this.optimize_ll1\r\n\t\t\t\t\t\t&& input.index === startIndex\r\n\t\t\t\t\t\t&& !dfa.isPrecedenceDfa\r\n\t\t\t\t\t\t&& nextState.outerContext === nextState.remainingOuterContext\r\n\t\t\t\t\t\t&& dfa.decision >= 0\r\n\t\t\t\t\t\t&& !D.configs.hasSemanticContext) {\r\n\t\t\t\t\t\tif (t >= 0 && t <= MAX_SHORT_VALUE) {\r\n\t\t\t\t\t\t\tlet key: number = ((dfa.decision << 16) >>> 0) + t;\r\n\t\t\t\t\t\t\tthis.atn.LL1Table.set(key, predictedAlt);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (useContext && this.always_try_local_context) {\r\n\t\t\t\t\t\tthis.reportContextSensitivity(dfa, predictedAlt, nextState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpredictedAlt = D.prediction;\r\n//\t\t\t\tint k = input.index - startIndex + 1; // how much input we used\r\n//\t\t\t\tSystem.out.println(\"used k=\"+k);\r\n\t\t\t\tlet attemptFullContext: boolean = conflictingAlts != null && this.userWantsCtxSensitive;\r\n\t\t\t\tif (attemptFullContext) {\r\n\t\t\t\t\t// Only exact conflicts are known to be ambiguous when local\r\n\t\t\t\t\t// prediction does not step out of the decision rule.\r\n\t\t\t\t\tattemptFullContext = !useContext\r\n\t\t\t\t\t\t&& (D.configs.dipsIntoOuterContext || !D.configs.isExactConflict)\r\n\t\t\t\t\t\t&& (!this.treat_sllk1_conflict_as_ambiguity || input.index !== startIndex);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (D.configs.hasSemanticContext) {\r\n\t\t\t\t\tlet predPredictions: DFAState.PredPrediction[] | undefined = D.predicates;\r\n\t\t\t\t\tif (predPredictions != null) {\r\n\t\t\t\t\t\tlet conflictIndex: number = input.index;\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// use complete evaluation here if we'll want to retry with full context if still ambiguous\r\n\t\t\t\t\t\tconflictingAlts = this.evalSemanticContext(predPredictions, outerContext, attemptFullContext || this.reportAmbiguities);\r\n\t\t\t\t\t\tswitch (conflictingAlts.cardinality()) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\tthrow this.noViableAlt(input, outerContext, D.configs, startIndex);\r\n\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn conflictingAlts.nextSetBit(0);\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\t// restore the index so reporting the fallback to full\r\n\t\t\t\t\t\t\t// context occurs with the index at the correct spot\r\n\t\t\t\t\t\t\tinput.seek(conflictIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!attemptFullContext) {\r\n\t\t\t\t\tif (conflictingAlts != null) {\r\n\t\t\t\t\t\tif (this.reportAmbiguities && conflictingAlts.cardinality() > 1) {\r\n\t\t\t\t\t\t\tthis.reportAmbiguity(dfa, D, startIndex, input.index, D.configs.isExactConflict, conflictingAlts, D.configs);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpredictedAlt = conflictingAlts.nextSetBit(0);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn predictedAlt;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tassert(!useContext);\r\n\t\t\t\t\tassert(this.isAcceptState(D, false));\r\n\r\n\t\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\t\tconsole.log(\"RETRY with outerContext=\" + outerContext);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet fullContextState: SimulatorState = this.computeStartState(dfa, outerContext, true);\r\n\t\t\t\t\tif (this.reportAmbiguities) {\r\n\t\t\t\t\t\tthis.reportAttemptingFullContext(dfa, conflictingAlts, nextState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\treturn this.execATN(dfa, input, startIndex, fullContextState);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tprevious = nextState;\r\n\r\n\t\t\tif (t !== IntStream.EOF) {\r\n\t\t\t\tinput.consume();\r\n\t\t\t\tt = input.LA(1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method is used to improve the localization of error messages by\r\n\t * choosing an alternative rather than throwing a\r\n\t * {@link NoViableAltException} in particular prediction scenarios where the\r\n\t * {@link #ERROR} state was reached during ATN simulation.\r\n\t *\r\n\t * The default implementation of this method uses the following\r\n\t * algorithm to identify an ATN configuration which successfully parsed the\r\n\t * decision entry rule. Choosing such an alternative ensures that the\r\n\t * {@link ParserRuleContext} returned by the calling rule will be complete\r\n\t * and valid, and the syntax error will be reported later at a more\r\n\t * localized location.\r\n\t *\r\n\t * * If no configuration in `configs` reached the end of the\r\n\t * decision rule, return {@link ATN#INVALID_ALT_NUMBER}.\r\n\t * * If all configurations in `configs` which reached the end of the\r\n\t * decision rule predict the same alternative, return that alternative.\r\n\t * * If the configurations in `configs` which reached the end of the\r\n\t * decision rule predict multiple alternatives (call this *S*),\r\n\t * choose an alternative in the following order.\r\n\t *\r\n\t * 1. Filter the configurations in `configs` to only those\r\n\t * configurations which remain viable after evaluating semantic predicates.\r\n\t * If the set of these filtered configurations which also reached the end of\r\n\t * the decision rule is not empty, return the minimum alternative\r\n\t * represented in this set.\r\n\t * 1. Otherwise, choose the minimum alternative in *S*.\r\n\t *\r\n\t * In some scenarios, the algorithm described above could predict an\r\n\t * alternative which will result in a {@link FailedPredicateException} in\r\n\t * parser. Specifically, this could occur if the *only* configuration\r\n\t * capable of successfully parsing to the end of the decision rule is\r\n\t * blocked by a semantic predicate. By choosing this alternative within\r\n\t * {@link #adaptivePredict} instead of throwing a\r\n\t * {@link NoViableAltException}, the resulting\r\n\t * {@link FailedPredicateException} in the parser will identify the specific\r\n\t * predicate which is preventing the parser from successfully parsing the\r\n\t * decision rule, which helps developers identify and correct logic errors\r\n\t * in semantic predicates.\r\n\t *\r\n\t * @param input The input {@link TokenStream}\r\n\t * @param startIndex The start index for the current prediction, which is\r\n\t * the input index where any semantic context in `configs` should be\r\n\t * evaluated\r\n\t * @param previous The ATN simulation state immediately before the\r\n\t * {@link #ERROR} state was reached\r\n\t *\r\n\t * @returns The value to return from {@link #adaptivePredict}, or\r\n\t * {@link ATN#INVALID_ALT_NUMBER} if a suitable alternative was not\r\n\t * identified and {@link #adaptivePredict} should report an error instead.\r\n\t */\r\n\tprotected handleNoViableAlt(@NotNull input: TokenStream, startIndex: number, @NotNull previous: SimulatorState): number {\r\n\t\tif (previous.s0 != null) {\r\n\t\t\tlet alts: BitSet = new BitSet();\r\n\t\t\tlet maxAlt: number = 0;\r\n\t\t\tfor (let config of previous.s0.configs) {\r\n\t\t\t\tif (config.reachesIntoOuterContext || config.state instanceof RuleStopState) {\r\n\t\t\t\t\talts.set(config.alt);\r\n\t\t\t\t\tmaxAlt = Math.max(maxAlt, config.alt);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tswitch (alts.cardinality()) {\r\n\t\t\tcase 0:\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif (!previous.s0.configs.hasSemanticContext) {\r\n\t\t\t\t\t// configs doesn't contain any predicates, so the predicate\r\n\t\t\t\t\t// filtering code below would be pointless\r\n\t\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Try to find a configuration set that not only dipped into the outer\r\n\t\t\t\t * context, but also isn't eliminated by a predicate.\r\n\t\t\t\t */\r\n\t\t\t\tlet filteredConfigs: ATNConfigSet = new ATNConfigSet();\r\n\t\t\t\tfor (let config of previous.s0.configs) {\r\n\t\t\t\t\tif (config.reachesIntoOuterContext || config.state instanceof RuleStopState) {\r\n\t\t\t\t\t\tfilteredConfigs.add(config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* The following code blocks are adapted from predicateDFAState with\r\n\t\t\t\t * the following key changes.\r\n\t\t\t\t *\r\n\t\t\t\t * 1. The code operates on an ATNConfigSet rather than a DFAState.\r\n\t\t\t\t * 2. Predicates are collected for all alternatives represented in\r\n\t\t\t\t * filteredConfigs, rather than restricting the evaluation to\r\n\t\t\t\t * conflicting and/or unique configurations.\r\n\t\t\t\t */\r\n\t\t\t\tlet altToPred: SemanticContext[] | undefined = this.getPredsForAmbigAlts(alts, filteredConfigs, maxAlt);\r\n\t\t\t\tif (altToPred != null) {\r\n\t\t\t\t\tlet predicates: DFAState.PredPrediction[] | undefined = this.getPredicatePredictions(alts, altToPred);\r\n\t\t\t\t\tif (predicates != null) {\r\n\t\t\t\t\t\tlet stopIndex: number = input.index;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t\tlet filteredAlts: BitSet = this.evalSemanticContext(predicates, previous.outerContext, false);\r\n\t\t\t\t\t\t\tif (!filteredAlts.isEmpty) {\r\n\t\t\t\t\t\t\t\treturn filteredAlts.nextSetBit(0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfinally {\r\n\t\t\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow this.noViableAlt(input, previous.outerContext, previous.s0.configs, startIndex);\r\n\t}\r\n\r\n\tprotected computeReachSet(dfa: DFA, previous: SimulatorState, t: number, contextCache: PredictionContextCache): SimulatorState | undefined {\r\n\t\tlet useContext: boolean = previous.useContext;\r\n\t\tlet remainingGlobalContext: ParserRuleContext | undefined = previous.remainingOuterContext;\r\n\r\n\t\tlet s: DFAState = previous.s0;\r\n\t\tif (useContext) {\r\n\t\t\twhile (s.isContextSymbol(t)) {\r\n\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\tif (remainingGlobalContext != null) {\r\n\t\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\t\tnext = s.getContextTarget(this.getReturnState(remainingGlobalContext));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (next == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tassert(remainingGlobalContext != null);\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\ts = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tassert(!this.isAcceptState(s, useContext));\r\n\t\tif (this.isAcceptState(s, useContext)) {\r\n\t\t\treturn new SimulatorState(previous.outerContext, s, useContext, remainingGlobalContext);\r\n\t\t}\r\n\r\n\t\tlet s0: DFAState = s;\r\n\r\n\t\tlet target: DFAState | undefined = this.getExistingTargetState(s0, t);\r\n\t\tif (target == null) {\r\n\t\t\tlet result: [DFAState, ParserRuleContext | undefined] = this.computeTargetState(dfa, s0, remainingGlobalContext, t, useContext, contextCache);\r\n\t\t\ttarget = result[0];\r\n\t\t\tremainingGlobalContext = result[1];\r\n\t\t}\r\n\r\n\t\tif (target === ATNSimulator.ERROR) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tassert(!useContext || !target.configs.dipsIntoOuterContext);\r\n\t\treturn new SimulatorState(previous.outerContext, target, useContext, remainingGlobalContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Get an existing target state for an edge in the DFA. If the target state\r\n\t * for the edge has not yet been computed or is otherwise not available,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t * @returns The existing target DFA state for the given input symbol\r\n\t * `t`, or `undefined` if the target state for this edge is not\r\n\t * already cached\r\n\t */\r\n\tprotected getExistingTargetState(@NotNull s: DFAState, t: number): DFAState | undefined {\r\n\t\treturn s.getTarget(t);\r\n\t}\r\n\r\n\t/**\r\n\t * Compute a target state for an edge in the DFA, and attempt to add the\r\n\t * computed state and corresponding edge to the DFA.\r\n\t *\r\n\t * @param dfa\r\n\t * @param s The current DFA state\r\n\t * @param remainingGlobalContext\r\n\t * @param t The next input symbol\r\n\t * @param useContext\r\n\t * @param contextCache\r\n\t *\r\n\t * @returns The computed target DFA state for the given input symbol\r\n\t * `t`. If `t` does not lead to a valid DFA state, this method\r\n\t * returns {@link #ERROR}.\r\n\t */\r\n\t@NotNull\r\n\tprotected computeTargetState(@NotNull dfa: DFA, @NotNull s: DFAState, remainingGlobalContext: ParserRuleContext | undefined, t: number, useContext: boolean, contextCache: PredictionContextCache): [DFAState, ParserRuleContext | undefined] {\r\n\t\tlet closureConfigs: ATNConfig[] = s.configs.toArray();\r\n\t\tlet contextElements: IntegerList | undefined;\r\n\t\tlet reach: ATNConfigSet = new ATNConfigSet();\r\n\t\tlet stepIntoGlobal: boolean;\r\n\t\tdo {\r\n\t\t\tlet hasMoreContext: boolean = !useContext || remainingGlobalContext != null;\r\n\t\t\tif (!hasMoreContext) {\r\n\t\t\t\treach.isOutermostConfigSet = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet reachIntermediate: ATNConfigSet = new ATNConfigSet();\r\n\r\n\t\t\t/* Configurations already in a rule stop state indicate reaching the end\r\n\t\t\t * of the decision rule (local context) or end of the start rule (full\r\n\t\t\t * context). Once reached, these configurations are never updated by a\r\n\t\t\t * closure operation, so they are handled separately for the performance\r\n\t\t\t * advantage of having a smaller intermediate set when calling closure.\r\n\t\t\t *\r\n\t\t\t * For full-context reach operations, separate handling is required to\r\n\t\t\t * ensure that the alternative matching the longest overall sequence is\r\n\t\t\t * chosen when multiple such configurations can match the input.\r\n\t\t\t */\r\n\t\t\tlet skippedStopStates: ATNConfig[] | undefined;\r\n\r\n\t\t\tfor (let c of closureConfigs) {\r\n\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\tconsole.log(\"testing \" + this.getTokenName(t) + \" at \" + c.toString());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\t\tassert(c.context.isEmpty);\r\n\t\t\t\t\tif (useContext && !c.reachesIntoOuterContext || t === IntStream.EOF) {\r\n\t\t\t\t\t\tif (skippedStopStates == null) {\r\n\t\t\t\t\t\t\tskippedStopStates = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tskippedStopStates.push(c);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet n: number = c.state.numberOfOptimizedTransitions;\r\n\t\t\t\tfor (let ti = 0; ti < n; ti++) { // for each optimized transition\r\n\t\t\t\t\tlet trans: Transition = c.state.getOptimizedTransition(ti);\r\n\t\t\t\t\tlet target: ATNState | undefined = this.getReachableTarget(c, trans, t);\r\n\t\t\t\t\tif (target != null) {\r\n\t\t\t\t\t\treachIntermediate.add(c.transform(target, false), contextCache);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* This block optimizes the reach operation for intermediate sets which\r\n\t\t\t * trivially indicate a termination state for the overall\r\n\t\t\t * adaptivePredict operation.\r\n\t\t\t *\r\n\t\t\t * The conditions assume that intermediate\r\n\t\t\t * contains all configurations relevant to the reach set, but this\r\n\t\t\t * condition is not true when one or more configurations have been\r\n\t\t\t * withheld in skippedStopStates, or when the current symbol is EOF.\r\n\t\t\t */\r\n\t\t\tif (this.optimize_unique_closure && skippedStopStates == null && t !== Token.EOF && reachIntermediate.uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\treachIntermediate.isOutermostConfigSet = reach.isOutermostConfigSet;\r\n\t\t\t\treach = reachIntermediate;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t/* If the reach set could not be trivially determined, perform a closure\r\n\t\t\t * operation on the intermediate set to compute its initial value.\r\n\t\t\t */\r\n\t\t\tlet collectPredicates: boolean = false;\r\n\t\t\tlet treatEofAsEpsilon: boolean = t === Token.EOF;\r\n\t\t\tthis.closure(reachIntermediate, reach, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon);\r\n\t\t\tstepIntoGlobal = reach.dipsIntoOuterContext;\r\n\r\n\t\t\tif (t === IntStream.EOF) {\r\n\t\t\t\t/* After consuming EOF no additional input is possible, so we are\r\n\t\t\t\t * only interested in configurations which reached the end of the\r\n\t\t\t\t * decision rule (local context) or end of the start rule (full\r\n\t\t\t\t * context). Update reach to contain only these configurations. This\r\n\t\t\t\t * handles both explicit EOF transitions in the grammar and implicit\r\n\t\t\t\t * EOF transitions following the end of the decision or start rule.\r\n\t\t\t\t *\r\n\t\t\t\t * This is handled before the configurations in skippedStopStates,\r\n\t\t\t\t * because any configurations potentially added from that list are\r\n\t\t\t\t * already guaranteed to meet this condition whether or not it's\r\n\t\t\t\t * required.\r\n\t\t\t\t */\r\n\t\t\t\treach = this.removeAllConfigsNotInRuleStopState(reach, contextCache);\r\n\t\t\t}\r\n\r\n\t\t\t/* If skippedStopStates is not undefined, then it contains at least one\r\n\t\t\t * configuration. For full-context reach operations, these\r\n\t\t\t * configurations reached the end of the start rule, in which case we\r\n\t\t\t * only add them back to reach if no configuration during the current\r\n\t\t\t * closure operation reached such a state. This ensures adaptivePredict\r\n\t\t\t * chooses an alternative matching the longest overall sequence when\r\n\t\t\t * multiple alternatives are viable.\r\n\t\t\t */\r\n\t\t\tif (skippedStopStates != null && (!useContext || !PredictionMode.hasConfigInRuleStopState(reach))) {\r\n\t\t\t\tassert(skippedStopStates.length > 0);\r\n\t\t\t\tfor (let c of skippedStopStates) {\r\n\t\t\t\t\treach.add(c, contextCache);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (useContext && stepIntoGlobal) {\r\n\t\t\t\treach.clear();\r\n\r\n\t\t\t\t// We know remainingGlobalContext is not undefined at this point (why?)\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext as ParserRuleContext;\r\n\r\n\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\tlet nextContextElement: number = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\tif (contextElements == null) {\r\n\t\t\t\t\tcontextElements = new IntegerList();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontextElements.add(nextContextElement);\r\n\t\t\t\tif (nextContextElement !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tfor (let i = 0; i < closureConfigs.length; i++) {\r\n\t\t\t\t\t\tclosureConfigs[i] = closureConfigs[i].appendContext(nextContextElement, contextCache);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} while (useContext && stepIntoGlobal);\r\n\r\n\t\tif (reach.isEmpty) {\r\n\t\t\tthis.setDFAEdge(s, t, ATNSimulator.ERROR);\r\n\t\t\treturn [ATNSimulator.ERROR, remainingGlobalContext];\r\n\t\t}\r\n\r\n\t\tlet result: DFAState = this.addDFAEdge(dfa, s, t, contextElements, reach, contextCache);\r\n\t\treturn [result, remainingGlobalContext];\r\n\t}\r\n\r\n\t/**\r\n\t * Return a configuration set containing only the configurations from\r\n\t * `configs` which are in a {@link RuleStopState}. If all\r\n\t * configurations in `configs` are already in a rule stop state, this\r\n\t * method simply returns `configs`.\r\n\t *\r\n\t * @param configs the configuration set to update\r\n\t * @param contextCache the {@link PredictionContext} cache\r\n\t *\r\n\t * @returns `configs` if all configurations in `configs` are in a\r\n\t * rule stop state, otherwise return a new configuration set containing only\r\n\t * the configurations from `configs` which are in a rule stop state\r\n\t */\r\n\t@NotNull\r\n\tprotected removeAllConfigsNotInRuleStopState(@NotNull configs: ATNConfigSet, contextCache: PredictionContextCache): ATNConfigSet {\r\n\t\tif (PredictionMode.allConfigsInRuleStopStates(configs)) {\r\n\t\t\treturn configs;\r\n\t\t}\r\n\r\n\t\tlet result: ATNConfigSet = new ATNConfigSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (!(config.state instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tresult.add(config, contextCache);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected computeStartState(\r\n\t\tdfa: DFA,\r\n\t\tglobalContext: ParserRuleContext,\r\n\t\tuseContext: boolean): SimulatorState {\r\n\t\tlet s0: DFAState | undefined =\r\n\t\t\tdfa.isPrecedenceDfa ? dfa.getPrecedenceStartState(this._parser.precedence, useContext) :\r\n\t\t\t\tuseContext ? dfa.s0full :\r\n\t\t\t\t\tdfa.s0;\r\n\r\n\t\tif (s0 != null) {\r\n\t\t\tif (!useContext) {\r\n\t\t\t\treturn new SimulatorState(globalContext, s0, useContext, globalContext);\r\n\t\t\t}\r\n\r\n\t\t\ts0.setContextSensitive(this.atn);\r\n\t\t}\r\n\r\n\t\tlet decision: number = dfa.decision;\r\n\t\t// @NotNull\r\n\t\tlet p: ATNState = dfa.atnStartState;\r\n\r\n\t\tlet previousContext: number = 0;\r\n\t\tlet remainingGlobalContext: ParserRuleContext | undefined = globalContext;\r\n\t\tlet initialContext: PredictionContext = useContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL; // always at least the implicit call to start rule\r\n\t\tlet contextCache: PredictionContextCache = new PredictionContextCache();\r\n\t\tif (useContext) {\r\n\t\t\tif (!this.enable_global_context_dfa) {\r\n\t\t\t\twhile (remainingGlobalContext != null) {\r\n\t\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\t\tpreviousContext = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpreviousContext = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\t\t\tinitialContext = initialContext.appendSingleContext(previousContext, contextCache);\r\n\t\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile (s0 != null && s0.isContextSensitive && remainingGlobalContext != null) {\r\n\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\tnext = s0.getContextTarget(PredictionContext.EMPTY_FULL_STATE_KEY);\r\n\t\t\t\t\tpreviousContext = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tpreviousContext = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\t\tnext = s0.getContextTarget(previousContext);\r\n\t\t\t\t\tinitialContext = initialContext.appendSingleContext(previousContext, contextCache);\r\n\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (next == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts0 = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s0 != null && !s0.isContextSensitive) {\r\n\t\t\treturn new SimulatorState(globalContext, s0, useContext, remainingGlobalContext);\r\n\t\t}\r\n\r\n\t\tlet configs: ATNConfigSet = new ATNConfigSet();\r\n\t\twhile (true) {\r\n\t\t\tlet reachIntermediate: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tlet n: number = p.numberOfTransitions;\r\n\t\t\tfor (let ti = 0; ti < n; ti++) {\r\n\t\t\t\t// for each transition\r\n\t\t\t\tlet target: ATNState = p.transition(ti).target;\r\n\t\t\t\treachIntermediate.add(ATNConfig.create(target, ti + 1, initialContext));\r\n\t\t\t}\r\n\r\n\t\t\tlet hasMoreContext: boolean = remainingGlobalContext != null;\r\n\t\t\tif (!hasMoreContext) {\r\n\t\t\t\tconfigs.isOutermostConfigSet = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet collectPredicates: boolean = true;\r\n\t\t\tthis.closure(reachIntermediate, configs, collectPredicates, hasMoreContext, contextCache, false);\r\n\t\t\tlet stepIntoGlobal: boolean = configs.dipsIntoOuterContext;\r\n\r\n\t\t\tlet next: DFAState;\r\n\t\t\tif (useContext && !this.enable_global_context_dfa) {\r\n\t\t\t\ts0 = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse if (s0 == null) {\r\n\t\t\t\tif (!dfa.isPrecedenceDfa) {\r\n\t\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\t\tif (useContext) {\r\n\t\t\t\t\t\tif (!dfa.s0full) {\r\n\t\t\t\t\t\t\tdfa.s0full = next;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnext = dfa.s0full;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!dfa.s0) {\r\n\t\t\t\t\t\t\tdfa.s0 = next;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnext = dfa.s0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t/* If this is a precedence DFA, we use applyPrecedenceFilter\r\n\t\t\t\t\t * to convert the computed start state to a precedence start\r\n\t\t\t\t\t * state. We then use DFA.setPrecedenceStartState to set the\r\n\t\t\t\t\t * appropriate start state for the precedence level rather\r\n\t\t\t\t\t * than simply setting DFA.s0.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tconfigs = this.applyPrecedenceFilter(configs, globalContext, contextCache);\r\n\t\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\t\tdfa.setPrecedenceStartState(this._parser.precedence, useContext, next);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\t\t\tconfigs = this.applyPrecedenceFilter(configs, globalContext, contextCache);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\ts0.setContextTarget(previousContext, next);\r\n\t\t\t}\r\n\r\n\t\t\ts0 = next;\r\n\r\n\t\t\tif (!useContext || !stepIntoGlobal) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// TODO: make sure it distinguishes empty stack states\r\n\t\t\tnext.setContextSensitive(this.atn);\r\n\r\n\t\t\t// We know remainingGlobalContext is not undefined at this point (why?)\r\n\t\t\tremainingGlobalContext = remainingGlobalContext as ParserRuleContext;\r\n\r\n\t\t\tconfigs.clear();\r\n\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\tlet nextContextElement: number = this.getReturnState(remainingGlobalContext);\r\n\r\n\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t}\r\n\r\n\t\t\tif (nextContextElement !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\tinitialContext = initialContext.appendSingleContext(nextContextElement, contextCache);\r\n\t\t\t}\r\n\r\n\t\t\tpreviousContext = nextContextElement;\r\n\t\t}\r\n\r\n\t\treturn new SimulatorState(globalContext, s0, useContext, remainingGlobalContext);\r\n\t}\r\n\r\n\t/**\r\n\t * This method transforms the start state computed by\r\n\t * {@link #computeStartState} to the special start state used by a\r\n\t * precedence DFA for a particular precedence value. The transformation\r\n\t * process applies the following changes to the start state's configuration\r\n\t * set.\r\n\t *\r\n\t * 1. Evaluate the precedence predicates for each configuration using\r\n\t * {@link SemanticContext#evalPrecedence}.\r\n\t * 1. When {@link ATNConfig#isPrecedenceFilterSuppressed} is `false`,\r\n\t * remove all configurations which predict an alternative greater than 1,\r\n\t * for which another configuration that predicts alternative 1 is in the\r\n\t * same ATN state with the same prediction context. This transformation is\r\n\t * valid for the following reasons:\r\n\t *\r\n\t * * The closure block cannot contain any epsilon transitions which bypass\r\n\t * the body of the closure, so all states reachable via alternative 1 are\r\n\t * part of the precedence alternatives of the transformed left-recursive\r\n\t * rule.\r\n\t * * The \"primary\" portion of a left recursive rule cannot contain an\r\n\t * epsilon transition, so the only way an alternative other than 1 can exist\r\n\t * in a state that is also reachable via alternative 1 is by nesting calls\r\n\t * to the left-recursive rule, with the outer calls not being at the\r\n\t * preferred precedence level. The\r\n\t * {@link ATNConfig#isPrecedenceFilterSuppressed} property marks ATN\r\n\t * configurations which do not meet this condition, and therefore are not\r\n\t * eligible for elimination during the filtering process.\r\n\t *\r\n\t * The prediction context must be considered by this filter to address\r\n\t * situations like the following.\r\n\t *\r\n\t * ```antlr\r\n\t * grammar TA;\r\n\t * prog: statement* EOF;\r\n\t * statement: letterA | statement letterA 'b' ;\r\n\t * letterA: 'a';\r\n\t * ```\r\n\t *\r\n\t * If the above grammar, the ATN state immediately before the token\r\n\t * reference `'a'` in `letterA` is reachable from the left edge\r\n\t * of both the primary and closure blocks of the left-recursive rule\r\n\t * `statement`. The prediction context associated with each of these\r\n\t * configurations distinguishes between them, and prevents the alternative\r\n\t * which stepped out to `prog` (and then back in to `statement`\r\n\t * from being eliminated by the filter.\r\n\t *\r\n\t * @param configs The configuration set computed by\r\n\t * {@link #computeStartState} as the start state for the DFA.\r\n\t * @returns The transformed configuration set representing the start state\r\n\t * for a precedence DFA at a particular precedence level (determined by\r\n\t * calling {@link Parser#getPrecedence}).\r\n\t */\r\n\t@NotNull\r\n\tprotected applyPrecedenceFilter(@NotNull configs: ATNConfigSet, globalContext: ParserRuleContext, contextCache: PredictionContextCache): ATNConfigSet {\r\n\t\tlet statesFromAlt1: Map = new Map();\r\n\t\tlet configSet: ATNConfigSet = new ATNConfigSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\t// handle alt 1 first\r\n\t\t\tif (config.alt !== 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet updatedContext: SemanticContext | undefined = config.semanticContext.evalPrecedence(this._parser, globalContext);\r\n\t\t\tif (updatedContext == null) {\r\n\t\t\t\t// the configuration was eliminated\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tstatesFromAlt1.set(config.state.stateNumber, config.context);\r\n\t\t\tif (updatedContext !== config.semanticContext) {\r\n\t\t\t\tconfigSet.add(config.transform(config.state, false, updatedContext), contextCache);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconfigSet.add(config, contextCache);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (config.alt === 1) {\r\n\t\t\t\t// already handled\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (!config.isPrecedenceFilterSuppressed) {\r\n\t\t\t\t/* In the future, this elimination step could be updated to also\r\n\t\t\t\t * filter the prediction context for alternatives predicting alt>1\r\n\t\t\t\t * (basically a graph subtraction algorithm).\r\n\t\t\t\t */\r\n\t\t\t\tlet context: PredictionContext | undefined = statesFromAlt1.get(config.state.stateNumber);\r\n\t\t\t\tif (context != null && context.equals(config.context)) {\r\n\t\t\t\t\t// eliminated\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconfigSet.add(config, contextCache);\r\n\t\t}\r\n\r\n\t\treturn configSet;\r\n\t}\r\n\r\n\tprotected getReachableTarget(@NotNull source: ATNConfig, @NotNull trans: Transition, ttype: number): ATNState | undefined {\r\n\t\tif (trans.matches(ttype, 0, this.atn.maxTokenType)) {\r\n\t\t\treturn trans.target;\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** collect and set D's semantic context */\r\n\tprotected predicateDFAState(\r\n\t\tD: DFAState,\r\n\t\tconfigs: ATNConfigSet,\r\n\t\tnalts: number): DFAState.PredPrediction[] | undefined {\r\n\t\tlet conflictingAlts: BitSet | undefined = this.getConflictingAltsFromConfigSet(configs);\r\n\t\tif (!conflictingAlts) {\r\n\t\t\tthrow new Error(\"This unhandled scenario is intended to be unreachable, but I'm currently not sure of why we know that's the case.\");\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"predicateDFAState \" + D);\r\n\t\t}\r\n\t\tlet altToPred: SemanticContext[] | undefined = this.getPredsForAmbigAlts(conflictingAlts, configs, nalts);\r\n\t\t// altToPred[uniqueAlt] is now our validating predicate (if any)\r\n\t\tlet predPredictions: DFAState.PredPrediction[] | undefined;\r\n\t\tif (altToPred != null) {\r\n\t\t\t// we have a validating predicate; test it\r\n\t\t\t// Update DFA so reach becomes accept state with predicate\r\n\t\t\tpredPredictions = this.getPredicatePredictions(conflictingAlts, altToPred);\r\n\t\t\tD.predicates = predPredictions;\r\n\t\t}\r\n\t\treturn predPredictions;\r\n\t}\r\n\r\n\tprotected getPredsForAmbigAlts(\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tnalts: number): SemanticContext[] | undefined {\r\n\t\t// REACH=[1|1|[]|0:0, 1|2|[]|0:1]\r\n\r\n\t\t/* altToPred starts as an array of all undefined contexts. The entry at index i\r\n\t\t * corresponds to alternative i. altToPred[i] may have one of three values:\r\n\t\t * 1. undefined: no ATNConfig c is found such that c.alt===i\r\n\t\t * 2. SemanticContext.NONE: At least one ATNConfig c exists such that\r\n\t\t * c.alt===i and c.semanticContext===SemanticContext.NONE. In other words,\r\n\t\t * alt i has at least one unpredicated config.\r\n\t\t * 3. Non-NONE Semantic Context: There exists at least one, and for all\r\n\t\t * ATNConfig c such that c.alt===i, c.semanticContext!==SemanticContext.NONE.\r\n\t\t *\r\n\t\t * From this, it is clear that NONE||anything==NONE.\r\n\t\t */\r\n\t\tlet altToPred: Array | undefined = new Array(nalts + 1);\r\n\t\tlet n: number = altToPred.length;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (ambigAlts.get(c.alt)) {\r\n\t\t\t\taltToPred[c.alt] = SemanticContext.or(altToPred[c.alt], c.semanticContext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet nPredAlts: number = 0;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tif (altToPred[i] == null) {\r\n\t\t\t\taltToPred[i] = SemanticContext.NONE;\r\n\t\t\t}\r\n\t\t\telse if (altToPred[i] !== SemanticContext.NONE) {\r\n\t\t\t\tnPredAlts++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// At this point we know `altToPred` doesn't contain any undefined entries\r\n\t\tlet result: SemanticContext[] | undefined = altToPred as SemanticContext[];\r\n\r\n\t\t// nonambig alts are undefined in result\r\n\t\tif (nPredAlts === 0) {\r\n\t\t\tresult = undefined;\r\n\t\t}\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"getPredsForAmbigAlts result \" + (result ? Arrays.toString(result) : \"undefined\"));\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getPredicatePredictions(ambigAlts: BitSet | undefined, altToPred: SemanticContext[]): DFAState.PredPrediction[] | undefined {\r\n\t\tlet pairs: DFAState.PredPrediction[] = [];\r\n\t\tlet containsPredicate: boolean = false;\r\n\t\tfor (let i = 1; i < altToPred.length; i++) {\r\n\t\t\tlet pred: SemanticContext = altToPred[i];\r\n\r\n\t\t\t// unpredicated is indicated by SemanticContext.NONE\r\n\t\t\tassert(pred != null);\r\n\r\n\t\t\t// find first unpredicated but ambig alternative, if any.\r\n\t\t\t// Only ambiguous alternatives will have SemanticContext.NONE.\r\n\t\t\t// Any unambig alts or ambig naked alts after first ambig naked are ignored\r\n\t\t\t// (undefined, i) means alt i is the default prediction\r\n\t\t\t// if no (undefined, i), then no default prediction.\r\n\t\t\tif (ambigAlts != null && ambigAlts.get(i) && pred === SemanticContext.NONE) {\r\n\t\t\t\tpairs.push(new DFAState.PredPrediction(pred, i));\r\n\t\t\t}\r\n\t\t\telse if (pred !== SemanticContext.NONE) {\r\n\t\t\t\tcontainsPredicate = true;\r\n\t\t\t\tpairs.push(new DFAState.PredPrediction(pred, i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!containsPredicate) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(Arrays.toString(altToPred)+\"->\"+pairs);\r\n\t\treturn pairs;\r\n\t}\r\n\r\n\t/** Look through a list of predicate/alt pairs, returning alts for the\r\n\t * pairs that win. An `undefined` predicate indicates an alt containing an\r\n\t * unpredicated config which behaves as \"always true.\"\r\n\t */\r\n\tprotected evalSemanticContext(\r\n\t\t@NotNull predPredictions: DFAState.PredPrediction[],\r\n\t\touterContext: ParserRuleContext,\r\n\t\tcomplete: boolean): BitSet {\r\n\t\tlet predictions: BitSet = new BitSet();\r\n\t\tfor (let pair of predPredictions) {\r\n\t\t\tif (pair.pred === SemanticContext.NONE) {\r\n\t\t\t\tpredictions.set(pair.alt);\r\n\t\t\t\tif (!complete) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet evaluatedResult: boolean = this.evalSemanticContextImpl(pair.pred, outerContext, pair.alt);\r\n\t\t\tif (ParserATNSimulator.debug || ParserATNSimulator.dfa_debug) {\r\n\t\t\t\tconsole.log(\"eval pred \" + pair + \"=\" + evaluatedResult);\r\n\t\t\t}\r\n\r\n\t\t\tif (evaluatedResult) {\r\n\t\t\t\tif (ParserATNSimulator.debug || ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"PREDICT \" + pair.alt);\r\n\t\t\t\t}\r\n\t\t\t\tpredictions.set(pair.alt);\r\n\t\t\t\tif (!complete) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn predictions;\r\n\t}\r\n\r\n\t/**\r\n\t * Evaluate a semantic context within a specific parser context.\r\n\t *\r\n\t * This method might not be called for every semantic context evaluated\r\n\t * during the prediction process. In particular, we currently do not\r\n\t * evaluate the following but it may change in the future:\r\n\t *\r\n\t * * Precedence predicates (represented by\r\n\t * {@link SemanticContext.PrecedencePredicate}) are not currently evaluated\r\n\t * through this method.\r\n\t * * Operator predicates (represented by {@link SemanticContext.AND} and\r\n\t * {@link SemanticContext.OR}) are evaluated as a single semantic\r\n\t * context, rather than evaluating the operands individually.\r\n\t * Implementations which require evaluation results from individual\r\n\t * predicates should override this method to explicitly handle evaluation of\r\n\t * the operands within operator predicates.\r\n\t *\r\n\t * @param pred The semantic context to evaluate\r\n\t * @param parserCallStack The parser context in which to evaluate the\r\n\t * semantic context\r\n\t * @param alt The alternative which is guarded by `pred`\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tprotected evalSemanticContextImpl(@NotNull pred: SemanticContext, parserCallStack: ParserRuleContext, alt: number): boolean {\r\n\t\treturn pred.eval(this._parser, parserCallStack);\r\n\t}\r\n\r\n\t/* TODO: If we are doing predicates, there is no point in pursuing\r\n\t\t closure operations if we reach a DFA state that uniquely predicts\r\n\t\t alternative. We will not be caching that DFA state and it is a\r\n\t\t waste to pursue the closure. Might have to advance when we do\r\n\t\t ambig detection thought :(\r\n\t\t */\r\n\r\n\tprotected closure(\r\n\t\tsourceConfigs: ATNConfigSet,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tcollectPredicates: boolean,\r\n\t\thasMoreContext: boolean,\r\n\t\t@Nullable contextCache: PredictionContextCache,\r\n\t\ttreatEofAsEpsilon: boolean): void {\r\n\t\tif (contextCache == null) {\r\n\t\t\tcontextCache = PredictionContextCache.UNCACHED;\r\n\t\t}\r\n\r\n\t\tlet currentConfigs: ATNConfigSet = sourceConfigs;\r\n\t\tlet closureBusy: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\twhile (currentConfigs.size > 0) {\r\n\t\t\tlet intermediate: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tfor (let config of currentConfigs) {\r\n\t\t\t\tthis.closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContext, contextCache, 0, treatEofAsEpsilon);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentConfigs = intermediate;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected closureImpl(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\t@Nullable intermediate: ATNConfigSet,\r\n\t\t@NotNull closureBusy: Array2DHashSet,\r\n\t\tcollectPredicates: boolean,\r\n\t\thasMoreContexts: boolean,\r\n\t\t@NotNull contextCache: PredictionContextCache,\r\n\t\tdepth: number,\r\n\t\ttreatEofAsEpsilon: boolean): void {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"closure(\" + config.toString(this._parser, true) + \")\");\r\n\t\t}\r\n\r\n\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\t// We hit rule end. If we have context info, use it\r\n\t\t\tif (!config.context.isEmpty) {\r\n\t\t\t\tlet hasEmpty: boolean = config.context.hasEmpty;\r\n\t\t\t\tlet nonEmptySize: number = config.context.size - (hasEmpty ? 1 : 0);\r\n\t\t\t\tfor (let i = 0; i < nonEmptySize; i++) {\r\n\t\t\t\t\tlet newContext: PredictionContext = config.context.getParent(i); // \"pop\" return state\r\n\t\t\t\t\tlet returnState: ATNState = this.atn.states[config.context.getReturnState(i)];\r\n\t\t\t\t\tlet c: ATNConfig = ATNConfig.create(returnState, config.alt, newContext, config.semanticContext);\r\n\t\t\t\t\t// While we have context to pop back from, we may have\r\n\t\t\t\t\t// gotten that context AFTER having fallen off a rule.\r\n\t\t\t\t\t// Make sure we track that we are now out of context.\r\n\t\t\t\t\tc.outerContextDepth = config.outerContextDepth;\r\n\t\t\t\t\tc.isPrecedenceFilterSuppressed = config.isPrecedenceFilterSuppressed;\r\n\t\t\t\t\tassert(depth > MIN_INTEGER_VALUE);\r\n\t\t\t\t\tthis.closureImpl(c, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth - 1, treatEofAsEpsilon);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!hasEmpty || !hasMoreContexts) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig = config.transform(config.state, false, PredictionContext.EMPTY_LOCAL);\r\n\t\t\t}\r\n\t\t\telse if (!hasMoreContexts) {\r\n\t\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// else if we have no context info, just chase follow links (if greedy)\r\n\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\tconsole.log(\"FALLING off rule \" +\r\n\t\t\t\t\t\tthis.getRuleName(config.state.ruleIndex));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (config.context === PredictionContext.EMPTY_FULL) {\r\n\t\t\t\t\t// no need to keep full context overhead when we step out\r\n\t\t\t\t\tconfig = config.transform(config.state, false, PredictionContext.EMPTY_LOCAL);\r\n\t\t\t\t}\r\n\t\t\t\telse if (!config.reachesIntoOuterContext && PredictionContext.isEmptyLocal(config.context)) {\r\n\t\t\t\t\t// add stop state when leaving decision rule for the first time\r\n\t\t\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet p: ATNState = config.state;\r\n\t\t// optimization\r\n\t\tif (!p.onlyHasEpsilonTransitions) {\r\n\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t// make sure to not return here, because EOF transitions can act as\r\n\t\t\t// both epsilon transitions and non-epsilon transitions.\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"added config \" + configs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < p.numberOfOptimizedTransitions; i++) {\r\n\t\t\t// This block implements first-edge elimination of ambiguous LR\r\n\t\t\t// alternatives as part of dynamic disambiguation during prediction.\r\n\t\t\t// See antlr/antlr4#1398.\r\n\t\t\tif (i === 0\r\n\t\t\t\t&& p.stateType === ATNStateType.STAR_LOOP_ENTRY\r\n\t\t\t\t&& (p as StarLoopEntryState).precedenceRuleDecision\r\n\t\t\t\t&& !config.context.hasEmpty) {\r\n\r\n\t\t\t\tlet precedenceDecision = p as StarLoopEntryState;\r\n\r\n\t\t\t\t// When suppress is true, it means the outgoing edge i==0 is\r\n\t\t\t\t// ambiguous with the outgoing edge i==1, and thus the closure\r\n\t\t\t\t// operation can dynamically disambiguate by suppressing this\r\n\t\t\t\t// edge during the closure operation.\r\n\t\t\t\tlet suppress: boolean = true;\r\n\t\t\t\tfor (let j: number = 0; j < config.context.size; j++) {\r\n\t\t\t\t\tif (!precedenceDecision.precedenceLoopbackStates.get(config.context.getReturnState(j))) {\r\n\t\t\t\t\t\tsuppress = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (suppress) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet t: Transition = p.getOptimizedTransition(i);\r\n\t\t\tlet continueCollecting: boolean =\r\n\t\t\t\t!(t instanceof ActionTransition) && collectPredicates;\r\n\t\t\tlet c: ATNConfig | undefined = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, contextCache, treatEofAsEpsilon);\r\n\t\t\tif (c != null) {\r\n\t\t\t\tif (t instanceof RuleTransition) {\r\n\t\t\t\t\tif (intermediate != null && !collectPredicates) {\r\n\t\t\t\t\t\tintermediate.add(c, contextCache);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newDepth: number = depth;\r\n\t\t\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\t\t\t// target fell off end of rule; mark resulting c as having dipped into outer context\r\n\t\t\t\t\t// We can't get here if incoming config was rule stop and we had context\r\n\t\t\t\t\t// track how far we dip into outer context. Might\r\n\t\t\t\t\t// come in handy and we avoid evaluating context dependent\r\n\t\t\t\t\t// preds if this is > 0.\r\n\r\n\t\t\t\t\tif (this.dfa != null && this.dfa.isPrecedenceDfa) {\r\n\t\t\t\t\t\tlet outermostPrecedenceReturn: number = (t as EpsilonTransition).outermostPrecedenceReturn;\r\n\t\t\t\t\t\tif (outermostPrecedenceReturn === this.dfa.atnStartState.ruleIndex) {\r\n\t\t\t\t\t\t\tc.isPrecedenceFilterSuppressed = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tc.outerContextDepth = c.outerContextDepth + 1;\r\n\r\n\t\t\t\t\tif (!closureBusy.add(c)) {\r\n\t\t\t\t\t\t// avoid infinite recursion for right-recursive rules\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tassert(newDepth > MIN_INTEGER_VALUE);\r\n\t\t\t\t\tnewDepth--;\r\n\t\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\t\tconsole.log(\"dips into outer ctx: \" + c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (t instanceof RuleTransition) {\r\n\t\t\t\t\tif (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext.isEmptyLocal(config.context))) {\r\n\t\t\t\t\t\tassert(c.context === config.context);\r\n\t\t\t\t\t\tif (newDepth === 0) {\r\n\t\t\t\t\t\t\t// the pop/push of a tail call would keep the depth\r\n\t\t\t\t\t\t\t// constant, except we latch if it goes negative\r\n\t\t\t\t\t\t\tnewDepth--;\r\n\t\t\t\t\t\t\tif (!this.tail_call_preserves_sll && PredictionContext.isEmptyLocal(config.context)) {\r\n\t\t\t\t\t\t\t\t// make sure the SLL config \"dips into the outer context\" or prediction may not fall back to LL on conflict\r\n\t\t\t\t\t\t\t\tc.outerContextDepth = c.outerContextDepth + 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// latch when newDepth goes negative - once we step out of the entry context we can't return\r\n\t\t\t\t\t\tif (newDepth >= 0) {\r\n\t\t\t\t\t\t\tnewDepth++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!t.isEpsilon && !closureBusy.add(c)) {\r\n\t\t\t\t\t\t// avoid infinite recursion for EOF* and EOF+\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.closureImpl(c, configs, intermediate, closureBusy, continueCollecting, hasMoreContexts, contextCache, newDepth, treatEofAsEpsilon);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getRuleName(index: number): string {\r\n\t\tif (this._parser != null && index >= 0) {\r\n\t\t\treturn this._parser.ruleNames[index];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprotected getEpsilonTarget(@NotNull config: ATNConfig, @NotNull t: Transition, collectPredicates: boolean, inContext: boolean, contextCache: PredictionContextCache, treatEofAsEpsilon: boolean): ATNConfig | undefined {\r\n\t\tswitch (t.serializationType) {\r\n\t\tcase TransitionType.RULE:\r\n\t\t\treturn this.ruleTransition(config, t as RuleTransition, contextCache);\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\treturn this.precedenceTransition(config, t as PrecedencePredicateTransition, collectPredicates, inContext);\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\treturn this.predTransition(config, t as PredicateTransition, collectPredicates, inContext);\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\treturn this.actionTransition(config, t as ActionTransition);\r\n\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\treturn config.transform(t.target, false);\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\t\t// EOF transitions act like epsilon transitions after the first EOF\r\n\t\t\t// transition is traversed\r\n\t\t\tif (treatEofAsEpsilon) {\r\n\t\t\t\tif (t.matches(Token.EOF, 0, 1)) {\r\n\t\t\t\t\treturn config.transform(t.target, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\r\n\t\tdefault:\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected actionTransition(@NotNull config: ATNConfig, @NotNull t: ActionTransition): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ACTION edge \" + t.ruleIndex + \":\" + t.actionIndex);\r\n\t\t}\r\n\t\treturn config.transform(t.target, false);\r\n\t}\r\n\r\n\t@Nullable\r\n\tprotected precedenceTransition(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull pt: PrecedencePredicateTransition,\r\n\t\tcollectPredicates: boolean,\r\n\t\tinContext: boolean): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\r\n\t\t\t\tpt.precedence + \">=_p\" +\r\n\t\t\t\t\", ctx dependent=true\");\r\n\t\t\tif (this._parser != null) {\r\n\t\t\t\tconsole.log(\"context surrounding pred is \" +\r\n\t\t\t\t\tthis._parser.getRuleInvocationStack());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet c: ATNConfig;\r\n\t\tif (collectPredicates && inContext) {\r\n\t\t\tlet newSemCtx: SemanticContext = SemanticContext.and(config.semanticContext, pt.predicate);\r\n\t\t\tc = config.transform(pt.target, false, newSemCtx);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tc = config.transform(pt.target, false);\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"config from pred transition=\" + c);\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\r\n\t@Nullable\r\n\tprotected predTransition(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull pt: PredicateTransition,\r\n\t\tcollectPredicates: boolean,\r\n\t\tinContext: boolean): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\r\n\t\t\t\tpt.ruleIndex + \":\" + pt.predIndex +\r\n\t\t\t\t\", ctx dependent=\" + pt.isCtxDependent);\r\n\t\t\tif (this._parser != null) {\r\n\t\t\t\tconsole.log(\"context surrounding pred is \" +\r\n\t\t\t\t\tthis._parser.getRuleInvocationStack());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet c: ATNConfig;\r\n\t\tif (collectPredicates &&\r\n\t\t\t(!pt.isCtxDependent || (pt.isCtxDependent && inContext))) {\r\n\t\t\tlet newSemCtx: SemanticContext = SemanticContext.and(config.semanticContext, pt.predicate);\r\n\t\t\tc = config.transform(pt.target, false, newSemCtx);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tc = config.transform(pt.target, false);\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"config from pred transition=\" + c);\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected ruleTransition(@NotNull config: ATNConfig, @NotNull t: RuleTransition, @Nullable contextCache: PredictionContextCache): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) +\r\n\t\t\t\t\", ctx=\" + config.context);\r\n\t\t}\r\n\r\n\t\tlet returnState: ATNState = t.followState;\r\n\t\tlet newContext: PredictionContext;\r\n\r\n\t\tif (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext.isEmptyLocal(config.context))) {\r\n\t\t\tnewContext = config.context;\r\n\t\t}\r\n\t\telse if (contextCache != null) {\r\n\t\t\tnewContext = contextCache.getChild(config.context, returnState.stateNumber);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnewContext = config.context.getChild(returnState.stateNumber);\r\n\t\t}\r\n\r\n\t\treturn config.transform(t.target, false, newContext);\r\n\t}\r\n\r\n\tprivate static STATE_ALT_SORT_COMPARATOR: (o1: ATNConfig, o2: ATNConfig) => number =\r\n\t\t(o1: ATNConfig, o2: ATNConfig): number => {\r\n\t\t\tlet diff: number = o1.state.nonStopStateNumber - o2.state.nonStopStateNumber;\r\n\t\t\tif (diff !== 0) {\r\n\t\t\t\treturn diff;\r\n\t\t\t}\r\n\r\n\t\t\tdiff = o1.alt - o2.alt;\r\n\t\t\tif (diff !== 0) {\r\n\t\t\t\treturn diff;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\tprivate isConflicted(@NotNull configset: ATNConfigSet, contextCache: PredictionContextCache): ConflictInfo | undefined {\r\n\t\tif (configset.uniqueAlt !== ATN.INVALID_ALT_NUMBER || configset.size <= 1) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet configs: ATNConfig[] = configset.toArray();\r\n\t\tconfigs.sort(ParserATNSimulator.STATE_ALT_SORT_COMPARATOR);\r\n\r\n\t\tlet exact: boolean = !configset.dipsIntoOuterContext;\r\n\t\tlet alts: BitSet = new BitSet();\r\n\t\tlet minAlt: number = configs[0].alt;\r\n\t\talts.set(minAlt);\r\n\r\n\t\t/* Quick checks come first (single pass, no context joining):\r\n\t\t * 1. Make sure first config in the sorted list predicts the minimum\r\n\t\t * represented alternative.\r\n\t\t * 2. Make sure every represented state has at least one configuration\r\n\t\t * which predicts the minimum represented alternative.\r\n\t\t * 3. (exact only) make sure every represented state has at least one\r\n\t\t * configuration which predicts each represented alternative.\r\n\t\t */\r\n\r\n\t\t// quick check 1 & 2 => if we assume #1 holds and check #2 against the\r\n\t\t// minAlt from the first state, #2 will fail if the assumption was\r\n\t\t// incorrect\r\n\t\tlet currentState: number = configs[0].state.nonStopStateNumber;\r\n\t\tfor (let config of configs) {\r\n\t\t\tlet stateNumber: number = config.state.nonStopStateNumber;\r\n\t\t\tif (stateNumber !== currentState) {\r\n\t\t\t\tif (config.alt !== minAlt) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentState = stateNumber;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet representedAlts: BitSet;\r\n\t\tif (exact) {\r\n\t\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\r\n\t\t\t// get the represented alternatives of the first state\r\n\t\t\trepresentedAlts = new BitSet();\r\n\t\t\tlet maxAlt: number = minAlt;\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tif (config.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet alt: number = config.alt;\r\n\t\t\t\trepresentedAlts.set(alt);\r\n\t\t\t\tmaxAlt = alt;\r\n\t\t\t}\r\n\r\n\t\t\t// quick check #3:\r\n\t\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\t\t\tlet currentAlt: number = minAlt;\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tlet stateNumber: number = config.state.nonStopStateNumber;\r\n\t\t\t\tlet alt: number = config.alt;\r\n\t\t\t\tif (stateNumber !== currentState) {\r\n\t\t\t\t\tif (currentAlt !== maxAlt) {\r\n\t\t\t\t\t\texact = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentState = stateNumber;\r\n\t\t\t\t\tcurrentAlt = minAlt;\r\n\t\t\t\t}\r\n\t\t\t\telse if (alt !== currentAlt) {\r\n\t\t\t\t\tif (alt !== representedAlts.nextSetBit(currentAlt + 1)) {\r\n\t\t\t\t\t\texact = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentAlt = alt;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\t\tlet firstIndexCurrentState: number = 0;\r\n\t\tlet lastIndexCurrentStateMinAlt: number = 0;\r\n\t\tlet joinedCheckContext: PredictionContext = configs[0].context;\r\n\t\tfor (let i = 1; i < configs.length; i++) {\r\n\t\t\tlet config: ATNConfig = configs[i];\r\n\t\t\tif (config.alt !== minAlt) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlastIndexCurrentStateMinAlt = i;\r\n\t\t\tjoinedCheckContext = contextCache.join(joinedCheckContext, configs[i].context);\r\n\t\t}\r\n\r\n\t\tfor (let i = lastIndexCurrentStateMinAlt + 1; i < configs.length; i++) {\r\n\t\t\tlet config: ATNConfig = configs[i];\r\n\t\t\tlet state: ATNState = config.state;\r\n\t\t\talts.set(config.alt);\r\n\t\t\tif (state.nonStopStateNumber !== currentState) {\r\n\t\t\t\tcurrentState = state.nonStopStateNumber;\r\n\t\t\t\tfirstIndexCurrentState = i;\r\n\t\t\t\tlastIndexCurrentStateMinAlt = i;\r\n\t\t\t\tjoinedCheckContext = config.context;\r\n\t\t\t\tfor (let j = firstIndexCurrentState + 1; j < configs.length; j++) {\r\n\t\t\t\t\tlet config2: ATNConfig = configs[j];\r\n\t\t\t\t\tif (config2.alt !== minAlt) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (config2.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlastIndexCurrentStateMinAlt = j;\r\n\t\t\t\t\tjoinedCheckContext = contextCache.join(joinedCheckContext, config2.context);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti = lastIndexCurrentStateMinAlt;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet joinedCheckContext2: PredictionContext = config.context;\r\n\t\t\tlet currentAlt: number = config.alt;\r\n\t\t\tlet lastIndexCurrentStateCurrentAlt: number = i;\r\n\t\t\tfor (let j = lastIndexCurrentStateCurrentAlt + 1; j < configs.length; j++) {\r\n\t\t\t\tlet config2: ATNConfig = configs[j];\r\n\t\t\t\tif (config2.alt !== currentAlt) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (config2.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlastIndexCurrentStateCurrentAlt = j;\r\n\t\t\t\tjoinedCheckContext2 = contextCache.join(joinedCheckContext2, config2.context);\r\n\t\t\t}\r\n\r\n\t\t\ti = lastIndexCurrentStateCurrentAlt;\r\n\r\n\t\t\tlet check: PredictionContext = contextCache.join(joinedCheckContext, joinedCheckContext2);\r\n\t\t\tif (!joinedCheckContext.equals(check)) {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\r\n\t\t\t// update exact if necessary\r\n\t\t\texact = exact && joinedCheckContext.equals(joinedCheckContext2);\r\n\t\t}\r\n\r\n\t\treturn new ConflictInfo(alts, exact);\r\n\t}\r\n\r\n\tprotected getConflictingAltsFromConfigSet(configs: ATNConfigSet): BitSet | undefined {\r\n\t\tlet conflictingAlts: BitSet | undefined = configs.conflictingAlts;\r\n\t\tif (conflictingAlts == null && configs.uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tconflictingAlts = new BitSet();\r\n\t\t\tconflictingAlts.set(configs.uniqueAlt);\r\n\t\t}\r\n\r\n\t\treturn conflictingAlts;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getTokenName(t: number): string {\r\n\t\tif (t === Token.EOF) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\r\n\t\tlet vocabulary: Vocabulary = this._parser != null ? this._parser.vocabulary : VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\tlet displayName: string = vocabulary.getDisplayName(t);\r\n\t\tif (displayName === String(t)) {\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\treturn displayName + \"<\" + t + \">\";\r\n\t}\r\n\r\n\tpublic getLookaheadName(input: TokenStream): string {\r\n\t\treturn this.getTokenName(input.LA(1));\r\n\t}\r\n\r\n\tpublic dumpDeadEndConfigs(@NotNull nvae: NoViableAltException): void {\r\n\t\tconsole.log(\"dead end configs: \");\r\n\t\tlet deadEndConfigs = nvae.deadEndConfigs;\r\n\t\tif (!deadEndConfigs) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let c of deadEndConfigs) {\r\n\t\t\tlet trans: string = \"no edges\";\r\n\t\t\tif (c.state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\tlet t: Transition = c.state.getOptimizedTransition(0);\r\n\t\t\t\tif (t instanceof AtomTransition) {\r\n\t\t\t\t\ttrans = \"Atom \" + this.getTokenName(t._label);\r\n\t\t\t\t}\r\n\t\t\t\telse if (t instanceof SetTransition) {\r\n\t\t\t\t\tlet not: boolean = t instanceof NotSetTransition;\r\n\t\t\t\t\ttrans = (not ? \"~\" : \"\") + \"Set \" + t.set.toString();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.log(c.toString(this._parser, true) + \":\" + trans);\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected noViableAlt(\r\n\t\t@NotNull input: TokenStream,\r\n\t\t@NotNull outerContext: ParserRuleContext,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tstartIndex: number): NoViableAltException {\r\n\t\treturn new NoViableAltException(this._parser, input,\r\n\t\t\tinput.get(startIndex),\r\n\t\t\tinput.LT(1),\r\n\t\t\tconfigs, outerContext);\r\n\t}\r\n\r\n\tprotected getUniqueAlt(@NotNull configs: Iterable): number {\r\n\t\tlet alt: number = ATN.INVALID_ALT_NUMBER;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (alt === ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\talt = c.alt; // found first alt\r\n\t\t\t}\r\n\t\t\telse if (c.alt !== alt) {\r\n\t\t\t\treturn ATN.INVALID_ALT_NUMBER;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn alt;\r\n\t}\r\n\r\n\tprotected configWithAltAtStopState(@NotNull configs: Iterable, alt: number): boolean {\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.alt === alt) {\r\n\t\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected addDFAEdge(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull fromState: DFAState,\r\n\t\tt: number,\r\n\t\tcontextTransitions: IntegerList | undefined,\r\n\t\t@NotNull toConfigs: ATNConfigSet,\r\n\t\tcontextCache: PredictionContextCache): DFAState {\r\n\t\tassert(contextTransitions == null || contextTransitions.isEmpty || dfa.isContextSensitive);\r\n\r\n\t\tlet from: DFAState = fromState;\r\n\t\tlet to: DFAState = this.addDFAState(dfa, toConfigs, contextCache);\r\n\r\n\t\tif (contextTransitions != null) {\r\n\t\t\tfor (let context of contextTransitions.toArray()) {\r\n\t\t\t\tif (context === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tif (from.configs.isOutermostConfigSet) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom.setContextSensitive(this.atn);\r\n\t\t\t\tfrom.setContextSymbol(t);\r\n\t\t\t\tlet next: DFAState | undefined = from.getContextTarget(context);\r\n\t\t\t\tif (next != null) {\r\n\t\t\t\t\tfrom = next;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext = this.addDFAContextState(dfa, from.configs, context, contextCache);\r\n\t\t\t\tassert(context !== PredictionContext.EMPTY_FULL_STATE_KEY || next.configs.isOutermostConfigSet);\r\n\t\t\t\tfrom.setContextTarget(context, next);\r\n\t\t\t\tfrom = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"EDGE \" + from + \" -> \" + to + \" upon \" + this.getTokenName(t));\r\n\t\t}\r\n\t\tthis.setDFAEdge(from, t, to);\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"DFA=\\n\" + dfa.toString(this._parser != null ? this._parser.vocabulary : VocabularyImpl.EMPTY_VOCABULARY, this._parser != null ? this._parser.ruleNames : undefined));\r\n\t\t}\r\n\t\treturn to;\r\n\t}\r\n\r\n\tprotected setDFAEdge(@Nullable p: DFAState, t: number, @Nullable q: DFAState): void {\r\n\t\tif (p != null) {\r\n\t\t\tp.setTarget(t, q);\r\n\t\t}\r\n\t}\r\n\r\n\t/** See comment on LexerInterpreter.addDFAState. */\r\n\t@NotNull\r\n\tprotected addDFAContextState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet, returnContext: number, contextCache: PredictionContextCache): DFAState {\r\n\t\tif (returnContext !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tlet contextConfigs: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tcontextConfigs.add(config.appendContext(returnContext, contextCache));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.addDFAState(dfa, contextConfigs, contextCache);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tassert(!configs.isOutermostConfigSet, \"Shouldn't be adding a duplicate edge.\");\r\n\t\t\tconfigs = configs.clone(true);\r\n\t\t\tconfigs.isOutermostConfigSet = true;\r\n\t\t\treturn this.addDFAState(dfa, configs, contextCache);\r\n\t\t}\r\n\t}\r\n\r\n\t/** See comment on LexerInterpreter.addDFAState. */\r\n\t@NotNull\r\n\tprotected addDFAState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet, contextCache: PredictionContextCache): DFAState {\r\n\t\tlet enableDfa: boolean = this.enable_global_context_dfa || !configs.isOutermostConfigSet;\r\n\t\tif (enableDfa) {\r\n\t\t\tif (!configs.isReadOnly) {\r\n\t\t\t\tconfigs.optimizeConfigs(this);\r\n\t\t\t}\r\n\r\n\t\t\tlet proposed: DFAState = this.createDFAState(dfa, configs);\r\n\t\t\tlet existing: DFAState | undefined = dfa.states.get(proposed);\r\n\t\t\tif (existing != null) {\r\n\t\t\t\treturn existing;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!configs.isReadOnly) {\r\n\t\t\tif (configs.conflictInfo == null) {\r\n\t\t\t\tconfigs.conflictInfo = this.isConflicted(configs, contextCache);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet newState: DFAState = this.createDFAState(dfa, configs.clone(true));\r\n\t\t// getDecisionState won't return undefined when we request a known valid decision\r\n\t\tlet decisionState: DecisionState = this.atn.getDecisionState(dfa.decision) as DecisionState;\r\n\t\tlet predictedAlt: number = this.getUniqueAlt(configs);\r\n\t\tif (predictedAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(predictedAlt);\r\n\t\t} else if (configs.conflictingAlts != null) {\r\n\t\t\tlet conflictingAlts = configs.conflictingAlts;\r\n\t\t\tif (conflictingAlts) {\r\n\t\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(conflictingAlts.nextSetBit(0));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (newState.isAcceptState && configs.hasSemanticContext) {\r\n\t\t\tthis.predicateDFAState(newState, configs, decisionState.numberOfTransitions);\r\n\t\t}\r\n\r\n\t\tif (!enableDfa) {\r\n\t\t\treturn newState;\r\n\t\t}\r\n\r\n\t\tlet added: DFAState = dfa.addState(newState);\r\n\t\tif (ParserATNSimulator.debug && added === newState) {\r\n\t\t\tconsole.log(\"adding new DFA state: \" + newState);\r\n\t\t}\r\n\t\treturn added;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected createDFAState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet): DFAState {\r\n\t\treturn new DFAState(configs);\r\n\t}\r\n\r\n\tprotected reportAttemptingFullContext(@NotNull dfa: DFA, conflictingAlts: BitSet | undefined, @NotNull conflictState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + conflictState.s0.configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportAttemptingFullContext) {\r\n\t\t\t\tlistener.reportAttemptingFullContext(this._parser, dfa, startIndex, stopIndex, conflictingAlts, conflictState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected reportContextSensitivity(@NotNull dfa: DFA, prediction: number, @NotNull acceptState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + acceptState.s0.configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportContextSensitivity) {\r\n\t\t\t\tlistener.reportContextSensitivity(this._parser, dfa, startIndex, stopIndex, prediction, acceptState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** If context sensitive parsing, we know it's ambiguity not conflict */\r\n\tprotected reportAmbiguity(\r\n\t\t@NotNull dfa: DFA,\r\n\t\tD: DFAState, // the DFA state from execATN(): void that had SLL conflicts\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull configs: ATNConfigSet) // configs that LL not SLL considered conflicting\r\n\t{\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportAmbiguity \" +\r\n\t\t\t\tambigAlts + \":\" + configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportAmbiguity) {\r\n\t\t\t\tlistener.reportAmbiguity(this._parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getReturnState(context: RuleContext): number {\r\n\t\tif (context.isEmpty) {\r\n\t\t\treturn PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t}\r\n\r\n\t\tlet state: ATNState = this.atn.states[context.invokingState];\r\n\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\treturn transition.followState.stateNumber;\r\n\t}\r\n\r\n\tprotected skipTailCalls(context: ParserRuleContext): ParserRuleContext {\r\n\t\tif (!this.optimize_tail_calls) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\twhile (!context.isEmpty) {\r\n\t\t\tlet state: ATNState = this.atn.states[context.invokingState];\r\n\t\t\tassert(state.numberOfTransitions === 1 && state.transition(0).serializationType === TransitionType.RULE);\r\n\t\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\t\tif (!transition.tailCall) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// This method requires that the root ancestor of the ParserRuleContext be empty. If we make it to this\r\n\t\t\t// line, we know the current node is not empty, which means it does have a parent.\r\n\t\t\tcontext = context.parent as ParserRuleContext;\r\n\t\t}\r\n\r\n\t\treturn context;\r\n\t}\r\n\r\n\t/**\r\n\t * @since 4.3\r\n\t */\r\n\tget parser(): Parser {\r\n\t\treturn this._parser;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:34.9572142-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\nimport { PlusLoopbackState } from \"./PlusLoopbackState\";\r\n\r\n/** Start of `(A|B|...)+` loop. Technically a decision state, but\r\n * we don't use for code generation; somebody might need it, so I'm defining\r\n * it for completeness. In reality, the {@link PlusLoopbackState} node is the\r\n * real decision-making note for `A+`.\r\n */\r\nexport class PlusBlockStartState extends BlockStartState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: PlusLoopbackState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.PLUS_BLOCK_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.0257730-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Decision state for `A+` and `(A|B)+`. It has two transitions:\r\n * one to the loop back to start of the block and one to exit.\r\n */\r\nexport class PlusLoopbackState extends DecisionState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.PLUS_LOOP_BACK;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.0994191-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class PrecedencePredicateTransition extends AbstractPredicateTransition {\r\n\tpublic precedence: number;\r\n\r\n\tconstructor( @NotNull target: ATNState, precedence: number) {\r\n\t\tsuper(target);\r\n\t\tthis.precedence = precedence;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.PRECEDENCE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget predicate(): SemanticContext.PrecedencePredicate {\r\n\t\treturn new SemanticContext.PrecedencePredicate(this.precedence);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.precedence + \" >= _p\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.5959980-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class RangeTransition extends Transition {\r\n\tpublic from: number;\r\n\tpublic to: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, from: number, to: number) {\r\n\t\tsuper(target);\r\n\t\tthis.from = from;\r\n\t\tthis.to = to;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.RANGE;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn IntervalSet.of(this.from, this.to);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= this.from && symbol <= this.to;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"'\" + String.fromCodePoint(this.from) + \"'..'\" + String.fromCodePoint(this.to) + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.6806851-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\n\r\nexport class RuleStartState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic stopState!: RuleStopState;\r\n\tpublic isPrecedenceRule: boolean = false;\r\n\tpublic leftFactored: boolean = false;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.RULE_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.5657409-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The block that begins a closure loop. */\r\nexport class StarBlockStartState extends BlockStartState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_BLOCK_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.6368726-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\n\r\nexport class StarLoopbackState extends ATNState {\r\n\tget loopEntryState(): StarLoopEntryState {\r\n\t\treturn this.transition(0).target as StarLoopEntryState;\r\n\t}\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_LOOP_BACK;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.7814046-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The Tokens rule start state linking to each lexer rule start state */\r\nexport class TokensStartState extends DecisionState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.TOKEN_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\nexport class UUID implements Equatable {\r\n\tprivate readonly data: Uint32Array;\r\n\r\n\tconstructor(mostSigBits: number, moreSigBits: number, lessSigBits: number, leastSigBits: number) {\r\n\t\tthis.data = new Uint32Array(4);\r\n\t\tthis.data[0] = mostSigBits;\r\n\t\tthis.data[1] = moreSigBits;\r\n\t\tthis.data[2] = lessSigBits;\r\n\t\tthis.data[3] = leastSigBits;\r\n\t}\r\n\r\n\tpublic static fromString(data: string): UUID {\r\n\t\tif (!/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/.test(data)) {\r\n\t\t\tthrow new Error(\"Incorrectly formatted UUID\");\r\n\t\t}\r\n\r\n\t\tlet segments = data.split(\"-\");\r\n\t\tlet mostSigBits = parseInt(segments[0], 16);\r\n\t\tlet moreSigBits = ((parseInt(segments[1], 16) << 16) >>> 0) + parseInt(segments[2], 16);\r\n\t\tlet lessSigBits = ((parseInt(segments[3], 16) << 16) >>> 0) + parseInt(segments[4].substr(0, 4), 16);\r\n\t\tlet leastSigBits = parseInt(segments[4].substr(-8), 16);\r\n\t\treturn new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits);\r\n\t}\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn MurmurHash.hashCode([this.data[0], this.data[1], this.data[2], this.data[3]]);\r\n\t}\r\n\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof UUID)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.data[0] === obj.data[0]\r\n\t\t\t&& this.data[1] === obj.data[1]\r\n\t\t\t&& this.data[2] === obj.data[2]\r\n\t\t\t&& this.data[3] === obj.data[3];\r\n\t}\r\n\r\n\tpublic toString(): string {\r\n\t\treturn (\"00000000\" + this.data[0].toString(16)).substr(-8)\r\n\t\t\t+ \"-\" + (\"0000\" + (this.data[1] >>> 16).toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + this.data[1].toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + (this.data[2] >>> 16).toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + this.data[2].toString(16)).substr(-4)\r\n\t\t\t+ (\"00000000\" + this.data[3].toString(16)).substr(-8);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.9683447-07:00\r\n\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNDeserializationOptions } from \"./ATNDeserializationOptions\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { ATNType } from \"./ATNType\";\r\nimport { AtomTransition } from \"./AtomTransition\";\r\nimport { BasicBlockStartState } from \"./BasicBlockStartState\";\r\nimport { BasicState } from \"./BasicState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { BlockEndState } from \"./BlockEndState\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { EpsilonTransition } from \"./EpsilonTransition\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { InvalidState } from \"./InvalidState\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { LexerChannelAction } from \"./LexerChannelAction\";\r\nimport { LexerCustomAction } from \"./LexerCustomAction\";\r\nimport { LexerModeAction } from \"./LexerModeAction\";\r\nimport { LexerMoreAction } from \"./LexerMoreAction\";\r\nimport { LexerPopModeAction } from \"./LexerPopModeAction\";\r\nimport { LexerPushModeAction } from \"./LexerPushModeAction\";\r\nimport { LexerSkipAction } from \"./LexerSkipAction\";\r\nimport { LexerTypeAction } from \"./LexerTypeAction\";\r\nimport { LoopEndState } from \"./LoopEndState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { ParserATNSimulator } from \"./ParserATNSimulator\";\r\nimport { PlusBlockStartState } from \"./PlusBlockStartState\";\r\nimport { PlusLoopbackState } from \"./PlusLoopbackState\";\r\nimport { PrecedencePredicateTransition } from \"./PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { RangeTransition } from \"./RangeTransition\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { StarBlockStartState } from \"./StarBlockStartState\";\r\nimport { StarLoopbackState } from \"./StarLoopbackState\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"./TokensStartState\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport { UUID } from \"../misc/UUID\";\r\nimport { WildcardTransition } from \"./WildcardTransition\";\r\n\r\ninterface UnicodeDeserializer {\r\n\t// Wrapper for readInt() or readInt32()\r\n\treadUnicode(data: Uint16Array, p: number): number;\r\n\r\n\t// Work around Java not allowing mutation of captured variables\r\n\t// by returning amount by which to increment p after each read\r\n\treadonly size: number;\r\n}\r\n\r\nconst enum UnicodeDeserializingMode {\r\n\tUNICODE_BMP,\r\n\tUNICODE_SMP,\r\n}\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNDeserializer {\r\n\tstatic get SERIALIZED_VERSION(): number {\r\n\t\t/* This value should never change. Updates following this version are\r\n\t\t * reflected as change in the unique ID SERIALIZED_UUID.\r\n\t\t */\r\n\t\treturn 3;\r\n\t}\r\n\r\n\t/* WARNING: DO NOT MERGE THESE LINES. If UUIDs differ during a merge,\r\n\t * resolve the conflict by generating a new ID!\r\n\t */\r\n\r\n\t/**\r\n\t * This is the earliest supported serialized UUID.\r\n\t */\r\n\tprivate static readonly BASE_SERIALIZED_UUID: UUID = UUID.fromString(\"E4178468-DF95-44D0-AD87-F22A5D5FB6D3\");\r\n\t/**\r\n\t * This UUID indicates an extension of {@link #ADDED_PRECEDENCE_TRANSITIONS}\r\n\t * for the addition of lexer actions encoded as a sequence of\r\n\t * {@link LexerAction} instances.\r\n\t */\r\n\tprivate static readonly ADDED_LEXER_ACTIONS: UUID = UUID.fromString(\"AB35191A-1603-487E-B75A-479B831EAF6D\");\r\n\t/**\r\n\t * This UUID indicates the serialized ATN contains two sets of\r\n\t * IntervalSets, where the second set's values are encoded as\r\n\t * 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\r\n\t */\r\n\tprivate static readonly ADDED_UNICODE_SMP: UUID = UUID.fromString(\"C23FEA89-0605-4f51-AFB8-058BCAB8C91B\");\r\n\t/**\r\n\t * This list contains all of the currently supported UUIDs, ordered by when\r\n\t * the feature first appeared in this branch.\r\n\t */\r\n\tprivate static readonly SUPPORTED_UUIDS: UUID[] = [\r\n\t\tATNDeserializer.BASE_SERIALIZED_UUID,\r\n\t\tATNDeserializer.ADDED_LEXER_ACTIONS,\r\n\t\tATNDeserializer.ADDED_UNICODE_SMP,\r\n\t];\r\n\r\n\t/**\r\n\t * This is the current serialized UUID.\r\n\t */\r\n\tprivate static readonly SERIALIZED_UUID: UUID = ATNDeserializer.ADDED_UNICODE_SMP;\r\n\r\n\t@NotNull\r\n\tprivate readonly deserializationOptions: ATNDeserializationOptions;\r\n\r\n\tconstructor(deserializationOptions?: ATNDeserializationOptions) {\r\n\t\tif (deserializationOptions === undefined) {\r\n\t\t\tdeserializationOptions = ATNDeserializationOptions.defaultOptions;\r\n\t\t}\r\n\r\n\t\tthis.deserializationOptions = deserializationOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if a particular serialized representation of an ATN supports\r\n\t * a particular feature, identified by the {@link UUID} used for serializing\r\n\t * the ATN at the time the feature was first introduced.\r\n\t *\r\n\t * @param feature The {@link UUID} marking the first time the feature was\r\n\t * supported in the serialized ATN.\r\n\t * @param actualUuid The {@link UUID} of the actual serialized ATN which is\r\n\t * currently being deserialized.\r\n\t * @returns `true` if the `actualUuid` value represents a\r\n\t * serialized ATN at or after the feature identified by `feature` was\r\n\t * introduced; otherwise, `false`.\r\n\t */\r\n\tprotected static isFeatureSupported(feature: UUID, actualUuid: UUID): boolean {\r\n\t\tlet featureIndex: number = ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(feature));\r\n\t\tif (featureIndex < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(actualUuid)) >= featureIndex;\r\n\t}\r\n\r\n\tprivate static getUnicodeDeserializer(mode: UnicodeDeserializingMode): UnicodeDeserializer {\r\n\t\tif (mode === UnicodeDeserializingMode.UNICODE_BMP) {\r\n\t\t\treturn {\r\n\t\t\t\treadUnicode: (data: Uint16Array, p: number): number => {\r\n\t\t\t\t\treturn ATNDeserializer.toInt(data[p]);\r\n\t\t\t\t},\r\n\t\t\t\tsize: 1,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\treadUnicode: (data: Uint16Array, p: number): number => {\r\n\t\t\t\t\treturn ATNDeserializer.toInt32(data, p);\r\n\t\t\t\t},\r\n\t\t\t\tsize: 2,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tpublic deserialize(@NotNull data: Uint16Array): ATN {\r\n\t\tdata = data.slice(0);\r\n\r\n\t\t// Each Uint16 value in data is shifted by +2 at the entry to this method. This is an encoding optimization\r\n\t\t// targeting the serialized values 0 and -1 (serialized to 0xFFFF), each of which are very common in the\r\n\t\t// serialized form of the ATN. In the modified UTF-8 that Java uses for compiled string literals, these two\r\n\t\t// character values have multi-byte forms. By shifting each value by +2, they become characters 2 and 1 prior to\r\n\t\t// writing the string, each of which have single-byte representations. Since the shift occurs in the tool during\r\n\t\t// ATN serialization, each target is responsible for adjusting the values during deserialization.\r\n\t\t//\r\n\t\t// As a special case, note that the first element of data is not adjusted because it contains the major version\r\n\t\t// number of the serialized ATN, which was fixed at 3 at the time the value shifting was implemented.\r\n\t\tfor (let i = 1; i < data.length; i++) {\r\n\t\t\tdata[i] = (data[i] - 2) & 0xFFFF;\r\n\t\t}\r\n\r\n\t\tlet p: number = 0;\r\n\t\tlet version: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tif (version !== ATNDeserializer.SERIALIZED_VERSION) {\r\n\t\t\tlet reason = `Could not deserialize ATN with version ${version} (expected ${ATNDeserializer.SERIALIZED_VERSION}).`;\r\n\t\t\tthrow new Error(reason);\r\n\t\t}\r\n\r\n\t\tlet uuid: UUID = ATNDeserializer.toUUID(data, p);\r\n\t\tp += 8;\r\n\t\tif (ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(uuid)) < 0) {\r\n\t\t\tlet reason = `Could not deserialize ATN with UUID ${uuid} (expected ${ATNDeserializer.SERIALIZED_UUID} or a legacy UUID).`;\r\n\t\t\tthrow new Error(reason);\r\n\t\t}\r\n\r\n\t\tlet supportsLexerActions: boolean = ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid);\r\n\r\n\t\tlet grammarType: ATNType = ATNDeserializer.toInt(data[p++]);\r\n\t\tlet maxTokenType: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tlet atn: ATN = new ATN(grammarType, maxTokenType);\r\n\r\n\t\t//\r\n\t\t// STATES\r\n\t\t//\r\n\t\tlet loopBackStateNumbers: Array<[LoopEndState, number]> = [];\r\n\t\tlet endStateNumbers: Array<[BlockStartState, number]> = [];\r\n\t\tlet nstates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nstates; i++) {\r\n\t\t\tlet stype: ATNStateType = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t// ignore bad type of states\r\n\t\t\tif (stype === ATNStateType.INVALID_TYPE) {\r\n\t\t\t\tatn.addState(new InvalidState());\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet ruleIndex: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tif (ruleIndex === 0xFFFF) {\r\n\t\t\t\truleIndex = -1;\r\n\t\t\t}\r\n\r\n\t\t\tlet s: ATNState = this.stateFactory(stype, ruleIndex);\r\n\t\t\tif (stype === ATNStateType.LOOP_END) { // special case\r\n\t\t\t\tlet loopBackStateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tloopBackStateNumbers.push([s as LoopEndState, loopBackStateNumber]);\r\n\t\t\t}\r\n\t\t\telse if (s instanceof BlockStartState) {\r\n\t\t\t\tlet endStateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tendStateNumbers.push([s, endStateNumber]);\r\n\t\t\t}\r\n\t\t\tatn.addState(s);\r\n\t\t}\r\n\r\n\t\t// delay the assignment of loop back and end states until we know all the state instances have been initialized\r\n\t\tfor (let pair of loopBackStateNumbers) {\r\n\t\t\tpair[0].loopBackState = atn.states[pair[1]];\r\n\t\t}\r\n\r\n\t\tfor (let pair of endStateNumbers) {\r\n\t\t\tpair[0].endState = atn.states[pair[1]] as BlockEndState;\r\n\t\t}\r\n\r\n\t\tlet numNonGreedyStates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numNonGreedyStates; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as DecisionState).nonGreedy = true;\r\n\t\t}\r\n\r\n\t\tlet numSllDecisions: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numSllDecisions; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as DecisionState).sll = true;\r\n\t\t}\r\n\r\n\t\tlet numPrecedenceStates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numPrecedenceStates; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as RuleStartState).isPrecedenceRule = true;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// RULES\r\n\t\t//\r\n\t\tlet nrules: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\tatn.ruleToTokenType = new Int32Array(nrules);\r\n\t\t}\r\n\r\n\t\tatn.ruleToStartState = new Array(nrules);\r\n\t\tfor (let i = 0; i < nrules; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tlet startState: RuleStartState = atn.states[s] as RuleStartState;\r\n\t\t\tstartState.leftFactored = ATNDeserializer.toInt(data[p++]) !== 0;\r\n\t\t\tatn.ruleToStartState[i] = startState;\r\n\t\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\t\tlet tokenType: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tif (tokenType === 0xFFFF) {\r\n\t\t\t\t\ttokenType = Token.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tatn.ruleToTokenType[i] = tokenType;\r\n\r\n\t\t\t\tif (!ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid)) {\r\n\t\t\t\t\t// this piece of unused metadata was serialized prior to the\r\n\t\t\t\t\t// addition of LexerAction\r\n\t\t\t\t\tlet actionIndexIgnored: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (actionIndexIgnored === 0xFFFF) {\r\n\t\t\t\t\t\tactionIndexIgnored = -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tatn.ruleToStopState = new Array(nrules);\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!(state instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tatn.ruleToStopState[state.ruleIndex] = state;\r\n\t\t\tatn.ruleToStartState[state.ruleIndex].stopState = state;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// MODES\r\n\t\t//\r\n\t\tlet nmodes: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nmodes; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tatn.modeToStartState.push(atn.states[s] as TokensStartState);\r\n\t\t}\r\n\r\n\t\tatn.modeToDFA = new Array(nmodes);\r\n\t\tfor (let i = 0; i < nmodes; i++) {\r\n\t\t\tatn.modeToDFA[i] = new DFA(atn.modeToStartState[i]);\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// SETS\r\n\t\t//\r\n\t\tlet sets: IntervalSet[] = [];\r\n\r\n\t\t// First, read all sets with 16-bit Unicode code points <= U+FFFF.\r\n\t\tp = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(UnicodeDeserializingMode.UNICODE_BMP));\r\n\r\n\t\t// Next, if the ATN was serialized with the Unicode SMP feature,\r\n\t\t// deserialize sets with 32-bit arguments <= U+10FFFF.\r\n\t\tif (ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_UNICODE_SMP, uuid)) {\r\n\t\t\tp = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(UnicodeDeserializingMode.UNICODE_SMP));\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// EDGES\r\n\t\t//\r\n\t\tlet nedges: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nedges; i++) {\r\n\t\t\tlet src: number = ATNDeserializer.toInt(data[p]);\r\n\t\t\tlet trg: number = ATNDeserializer.toInt(data[p + 1]);\r\n\t\t\tlet ttype: number = ATNDeserializer.toInt(data[p + 2]);\r\n\t\t\tlet arg1: number = ATNDeserializer.toInt(data[p + 3]);\r\n\t\t\tlet arg2: number = ATNDeserializer.toInt(data[p + 4]);\r\n\t\t\tlet arg3: number = ATNDeserializer.toInt(data[p + 5]);\r\n\t\t\tlet trans: Transition = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\r\n\t\t\t// console.log(`EDGE ${trans.constructor.name} ${src}->${trg} ${Transition.serializationNames[ttype]} ${arg1},${arg2},${arg3}`);\r\n\t\t\tlet srcState: ATNState = atn.states[src];\r\n\t\t\tsrcState.addTransition(trans);\r\n\t\t\tp += 6;\r\n\t\t}\r\n\r\n\t\t// edges for rule stop states can be derived, so they aren't serialized\r\n\t\tinterface T { stopState: number; returnState: number; outermostPrecedenceReturn: number; }\r\n\t\tlet returnTransitionsSet = new Array2DHashSet({\r\n\t\t\thashCode: (o: T) => o.stopState ^ o.returnState ^ o.outermostPrecedenceReturn,\r\n\r\n\t\t\tequals: (a: T, b: T): boolean => {\r\n\t\t\t\treturn a.stopState === b.stopState\r\n\t\t\t\t\t&& a.returnState === b.returnState\r\n\t\t\t\t\t&& a.outermostPrecedenceReturn === b.outermostPrecedenceReturn;\r\n\t\t\t},\r\n\t\t});\r\n\t\tlet returnTransitions: T[] = [];\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tlet returningToLeftFactored: boolean = state.ruleIndex >= 0 && atn.ruleToStartState[state.ruleIndex].leftFactored;\r\n\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\tlet t: Transition = state.transition(i);\r\n\t\t\t\tif (!(t instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet ruleTransition: RuleTransition = t;\r\n\t\t\t\tlet returningFromLeftFactored: boolean = atn.ruleToStartState[ruleTransition.target.ruleIndex].leftFactored;\r\n\t\t\t\tif (!returningFromLeftFactored && returningToLeftFactored) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet outermostPrecedenceReturn: number = -1;\r\n\t\t\t\tif (atn.ruleToStartState[ruleTransition.target.ruleIndex].isPrecedenceRule) {\r\n\t\t\t\t\tif (ruleTransition.precedence === 0) {\r\n\t\t\t\t\t\toutermostPrecedenceReturn = ruleTransition.target.ruleIndex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet current = { stopState: ruleTransition.target.ruleIndex, returnState: ruleTransition.followState.stateNumber, outermostPrecedenceReturn };\r\n\t\t\t\tif (returnTransitionsSet.add(current)) {\r\n\t\t\t\t\treturnTransitions.push(current);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add all elements from returnTransitions to the ATN\r\n\t\tfor (let returnTransition of returnTransitions) {\r\n\t\t\tlet transition = new EpsilonTransition(atn.states[returnTransition.returnState], returnTransition.outermostPrecedenceReturn);\r\n\t\t\tatn.ruleToStopState[returnTransition.stopState].addTransition(transition);\r\n\t\t}\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (state instanceof BlockStartState) {\r\n\t\t\t\t// we need to know the end state to set its start state\r\n\t\t\t\tif (state.endState === undefined) {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// block end states can only be associated to a single block start state\r\n\t\t\t\tif (state.endState.startState !== undefined) {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.endState.startState = state;\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof PlusLoopbackState) {\r\n\t\t\t\tlet loopbackState: PlusLoopbackState = state;\r\n\t\t\t\tfor (let i = 0; i < loopbackState.numberOfTransitions; i++) {\r\n\t\t\t\t\tlet target: ATNState = loopbackState.transition(i).target;\r\n\t\t\t\t\tif (target instanceof PlusBlockStartState) {\r\n\t\t\t\t\t\ttarget.loopBackState = loopbackState;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (state instanceof StarLoopbackState) {\r\n\t\t\t\tlet loopbackState: StarLoopbackState = state;\r\n\t\t\t\tfor (let i = 0; i < loopbackState.numberOfTransitions; i++) {\r\n\t\t\t\t\tlet target: ATNState = loopbackState.transition(i).target;\r\n\t\t\t\t\tif (target instanceof StarLoopEntryState) {\r\n\t\t\t\t\t\ttarget.loopBackState = loopbackState;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// DECISIONS\r\n\t\t//\r\n\t\tlet ndecisions: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 1; i <= ndecisions; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tlet decState: DecisionState = atn.states[s] as DecisionState;\r\n\t\t\tatn.decisionToState.push(decState);\r\n\t\t\tdecState.decision = i - 1;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// LEXER ACTIONS\r\n\t\t//\r\n\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\tif (supportsLexerActions) {\r\n\t\t\t\tatn.lexerActions = new Array(ATNDeserializer.toInt(data[p++]));\r\n\t\t\t\tfor (let i = 0; i < atn.lexerActions.length; i++) {\r\n\t\t\t\t\tlet actionType: LexerActionType = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tlet data1: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (data1 === 0xFFFF) {\r\n\t\t\t\t\t\tdata1 = -1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet data2: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (data2 === 0xFFFF) {\r\n\t\t\t\t\t\tdata2 = -1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet lexerAction: LexerAction = this.lexerActionFactory(actionType, data1, data2);\r\n\r\n\t\t\t\t\tatn.lexerActions[i] = lexerAction;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// for compatibility with older serialized ATNs, convert the old\r\n\t\t\t\t// serialized action index for action transitions to the new\r\n\t\t\t\t// form, which is the index of a LexerCustomAction\r\n\t\t\t\tlet legacyLexerActions: LexerAction[] = [];\r\n\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\t\t\tlet transition: Transition = state.transition(i);\r\n\t\t\t\t\t\tif (!(transition instanceof ActionTransition)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet ruleIndex: number = transition.ruleIndex;\r\n\t\t\t\t\t\tlet actionIndex: number = transition.actionIndex;\r\n\t\t\t\t\t\tlet lexerAction: LexerCustomAction = new LexerCustomAction(ruleIndex, actionIndex);\r\n\t\t\t\t\t\tstate.setTransition(i, new ActionTransition(transition.target, ruleIndex, legacyLexerActions.length, false));\r\n\t\t\t\t\t\tlegacyLexerActions.push(lexerAction);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tatn.lexerActions = legacyLexerActions;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markPrecedenceDecisions(atn);\r\n\r\n\t\tatn.decisionToDFA = new Array(ndecisions);\r\n\t\tfor (let i = 0; i < ndecisions; i++) {\r\n\t\t\tatn.decisionToDFA[i] = new DFA(atn.decisionToState[i], i);\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\tthis.verifyATN(atn);\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isGenerateRuleBypassTransitions && atn.grammarType === ATNType.PARSER) {\r\n\t\t\tatn.ruleToTokenType = new Int32Array(atn.ruleToStartState.length);\r\n\t\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\t\tatn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\t\tlet bypassStart: BasicBlockStartState = new BasicBlockStartState();\r\n\t\t\t\tbypassStart.ruleIndex = i;\r\n\t\t\t\tatn.addState(bypassStart);\r\n\r\n\t\t\t\tlet bypassStop: BlockEndState = new BlockEndState();\r\n\t\t\t\tbypassStop.ruleIndex = i;\r\n\t\t\t\tatn.addState(bypassStop);\r\n\r\n\t\t\t\tbypassStart.endState = bypassStop;\r\n\t\t\t\tatn.defineDecisionState(bypassStart);\r\n\r\n\t\t\t\tbypassStop.startState = bypassStart;\r\n\r\n\t\t\t\tlet endState: ATNState | undefined;\r\n\t\t\t\tlet excludeTransition: Transition | undefined;\r\n\t\t\t\tif (atn.ruleToStartState[i].isPrecedenceRule) {\r\n\t\t\t\t\t// wrap from the beginning of the rule to the StarLoopEntryState\r\n\t\t\t\t\tendState = undefined;\r\n\t\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\t\tif (state.ruleIndex !== i) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet maybeLoopEndState: ATNState = state.transition(state.numberOfTransitions - 1).target;\r\n\t\t\t\t\t\tif (!(maybeLoopEndState instanceof LoopEndState)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState) {\r\n\t\t\t\t\t\t\tendState = state;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!endState) {\r\n\t\t\t\t\t\tthrow new Error(\"Couldn't identify final state of the precedence rule prefix section.\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\texcludeTransition = (endState as StarLoopEntryState).loopBackState.transition(0);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tendState = atn.ruleToStopState[i];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// all non-excluded transitions that currently target end state need to target blockEnd instead\r\n\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\t\t\tlet transition = state.transition(i);\r\n\t\t\t\t\t\tif (transition === excludeTransition) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (transition.target === endState) {\r\n\t\t\t\t\t\t\ttransition.target = bypassStop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// all transitions leaving the rule start state need to leave blockStart instead\r\n\t\t\t\twhile (atn.ruleToStartState[i].numberOfTransitions > 0) {\r\n\t\t\t\t\tlet transition: Transition = atn.ruleToStartState[i].removeTransition(atn.ruleToStartState[i].numberOfTransitions - 1);\r\n\t\t\t\t\tbypassStart.addTransition(transition);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// link the new states\r\n\t\t\t\tatn.ruleToStartState[i].addTransition(new EpsilonTransition(bypassStart));\r\n\t\t\t\tbypassStop.addTransition(new EpsilonTransition(endState));\r\n\r\n\t\t\t\tlet matchState: ATNState = new BasicState();\r\n\t\t\t\tatn.addState(matchState);\r\n\t\t\t\tmatchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[i]));\r\n\t\t\t\tbypassStart.addTransition(new EpsilonTransition(matchState));\r\n\t\t\t}\r\n\r\n\t\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\t\t// reverify after modification\r\n\t\t\t\tthis.verifyATN(atn);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isOptimize) {\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet optimizationCount: number = 0;\r\n\t\t\t\toptimizationCount += ATNDeserializer.inlineSetRules(atn);\r\n\t\t\t\toptimizationCount += ATNDeserializer.combineChainedEpsilons(atn);\r\n\t\t\t\tlet preserveOrder: boolean = atn.grammarType === ATNType.LEXER;\r\n\t\t\t\toptimizationCount += ATNDeserializer.optimizeSets(atn, preserveOrder);\r\n\t\t\t\tif (optimizationCount === 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\t\t// reverify after modification\r\n\t\t\t\tthis.verifyATN(atn);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tATNDeserializer.identifyTailCalls(atn);\r\n\r\n\t\treturn atn;\r\n\t}\r\n\r\n\tprivate deserializeSets(data: Uint16Array, p: number, sets: IntervalSet[], unicodeDeserializer: UnicodeDeserializer): number {\r\n\t\tlet nsets: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nsets; i++) {\r\n\t\t\tlet nintervals: number = ATNDeserializer.toInt(data[p]);\r\n\t\t\tp++;\r\n\t\t\tlet set: IntervalSet = new IntervalSet();\r\n\t\t\tsets.push(set);\r\n\r\n\t\t\tlet containsEof: boolean = ATNDeserializer.toInt(data[p++]) !== 0;\r\n\t\t\tif (containsEof) {\r\n\t\t\t\tset.add(-1);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let j: number = 0; j < nintervals; j++) {\r\n\t\t\t\tlet a: number = unicodeDeserializer.readUnicode(data, p);\r\n\t\t\t\tp += unicodeDeserializer.size;\r\n\t\t\t\tlet b: number = unicodeDeserializer.readUnicode(data, p);\r\n\t\t\t\tp += unicodeDeserializer.size;\r\n\t\t\t\tset.add(a, b);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\t/**\r\n\t * Analyze the {@link StarLoopEntryState} states in the specified ATN to set\r\n\t * the {@link StarLoopEntryState#precedenceRuleDecision} field to the\r\n\t * correct value.\r\n\t *\r\n\t * @param atn The ATN.\r\n\t */\r\n\tprotected markPrecedenceDecisions(@NotNull atn: ATN): void {\r\n\t\t// Map rule index -> precedence decision for that rule\r\n\t\tlet rulePrecedenceDecisions = new Map();\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t/* We analyze the ATN to determine if this ATN decision state is the\r\n\t\t\t * decision for the closure block that determines whether a\r\n\t\t\t * precedence rule should continue or complete.\r\n\t\t\t */\r\n\t\t\tif (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\r\n\t\t\t\tlet maybeLoopEndState: ATNState = state.transition(state.numberOfTransitions - 1).target;\r\n\t\t\t\tif (maybeLoopEndState instanceof LoopEndState) {\r\n\t\t\t\t\tif (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState) {\r\n\t\t\t\t\t\trulePrecedenceDecisions.set(state.ruleIndex, state);\r\n\t\t\t\t\t\tstate.precedenceRuleDecision = true;\r\n\t\t\t\t\t\tstate.precedenceLoopbackStates = new BitSet(atn.states.length);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// After marking precedence decisions, we go back through and fill in\r\n\t\t// StarLoopEntryState.precedenceLoopbackStates.\r\n\t\tfor (let precedenceDecision of rulePrecedenceDecisions) {\r\n\t\t\tfor (let transition of atn.ruleToStopState[precedenceDecision[0]].getTransitions()) {\r\n\t\t\t\tif (transition.serializationType !== TransitionType.EPSILON) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet epsilonTransition = transition as EpsilonTransition;\r\n\t\t\t\tif (epsilonTransition.outermostPrecedenceReturn !== -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tprecedenceDecision[1].precedenceLoopbackStates.set(transition.target.stateNumber);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected verifyATN(atn: ATN): void {\r\n\t\t// verify assumptions\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tthis.checkCondition(state !== undefined, \"ATN states should not be undefined.\");\r\n\t\t\tif (state.stateType === ATNStateType.INVALID_TYPE) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tthis.checkCondition(state.onlyHasEpsilonTransitions || state.numberOfTransitions <= 1);\r\n\r\n\t\t\tif (state instanceof PlusBlockStartState) {\r\n\t\t\t\tthis.checkCondition(state.loopBackState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof StarLoopEntryState) {\r\n\t\t\t\tlet starLoopEntryState: StarLoopEntryState = state;\r\n\t\t\t\tthis.checkCondition(starLoopEntryState.loopBackState !== undefined);\r\n\t\t\t\tthis.checkCondition(starLoopEntryState.numberOfTransitions === 2);\r\n\r\n\t\t\t\tif (starLoopEntryState.transition(0).target instanceof StarBlockStartState) {\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.transition(1).target instanceof LoopEndState);\r\n\t\t\t\t\tthis.checkCondition(!starLoopEntryState.nonGreedy);\r\n\t\t\t\t}\r\n\t\t\t\telse if (starLoopEntryState.transition(0).target instanceof LoopEndState) {\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.transition(1).target instanceof StarBlockStartState);\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.nonGreedy);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof StarLoopbackState) {\r\n\t\t\t\tthis.checkCondition(state.numberOfTransitions === 1);\r\n\t\t\t\tthis.checkCondition(state.transition(0).target instanceof StarLoopEntryState);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof LoopEndState) {\r\n\t\t\t\tthis.checkCondition(state.loopBackState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof RuleStartState) {\r\n\t\t\t\tthis.checkCondition(state.stopState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof BlockStartState) {\r\n\t\t\t\tthis.checkCondition(state.endState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof BlockEndState) {\r\n\t\t\t\tthis.checkCondition(state.startState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof DecisionState) {\r\n\t\t\t\tlet decisionState: DecisionState = state;\r\n\t\t\t\tthis.checkCondition(decisionState.numberOfTransitions <= 1 || decisionState.decision >= 0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.checkCondition(state.numberOfTransitions <= 1 || state instanceof RuleStopState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkCondition(condition: boolean, message?: string): void {\r\n\t\tif (!condition) {\r\n\t\t\tthrow new Error(\"IllegalStateException: \" + message);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static inlineSetRules(atn: ATN): number {\r\n\t\tlet inlinedCalls: number = 0;\r\n\r\n\t\tlet ruleToInlineTransition = new Array(atn.ruleToStartState.length);\r\n\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\tlet startState: RuleStartState = atn.ruleToStartState[i];\r\n\t\t\tlet middleState: ATNState = startState;\r\n\t\t\twhile (middleState.onlyHasEpsilonTransitions\r\n\t\t\t\t&& middleState.numberOfOptimizedTransitions === 1\r\n\t\t\t\t&& middleState.getOptimizedTransition(0).serializationType === TransitionType.EPSILON) {\r\n\t\t\t\tmiddleState = middleState.getOptimizedTransition(0).target;\r\n\t\t\t}\r\n\r\n\t\t\tif (middleState.numberOfOptimizedTransitions !== 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet matchTransition: Transition = middleState.getOptimizedTransition(0);\r\n\t\t\tlet matchTarget: ATNState = matchTransition.target;\r\n\t\t\tif (matchTransition.isEpsilon\r\n\t\t\t\t|| !matchTarget.onlyHasEpsilonTransitions\r\n\t\t\t\t|| matchTarget.numberOfOptimizedTransitions !== 1\r\n\t\t\t\t|| !(matchTarget.getOptimizedTransition(0).target instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (matchTransition.serializationType) {\r\n\t\t\tcase TransitionType.ATOM:\r\n\t\t\tcase TransitionType.RANGE:\r\n\t\t\tcase TransitionType.SET:\r\n\t\t\t\truleToInlineTransition[i] = matchTransition;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase TransitionType.NOT_SET:\r\n\t\t\tcase TransitionType.WILDCARD:\r\n\t\t\t\t// not implemented yet\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (state.ruleIndex < 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] | undefined;\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition: Transition = state.getOptimizedTransition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet ruleTransition: RuleTransition = transition;\r\n\t\t\t\tlet effective: Transition | undefined = ruleToInlineTransition[ruleTransition.target.ruleIndex];\r\n\t\t\t\tif (effective === undefined) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (optimizedTransitions === undefined) {\r\n\t\t\t\t\toptimizedTransitions = [];\r\n\t\t\t\t\tfor (let j = 0; j < i; j++) {\r\n\t\t\t\t\t\toptimizedTransitions.push(state.getOptimizedTransition(i));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinlinedCalls++;\r\n\t\t\t\tlet target: ATNState = ruleTransition.followState;\r\n\t\t\t\tlet intermediateState: ATNState = new BasicState();\r\n\t\t\t\tintermediateState.setRuleIndex(target.ruleIndex);\r\n\t\t\t\tatn.addState(intermediateState);\r\n\t\t\t\toptimizedTransitions.push(new EpsilonTransition(intermediateState));\r\n\r\n\t\t\t\tswitch (effective.serializationType) {\r\n\t\t\t\tcase TransitionType.ATOM:\r\n\t\t\t\t\tintermediateState.addTransition(new AtomTransition(target, (effective as AtomTransition)._label));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase TransitionType.RANGE:\r\n\t\t\t\t\tintermediateState.addTransition(new RangeTransition(target, (effective as RangeTransition).from, (effective as RangeTransition).to));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase TransitionType.SET:\r\n\t\t\t\t\tintermediateState.addTransition(new SetTransition(target, (effective as SetTransition).label));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(\"UnsupportedOperationException\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\tif (state.isOptimized) {\r\n\t\t\t\t\twhile (state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\t\tstate.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\t\tstate.addOptimizedTransition(transition);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + inlinedCalls + \" rule invocations by inlining sets.\");\r\n\t\t}\r\n\r\n\t\treturn inlinedCalls;\r\n\t}\r\n\r\n\tprivate static combineChainedEpsilons(atn: ATN): number {\r\n\t\tlet removedEdges: number = 0;\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!state.onlyHasEpsilonTransitions || state instanceof RuleStopState) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] | undefined;\r\n\t\t\tnextTransition:\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition: Transition = state.getOptimizedTransition(i);\r\n\t\t\t\tlet intermediate: ATNState = transition.target;\r\n\t\t\t\tif (transition.serializationType !== TransitionType.EPSILON\r\n\t\t\t\t\t|| (transition as EpsilonTransition).outermostPrecedenceReturn !== -1\r\n\t\t\t\t\t|| intermediate.stateType !== ATNStateType.BASIC\r\n\t\t\t\t\t|| !intermediate.onlyHasEpsilonTransitions) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue nextTransition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) {\r\n\t\t\t\t\tif (intermediate.getOptimizedTransition(j).serializationType !== TransitionType.EPSILON\r\n\t\t\t\t\t\t|| (intermediate.getOptimizedTransition(j) as EpsilonTransition).outermostPrecedenceReturn !== -1) {\r\n\t\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcontinue nextTransition;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tremovedEdges++;\r\n\t\t\t\tif (optimizedTransitions === undefined) {\r\n\t\t\t\t\toptimizedTransitions = [];\r\n\t\t\t\t\tfor (let j = 0; j < i; j++) {\r\n\t\t\t\t\t\toptimizedTransitions.push(state.getOptimizedTransition(j));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) {\r\n\t\t\t\t\tlet target: ATNState = intermediate.getOptimizedTransition(j).target;\r\n\t\t\t\t\toptimizedTransitions.push(new EpsilonTransition(target));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\tif (state.isOptimized) {\r\n\t\t\t\t\twhile (state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\t\tstate.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\t\tstate.addOptimizedTransition(transition);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + removedEdges + \" transitions by combining chained epsilon transitions.\");\r\n\t\t}\r\n\r\n\t\treturn removedEdges;\r\n\t}\r\n\r\n\tprivate static optimizeSets(atn: ATN, preserveOrder: boolean): number {\r\n\t\tif (preserveOrder) {\r\n\t\t\t// this optimization currently doesn't preserve edge order.\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet removedPaths: number = 0;\r\n\t\tlet decisions: DecisionState[] = atn.decisionToState;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tlet setTransitions: IntervalSet = new IntervalSet();\r\n\t\t\tfor (let i = 0; i < decision.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet epsTransition: Transition = decision.getOptimizedTransition(i);\r\n\t\t\t\tif (!(epsTransition instanceof EpsilonTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (epsTransition.target.numberOfOptimizedTransitions !== 1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet transition: Transition = epsTransition.target.getOptimizedTransition(0);\r\n\t\t\t\tif (!(transition.target instanceof BlockEndState)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (transition instanceof NotSetTransition) {\r\n\t\t\t\t\t// TODO: not yet implemented\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (transition instanceof AtomTransition\r\n\t\t\t\t\t|| transition instanceof RangeTransition\r\n\t\t\t\t\t|| transition instanceof SetTransition) {\r\n\t\t\t\t\tsetTransitions.add(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setTransitions.size <= 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] = [];\r\n\t\t\tfor (let i = 0; i < decision.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tif (!setTransitions.contains(i)) {\r\n\t\t\t\t\toptimizedTransitions.push(decision.getOptimizedTransition(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet blockEndState: ATNState = decision.getOptimizedTransition(setTransitions.minElement).target.getOptimizedTransition(0).target;\r\n\t\t\tlet matchSet: IntervalSet = new IntervalSet();\r\n\t\t\tfor (let interval of setTransitions.intervals) {\r\n\t\t\t\tfor (let j = interval.a; j <= interval.b; j++) {\r\n\t\t\t\t\tlet matchTransition: Transition = decision.getOptimizedTransition(j).target.getOptimizedTransition(0);\r\n\t\t\t\t\tif (matchTransition instanceof NotSetTransition) {\r\n\t\t\t\t\t\tthrow new Error(\"Not yet implemented.\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmatchSet.addAll(matchTransition.label as IntervalSet);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet newTransition: Transition;\r\n\t\t\tif (matchSet.intervals.length === 1) {\r\n\t\t\t\tif (matchSet.size === 1) {\r\n\t\t\t\t\tnewTransition = new AtomTransition(blockEndState, matchSet.minElement);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet matchInterval: Interval = matchSet.intervals[0];\r\n\t\t\t\t\tnewTransition = new RangeTransition(blockEndState, matchInterval.a, matchInterval.b);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnewTransition = new SetTransition(blockEndState, matchSet);\r\n\t\t\t}\r\n\r\n\t\t\tlet setOptimizedState: ATNState = new BasicState();\r\n\t\t\tsetOptimizedState.setRuleIndex(decision.ruleIndex);\r\n\t\t\tatn.addState(setOptimizedState);\r\n\r\n\t\t\tsetOptimizedState.addTransition(newTransition);\r\n\t\t\toptimizedTransitions.push(new EpsilonTransition(setOptimizedState));\r\n\r\n\t\t\tremovedPaths += decision.numberOfOptimizedTransitions - optimizedTransitions.length;\r\n\r\n\t\t\tif (decision.isOptimized) {\r\n\t\t\t\twhile (decision.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\tdecision.removeOptimizedTransition(decision.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\tdecision.addOptimizedTransition(transition);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + removedPaths + \" paths by collapsing sets.\");\r\n\t\t}\r\n\r\n\t\treturn removedPaths;\r\n\t}\r\n\r\n\tprivate static identifyTailCalls(atn: ATN): void {\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\tlet transition = state.transition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttransition.tailCall = this.testTailCall(atn, transition, false);\r\n\t\t\t\ttransition.optimizedTailCall = this.testTailCall(atn, transition, true);\r\n\t\t\t}\r\n\r\n\t\t\tif (!state.isOptimized) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition = state.getOptimizedTransition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttransition.tailCall = this.testTailCall(atn, transition, false);\r\n\t\t\t\ttransition.optimizedTailCall = this.testTailCall(atn, transition, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static testTailCall(atn: ATN, transition: RuleTransition, optimizedPath: boolean): boolean {\r\n\t\tif (!optimizedPath && transition.tailCall) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (optimizedPath && transition.optimizedTailCall) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet reachable: BitSet = new BitSet(atn.states.length);\r\n\t\tlet worklist: ATNState[] = [];\r\n\t\tworklist.push(transition.followState);\r\n\t\twhile (true) {\r\n\t\t\tlet state = worklist.pop();\r\n\t\t\tif (!state) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (reachable.get(state.stateNumber)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof RuleStopState) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (!state.onlyHasEpsilonTransitions) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tlet transitionCount = optimizedPath ? state.numberOfOptimizedTransitions : state.numberOfTransitions;\r\n\t\t\tfor (let i = 0; i < transitionCount; i++) {\r\n\t\t\t\tlet t = optimizedPath ? state.getOptimizedTransition(i) : state.transition(i);\r\n\t\t\t\tif (t.serializationType !== TransitionType.EPSILON) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tworklist.push(t.target);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprotected static toInt(c: number): number {\r\n\t\treturn c;\r\n\t}\r\n\r\n\tprotected static toInt32(data: Uint16Array, offset: number): number {\r\n\t\treturn (data[offset] | (data[offset + 1] << 16)) >>> 0;\r\n\t}\r\n\r\n\tprotected static toUUID(data: Uint16Array, offset: number): UUID {\r\n\t\tlet leastSigBits: number = ATNDeserializer.toInt32(data, offset);\r\n\t\tlet lessSigBits: number = ATNDeserializer.toInt32(data, offset + 2);\r\n\t\tlet moreSigBits: number = ATNDeserializer.toInt32(data, offset + 4);\r\n\t\tlet mostSigBits: number = ATNDeserializer.toInt32(data, offset + 6);\r\n\t\treturn new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits);\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected edgeFactory(\r\n\t\t@NotNull atn: ATN,\r\n\t\ttype: TransitionType, src: number, trg: number,\r\n\t\targ1: number, arg2: number, arg3: number,\r\n\t\tsets: IntervalSet[]): Transition {\r\n\t\tlet target: ATNState = atn.states[trg];\r\n\t\tswitch (type) {\r\n\t\t\tcase TransitionType.EPSILON: return new EpsilonTransition(target);\r\n\t\t\tcase TransitionType.RANGE:\r\n\t\t\t\tif (arg3 !== 0) {\r\n\t\t\t\t\treturn new RangeTransition(target, Token.EOF, arg2);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn new RangeTransition(target, arg1, arg2);\r\n\t\t\t\t}\r\n\t\t\tcase TransitionType.RULE:\r\n\t\t\t\tlet rt: RuleTransition = new RuleTransition(atn.states[arg1] as RuleStartState, arg2, arg3, target);\r\n\t\t\t\treturn rt;\r\n\t\t\tcase TransitionType.PREDICATE:\r\n\t\t\t\tlet pt: PredicateTransition = new PredicateTransition(target, arg1, arg2, arg3 !== 0);\r\n\t\t\t\treturn pt;\r\n\t\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\t\treturn new PrecedencePredicateTransition(target, arg1);\r\n\t\t\tcase TransitionType.ATOM:\r\n\t\t\t\tif (arg3 !== 0) {\r\n\t\t\t\t\treturn new AtomTransition(target, Token.EOF);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn new AtomTransition(target, arg1);\r\n\t\t\t\t}\r\n\t\t\tcase TransitionType.ACTION:\r\n\t\t\t\tlet a: ActionTransition = new ActionTransition(target, arg1, arg2, arg3 !== 0);\r\n\t\t\t\treturn a;\r\n\t\t\tcase TransitionType.SET: return new SetTransition(target, sets[arg1]);\r\n\t\t\tcase TransitionType.NOT_SET: return new NotSetTransition(target, sets[arg1]);\r\n\t\t\tcase TransitionType.WILDCARD: return new WildcardTransition(target);\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"The specified transition type is not valid.\");\r\n\t}\r\n\r\n\tprotected stateFactory(type: ATNStateType, ruleIndex: number): ATNState {\r\n\t\tlet s: ATNState;\r\n\t\tswitch (type) {\r\n\t\t\tcase ATNStateType.INVALID_TYPE: return new InvalidState();\r\n\t\t\tcase ATNStateType.BASIC: s = new BasicState(); break;\r\n\t\t\tcase ATNStateType.RULE_START: s = new RuleStartState(); break;\r\n\t\t\tcase ATNStateType.BLOCK_START: s = new BasicBlockStartState(); break;\r\n\t\t\tcase ATNStateType.PLUS_BLOCK_START: s = new PlusBlockStartState(); break;\r\n\t\t\tcase ATNStateType.STAR_BLOCK_START: s = new StarBlockStartState(); break;\r\n\t\t\tcase ATNStateType.TOKEN_START: s = new TokensStartState(); break;\r\n\t\t\tcase ATNStateType.RULE_STOP: s = new RuleStopState(); break;\r\n\t\t\tcase ATNStateType.BLOCK_END: s = new BlockEndState(); break;\r\n\t\t\tcase ATNStateType.STAR_LOOP_BACK: s = new StarLoopbackState(); break;\r\n\t\t\tcase ATNStateType.STAR_LOOP_ENTRY: s = new StarLoopEntryState(); break;\r\n\t\t\tcase ATNStateType.PLUS_LOOP_BACK: s = new PlusLoopbackState(); break;\r\n\t\t\tcase ATNStateType.LOOP_END: s = new LoopEndState(); break;\r\n\t\t\tdefault:\r\n\t\t\t\tlet message: string = `The specified state type ${type} is not valid.`;\r\n\t\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\ts.ruleIndex = ruleIndex;\r\n\t\treturn s;\r\n\t}\r\n\r\n\tprotected lexerActionFactory(type: LexerActionType, data1: number, data2: number): LexerAction {\r\n\t\tswitch (type) {\r\n\t\tcase LexerActionType.CHANNEL:\r\n\t\t\treturn new LexerChannelAction(data1);\r\n\r\n\t\tcase LexerActionType.CUSTOM:\r\n\t\t\treturn new LexerCustomAction(data1, data2);\r\n\r\n\t\tcase LexerActionType.MODE:\r\n\t\t\treturn new LexerModeAction(data1);\r\n\r\n\t\tcase LexerActionType.MORE:\r\n\t\t\treturn LexerMoreAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.POP_MODE:\r\n\t\t\treturn LexerPopModeAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.PUSH_MODE:\r\n\t\t\treturn new LexerPushModeAction(data1);\r\n\r\n\t\tcase LexerActionType.SKIP:\r\n\t\t\treturn LexerSkipAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.TYPE:\r\n\t\t\treturn new LexerTypeAction(data1);\r\n\r\n\t\tdefault:\r\n\t\t\tlet message: string = `The specified lexer action type ${type} is not valid.`;\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:31.0349605-07:00\r\n\r\nimport { DecisionInfo } from \"./DecisionInfo\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ProfilingATNSimulator } from \"./ProfilingATNSimulator\";\r\n\r\n/**\r\n * This class provides access to specific and aggregate statistics gathered\r\n * during profiling of a parser.\r\n *\r\n * @since 4.3\r\n */\r\nexport class ParseInfo {\r\n\tprotected atnSimulator: ProfilingATNSimulator;\r\n\r\n\tconstructor(@NotNull atnSimulator: ProfilingATNSimulator) {\r\n\t\tthis.atnSimulator = atnSimulator;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an array of {@link DecisionInfo} instances containing the profiling\r\n\t * information gathered for each decision in the ATN.\r\n\t *\r\n\t * @returns An array of {@link DecisionInfo} instances, indexed by decision\r\n\t * number.\r\n\t */\r\n\t@NotNull\r\n\tpublic getDecisionInfo(): DecisionInfo[] {\r\n\t\treturn this.atnSimulator.getDecisionInfo();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the decision numbers for decisions that required one or more\r\n\t * full-context predictions during parsing. These are decisions for which\r\n\t * {@link DecisionInfo#LL_Fallback} is non-zero.\r\n\t *\r\n\t * @returns A list of decision numbers which required one or more\r\n\t * full-context predictions during parsing.\r\n\t */\r\n\t@NotNull\r\n\tpublic getLLDecisions(): number[] {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet LL: number[] = [];\r\n\t\tfor (let i = 0; i < decisions.length; i++) {\r\n\t\t\tlet fallBack: number = decisions[i].LL_Fallback;\r\n\t\t\tif (fallBack > 0) {\r\n\t\t\t\tLL.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn LL;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total time spent during prediction across all decisions made\r\n\t * during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#timeInPrediction} for all decisions.\r\n\t */\r\n\tpublic getTotalTimeInPrediction(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet t: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tt += decision.timeInPrediction;\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of SLL lookahead operations across all decisions\r\n\t * made during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#SLL_TotalLook} for all decisions.\r\n\t */\r\n\tpublic getTotalSLLLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_TotalLook;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of LL lookahead operations across all decisions\r\n\t * made during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#LL_TotalLook} for all decisions.\r\n\t */\r\n\tpublic getTotalLLLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.LL_TotalLook;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for SLL prediction\r\n\t * across all decisions made during parsing.\r\n\t */\r\n\tpublic getTotalSLLATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for LL prediction\r\n\t * across all decisions made during parsing.\r\n\t */\r\n\tpublic getTotalLLATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.LL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for SLL and LL\r\n\t * prediction across all decisions made during parsing.\r\n\t *\r\n\t * This value is the sum of {@link #getTotalSLLATNLookaheadOps} and\r\n\t * {@link #getTotalLLATNLookaheadOps}.\r\n\t */\r\n\tpublic getTotalATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_ATNTransitions;\r\n\t\t\tk += decision.LL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of DFA states stored in the DFA cache for all\r\n\t * decisions in the ATN.\r\n\t */\r\n\tpublic getDFASize(): number;\r\n\r\n\t/**\r\n\t * Gets the total number of DFA states stored in the DFA cache for a\r\n\t * particular decision.\r\n\t */\r\n\tpublic getDFASize(decision: number): number;\r\n\r\n\tpublic getDFASize(decision?: number): number {\r\n\t\tif (decision) {\r\n\t\t\tlet decisionToDFA: DFA = this.atnSimulator.atn.decisionToDFA[decision];\r\n\t\t\treturn decisionToDFA.states.size;\r\n\t\t} else {\r\n\t\t\tlet n: number = 0;\r\n\t\t\tlet decisionToDFA: DFA[] = this.atnSimulator.atn.decisionToDFA;\r\n\t\t\tfor (let i = 0; i < decisionToDFA.length; i++) {\r\n\t\t\t\tn += this.getDFASize(i);\r\n\t\t\t}\r\n\r\n\t\t\treturn n;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.9812284-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { ProxyErrorListener } from \"./ProxyErrorListener\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport { Override } from \"./Decorators\";\r\n\r\n/**\r\n * @author Sam Harwell\r\n */\r\nexport class ProxyParserErrorListener extends ProxyErrorListener\r\n\timplements ParserErrorListener {\r\n\r\n\tconstructor(delegates: ParserErrorListener[]) {\r\n\t\tsuper(delegates);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAmbiguity(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\tconfigs: ATNConfigSet): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportAmbiguity) {\r\n\t\t\t\t\tlistener.reportAmbiguity(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\texact,\r\n\t\t\t\t\t\tambigAlts,\r\n\t\t\t\t\t\tconfigs);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAttemptingFullContext(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\tconflictState: SimulatorState): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportAttemptingFullContext) {\r\n\t\t\t\t\tlistener.reportAttemptingFullContext(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\tconflictingAlts,\r\n\t\t\t\t\t\tconflictState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportContextSensitivity(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\tacceptState: SimulatorState): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportContextSensitivity) {\r\n\t\t\t\t\tlistener.reportContextSensitivity(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\tprediction,\r\n\t\t\t\t\t\tacceptState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport function isHighSurrogate(ch: number): boolean {\r\n\treturn ch >= 0xD800 && ch <= 0xDBFF;\r\n}\r\n\r\nexport function isLowSurrogate(ch: number): boolean {\r\n\treturn ch >= 0xDC00 && ch <= 0xDFFF;\r\n}\r\n\r\nexport function isSupplementaryCodePoint(ch: number): boolean {\r\n\treturn ch >= 0x10000;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Character from \"./misc/Character\";\r\n\r\n/**\r\n * Wrapper for `Uint8Array` / `Uint16Array` / `Int32Array`.\r\n */\r\nexport class CodePointBuffer {\r\n\tprivate readonly buffer: Uint8Array | Uint16Array | Int32Array;\r\n\tprivate _position: number;\r\n\tprivate _size: number;\r\n\r\n\tconstructor(buffer: Uint8Array | Uint16Array | Int32Array, size: number) {\r\n\t\tthis.buffer = buffer;\r\n\t\tthis._position = 0;\r\n\t\tthis._size = size;\r\n\t}\r\n\r\n\tpublic static withArray(buffer: Uint8Array | Uint16Array | Int32Array): CodePointBuffer {\r\n\t\treturn new CodePointBuffer(buffer, buffer.length);\r\n\t}\r\n\r\n\tpublic get position(): number {\r\n\t\treturn this._position;\r\n\t}\r\n\r\n\tpublic set position(newPosition: number) {\r\n\t\tif (newPosition < 0 || newPosition > this._size) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tthis._position = newPosition;\r\n\t}\r\n\r\n\tpublic get remaining(): number {\r\n\t\treturn this._size - this.position;\r\n\t}\r\n\r\n\tpublic get(offset: number): number {\r\n\t\treturn this.buffer[offset];\r\n\t}\r\n\r\n\tpublic array(): Uint8Array | Uint16Array | Int32Array {\r\n\t\treturn this.buffer.slice(0, this._size);\r\n\t}\r\n\r\n\tpublic static builder(initialBufferSize: number): CodePointBuffer.Builder {\r\n\t\treturn new CodePointBuffer.Builder(initialBufferSize);\r\n\t}\r\n}\r\n\r\nexport namespace CodePointBuffer {\r\n\tconst enum Type {\r\n\t\tBYTE,\r\n\t\tCHAR,\r\n\t\tINT,\r\n\t}\r\n\r\n\texport class Builder {\r\n\t\tprivate type: Type;\r\n\t\tprivate buffer: Uint8Array | Uint16Array | Int32Array;\r\n\t\tprivate prevHighSurrogate: number;\r\n\t\tprivate position: number;\r\n\r\n\t\tconstructor(initialBufferSize: number) {\r\n\t\t\tthis.type = Type.BYTE;\r\n\t\t\tthis.buffer = new Uint8Array(initialBufferSize);\r\n\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\tthis.position = 0;\r\n\t\t}\r\n\r\n\t\tpublic build(): CodePointBuffer {\r\n\t\t\treturn new CodePointBuffer(this.buffer, this.position);\r\n\t\t}\r\n\r\n\t\tprivate static roundUpToNextPowerOfTwo(i: number): number {\r\n\t\t\tlet nextPowerOfTwo: number = 32 - Math.clz32(i - 1);\r\n\t\t\treturn Math.pow(2, nextPowerOfTwo);\r\n\t\t}\r\n\r\n\t\tpublic ensureRemaining(remainingNeeded: number): void {\r\n\t\t\tswitch (this.type) {\r\n\t\t\t\tcase Type.BYTE:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Uint8Array = new Uint8Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.CHAR:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Uint16Array = new Uint16Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.INT:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Int32Array = new Int32Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic append(utf16In: Uint16Array): void {\r\n\t\t\tthis.ensureRemaining(utf16In.length);\r\n\t\t\tthis.appendArray(utf16In);\r\n\t\t}\r\n\r\n\t\tprivate appendArray(utf16In: Uint16Array): void {\r\n\t\t\tswitch (this.type) {\r\n\t\t\t\tcase Type.BYTE:\r\n\t\t\t\t\tthis.appendArrayByte(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.CHAR:\r\n\t\t\t\t\tthis.appendArrayChar(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.INT:\r\n\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate appendArrayByte(utf16In: Uint16Array): void {\r\n\t\t\tassert(this.prevHighSurrogate === -1);\r\n\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outByte = this.buffer;\r\n\t\t\tlet outOffset: number = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tif (c <= 0xFF) {\r\n\t\t\t\t\toutByte[outOffset] = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutf16In = utf16In.subarray(inOffset, inLimit);\r\n\t\t\t\t\tthis.position = outOffset;\r\n\t\t\t\t\tif (!Character.isHighSurrogate(c)) {\r\n\t\t\t\t\t\tthis.byteToCharBuffer(utf16In.length);\r\n\t\t\t\t\t\tthis.appendArrayChar(utf16In);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.byteToIntBuffer(utf16In.length);\r\n\t\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinOffset++;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate appendArrayChar(utf16In: Uint16Array): void {\r\n\t\t\tassert(this.prevHighSurrogate === -1);\r\n\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outChar = this.buffer;\r\n\t\t\tlet outOffset: number = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tif (!Character.isHighSurrogate(c)) {\r\n\t\t\t\t\toutChar[outOffset] = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutf16In = utf16In.subarray(inOffset, inLimit);\r\n\t\t\t\t\tthis.position = outOffset;\r\n\t\t\t\t\tthis.charToIntBuffer(utf16In.length);\r\n\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinOffset++;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate appendArrayInt(utf16In: Uint16Array): void {\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outInt = this.buffer;\r\n\t\t\tlet outOffset = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tinOffset++;\r\n\t\t\t\tif (this.prevHighSurrogate !== -1) {\r\n\t\t\t\t\tif (Character.isLowSurrogate(c)) {\r\n\t\t\t\t\t\toutInt[outOffset] = String.fromCharCode(this.prevHighSurrogate, c).codePointAt(0)!;\r\n\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Dangling high surrogate\r\n\t\t\t\t\t\toutInt[outOffset] = this.prevHighSurrogate;\r\n\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\tif (Character.isHighSurrogate(c)) {\r\n\t\t\t\t\t\t\tthis.prevHighSurrogate = c;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toutInt[outOffset] = c;\r\n\t\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (Character.isHighSurrogate(c)) {\r\n\t\t\t\t\tthis.prevHighSurrogate = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutInt[outOffset] = c;\r\n\t\t\t\t\toutOffset++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.prevHighSurrogate !== -1) {\r\n\t\t\t\t// Dangling high surrogate\r\n\t\t\t\toutInt[outOffset] = this.prevHighSurrogate;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate byteToCharBuffer(toAppend: number): void {\r\n\t\t\t// CharBuffers hold twice as much per unit as ByteBuffers, so start with half the capacity.\r\n\t\t\tlet newBuffer: Uint16Array = new Uint16Array(Math.max(this.position + toAppend, this.buffer.length >> 1));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.CHAR;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\r\n\t\tprivate byteToIntBuffer(toAppend: number): void {\r\n\t\t\t// IntBuffers hold four times as much per unit as ByteBuffers, so start with one quarter the capacity.\r\n\t\t\tlet newBuffer: Int32Array = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 2));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.INT;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\r\n\t\tprivate charToIntBuffer(toAppend: number): void {\r\n\t\t\t// IntBuffers hold two times as much per unit as ByteBuffers, so start with one half the capacity.\r\n\t\t\tlet newBuffer: Int32Array = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 1));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.INT;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CodePointBuffer } from \"./CodePointBuffer\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\n\r\n/**\r\n * Alternative to {@link ANTLRInputStream} which treats the input\r\n * as a series of Unicode code points, instead of a series of UTF-16\r\n * code units.\r\n *\r\n * Use this if you need to parse input which potentially contains\r\n * Unicode values > U+FFFF.\r\n */\r\nexport class CodePointCharStream implements CharStream {\r\n\tprivate readonly _array: Uint8Array | Uint16Array | Int32Array;\r\n\tprivate readonly _size: number;\r\n\tprivate readonly _name: string;\r\n\r\n\tprivate _position: number;\r\n\r\n\t// Use the factory method {@link #fromBuffer(CodePointBuffer)} to\r\n\t// construct instances of this type.\r\n\tprotected constructor(array: Uint8Array | Uint16Array | Int32Array, position: number, remaining: number, name: string) {\r\n\t\t// TODO\r\n\t\tassert(position === 0);\r\n\t\tthis._array = array;\r\n\t\tthis._size = remaining;\r\n\t\tthis._name = name;\r\n\t\tthis._position = 0;\r\n\t}\r\n\r\n\tpublic get internalStorage(): Uint8Array | Uint16Array | Int32Array {\r\n\t\treturn this._array;\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a {@link CodePointCharStream} which provides access\r\n\t * to the Unicode code points stored in {@code codePointBuffer}.\r\n\t */\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer): CodePointCharStream;\r\n\r\n\t/**\r\n\t * Constructs a named {@link CodePointCharStream} which provides access\r\n\t * to the Unicode code points stored in {@code codePointBuffer}.\r\n\t */\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer, name: string): CodePointCharStream;\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer, name?: string): CodePointCharStream {\r\n\t\tif (name === undefined || name.length === 0) {\r\n\t\t\tname = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\r\n\t\t// Java lacks generics on primitive types.\r\n\t\t//\r\n\t\t// To avoid lots of calls to virtual methods in the\r\n\t\t// very hot codepath of LA() below, we construct one\r\n\t\t// of three concrete subclasses.\r\n\t\t//\r\n\t\t// The concrete subclasses directly access the code\r\n\t\t// points stored in the underlying array (byte[],\r\n\t\t// char[], or int[]), so we can avoid lots of virtual\r\n\t\t// method calls to ByteBuffer.get(offset).\r\n\t\treturn new CodePointCharStream(\r\n\t\t\tcodePointBuffer.array(),\r\n\t\t\tcodePointBuffer.position,\r\n\t\t\tcodePointBuffer.remaining,\r\n\t\t\tname);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tif (this._size - this._position === 0) {\r\n\t\t\tassert(this.LA(1) === IntStream.EOF);\r\n\t\t\tthrow new RangeError(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\tthis._position++;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get index(): number {\r\n\t\treturn this._position;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get size(): number {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\t/** mark/release do nothing; we have entire buffer */\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// No default implementation since this stream buffers the entire input\r\n\t}\r\n\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tthis._position = index;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get sourceName(): string {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.getText(Interval.of(0, this.size - 1));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tlet offset: number;\r\n\t\tswitch (Math.sign(i)) {\r\n\t\t\tcase -1:\r\n\t\t\t\toffset = this.index + i;\r\n\t\t\t\tif (offset < 0) {\r\n\t\t\t\t\treturn IntStream.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this._array[offset];\r\n\r\n\t\t\tcase 0:\r\n\t\t\t\t// Undefined\r\n\t\t\t\treturn 0;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\toffset = this.index + i - 1;\r\n\t\t\t\tif (offset >= this.size) {\r\n\t\t\t\t\treturn IntStream.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this._array[offset];\r\n\t\t}\r\n\r\n\t\tthrow new RangeError(\"Not reached\");\r\n\t}\r\n\r\n\t/** Return the UTF-16 encoded string for the given interval */\r\n\t@Override\r\n\tpublic getText(interval: Interval): string {\r\n\t\tconst startIdx: number = Math.min(interval.a, this.size);\r\n\t\tconst len: number = Math.min(interval.b - interval.a + 1, this.size - startIdx);\r\n\r\n\t\tif (this._array instanceof Int32Array) {\r\n\t\t\treturn String.fromCodePoint(...Array.from(this._array.subarray(startIdx, startIdx + len)));\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(...Array.from(this._array.subarray(startIdx, startIdx + len)));\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { CodePointBuffer } from \"./CodePointBuffer\";\r\nimport { CodePointCharStream } from \"./CodePointCharStream\";\r\nimport { IntStream } from \"./IntStream\";\r\n\r\n// const DEFAULT_BUFFER_SIZE: number = 4096;\r\n\r\n/** This class represents the primary interface for creating {@link CharStream}s\r\n * from a variety of sources as of 4.7. The motivation was to support\r\n * Unicode code points > U+FFFF. {@link ANTLRInputStream} and\r\n * {@link ANTLRFileStream} are now deprecated in favor of the streams created\r\n * by this interface.\r\n *\r\n * DEPRECATED: {@code new ANTLRFileStream(\"myinputfile\")}\r\n * NEW: {@code CharStreams.fromFileName(\"myinputfile\")}\r\n *\r\n * WARNING: If you use both the deprecated and the new streams, you will see\r\n * a nontrivial performance degradation. This speed hit is because the\r\n * {@link Lexer}'s internal code goes from a monomorphic to megamorphic\r\n * dynamic dispatch to get characters from the input stream. Java's\r\n * on-the-fly compiler (JIT) is unable to perform the same optimizations\r\n * so stick with either the old or the new streams, if performance is\r\n * a primary concern. See the extreme debugging and spelunking\r\n * needed to identify this issue in our timing rig:\r\n *\r\n * https://github.com/antlr/antlr4/pull/1781\r\n *\r\n * The ANTLR character streams still buffer all the input when you create\r\n * the stream, as they have done for ~20 years. If you need unbuffered\r\n * access, please note that it becomes challenging to create\r\n * parse trees. The parse tree has to point to tokens which will either\r\n * point into a stale location in an unbuffered stream or you have to copy\r\n * the characters out of the buffer into the token. That defeats the purpose\r\n * of unbuffered input. Per the ANTLR book, unbuffered streams are primarily\r\n * useful for processing infinite streams *during the parse.*\r\n *\r\n * The new streams also use 8-bit buffers when possible so this new\r\n * interface supports character streams that use half as much memory\r\n * as the old {@link ANTLRFileStream}, which assumed 16-bit characters.\r\n *\r\n * A big shout out to Ben Hamilton (github bhamiltoncx) for his superhuman\r\n * efforts across all targets to get true Unicode 3.1 support for U+10FFFF.\r\n *\r\n * @since 4.7\r\n */\r\nexport namespace CharStreams {\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a path to a UTF-8\r\n\t// * encoded file on disk.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFile(file: File): CharStream;\r\n\t// export function fromFile(file: File, charset: Charset): CharStream;\r\n\t// export function fromFile(file: File, charset?: Charset): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tlet size: number = file.length();\r\n\t// \treturn fromStream(new FileInputStream(file), charset, file.toString(), size);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a string containing a\r\n\t// * path to a UTF-8 file on disk.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFileName(fileName: string): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a string containing a\r\n\t// * path to a file on disk and the charset of the bytes\r\n\t// * contained in the file.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFileName(fileName: string, charset: Charset): CharStream;\r\n\t// export function fromFileName(fileName: string, charset?: Charset): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \treturn fromFile(new File(fileName), charset);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link InputStream}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code InputStream} into\r\n\t// * the result before returning, then closes the {@code InputStream}.\r\n\t// */\r\n\t// export function fromStream(is: InputStream): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link InputStream} and the\r\n\t// * charset of the bytes contained in the stream.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code InputStream} into\r\n\t// * the result before returning, then closes the {@code InputStream}.\r\n\t// */\r\n\t// export function fromStream(is: InputStream, charset: Charset): CharStream;\r\n\r\n\t// export function fromStream(is: InputStream, charset: Charset, sourceName: string, inputSize: number): CharStream;\r\n\t// export function fromStream(is: InputStream, charset?: Charset, sourceName?: string, inputSize?: number): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tif (sourceName === undefined) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \tif (inputSize === undefined) {\r\n\t// \t\tinputSize = -1;\r\n\t// \t}\r\n\r\n\t// \treturn fromChannel(\r\n\t// \t\tChannels.newChannel(is),\r\n\t// \t\tcharset,\r\n\t// \t\tDEFAULT_BUFFER_SIZE,\r\n\t// \t\tCodingErrorAction.REPLACE,\r\n\t// \t\tsourceName,\r\n\t// \t\tinputSize);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(channel: ReadableByteChannel): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel} and the\r\n\t// * charset of the bytes contained in the channel.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(channel: ReadableByteChannel, charset: Charset): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tsourceName: string): CodePointCharStream;\r\n\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tsourceName: string,\r\n\t// \tinputSize: number): CodePointCharStream;\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset?: Charset,\r\n\t// \tbufferSize?: number,\r\n\t// \tdecodingErrorAction?: CodingErrorAction,\r\n\t// \tsourceName?: string,\r\n\t// \tinputSize?: number): CodePointCharStream\r\n\t// {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tif (bufferSize === undefined) {\r\n\t// \t\tbufferSize = DEFAULT_BUFFER_SIZE;\r\n\t// \t}\r\n\r\n\t// \tif (decodingErrorAction === undefined) {\r\n\t// \t\tdecodingErrorAction = CodingErrorAction.REPLACE;\r\n\t// \t}\r\n\r\n\t// \tif (sourceName === undefined || sourceName.length === 0) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \tif (inputSize === undefined) {\r\n\t// \t\tinputSize = -1;\r\n\t// \t}\r\n\r\n\t// \tlet codePointBuffer: CodePointBuffer = bufferFromChannel(channel, charset, bufferSize, decodingErrorAction, inputSize);\r\n\t// \treturn CodePointCharStream.fromBuffer(codePointBuffer, sourceName);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a {@link Reader}. Closes\r\n\t// * the reader before returning.\r\n\t// */\r\n\t// export function fromReader(r: Reader): CodePointCharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a {@link Reader} and its\r\n\t// * source name. Closes the reader before returning.\r\n\t// */\r\n\t// export function fromReader(r: Reader, sourceName: string): CodePointCharStream;\r\n\t// export function fromReader(r: Reader, sourceName?: string): CodePointCharStream {\r\n\t// \tif (sourceName === undefined) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \ttry {\r\n\t// \t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(DEFAULT_BUFFER_SIZE);\r\n\t// \t\tlet charBuffer: CharBuffer = CharBuffer.allocate(DEFAULT_BUFFER_SIZE);\r\n\t// \t\twhile ((r.read(charBuffer)) !== -1) {\r\n\t// \t\t\tcharBuffer.flip();\r\n\t// \t\t\tcodePointBufferBuilder.append(charBuffer);\r\n\t// \t\t\tcharBuffer.compact();\r\n\t// \t\t}\r\n\r\n\t// \t\treturn CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName);\r\n\t// \t} finally {\r\n\t// \t\tr.close();\r\n\t// \t}\r\n\t// }\r\n\r\n\t/**\r\n\t * Creates a {@link CharStream} given a {@link String}.\r\n\t */\r\n\texport function fromString(s: string): CodePointCharStream;\r\n\r\n\t/**\r\n\t * Creates a {@link CharStream} given a {@link String} and the {@code sourceName}\r\n\t * from which it came.\r\n\t */\r\n\texport function fromString(s: string, sourceName: string): CodePointCharStream;\r\n\texport function fromString(s: string, sourceName?: string): CodePointCharStream {\r\n\t\tif (sourceName === undefined || sourceName.length === 0) {\r\n\t\t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\r\n\t\t// Initial guess assumes no code points > U+FFFF: one code\r\n\t\t// point for each code unit in the string\r\n\t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(s.length);\r\n\r\n\t\t// TODO: CharBuffer.wrap(String) rightfully returns a read-only buffer\r\n\t\t// which doesn't expose its array, so we make a copy.\r\n\t\tlet cb: Uint16Array = new Uint16Array(s.length);\r\n\t\tfor (let i = 0; i < s.length; i++) {\r\n\t\t\tcb[i] = s.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\tcodePointBufferBuilder.append(cb);\r\n\t\treturn CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName);\r\n\t}\r\n\r\n\t// export function bufferFromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tinputSize: number): CodePointBuffer {\r\n\t// \ttry {\r\n\t// \t\tlet utf8BytesIn: Uint8Array = new Uint8Array(bufferSize);\r\n\t// \t\tlet utf16CodeUnitsOut: Uint16Array = new Uint16Array(bufferSize);\r\n\t// \t\tif (inputSize === -1) {\r\n\t// \t\t\tinputSize = bufferSize;\r\n\t// \t\t} else if (inputSize > Integer.MAX_VALUE) {\r\n\t// \t\t\t// ByteBuffer et al don't support long sizes\r\n\t// \t\t\tthrow new RangeError(`inputSize ${inputSize} larger than max ${Integer.MAX_VALUE}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(inputSize);\r\n\t// \t\tlet decoder: CharsetDecoder = charset\r\n\t// \t\t\t\t.newDecoder()\r\n\t// \t\t\t\t.onMalformedInput(decodingErrorAction)\r\n\t// \t\t\t\t.onUnmappableCharacter(decodingErrorAction);\r\n\r\n\t// \t\tlet endOfInput: boolean = false;\r\n\t// \t\twhile (!endOfInput) {\r\n\t// \t\t\tlet bytesRead: number = channel.read(utf8BytesIn);\r\n\t// \t\t\tendOfInput = (bytesRead === -1);\r\n\t// \t\t\tutf8BytesIn.flip();\r\n\t// \t\t\tlet result: CoderResult = decoder.decode(\r\n\t// \t\t\t\tutf8BytesIn,\r\n\t// \t\t\t\tutf16CodeUnitsOut,\r\n\t// \t\t\t\tendOfInput);\r\n\t// \t\t\tif (result.isError() && decodingErrorAction === CodingErrorAction.REPORT) {\r\n\t// \t\t\t\tresult.throwException();\r\n\t// \t\t\t}\r\n\r\n\t// \t\t\tutf16CodeUnitsOut.flip();\r\n\t// \t\t\tcodePointBufferBuilder.append(utf16CodeUnitsOut);\r\n\t// \t\t\tutf8BytesIn.compact();\r\n\t// \t\t\tutf16CodeUnitsOut.compact();\r\n\t// \t\t}\r\n\t// \t\t// Handle any bytes at the end of the file which need to\r\n\t// \t\t// be represented as errors or substitution characters.\r\n\t// \t\tlet flushResult: CoderResult = decoder.flush(utf16CodeUnitsOut);\r\n\t// \t\tif (flushResult.isError() && decodingErrorAction === CodingErrorAction.REPORT) {\r\n\t// \t\t\tflushResult.throwException();\r\n\t// \t\t}\r\n\r\n\t// \t\tutf16CodeUnitsOut.flip();\r\n\t// \t\tcodePointBufferBuilder.append(utf16CodeUnitsOut);\r\n\r\n\t// \t\treturn codePointBufferBuilder.build();\r\n\t// \t}\r\n\t// \tfinally {\r\n\t// \t\tchannel.close();\r\n\t// \t}\r\n\t// }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.6074365-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { CommonToken } from \"./CommonToken\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { WritableToken } from \"./WritableToken\";\r\n\r\n/**\r\n * This implementation of {@link TokenStream} loads tokens from a\r\n * {@link TokenSource} on-demand, and places the tokens in a buffer to provide\r\n * access to any previous token by index.\r\n *\r\n * This token stream ignores the value of {@link Token#getChannel}. If your\r\n * parser requires the token stream filter tokens to only those on a particular\r\n * channel, such as {@link Token#DEFAULT_CHANNEL} or\r\n * {@link Token#HIDDEN_CHANNEL}, use a filtering token stream such a\r\n * {@link CommonTokenStream}.\r\n */\r\nexport class BufferedTokenStream implements TokenStream {\r\n\t/**\r\n\t * The {@link TokenSource} from which tokens for this stream are fetched.\r\n\t */\r\n\t@NotNull\r\n\tprivate _tokenSource: TokenSource;\r\n\r\n\t/**\r\n\t * A collection of all tokens fetched from the token source. The list is\r\n\t * considered a complete view of the input once {@link #fetchedEOF} is set\r\n\t * to `true`.\r\n\t */\r\n\tprotected tokens: Token[] = [];\r\n\r\n\t/**\r\n\t * The index into {@link #tokens} of the current token (next token to\r\n\t * {@link #consume}). {@link #tokens}`[`{@link #p}`]` should be\r\n\t * {@link #LT LT(1)}.\r\n\t *\r\n\t * This field is set to -1 when the stream is first constructed or when\r\n\t * {@link #setTokenSource} is called, indicating that the first token has\r\n\t * not yet been fetched from the token source. For additional information,\r\n\t * see the documentation of {@link IntStream} for a description of\r\n\t * Initializing Methods.\r\n\t */\r\n\tprotected p: number = -1;\r\n\r\n\t/**\r\n\t * Indicates whether the {@link Token#EOF} token has been fetched from\r\n\t * {@link #tokenSource} and added to {@link #tokens}. This field improves\r\n\t * performance for the following cases:\r\n\t *\r\n\t * * {@link #consume}: The lookahead check in {@link #consume} to prevent\r\n\t * consuming the EOF symbol is optimized by checking the values of\r\n\t * {@link #fetchedEOF} and {@link #p} instead of calling {@link #LA}.\r\n\t * * {@link #fetch}: The check to prevent adding multiple EOF symbols into\r\n\t * {@link #tokens} is trivial with this field.\r\n\t */\r\n\tprotected fetchedEOF: boolean = false;\r\n\r\n\tconstructor(@NotNull tokenSource: TokenSource) {\r\n\t\tif (tokenSource == null) {\r\n\t\t\tthrow new Error(\"tokenSource cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._tokenSource = tokenSource;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenSource(): TokenSource {\r\n\t\treturn this._tokenSource;\r\n\t}\r\n\r\n\t/** Reset this token stream by setting its token source. */\r\n\tset tokenSource(tokenSource: TokenSource) {\r\n\t\tthis._tokenSource = tokenSource;\r\n\t\tthis.tokens.length = 0;\r\n\t\tthis.p = -1;\r\n\t\tthis.fetchedEOF = false;\r\n\t}\r\n\r\n\t@Override\r\n\tget index(): number {\r\n\t\treturn this.p;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// no resources to release\r\n\t}\r\n\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tthis.lazyInit();\r\n\t\tthis.p = this.adjustSeekIndex(index);\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.tokens.length;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tlet skipEofCheck: boolean;\r\n\t\tif (this.p >= 0) {\r\n\t\t\tif (this.fetchedEOF) {\r\n\t\t\t\t// the last token in tokens is EOF. skip check if p indexes any\r\n\t\t\t\t// fetched token except the last.\r\n\t\t\t\tskipEofCheck = this.p < this.tokens.length - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\r\n\t\t\t\tskipEofCheck = this.p < this.tokens.length;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// not yet initialized\r\n\t\t\tskipEofCheck = false;\r\n\t\t}\r\n\r\n\t\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\r\n\t\t\tthrow new Error(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\tif (this.sync(this.p + 1)) {\r\n\t\t\tthis.p = this.adjustSeekIndex(this.p + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Make sure index `i` in tokens has a token.\r\n\t *\r\n\t * @returns `true` if a token is located at index `i`, otherwise\r\n\t * `false`.\r\n\t * @see #get(int i)\r\n\t */\r\n\tprotected sync(i: number): boolean {\r\n\t\tassert(i >= 0);\r\n\t\tlet n: number = i - this.tokens.length + 1; // how many more elements we need?\r\n\t\t//System.out.println(\"sync(\"+i+\") needs \"+n);\r\n\t\tif (n > 0) {\r\n\t\t\tlet fetched: number = this.fetch(n);\r\n\t\t\treturn fetched >= n;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** Add `n` elements to buffer.\r\n\t *\r\n\t * @returns The actual number of elements added to the buffer.\r\n\t */\r\n\tprotected fetch(n: number): number {\r\n\t\tif (this.fetchedEOF) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet t: Token = this.tokenSource.nextToken();\r\n\t\t\tif (this.isWritableToken(t)) {\r\n\t\t\t\tt.tokenIndex = this.tokens.length;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tokens.push(t);\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tthis.fetchedEOF = true;\r\n\t\t\t\treturn i + 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get(i: number): Token {\r\n\t\tif (i < 0 || i >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(\"token index \" + i + \" out of range 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/** Get all tokens from start..stop inclusively. */\r\n\tpublic getRange(start: number, stop: number): Token[] {\r\n\t\tif (start < 0 || stop < 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tthis.lazyInit();\r\n\t\tlet subset: Token[] = new Array();\r\n\t\tif (stop >= this.tokens.length) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tfor (let i = start; i <= stop; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tsubset.push(t);\r\n\t\t}\r\n\r\n\t\treturn subset;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tlet token = this.LT(i);\r\n\t\tif (!token) {\r\n\t\t\treturn Token.INVALID_TYPE;\r\n\t\t}\r\n\r\n\t\treturn token.type;\r\n\t}\r\n\r\n\tprotected tryLB(k: number): Token | undefined {\r\n\t\tif ((this.p - k) < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this.tokens[this.p - k];\r\n\t}\r\n\r\n\t@NotNull\r\n\t@Override\r\n\tpublic LT(k: number): Token {\r\n\t\tlet result = this.tryLT(k);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new RangeError(\"requested lookback index out of range\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryLT(k: number): Token | undefined {\r\n\t\tthis.lazyInit();\r\n\t\tif (k === 0) {\r\n\t\t\tthrow new RangeError(\"0 is not a valid lookahead index\");\r\n\t\t}\r\n\r\n\t\tif (k < 0) {\r\n\t\t\treturn this.tryLB(-k);\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p + k - 1;\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.tokens.length) {\r\n\t\t\t// return EOF token\r\n\t\t\t// EOF must be last token\r\n\t\t\treturn this.tokens[this.tokens.length - 1];\r\n\t\t}\r\n\r\n\t\t//\t\tif ( i>range ) range = i;\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/**\r\n\t * Allowed derived classes to modify the behavior of operations which change\r\n\t * the current stream position by adjusting the target token index of a seek\r\n\t * operation. The default implementation simply returns `i`. If an\r\n\t * exception is thrown in this method, the current stream index should not be\r\n\t * changed.\r\n\t *\r\n\t * For example, {@link CommonTokenStream} overrides this method to ensure that\r\n\t * the seek target is always an on-channel token.\r\n\t *\r\n\t * @param i The target token index.\r\n\t * @returns The adjusted target token index.\r\n\t */\r\n\tprotected adjustSeekIndex(i: number): number {\r\n\t\treturn i;\r\n\t}\r\n\r\n\tprotected lazyInit(): void {\r\n\t\tif (this.p === -1) {\r\n\t\t\tthis.setup();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected setup(): void {\r\n\t\tthis.sync(0);\r\n\t\tthis.p = this.adjustSeekIndex(0);\r\n\t}\r\n\r\n\tpublic getTokens(): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number, types: Set): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number, ttype: number): Token[];\r\n\r\n\t/** Given a start and stop index, return a `List` of all tokens in\r\n\t * the token type `BitSet`. Return an empty array if no tokens were found. This\r\n\t * method looks at both on and off channel tokens.\r\n\t */\r\n\tpublic getTokens(start?: number, stop?: number, types?: Set | number): Token[] {\r\n\t\tthis.lazyInit();\r\n\r\n\t\tif (start === undefined) {\r\n\t\t\tassert(stop === undefined && types === undefined);\r\n\t\t\treturn this.tokens;\r\n\t\t} else if (stop === undefined) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tif (start < 0 || stop >= this.tokens.length || stop < 0 || start >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(\"start \" + start + \" or stop \" + stop + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tif (start > stop) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tif (types === undefined) {\r\n\t\t\treturn this.tokens.slice(start, stop + 1);\r\n\t\t} else if (typeof types === \"number\") {\r\n\t\t\ttypes = new Set().add(types);\r\n\t\t}\r\n\r\n\t\tlet typesSet = types;\r\n\r\n\t\t// list = tokens[start:stop]:{T t, t.type in types}\r\n\t\tlet filteredTokens: Token[] = this.tokens.slice(start, stop + 1);\r\n\t\tfilteredTokens = filteredTokens.filter((value) => typesSet.has(value.type));\r\n\r\n\t\treturn filteredTokens;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a starting index, return the index of the next token on channel.\r\n\t * Return `i` if `tokens[i]` is on channel. Return the index of\r\n\t * the EOF token if there are no tokens on channel between `i` and\r\n\t * EOF.\r\n\t */\r\n\tprotected nextTokenOnChannel(i: number, channel: number): number {\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.size) {\r\n\t\t\treturn this.size - 1;\r\n\t\t}\r\n\r\n\t\tlet token: Token = this.tokens[i];\r\n\t\twhile (token.channel !== channel) {\r\n\t\t\tif (token.type === Token.EOF) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\ti++;\r\n\t\t\tthis.sync(i);\r\n\t\t\ttoken = this.tokens[i];\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a starting index, return the index of the previous token on\r\n\t * channel. Return `i` if `tokens[i]` is on channel. Return -1\r\n\t * if there are no tokens on channel between `i` and 0.\r\n\t *\r\n\t * If `i` specifies an index at or after the EOF token, the EOF token\r\n\t * index is returned. This is due to the fact that the EOF token is treated\r\n\t * as though it were on every channel.\r\n\t */\r\n\tprotected previousTokenOnChannel(i: number, channel: number): number {\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.size) {\r\n\t\t\t// the EOF token is on every channel\r\n\t\t\treturn this.size - 1;\r\n\t\t}\r\n\r\n\t\twhile (i >= 0) {\r\n\t\t\tlet token: Token = this.tokens[i];\r\n\t\t\tif (token.type === Token.EOF || token.channel === channel) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\ti--;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/** Collect all tokens on specified channel to the right of\r\n\t * the current token up until we see a token on {@link Lexer#DEFAULT_TOKEN_CHANNEL} or\r\n\t * EOF. If `channel` is `-1`, find any non default channel token.\r\n\t */\r\n\tpublic getHiddenTokensToRight(tokenIndex: number, channel: number = -1): Token[] {\r\n\t\tthis.lazyInit();\r\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(tokenIndex + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tlet nextOnChannel: number = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\r\n\t\tlet to: number;\r\n\t\tlet from: number = tokenIndex + 1;\r\n\t\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\r\n\t\tif (nextOnChannel === -1) {\r\n\t\t\tto = this.size - 1;\r\n\t\t} else {\r\n\t\t\tto = nextOnChannel;\r\n\t\t}\r\n\r\n\t\treturn this.filterForChannel(from, to, channel);\r\n\t}\r\n\r\n\t/** Collect all tokens on specified channel to the left of\r\n\t * the current token up until we see a token on {@link Lexer#DEFAULT_TOKEN_CHANNEL}.\r\n\t * If `channel` is `-1`, find any non default channel token.\r\n\t */\r\n\tpublic getHiddenTokensToLeft(tokenIndex: number, channel: number = -1): Token[] {\r\n\t\tthis.lazyInit();\r\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(tokenIndex + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tif (tokenIndex === 0) {\r\n\t\t\t// obviously no tokens can appear before the first token\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet prevOnChannel: number = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\r\n\t\tif (prevOnChannel === tokenIndex - 1) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\t// if none onchannel to left, prevOnChannel=-1 then from=0\r\n\t\tlet from: number = prevOnChannel + 1;\r\n\t\tlet to: number = tokenIndex - 1;\r\n\r\n\t\treturn this.filterForChannel(from, to, channel);\r\n\t}\r\n\r\n\tprotected filterForChannel(from: number, to: number, channel: number): Token[] {\r\n\t\tlet hidden: Token[] = new Array();\r\n\t\tfor (let i = from; i <= to; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (channel === -1) {\r\n\t\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\r\n\t\t\t\t\thidden.push(t);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (t.channel === channel) {\r\n\t\t\t\t\thidden.push(t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn hidden;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\treturn this.tokenSource.sourceName;\r\n\t}\r\n\r\n\t/** Get the text of all tokens in this buffer. */\r\n\tpublic getText(): string;\r\n\tpublic getText(interval: Interval): string;\r\n\tpublic getText(context: RuleContext): string;\r\n\t@NotNull\r\n\t@Override\r\n\tpublic getText(interval?: Interval | RuleContext): string {\r\n\t\tif (interval === undefined) {\r\n\t\t\tinterval = Interval.of(0, this.size - 1);\r\n\t\t} else if (!(interval instanceof Interval)) {\r\n\t\t\t// Note: the more obvious check for 'instanceof RuleContext' results in a circular dependency problem\r\n\t\t\tinterval = interval.sourceInterval;\r\n\t\t}\r\n\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\t\tif (start < 0 || stop < 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tthis.fill();\r\n\t\tif (stop >= this.tokens.length) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tlet buf: string = \"\";\r\n\t\tfor (let i = start; i <= stop; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tbuf += t.text;\r\n\t\t}\r\n\r\n\t\treturn buf.toString();\r\n\t}\r\n\r\n\t@NotNull\r\n\t@Override\r\n\tpublic getTextFromRange(start: any, stop: any): string {\r\n\t\tif (this.isToken(start) && this.isToken(stop)) {\r\n\t\t\treturn this.getText(Interval.of(start.tokenIndex, stop.tokenIndex));\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/** Get all tokens from lexer until EOF. */\r\n\tpublic fill(): void {\r\n\t\tthis.lazyInit();\r\n\t\tconst blockSize: number = 1000;\r\n\t\twhile (true) {\r\n\t\t\tlet fetched: number = this.fetch(blockSize);\r\n\t\t\tif (fetched < blockSize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: Figure out a way to make this more flexible?\r\n\tprivate isWritableToken(t: Token): t is WritableToken {\r\n\t\treturn t instanceof CommonToken;\r\n\t}\r\n\r\n\t// TODO: Figure out a way to make this more flexible?\r\n\tprivate isToken(t: any): t is Token {\r\n\t\treturn t instanceof CommonToken;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.3953157-07:00\r\n\r\nimport { BufferedTokenStream } from \"./BufferedTokenStream\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * This class extends {@link BufferedTokenStream} with functionality to filter\r\n * token streams to tokens on a particular channel (tokens where\r\n * {@link Token#getChannel} returns a particular value).\r\n *\r\n * This token stream provides access to all tokens by index or when calling\r\n * methods like {@link #getText}. The channel filtering is only used for code\r\n * accessing tokens via the lookahead methods {@link #LA}, {@link #LT}, and\r\n * {@link #LB}.\r\n *\r\n * By default, tokens are placed on the default channel\r\n * ({@link Token#DEFAULT_CHANNEL}), but may be reassigned by using the\r\n * `->channel(HIDDEN)` lexer command, or by using an embedded action to\r\n * call {@link Lexer#setChannel}.\r\n *\r\n * Note: lexer rules which use the `->skip` lexer command or call\r\n * {@link Lexer#skip} do not produce tokens at all, so input text matched by\r\n * such a rule will not be available as part of the token stream, regardless of\r\n * channel.\r\n */\r\nexport class CommonTokenStream extends BufferedTokenStream {\r\n\t/**\r\n\t * Specifies the channel to use for filtering tokens.\r\n\t *\r\n\t * The default value is {@link Token#DEFAULT_CHANNEL}, which matches the\r\n\t * default channel assigned to tokens created by the lexer.\r\n\t */\r\n\tprotected channel: number;\r\n\r\n\t/**\r\n\t * Constructs a new {@link CommonTokenStream} using the specified token\r\n\t * source and filtering tokens to the specified channel. Only tokens whose\r\n\t * {@link Token#getChannel} matches `channel` or have the\r\n\t * `Token.type` equal to {@link Token#EOF} will be returned by the\r\n\t * token stream lookahead methods.\r\n\t *\r\n\t * @param tokenSource The token source.\r\n\t * @param channel The channel to use for filtering tokens.\r\n\t */\r\n\tconstructor(@NotNull tokenSource: TokenSource, channel: number = Token.DEFAULT_CHANNEL) {\r\n\t\tsuper(tokenSource);\r\n\t\tthis.channel = channel;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected adjustSeekIndex(i: number): number {\r\n\t\treturn this.nextTokenOnChannel(i, this.channel);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected tryLB(k: number): Token | undefined {\r\n\t\tif ((this.p - k) < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p;\r\n\t\tlet n: number = 1;\r\n\t\t// find k good tokens looking backwards\r\n\t\twhile (n <= k && i > 0) {\r\n\t\t\t// skip off-channel tokens\r\n\t\t\ti = this.previousTokenOnChannel(i - 1, this.channel);\r\n\t\t\tn++;\r\n\t\t}\r\n\r\n\t\tif (i < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic tryLT(k: number): Token | undefined {\r\n\t\t//System.out.println(\"enter LT(\"+k+\")\");\r\n\t\tthis.lazyInit();\r\n\t\tif (k === 0) {\r\n\t\t\tthrow new RangeError(\"0 is not a valid lookahead index\");\r\n\t\t}\r\n\r\n\t\tif (k < 0) {\r\n\t\t\treturn this.tryLB(-k);\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p;\r\n\t\tlet n: number = 1; // we know tokens[p] is a good one\r\n\t\t// find k good tokens\r\n\t\twhile (n < k) {\r\n\t\t\t// skip off-channel tokens, but make sure to not look past EOF\r\n\t\t\tif (this.sync(i + 1)) {\r\n\t\t\t\ti = this.nextTokenOnChannel(i + 1, this.channel);\r\n\t\t\t}\r\n\t\t\tn++;\r\n\t\t}\r\n\r\n\t\t//\t\tif ( i>range ) range = i;\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/** Count EOF just once. */\r\n\tpublic getNumberOfOnChannelTokens(): number {\r\n\t\tlet n: number = 0;\r\n\t\tthis.fill();\r\n\t\tfor (let t of this.tokens) {\r\n\t\t\tif (t.channel === this.channel) {\r\n\t\t\t\tn++;\r\n\t\t\t}\r\n\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.1916955-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonTokenFactory } from \"./CommonTokenFactory\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * Provides an implementation of {@link TokenSource} as a wrapper around a list\r\n * of {@link Token} objects.\r\n *\r\n * If the final token in the list is an {@link Token#EOF} token, it will be used\r\n * as the EOF token for every call to {@link #nextToken} after the end of the\r\n * list is reached. Otherwise, an EOF token will be created.\r\n */\r\nexport class ListTokenSource implements TokenSource {\r\n\t/**\r\n\t * The wrapped collection of {@link Token} objects to return.\r\n\t */\r\n\tprotected tokens: Token[];\r\n\r\n\t/**\r\n\t * The name of the input source. If this value is `undefined`, a call to\r\n\t * {@link #getSourceName} should return the source name used to create the\r\n\t * the next token in {@link #tokens} (or the previous token if the end of\r\n\t * the input has been reached).\r\n\t */\r\n\tprivate _sourceName?: string;\r\n\r\n\t/**\r\n\t * The index into {@link #tokens} of token to return by the next call to\r\n\t * {@link #nextToken}. The end of the input is indicated by this value\r\n\t * being greater than or equal to the number of items in {@link #tokens}.\r\n\t */\r\n\tprotected i: number = 0;\r\n\r\n\t/**\r\n\t * This field caches the EOF token for the token source.\r\n\t */\r\n\tprotected eofToken?: Token;\r\n\r\n\t/**\r\n\t * This is the backing field for {@link #getTokenFactory} and\r\n\t * {@link setTokenFactory}.\r\n\t */\r\n\tprivate _factory: TokenFactory = CommonTokenFactory.DEFAULT;\r\n\r\n\t/**\r\n\t * Constructs a new {@link ListTokenSource} instance from the specified\r\n\t * collection of {@link Token} objects and source name.\r\n\t *\r\n\t * @param tokens The collection of {@link Token} objects to provide as a\r\n\t * {@link TokenSource}.\r\n\t * @param sourceName The name of the {@link TokenSource}. If this value is\r\n\t * `undefined`, {@link #getSourceName} will attempt to infer the name from\r\n\t * the next {@link Token} (or the previous token if the end of the input has\r\n\t * been reached).\r\n\t *\r\n\t * @exception NullPointerException if `tokens` is `undefined`\r\n\t */\r\n\tconstructor(@NotNull tokens: Token[], sourceName?: string) {\r\n\t\tif (tokens == null) {\r\n\t\t\tthrow new Error(\"tokens cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis.tokens = tokens;\r\n\t\tthis._sourceName = sourceName;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].charPositionInLine;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.charPositionInLine;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\t// have to calculate the result from the line/column of the previous\r\n\t\t\t// token, along with the text of the token.\r\n\t\t\tlet lastToken: Token = this.tokens[this.tokens.length - 1];\r\n\t\t\tlet tokenText: string | undefined = lastToken.text;\r\n\t\t\tif (tokenText != null) {\r\n\t\t\t\tlet lastNewLine: number = tokenText.lastIndexOf(\"\\n\");\r\n\t\t\t\tif (lastNewLine >= 0) {\r\n\t\t\t\t\treturn tokenText.length - lastNewLine - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn lastToken.charPositionInLine + lastToken.stopIndex - lastToken.startIndex + 1;\r\n\t\t}\r\n\r\n\t\t// only reach this if tokens is empty, meaning EOF occurs at the first\r\n\t\t// position in the input\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic nextToken(): Token {\r\n\t\tif (this.i >= this.tokens.length) {\r\n\t\t\tif (this.eofToken == null) {\r\n\t\t\t\tlet start: number = -1;\r\n\t\t\t\tif (this.tokens.length > 0) {\r\n\t\t\t\t\tlet previousStop: number = this.tokens[this.tokens.length - 1].stopIndex;\r\n\t\t\t\t\tif (previousStop !== -1) {\r\n\t\t\t\t\t\tstart = previousStop + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet stop: number = Math.max(-1, start - 1);\r\n\t\t\t\tthis.eofToken = this._factory.create({ source: this, stream: this.inputStream }, Token.EOF, \"EOF\", Token.DEFAULT_CHANNEL, start, stop, this.line, this.charPositionInLine);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.eofToken;\r\n\t\t}\r\n\r\n\t\tlet t: Token = this.tokens[this.i];\r\n\t\tif (this.i === this.tokens.length - 1 && t.type === Token.EOF) {\r\n\t\t\tthis.eofToken = t;\r\n\t\t}\r\n\r\n\t\tthis.i++;\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget line(): number {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].line;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.line;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\t// have to calculate the result from the line/column of the previous\r\n\t\t\t// token, along with the text of the token.\r\n\t\t\tlet lastToken: Token = this.tokens[this.tokens.length - 1];\r\n\t\t\tlet line: number = lastToken.line;\r\n\r\n\t\t\tlet tokenText: string | undefined = lastToken.text;\r\n\t\t\tif (tokenText != null) {\r\n\t\t\t\tfor (let i = 0; i < tokenText.length; i++) {\r\n\t\t\t\t\tif (tokenText.charAt(i) === \"\\n\") {\r\n\t\t\t\t\t\tline++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if no text is available, assume the token did not contain any newline characters.\r\n\t\t\treturn line;\r\n\t\t}\r\n\r\n\t\t// only reach this if tokens is empty, meaning EOF occurs at the first\r\n\t\t// position in the input\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].inputStream;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.inputStream;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\treturn this.tokens[this.tokens.length - 1].inputStream;\r\n\t\t}\r\n\r\n\t\t// no input stream information is available\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\tif (this._sourceName) {\r\n\t\t\treturn this._sourceName;\r\n\t\t}\r\n\r\n\t\tlet inputStream: CharStream | undefined = this.inputStream;\r\n\t\tif (inputStream != null) {\r\n\t\t\treturn inputStream.sourceName;\r\n\t\t}\r\n\r\n\t\treturn \"List\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t// @Override\r\n\tset tokenFactory(@NotNull factory: TokenFactory) {\r\n\t\tthis._factory = factory;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\t@NotNull\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._factory;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:42.1346951-07:00\r\n\r\nexport class MultiMap extends Map {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic map(key: K, value: V): void {\r\n\t\tlet elementsForKey = super.get(key);\r\n\t\tif (!elementsForKey) {\r\n\t\t\telementsForKey = [] as V[];\r\n\t\t\tsuper.set(key, elementsForKey);\r\n\t\t}\r\n\t\telementsForKey.push(value);\r\n\t}\r\n\r\n\tpublic getPairs(): Array<[K, V]> {\r\n\t\tlet pairs: Array<[K, V]> = [];\r\n\t\tthis.forEach((values: V[], key: K) => {\r\n\t\t\tvalues.forEach((v) => {\r\n\t\t\t\tpairs.push([key, v]);\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn pairs;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:42.5447085-07:00\r\n\r\n/**\r\n * This exception is thrown to cancel a parsing operation. This exception does\r\n * not extend {@link RecognitionException}, allowing it to bypass the standard\r\n * error recovery mechanisms. {@link BailErrorStrategy} throws this exception in\r\n * response to a parse error.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ParseCancellationException extends Error {\r\n\t// private static serialVersionUID: number = -3529552099366979683L;\r\n\tpublic readonly stack?: string;\r\n\r\n\tconstructor(public cause: Error) {\r\n\t\tsuper(cause.message);\r\n\t\tthis.stack = cause.stack;\r\n\t}\r\n\r\n\tpublic getCause(): Error {\r\n\t\treturn this.cause;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.5898546-07:00\r\n\r\nimport { Override } from \"./Decorators\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/**\r\n * This class extends {@link ParserRuleContext} by allowing the value of\r\n * {@link #getRuleIndex} to be explicitly set for the context.\r\n *\r\n * {@link ParserRuleContext} does not include field storage for the rule index\r\n * since the context classes created by the code generator override the\r\n * {@link #getRuleIndex} method to return the correct value for that context.\r\n * Since the parser interpreter does not use the context classes generated for a\r\n * parser, this class (with slightly more memory overhead per node) is used to\r\n * provide equivalent functionality.\r\n */\r\nexport class InterpreterRuleContext extends ParserRuleContext {\r\n\t/**\r\n\t * This is the backing field for {@link #getRuleIndex}.\r\n\t */\r\n\tprivate _ruleIndex: number;\r\n\r\n\tconstructor(ruleIndex: number);\r\n\r\n\t/**\r\n\t * Constructs a new {@link InterpreterRuleContext} with the specified\r\n\t * parent, invoking state, and rule index.\r\n\t *\r\n\t * @param ruleIndex The rule index for the current context.\r\n\t * @param parent The parent context.\r\n\t * @param invokingStateNumber The invoking state number.\r\n\t */\r\n\tconstructor(ruleIndex: number, parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\r\n\tconstructor(ruleIndex: number, parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber !== undefined) {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tthis._ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:53.1043451-07:00\r\n\r\nimport { ActionTransition } from \"./atn/ActionTransition\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { ATNStateType } from \"./atn/ATNStateType\";\r\nimport { AtomTransition } from \"./atn/AtomTransition\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DecisionState } from \"./atn/DecisionState\";\r\nimport { FailedPredicateException } from \"./FailedPredicateException\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { InterpreterRuleContext } from \"./InterpreterRuleContext\";\r\nimport { LoopEndState } from \"./atn/LoopEndState\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserATNSimulator } from \"./atn/ParserATNSimulator\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { PrecedencePredicateTransition } from \"./atn/PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./atn/PredicateTransition\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleStartState } from \"./atn/RuleStartState\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { StarLoopEntryState } from \"./atn/StarLoopEntryState\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { Transition } from \"./atn/Transition\";\r\nimport { TransitionType } from \"./atn/TransitionType\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\n/** A parser simulator that mimics what ANTLR's generated\r\n * parser code does. A ParserATNSimulator is used to make\r\n * predictions via adaptivePredict but this class moves a pointer through the\r\n * ATN to simulate parsing. ParserATNSimulator just\r\n * makes us efficient rather than having to backtrack, for example.\r\n *\r\n * This properly creates parse trees even for left recursive rules.\r\n *\r\n * We rely on the left recursive rule invocation and special predicate\r\n * transitions to make left recursive rules work.\r\n *\r\n * See TestParserInterpreter for examples.\r\n */\r\nexport class ParserInterpreter extends Parser {\r\n\tprotected _grammarFileName: string;\r\n\tprotected _atn: ATN;\r\n\t/** This identifies StarLoopEntryState's that begin the (...)*\r\n\t * precedence loops of left recursive rules.\r\n\t */\r\n\tprotected pushRecursionContextStates: BitSet;\r\n\r\n\tprotected _ruleNames: string[];\r\n\t@NotNull\r\n\tprivate _vocabulary: Vocabulary;\r\n\r\n\t/** This stack corresponds to the _parentctx, _parentState pair of locals\r\n\t * that would exist on call stack frames with a recursive descent parser;\r\n\t * in the generated function for a left-recursive rule you'd see:\r\n\t *\r\n\t * private EContext e(int _p) {\r\n\t * ParserRuleContext _parentctx = _ctx; // Pair.a\r\n\t * int _parentState = state; // Pair.b\r\n\t * ...\r\n\t * }\r\n\t *\r\n\t * Those values are used to create new recursive rule invocation contexts\r\n\t * associated with left operand of an alt like \"expr '*' expr\".\r\n\t */\r\n\tprotected readonly _parentContextStack: Array<[ParserRuleContext, number]> = [];\r\n\r\n\t/** We need a map from (decision,inputIndex)->forced alt for computing ambiguous\r\n\t * parse trees. For now, we allow exactly one override.\r\n\t */\r\n\tprotected overrideDecision: number = -1;\r\n\tprotected overrideDecisionInputIndex: number = -1;\r\n\tprotected overrideDecisionAlt: number = -1;\r\n\tprotected overrideDecisionReached: boolean = false; // latch and only override once; error might trigger infinite loop\r\n\r\n\t/** What is the current context when we override a decisions? This tells\r\n\t * us what the root of the parse tree is when using override\r\n\t * for an ambiguity/lookahead check.\r\n\t */\r\n\tprotected _overrideDecisionRoot?: InterpreterRuleContext = undefined;\r\n\r\n\tprotected _rootContext!: InterpreterRuleContext;\r\n\r\n\t/** A copy constructor that creates a new parser interpreter by reusing\r\n\t * the fields of a previous interpreter.\r\n\t *\r\n\t * @param old The interpreter to copy\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tconstructor(/*@NotNull*/ old: ParserInterpreter);\r\n\tconstructor(\r\n\t\tgrammarFileName: string, /*@NotNull*/ vocabulary: Vocabulary,\r\n\t\truleNames: string[], atn: ATN, input: TokenStream);\r\n\tconstructor(\r\n\t\tgrammarFileName: ParserInterpreter | string, @NotNull vocabulary?: Vocabulary,\r\n\t\truleNames?: string[], atn?: ATN, input?: TokenStream) {\r\n\t\tsuper(grammarFileName instanceof ParserInterpreter ? grammarFileName.inputStream : input!);\r\n\t\tif (grammarFileName instanceof ParserInterpreter) {\r\n\t\t\tlet old: ParserInterpreter = grammarFileName;\r\n\t\t\tthis._grammarFileName = old._grammarFileName;\r\n\t\t\tthis._atn = old._atn;\r\n\t\t\tthis.pushRecursionContextStates = old.pushRecursionContextStates;\r\n\t\t\tthis._ruleNames = old._ruleNames;\r\n\t\t\tthis._vocabulary = old._vocabulary;\r\n\t\t\tthis.interpreter = new ParserATNSimulator(this._atn, this);\r\n\t\t} else {\r\n\t\t\t// The second constructor requires non-null arguments\r\n\t\t\tvocabulary = vocabulary!;\r\n\t\t\truleNames = ruleNames!;\r\n\t\t\tatn = atn!;\r\n\r\n\t\t\tthis._grammarFileName = grammarFileName;\r\n\t\t\tthis._atn = atn;\r\n\t\t\tthis._ruleNames = ruleNames.slice(0);\r\n\t\t\tthis._vocabulary = vocabulary;\r\n\r\n\t\t\t// identify the ATN states where pushNewRecursionContext() must be called\r\n\t\t\tthis.pushRecursionContextStates = new BitSet(atn.states.length);\r\n\t\t\tfor (let state of atn.states) {\r\n\t\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (state.precedenceRuleDecision) {\r\n\t\t\t\t\tthis.pushRecursionContextStates.set(state.stateNumber);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// get atn simulator that knows how to do predictions\r\n\t\t\tthis.interpreter = new ParserATNSimulator(atn, this);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\tif (resetInput === undefined) {\r\n\t\t\tsuper.reset();\r\n\t\t} else {\r\n\t\t\tsuper.reset(resetInput);\r\n\t\t}\r\n\r\n\t\tthis.overrideDecisionReached = false;\r\n\t\tthis._overrideDecisionRoot = undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tget atn(): ATN {\r\n\t\treturn this._atn;\r\n\t}\r\n\r\n\t@Override\r\n\tget vocabulary(): Vocabulary {\r\n\t\treturn this._vocabulary;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleNames(): string[] {\r\n\t\treturn this._ruleNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget grammarFileName(): string {\r\n\t\treturn this._grammarFileName;\r\n\t}\r\n\r\n\t/** Begin parsing at startRuleIndex */\r\n\tpublic parse(startRuleIndex: number): ParserRuleContext {\r\n\t\tlet startRuleStartState: RuleStartState = this._atn.ruleToStartState[startRuleIndex];\r\n\r\n\t\tthis._rootContext = this.createInterpreterRuleContext(undefined, ATNState.INVALID_STATE_NUMBER, startRuleIndex);\r\n\t\tif (startRuleStartState.isPrecedenceRule) {\r\n\t\t\tthis.enterRecursionRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex, 0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.enterRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex);\r\n\t\t}\r\n\r\n\t\twhile (true) {\r\n\t\t\tlet p: ATNState = this.atnState;\r\n\t\t\tswitch (p.stateType) {\r\n\t\t\tcase ATNStateType.RULE_STOP:\r\n\t\t\t\t// pop; return from rule\r\n\t\t\t\tif (this._ctx.isEmpty) {\r\n\t\t\t\t\tif (startRuleStartState.isPrecedenceRule) {\r\n\t\t\t\t\t\tlet result: ParserRuleContext = this._ctx;\r\n\t\t\t\t\t\tlet parentContext: [ParserRuleContext, number] = this._parentContextStack.pop() !;\r\n\t\t\t\t\t\tthis.unrollRecursionContexts(parentContext[0]);\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.exitRule();\r\n\t\t\t\t\t\treturn this._rootContext;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.visitRuleStopState(p);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.visitState(p);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tif (e instanceof RecognitionException) {\r\n\t\t\t\t\t\tthis.state = this._atn.ruleToStopState[p.ruleIndex].stateNumber;\r\n\t\t\t\t\t\tthis.context.exception = e;\r\n\t\t\t\t\t\tthis.errorHandler.reportError(this, e);\r\n\t\t\t\t\t\tthis.recover(e);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic enterRecursionRule(localctx: ParserRuleContext, state: number, ruleIndex: number, precedence: number): void {\r\n\t\tthis._parentContextStack.push([this._ctx, localctx.invokingState]);\r\n\t\tsuper.enterRecursionRule(localctx, state, ruleIndex, precedence);\r\n\t}\r\n\r\n\tprotected get atnState(): ATNState {\r\n\t\treturn this._atn.states[this.state];\r\n\t}\r\n\r\n\tprotected visitState(p: ATNState): void {\r\n\t\tlet predictedAlt: number = 1;\r\n\t\tif (p.numberOfTransitions > 1) {\r\n\t\t\tpredictedAlt = this.visitDecisionState(p as DecisionState);\r\n\t\t}\r\n\r\n\t\tlet transition: Transition = p.transition(predictedAlt - 1);\r\n\t\tswitch (transition.serializationType) {\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\tif (this.pushRecursionContextStates.get(p.stateNumber) &&\r\n\t\t\t\t!(transition.target instanceof LoopEndState)) {\r\n\t\t\t\t// We are at the start of a left recursive rule's (...)* loop\r\n\t\t\t\t// and we're not taking the exit branch of loop.\r\n\t\t\t\tlet parentContext = this._parentContextStack[this._parentContextStack.length - 1];\r\n\t\t\t\tlet localctx: InterpreterRuleContext =\r\n\t\t\t\t\tthis.createInterpreterRuleContext(parentContext[0], parentContext[1], this._ctx.ruleIndex);\r\n\t\t\t\tthis.pushNewRecursionContext(localctx,\r\n\t\t\t\t\tthis._atn.ruleToStartState[p.ruleIndex].stateNumber,\r\n\t\t\t\t\tthis._ctx.ruleIndex);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\t\tthis.match((transition as AtomTransition)._label);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\tcase TransitionType.NOT_SET:\r\n\t\t\tif (!transition.matches(this._input.LA(1), Token.MIN_USER_TOKEN_TYPE, 65535)) {\r\n\t\t\t\tthis.recoverInline();\r\n\t\t\t}\r\n\t\t\tthis.matchWildcard();\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.WILDCARD:\r\n\t\t\tthis.matchWildcard();\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.RULE:\r\n\t\t\tlet ruleStartState: RuleStartState = transition.target as RuleStartState;\r\n\t\t\tlet ruleIndex: number = ruleStartState.ruleIndex;\r\n\t\t\tlet newctx: InterpreterRuleContext = this.createInterpreterRuleContext(this._ctx, p.stateNumber, ruleIndex);\r\n\t\t\tif (ruleStartState.isPrecedenceRule) {\r\n\t\t\t\tthis.enterRecursionRule(newctx, ruleStartState.stateNumber, ruleIndex, (transition as RuleTransition).precedence);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.enterRule(newctx, transition.target.stateNumber, ruleIndex);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\tlet predicateTransition: PredicateTransition = transition as PredicateTransition;\r\n\t\t\tif (!this.sempred(this._ctx, predicateTransition.ruleIndex, predicateTransition.predIndex)) {\r\n\t\t\t\tthrow new FailedPredicateException(this);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\tlet actionTransition: ActionTransition = transition as ActionTransition;\r\n\t\t\tthis.action(this._ctx, actionTransition.ruleIndex, actionTransition.actionIndex);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\tif (!this.precpred(this._ctx, (transition as PrecedencePredicateTransition).precedence)) {\r\n\t\t\t\tlet precedence = (transition as PrecedencePredicateTransition).precedence;\r\n\t\t\t\tthrow new FailedPredicateException(this, `precpred(_ctx, ${precedence})`);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"UnsupportedOperationException: Unrecognized ATN transition type.\");\r\n\t\t}\r\n\r\n\t\tthis.state = transition.target.stateNumber;\r\n\t}\r\n\r\n\t/** Method visitDecisionState() is called when the interpreter reaches\r\n\t * a decision state (instance of DecisionState). It gives an opportunity\r\n\t * for subclasses to track interesting things.\r\n\t */\r\n\tprotected visitDecisionState(p: DecisionState): number {\r\n\t\tlet predictedAlt: number;\r\n\t\tthis.errorHandler.sync(this);\r\n\t\tlet decision: number = p.decision;\r\n\t\tif (decision === this.overrideDecision && this._input.index === this.overrideDecisionInputIndex && !this.overrideDecisionReached) {\r\n\t\t\tpredictedAlt = this.overrideDecisionAlt;\r\n\t\t\tthis.overrideDecisionReached = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tpredictedAlt = this.interpreter.adaptivePredict(this._input, decision, this._ctx);\r\n\t\t}\r\n\t\treturn predictedAlt;\r\n\t}\r\n\r\n\t/** Provide simple \"factory\" for InterpreterRuleContext's.\r\n\t * @since 4.5.1\r\n\t */\r\n\tprotected createInterpreterRuleContext(\r\n\t\tparent: ParserRuleContext | undefined,\r\n\t\tinvokingStateNumber: number,\r\n\t\truleIndex: number): InterpreterRuleContext {\r\n\t\treturn new InterpreterRuleContext(ruleIndex, parent, invokingStateNumber);\r\n\t}\r\n\r\n\tprotected visitRuleStopState(p: ATNState): void {\r\n\t\tlet ruleStartState: RuleStartState = this._atn.ruleToStartState[p.ruleIndex];\r\n\t\tif (ruleStartState.isPrecedenceRule) {\r\n\t\t\tlet parentContext: [ParserRuleContext, number] = this._parentContextStack.pop()!;\r\n\t\t\tthis.unrollRecursionContexts(parentContext[0]);\r\n\t\t\tthis.state = parentContext[1];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.exitRule();\r\n\t\t}\r\n\r\n\t\tlet ruleTransition: RuleTransition = this._atn.states[this.state].transition(0) as RuleTransition;\r\n\t\tthis.state = ruleTransition.followState.stateNumber;\r\n\t}\r\n\r\n\t/** Override this parser interpreters normal decision-making process\r\n\t * at a particular decision and input token index. Instead of\r\n\t * allowing the adaptive prediction mechanism to choose the\r\n\t * first alternative within a block that leads to a successful parse,\r\n\t * force it to take the alternative, 1..n for n alternatives.\r\n\t *\r\n\t * As an implementation limitation right now, you can only specify one\r\n\t * override. This is sufficient to allow construction of different\r\n\t * parse trees for ambiguous input. It means re-parsing the entire input\r\n\t * in general because you're never sure where an ambiguous sequence would\r\n\t * live in the various parse trees. For example, in one interpretation,\r\n\t * an ambiguous input sequence would be matched completely in expression\r\n\t * but in another it could match all the way back to the root.\r\n\t *\r\n\t * s : e '!'? ;\r\n\t * e : ID\r\n\t * | ID '!'\r\n\t * ;\r\n\t *\r\n\t * Here, x! can be matched as (s (e ID) !) or (s (e ID !)). In the first\r\n\t * case, the ambiguous sequence is fully contained only by the root.\r\n\t * In the second case, the ambiguous sequences fully contained within just\r\n\t * e, as in: (e ID !).\r\n\t *\r\n\t * Rather than trying to optimize this and make\r\n\t * some intelligent decisions for optimization purposes, I settled on\r\n\t * just re-parsing the whole input and then using\r\n\t * {link Trees#getRootOfSubtreeEnclosingRegion} to find the minimal\r\n\t * subtree that contains the ambiguous sequence. I originally tried to\r\n\t * record the call stack at the point the parser detected and ambiguity but\r\n\t * left recursive rules create a parse tree stack that does not reflect\r\n\t * the actual call stack. That impedance mismatch was enough to make\r\n\t * it it challenging to restart the parser at a deeply nested rule\r\n\t * invocation.\r\n\t *\r\n\t * Only parser interpreters can override decisions so as to avoid inserting\r\n\t * override checking code in the critical ALL(*) prediction execution path.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic addDecisionOverride(decision: number, tokenIndex: number, forcedAlt: number): void {\r\n\t\tthis.overrideDecision = decision;\r\n\t\tthis.overrideDecisionInputIndex = tokenIndex;\r\n\t\tthis.overrideDecisionAlt = forcedAlt;\r\n\t}\r\n\r\n\tget overrideDecisionRoot(): InterpreterRuleContext | undefined {\r\n\t\treturn this._overrideDecisionRoot;\r\n\t}\r\n\r\n\t/** Rely on the error handler for this parser but, if no tokens are consumed\r\n\t * to recover, add an error node. Otherwise, nothing is seen in the parse\r\n\t * tree.\r\n\t */\r\n\tprotected recover(e: RecognitionException): void {\r\n\t\tlet i: number = this._input.index;\r\n\t\tthis.errorHandler.recover(this, e);\r\n\t\tif (this._input.index === i) {\r\n\t\t\t// no input consumed, better add an error node\r\n\t\t\tlet tok: Token | undefined = e.getOffendingToken();\r\n\t\t\tif (!tok) {\r\n\t\t\t\tthrow new Error(\"Expected exception to have an offending token\");\r\n\t\t\t}\r\n\r\n\t\t\tlet source = tok.tokenSource;\r\n\t\t\tlet stream = source !== undefined ? source.inputStream : undefined;\r\n\t\t\tlet sourcePair = { source, stream };\r\n\r\n\t\t\tif (e instanceof InputMismatchException) {\r\n\t\t\t\tlet expectedTokens = e.expectedTokens;\r\n\t\t\t\tif (expectedTokens === undefined) {\r\n\t\t\t\t\tthrow new Error(\"Expected the exception to provide expected tokens\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet expectedTokenType: number = Token.INVALID_TYPE;\r\n\t\t\t\tif (!expectedTokens.isNil) {\r\n\t\t\t\t\t// get any element\r\n\t\t\t\t\texpectedTokenType = expectedTokens.minElement;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet errToken: Token =\r\n\t\t\t\t\tthis.tokenFactory.create(sourcePair,\r\n\t\t\t\t\t\texpectedTokenType, tok.text,\r\n\t\t\t\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t\t\t\t-1, -1, // invalid start/stop\r\n\t\t\t\t\t\ttok.line, tok.charPositionInLine);\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));\r\n\t\t\t}\r\n\t\t\telse { // NoViableAlt\r\n\t\t\t\tlet source = tok.tokenSource;\r\n\t\t\t\tlet errToken: Token =\r\n\t\t\t\t\tthis.tokenFactory.create(sourcePair,\r\n\t\t\t\t\t\tToken.INVALID_TYPE, tok.text,\r\n\t\t\t\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t\t\t\t-1, -1, // invalid start/stop\r\n\t\t\t\t\t\ttok.line, tok.charPositionInLine);\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected recoverInline(): Token {\r\n\t\treturn this._errHandler.recoverInline(this);\r\n\t}\r\n\r\n\t/** Return the root of the parse, which can be useful if the parser\r\n\t * bails out. You still can access the top node. Note that,\r\n\t * because of the way left recursive rules add children, it's possible\r\n\t * that the root will not have any children if the start rule immediately\r\n\t * called and left recursive rule that fails.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tget rootContext(): InterpreterRuleContext {\r\n\t\treturn this._rootContext;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { MultiMap } from \"../../misc/MultiMap\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreePattern } from \"./ParseTreePattern\";\r\n\r\n/**\r\n * Represents the result of matching a {@link ParseTree} against a tree pattern.\r\n */\r\nexport class ParseTreeMatch {\r\n\t/**\r\n\t * This is the backing field for `tree`.\r\n\t */\r\n\tprivate _tree: ParseTree;\r\n\r\n\t/**\r\n\t * This is the backing field for `pattern`.\r\n\t */\r\n\tprivate _pattern: ParseTreePattern;\r\n\r\n\t/**\r\n\t * This is the backing field for `labels`.\r\n\t */\r\n\tprivate _labels: MultiMap;\r\n\r\n\t/**\r\n\t * This is the backing field for `mismatchedNode`.\r\n\t */\r\n\tprivate _mismatchedNode?: ParseTree;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link ParseTreeMatch} from the specified\r\n\t * parse tree and pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against the pattern.\r\n\t * @param pattern The parse tree pattern.\r\n\t * @param labels A mapping from label names to collections of\r\n\t * {@link ParseTree} objects located by the tree pattern matching process.\r\n\t * @param mismatchedNode The first node which failed to match the tree\r\n\t * pattern during the matching process.\r\n\t *\r\n\t * @throws {@link Error} if `tree` is not defined\r\n\t * @throws {@link Error} if `pattern` is not defined\r\n\t * @throws {@link Error} if `labels` is not defined\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull tree: ParseTree,\r\n\t\t@NotNull pattern: ParseTreePattern,\r\n\t\t@NotNull labels: MultiMap,\r\n\t\tmismatchedNode: ParseTree | undefined) {\r\n\t\tif (!tree) {\r\n\t\t\tthrow new Error(\"tree cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error(\"pattern cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!labels) {\r\n\t\t\tthrow new Error(\"labels cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._tree = tree;\r\n\t\tthis._pattern = pattern;\r\n\t\tthis._labels = labels;\r\n\t\tthis._mismatchedNode = mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the last node associated with a specific `label`.\r\n\t *\r\n\t * For example, for pattern ``, `get(\"id\")` returns the\r\n\t * node matched for that `ID`. If more than one node\r\n\t * matched the specified label, only the last is returned. If there is\r\n\t * no node associated with the label, this returns `undefined`.\r\n\t *\r\n\t * Pattern tags like `` and `` without labels are\r\n\t * considered to be labeled with `ID` and `expr`, respectively.\r\n\t *\r\n\t * @param label The label to check.\r\n\t *\r\n\t * @returns The last {@link ParseTree} to match a tag with the specified\r\n\t * label, or `undefined` if no parse tree matched a tag with the label.\r\n\t */\r\n\tpublic get(label: string): ParseTree | undefined {\r\n\t\tlet parseTrees = this._labels.get(label);\r\n\t\tif (!parseTrees || parseTrees.length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn parseTrees[parseTrees.length - 1]; // return last if multiple\r\n\t}\r\n\r\n\t/**\r\n\t * Return all nodes matching a rule or token tag with the specified label.\r\n\t *\r\n\t * If the `label` is the name of a parser rule or token in the\r\n\t * grammar, the resulting list will contain both the parse trees matching\r\n\t * rule or tags explicitly labeled with the label and the complete set of\r\n\t * parse trees matching the labeled and unlabeled tags in the pattern for\r\n\t * the parser rule or token. For example, if `label` is `\"foo\"`,\r\n\t * the result will contain *all* of the following.\r\n\t *\r\n\t * * Parse tree nodes matching tags of the form `` and\r\n\t * ``.\r\n\t * * Parse tree nodes matching tags of the form ``.\r\n\t * * Parse tree nodes matching tags of the form ``.\r\n\t *\r\n\t * @param label The label.\r\n\t *\r\n\t * @returns A collection of all {@link ParseTree} nodes matching tags with\r\n\t * the specified `label`. If no nodes matched the label, an empty list\r\n\t * is returned.\r\n\t */\r\n\t@NotNull\r\n\tpublic getAll(@NotNull label: string): ParseTree[] {\r\n\t\tconst nodes = this._labels.get(label);\r\n\t\tif (!nodes) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\t/**\r\n\t * Return a mapping from label → [list of nodes].\r\n\t *\r\n\t * The map includes special entries corresponding to the names of rules and\r\n\t * tokens referenced in tags in the original pattern. For additional\r\n\t * information, see the description of {@link #getAll(String)}.\r\n\t *\r\n\t * @returns A mapping from labels to parse tree nodes. If the parse tree\r\n\t * pattern did not contain any rule or token tags, this map will be empty.\r\n\t */\r\n\t@NotNull\r\n\tget labels(): MultiMap {\r\n\t\treturn this._labels;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the node at which we first detected a mismatch.\r\n\t *\r\n\t * @returns the node at which we first detected a mismatch, or `undefined`\r\n\t * if the match was successful.\r\n\t */\r\n\tget mismatchedNode(): ParseTree | undefined {\r\n\t\treturn this._mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the match operation succeeded.\r\n\t *\r\n\t * @returns `true` if the match operation succeeded; otherwise,\r\n\t * `false`.\r\n\t */\r\n\tget succeeded(): boolean {\r\n\t\treturn !this._mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern we are matching against.\r\n\t *\r\n\t * @returns The tree pattern we are matching against.\r\n\t */\r\n\t@NotNull\r\n\tget pattern(): ParseTreePattern {\r\n\t\treturn this._pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the parse tree we are trying to match to a pattern.\r\n\t *\r\n\t * @returns The {@link ParseTree} we are trying to match to a pattern.\r\n\t */\r\n\t@NotNull\r\n\tget tree(): ParseTree {\r\n\t\treturn this._tree;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `Match ${\r\n\t\t\tthis.succeeded ? \"succeeded\" : \"failed\"}; found ${\r\n\t\t\tthis.labels.size} labels`;\r\n\t}\r\n}\r\n", "// Generated from XPathLexer.g4 by ANTLR 4.9.0-SNAPSHOT\r\n\r\n\r\nimport { ATN } from \"../../atn/ATN\";\r\nimport { ATNDeserializer } from \"../../atn/ATNDeserializer\";\r\nimport { CharStream } from \"../../CharStream\";\r\nimport { Lexer } from \"../../Lexer\";\r\nimport { LexerATNSimulator } from \"../../atn/LexerATNSimulator\";\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { RuleContext } from \"../../RuleContext\";\r\nimport { Vocabulary } from \"../../Vocabulary\";\r\nimport { VocabularyImpl } from \"../../VocabularyImpl\";\r\n\r\nimport * as Utils from \"../../misc/Utils\";\r\n\r\n\r\nexport class XPathLexer extends Lexer {\r\n\tpublic static readonly TOKEN_REF = 1;\r\n\tpublic static readonly RULE_REF = 2;\r\n\tpublic static readonly ANYWHERE = 3;\r\n\tpublic static readonly ROOT = 4;\r\n\tpublic static readonly WILDCARD = 5;\r\n\tpublic static readonly BANG = 6;\r\n\tpublic static readonly ID = 7;\r\n\tpublic static readonly STRING = 8;\r\n\r\n\t// tslint:disable:no-trailing-whitespace\r\n\tpublic static readonly channelNames: string[] = [\r\n\t\t\"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\",\r\n\t];\r\n\r\n\t// tslint:disable:no-trailing-whitespace\r\n\tpublic static readonly modeNames: string[] = [\r\n\t\t\"DEFAULT_MODE\",\r\n\t];\r\n\r\n\tpublic static readonly ruleNames: string[] = [\r\n\t\t\"ANYWHERE\", \"ROOT\", \"WILDCARD\", \"BANG\", \"ID\", \"NameChar\", \"NameStartChar\", \r\n\t\t\"STRING\",\r\n\t];\r\n\r\n\tprivate static readonly _LITERAL_NAMES: Array = [\r\n\t\tundefined, undefined, undefined, \"'//'\", \"'/'\", \"'*'\", \"'!'\",\r\n\t];\r\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\r\n\t\tundefined, \"TOKEN_REF\", \"RULE_REF\", \"ANYWHERE\", \"ROOT\", \"WILDCARD\", \"BANG\", \r\n\t\t\"ID\", \"STRING\",\r\n\t];\r\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(XPathLexer._LITERAL_NAMES, XPathLexer._SYMBOLIC_NAMES, []);\r\n\r\n\t// @Override\r\n\t// @NotNull\r\n\tpublic get vocabulary(): Vocabulary {\r\n\t\treturn XPathLexer.VOCABULARY;\r\n\t}\r\n\t// tslint:enable:no-trailing-whitespace\r\n\r\n\r\n\tconstructor(input: CharStream) {\r\n\t\tsuper(input);\r\n\t\tthis._interp = new LexerATNSimulator(XPathLexer._ATN, this);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic get grammarFileName(): string { return \"XPathLexer.g4\"; }\r\n\r\n\t// @Override\r\n\tpublic get ruleNames(): string[] { return XPathLexer.ruleNames; }\r\n\r\n\t// @Override\r\n\tpublic get serializedATN(): string { return XPathLexer._serializedATN; }\r\n\r\n\t// @Override\r\n\tpublic get channelNames(): string[] { return XPathLexer.channelNames; }\r\n\r\n\t// @Override\r\n\tpublic get modeNames(): string[] { return XPathLexer.modeNames; }\r\n\r\n\t// @Override\r\n\tpublic action(_localctx: RuleContext, ruleIndex: number, actionIndex: number): void {\r\n\t\tswitch (ruleIndex) {\r\n\t\tcase 4:\r\n\t\t\tthis.ID_action(_localctx, actionIndex);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tprivate ID_action(_localctx: RuleContext, actionIndex: number): void {\r\n\t\tswitch (actionIndex) {\r\n\t\tcase 0:\r\n\r\n\t\t\tlet text = this.text;\r\n\t\t\tif (text.charAt(0) === text.charAt(0).toUpperCase()) {\r\n\t\t\t\tthis.type = XPathLexer.TOKEN_REF;\r\n\t\t\t} else {\r\n\t\t\t\tthis.type = XPathLexer.RULE_REF;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static readonly _serializedATNSegments: number = 2;\r\n\tprivate static readonly _serializedATNSegment0: string =\r\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x02\\n2\\b\\x01\\x04\" +\r\n\t\t\"\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\\x04\" +\r\n\t\t\"\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\" +\r\n\t\t\"\\x03\\x04\\x03\\x04\\x03\\x05\\x03\\x05\\x03\\x06\\x03\\x06\\x07\\x06\\x1F\\n\\x06\\f\\x06\" +\r\n\t\t\"\\x0E\\x06\\\"\\v\\x06\\x03\\x06\\x03\\x06\\x03\\x07\\x03\\x07\\x03\\b\\x03\\b\\x03\\t\\x03\" +\r\n\t\t\"\\t\\x07\\t,\\n\\t\\f\\t\\x0E\\t/\\v\\t\\x03\\t\\x03\\t\\x03-\\x02\\x02\\n\\x03\\x02\\x05\\x05\" +\r\n\t\t\"\\x02\\x06\\x07\\x02\\x07\\t\\x02\\b\\v\\x02\\t\\r\\x02\\x02\\x0F\\x02\\x02\\x11\\x02\\n\\x03\" +\r\n\t\t\"\\x02\\x02\\x04\\u02B6\\x02\\x02\\x02\\n\\x02\\x10\\x02\\x1D\\x022\\x02;\\x02C\\x02\\\\\" +\r\n\t\t\"\\x02a\\x02a\\x02c\\x02|\\x02\\x81\\x02\\xA1\\x02\\xAC\\x02\\xAC\\x02\\xAF\\x02\\xAF\\x02\" +\r\n\t\t\"\\xB7\\x02\\xB7\\x02\\xBC\\x02\\xBC\\x02\\xC2\\x02\\xD8\\x02\\xDA\\x02\\xF8\\x02\\xFA\\x02\" +\r\n\t\t\"\\u02C3\\x02\\u02C8\\x02\\u02D3\\x02\\u02E2\\x02\\u02E6\\x02\\u02EE\\x02\\u02EE\\x02\" +\r\n\t\t\"\\u02F0\\x02\\u02F0\\x02\\u0302\\x02\\u0376\\x02\\u0378\\x02\\u0379\\x02\\u037C\\x02\" +\r\n\t\t\"\\u037F\\x02\\u0381\\x02\\u0381\\x02\\u0388\\x02\\u0388\\x02\\u038A\\x02\\u038C\\x02\" +\r\n\t\t\"\\u038E\\x02\\u038E\\x02\\u0390\\x02\\u03A3\\x02\\u03A5\\x02\\u03F7\\x02\\u03F9\\x02\" +\r\n\t\t\"\\u0483\\x02\\u0485\\x02\\u0489\\x02\\u048C\\x02\\u0531\\x02\\u0533\\x02\\u0558\\x02\" +\r\n\t\t\"\\u055B\\x02\\u055B\\x02\\u0563\\x02\\u0589\\x02\\u0593\\x02\\u05BF\\x02\\u05C1\\x02\" +\r\n\t\t\"\\u05C1\\x02\\u05C3\\x02\\u05C4\\x02\\u05C6\\x02\\u05C7\\x02\\u05C9\\x02\\u05C9\\x02\" +\r\n\t\t\"\\u05D2\\x02\\u05EC\\x02\\u05F2\\x02\\u05F4\\x02\\u0602\\x02\\u0607\\x02\\u0612\\x02\" +\r\n\t\t\"\\u061C\\x02\\u061E\\x02\\u061E\\x02\\u0622\\x02\\u066B\\x02\\u0670\\x02\\u06D5\\x02\" +\r\n\t\t\"\\u06D7\\x02\\u06DF\\x02\\u06E1\\x02\\u06EA\\x02\\u06EC\\x02\\u06FE\\x02\\u0701\\x02\" +\r\n\t\t\"\\u0701\\x02\\u0711\\x02\\u074C\\x02\\u074F\\x02\\u07B3\\x02\\u07C2\\x02\\u07F7\\x02\" +\r\n\t\t\"\\u07FC\\x02\\u07FC\\x02\\u0802\\x02\\u082F\\x02\\u0842\\x02\\u085D\\x02\\u08A2\\x02\" +\r\n\t\t\"\\u08B6\\x02\\u08B8\\x02\\u08BF\\x02\\u08D6\\x02\\u0965\\x02\\u0968\\x02\\u0971\\x02\" +\r\n\t\t\"\\u0973\\x02\\u0985\\x02\\u0987\\x02\\u098E\\x02\\u0991\\x02\\u0992\\x02\\u0995\\x02\" +\r\n\t\t\"\\u09AA\\x02\\u09AC\\x02\\u09B2\\x02\\u09B4\\x02\\u09B4\\x02\\u09B8\\x02\\u09BB\\x02\" +\r\n\t\t\"\\u09BE\\x02\\u09C6\\x02\\u09C9\\x02\\u09CA\\x02\\u09CD\\x02\\u09D0\\x02\\u09D9\\x02\" +\r\n\t\t\"\\u09D9\\x02\\u09DE\\x02\\u09DF\\x02\\u09E1\\x02\\u09E5\\x02\\u09E8\\x02\\u09F3\\x02\" +\r\n\t\t\"\\u0A03\\x02\\u0A05\\x02\\u0A07\\x02\\u0A0C\\x02\\u0A11\\x02\\u0A12\\x02\\u0A15\\x02\" +\r\n\t\t\"\\u0A2A\\x02\\u0A2C\\x02\\u0A32\\x02\\u0A34\\x02\\u0A35\\x02\\u0A37\\x02\\u0A38\\x02\" +\r\n\t\t\"\\u0A3A\\x02\\u0A3B\\x02\\u0A3E\\x02\\u0A3E\\x02\\u0A40\\x02\\u0A44\\x02\\u0A49\\x02\" +\r\n\t\t\"\\u0A4A\\x02\\u0A4D\\x02\\u0A4F\\x02\\u0A53\\x02\\u0A53\\x02\\u0A5B\\x02\\u0A5E\\x02\" +\r\n\t\t\"\\u0A60\\x02\\u0A60\\x02\\u0A68\\x02\\u0A77\\x02\\u0A83\\x02\\u0A85\\x02\\u0A87\\x02\" +\r\n\t\t\"\\u0A8F\\x02\\u0A91\\x02\\u0A93\\x02\\u0A95\\x02\\u0AAA\\x02\\u0AAC\\x02\\u0AB2\\x02\" +\r\n\t\t\"\\u0AB4\\x02\\u0AB5\\x02\\u0AB7\\x02\\u0ABB\\x02\\u0ABE\\x02\\u0AC7\\x02\\u0AC9\\x02\" +\r\n\t\t\"\\u0ACB\\x02\\u0ACD\\x02\\u0ACF\\x02\\u0AD2\\x02\\u0AD2\\x02\\u0AE2\\x02\\u0AE5\\x02\" +\r\n\t\t\"\\u0AE8\\x02\\u0AF1\\x02\\u0AFB\\x02\\u0AFB\\x02\\u0B03\\x02\\u0B05\\x02\\u0B07\\x02\" +\r\n\t\t\"\\u0B0E\\x02\\u0B11\\x02\\u0B12\\x02\\u0B15\\x02\\u0B2A\\x02\\u0B2C\\x02\\u0B32\\x02\" +\r\n\t\t\"\\u0B34\\x02\\u0B35\\x02\\u0B37\\x02\\u0B3B\\x02\\u0B3E\\x02\\u0B46\\x02\\u0B49\\x02\" +\r\n\t\t\"\\u0B4A\\x02\\u0B4D\\x02\\u0B4F\\x02\\u0B58\\x02\\u0B59\\x02\\u0B5E\\x02\\u0B5F\\x02\" +\r\n\t\t\"\\u0B61\\x02\\u0B65\\x02\\u0B68\\x02\\u0B71\\x02\\u0B73\\x02\\u0B73\\x02\\u0B84\\x02\" +\r\n\t\t\"\\u0B85\\x02\\u0B87\\x02\\u0B8C\\x02\\u0B90\\x02\\u0B92\\x02\\u0B94\\x02\\u0B97\\x02\" +\r\n\t\t\"\\u0B9B\\x02\\u0B9C\\x02\\u0B9E\\x02\\u0B9E\\x02\\u0BA0\\x02\\u0BA1\\x02\\u0BA5\\x02\" +\r\n\t\t\"\\u0BA6\\x02\\u0BAA\\x02\\u0BAC\\x02\\u0BB0\\x02\\u0BBB\\x02\\u0BC0\\x02\\u0BC4\\x02\" +\r\n\t\t\"\\u0BC8\\x02\\u0BCA\\x02\\u0BCC\\x02\\u0BCF\\x02\\u0BD2\\x02\\u0BD2\\x02\\u0BD9\\x02\" +\r\n\t\t\"\\u0BD9\\x02\\u0BE8\\x02\\u0BF1\\x02\\u0C02\\x02\\u0C05\\x02\\u0C07\\x02\\u0C0E\\x02\" +\r\n\t\t\"\\u0C10\\x02\\u0C12\\x02\\u0C14\\x02\\u0C2A\\x02\\u0C2C\\x02\\u0C3B\\x02\\u0C3F\\x02\" +\r\n\t\t\"\\u0C46\\x02\\u0C48\\x02\\u0C4A\\x02\\u0C4C\\x02\\u0C4F\\x02\\u0C57\\x02\\u0C58\\x02\" +\r\n\t\t\"\\u0C5A\\x02\\u0C5C\\x02\\u0C62\\x02\\u0C65\\x02\\u0C68\\x02\\u0C71\\x02\\u0C82\\x02\" +\r\n\t\t\"\\u0C85\\x02\\u0C87\\x02\\u0C8E\\x02\\u0C90\\x02\\u0C92\\x02\\u0C94\\x02\\u0CAA\\x02\" +\r\n\t\t\"\\u0CAC\\x02\\u0CB5\\x02\\u0CB7\\x02\\u0CBB\\x02\\u0CBE\\x02\\u0CC6\\x02\\u0CC8\\x02\" +\r\n\t\t\"\\u0CCA\\x02\\u0CCC\\x02\\u0CCF\\x02\\u0CD7\\x02\\u0CD8\\x02\\u0CE0\\x02\\u0CE0\\x02\" +\r\n\t\t\"\\u0CE2\\x02\\u0CE5\\x02\\u0CE8\\x02\\u0CF1\\x02\\u0CF3\\x02\\u0CF4\\x02\\u0D03\\x02\" +\r\n\t\t\"\\u0D05\\x02\\u0D07\\x02\\u0D0E\\x02\\u0D10\\x02\\u0D12\\x02\\u0D14\\x02\\u0D3C\\x02\" +\r\n\t\t\"\\u0D3F\\x02\\u0D46\\x02\\u0D48\\x02\\u0D4A\\x02\\u0D4C\\x02\\u0D50\\x02\\u0D56\\x02\" +\r\n\t\t\"\\u0D59\\x02\\u0D61\\x02\\u0D65\\x02\\u0D68\\x02\\u0D71\\x02\\u0D7C\\x02\\u0D81\\x02\" +\r\n\t\t\"\\u0D84\\x02\\u0D85\\x02\\u0D87\\x02\\u0D98\\x02\\u0D9C\\x02\\u0DB3\\x02\\u0DB5\\x02\" +\r\n\t\t\"\\u0DBD\\x02\\u0DBF\\x02\\u0DBF\\x02\\u0DC2\\x02\\u0DC8\\x02\\u0DCC\\x02\\u0DCC\\x02\" +\r\n\t\t\"\\u0DD1\\x02\\u0DD6\\x02\\u0DD8\\x02\\u0DD8\\x02\\u0DDA\\x02\\u0DE1\\x02\\u0DE8\\x02\" +\r\n\t\t\"\\u0DF1\\x02\\u0DF4\\x02\\u0DF5\\x02\\u0E03\\x02\\u0E3C\\x02\\u0E42\\x02\\u0E50\\x02\" +\r\n\t\t\"\\u0E52\\x02\\u0E5B\\x02\\u0E83\\x02\\u0E84\\x02\\u0E86\\x02\\u0E86\\x02\\u0E89\\x02\" +\r\n\t\t\"\\u0E8A\\x02\\u0E8C\\x02\\u0E8C\\x02\\u0E8F\\x02\\u0E8F\\x02\\u0E96\\x02\\u0E99\\x02\" +\r\n\t\t\"\\u0E9B\\x02\\u0EA1\\x02\\u0EA3\\x02\\u0EA5\\x02\\u0EA7\\x02\\u0EA7\\x02\\u0EA9\\x02\" +\r\n\t\t\"\\u0EA9\\x02\\u0EAC\\x02\\u0EAD\\x02\\u0EAF\\x02\\u0EBB\\x02\\u0EBD\\x02\\u0EBF\\x02\" +\r\n\t\t\"\\u0EC2\\x02\\u0EC6\\x02\\u0EC8\\x02\\u0EC8\\x02\\u0ECA\\x02\\u0ECF\\x02\\u0ED2\\x02\" +\r\n\t\t\"\\u0EDB\\x02\\u0EDE\\x02\\u0EE1\\x02\\u0F02\\x02\\u0F02\\x02\\u0F1A\\x02\\u0F1B\\x02\" +\r\n\t\t\"\\u0F22\\x02\\u0F2B\\x02\\u0F37\\x02\\u0F37\\x02\\u0F39\\x02\\u0F39\\x02\\u0F3B\\x02\" +\r\n\t\t\"\\u0F3B\\x02\\u0F40\\x02\\u0F49\\x02\\u0F4B\\x02\\u0F6E\\x02\\u0F73\\x02\\u0F86\\x02\" +\r\n\t\t\"\\u0F88\\x02\\u0F99\\x02\\u0F9B\\x02\\u0FBE\\x02\\u0FC8\\x02\\u0FC8\\x02\\u1002\\x02\" +\r\n\t\t\"\\u104B\\x02\\u1052\\x02\\u109F\\x02\\u10A2\\x02\\u10C7\\x02\\u10C9\\x02\\u10C9\\x02\" +\r\n\t\t\"\\u10CF\\x02\\u10CF\\x02\\u10D2\\x02\\u10FC\\x02\\u10FE\\x02\\u124A\\x02\\u124C\\x02\" +\r\n\t\t\"\\u124F\\x02\\u1252\\x02\\u1258\\x02\\u125A\\x02\\u125A\\x02\\u125C\\x02\\u125F\\x02\" +\r\n\t\t\"\\u1262\\x02\\u128A\\x02\\u128C\\x02\\u128F\\x02\\u1292\\x02\\u12B2\\x02\\u12B4\\x02\" +\r\n\t\t\"\\u12B7\\x02\\u12BA\\x02\\u12C0\\x02\\u12C2\\x02\\u12C2\\x02\\u12C4\\x02\\u12C7\\x02\" +\r\n\t\t\"\\u12CA\\x02\\u12D8\\x02\\u12DA\\x02\\u1312\\x02\\u1314\\x02\\u1317\\x02\\u131A\\x02\" +\r\n\t\t\"\\u135C\\x02\\u135F\\x02\\u1361\\x02\\u1382\\x02\\u1391\\x02\\u13A2\\x02\\u13F7\\x02\" +\r\n\t\t\"\\u13FA\\x02\\u13FF\\x02\\u1403\\x02\\u166E\\x02\\u1671\\x02\\u1681\\x02\\u1683\\x02\" +\r\n\t\t\"\\u169C\\x02\\u16A2\\x02\\u16EC\\x02\\u16F0\\x02\\u16FA\\x02\\u1702\\x02\\u170E\\x02\" +\r\n\t\t\"\\u1710\\x02\\u1716\\x02\\u1722\\x02\\u1736\\x02\\u1742\\x02\\u1755\\x02\\u1762\\x02\" +\r\n\t\t\"\\u176E\\x02\\u1770\\x02\\u1772\\x02\\u1774\\x02\\u1775\\x02\\u1782\\x02\\u17D5\\x02\" +\r\n\t\t\"\\u17D9\\x02\\u17D9\\x02\\u17DE\\x02\\u17DF\\x02\\u17E2\\x02\\u17EB\\x02\\u180D\\x02\" +\r\n\t\t\"\\u1810\\x02\\u1812\\x02\\u181B\\x02\\u1822\\x02\\u1879\\x02\\u1882\\x02\\u18AC\\x02\" +\r\n\t\t\"\\u18B2\\x02\\u18F7\\x02\\u1902\\x02\\u1920\\x02\\u1922\\x02\\u192D\\x02\\u1932\\x02\" +\r\n\t\t\"\\u193D\\x02\\u1948\\x02\\u196F\\x02\\u1972\\x02\\u1976\\x02\\u1982\\x02\\u19AD\\x02\" +\r\n\t\t\"\\u19B2\\x02\\u19CB\\x02\\u19D2\\x02\\u19DB\\x02\\u1A02\\x02\\u1A1D\\x02\\u1A22\\x02\" +\r\n\t\t\"\\u1A60\\x02\\u1A62\\x02\\u1A7E\\x02\\u1A81\\x02\\u1A8B\\x02\\u1A92\\x02\\u1A9B\\x02\" +\r\n\t\t\"\\u1AA9\\x02\\u1AA9\\x02\\u1AB2\\x02\\u1ABF\\x02\\u1B02\\x02\\u1B4D\\x02\\u1B52\\x02\" +\r\n\t\t\"\\u1B5B\\x02\\u1B6D\\x02\\u1B75\\x02\\u1B82\\x02\\u1BF5\\x02\\u1C02\\x02\\u1C39\\x02\" +\r\n\t\t\"\\u1C42\\x02\\u1C4B\\x02\\u1C4F\\x02\\u1C7F\\x02\\u1C82\\x02\\u1C8A\\x02\\u1CD2\\x02\" +\r\n\t\t\"\\u1CD4\\x02\\u1CD6\\x02\\u1CF8\\x02\\u1CFA\\x02\\u1CFB\\x02\\u1D02\\x02\\u1DF7\\x02\" +\r\n\t\t\"\\u1DFD\\x02\\u1F17\\x02\\u1F1A\\x02\\u1F1F\\x02\\u1F22\\x02\\u1F47\\x02\\u1F4A\\x02\" +\r\n\t\t\"\\u1F4F\\x02\\u1F52\\x02\\u1F59\\x02\\u1F5B\\x02\\u1F5B\\x02\\u1F5D\\x02\\u1F5D\\x02\" +\r\n\t\t\"\\u1F5F\\x02\\u1F5F\\x02\\u1F61\\x02\\u1F7F\\x02\\u1F82\\x02\\u1FB6\\x02\\u1FB8\\x02\" +\r\n\t\t\"\\u1FBE\\x02\\u1FC0\\x02\\u1FC0\\x02\\u1FC4\\x02\\u1FC6\\x02\\u1FC8\\x02\\u1FCE\\x02\" +\r\n\t\t\"\\u1FD2\\x02\\u1FD5\\x02\\u1FD8\\x02\\u1FDD\\x02\\u1FE2\\x02\\u1FEE\\x02\\u1FF4\\x02\" +\r\n\t\t\"\\u1FF6\\x02\\u1FF8\\x02\\u1FFE\\x02\\u200D\\x02\\u2011\\x02\\u202C\\x02\\u2030\\x02\" +\r\n\t\t\"\\u2041\\x02\\u2042\\x02\\u2056\\x02\\u2056\\x02\\u2062\\x02\\u2066\\x02\\u2068\\x02\" +\r\n\t\t\"\\u2071\\x02\\u2073\\x02\\u2073\\x02\\u2081\\x02\\u2081\\x02\\u2092\\x02\\u209E\\x02\" +\r\n\t\t\"\\u20D2\\x02\\u20DE\\x02\\u20E3\\x02\\u20E3\\x02\\u20E7\\x02\\u20F2\\x02\\u2104\\x02\" +\r\n\t\t\"\\u2104\\x02\\u2109\\x02\\u2109\\x02\\u210C\\x02\\u2115\\x02\\u2117\\x02\\u2117\\x02\" +\r\n\t\t\"\\u211B\\x02\\u211F\\x02\\u2126\\x02\\u2126\\x02\\u2128\\x02\\u2128\\x02\\u212A\\x02\" +\r\n\t\t\"\\u212A\\x02\\u212C\\x02\\u212F\\x02\\u2131\\x02\\u213B\\x02\\u213E\\x02\\u2141\\x02\" +\r\n\t\t\"\\u2147\\x02\\u214B\\x02\\u2150\\x02\\u2150\\x02\\u2162\\x02\\u218A\\x02\\u2C02\\x02\" +\r\n\t\t\"\\u2C30\\x02\\u2C32\\x02\\u2C60\\x02\\u2C62\\x02\\u2CE6\\x02\\u2CED\\x02\\u2CF5\\x02\" +\r\n\t\t\"\\u2D02\\x02\\u2D27\\x02\\u2D29\\x02\\u2D29\\x02\\u2D2F\\x02\\u2D2F\\x02\\u2D32\\x02\" +\r\n\t\t\"\\u2D69\\x02\\u2D71\\x02\\u2D71\\x02\\u2D81\\x02\\u2D98\\x02\\u2DA2\\x02\\u2DA8\\x02\" +\r\n\t\t\"\\u2DAA\\x02\\u2DB0\\x02\\u2DB2\\x02\\u2DB8\\x02\\u2DBA\\x02\\u2DC0\\x02\\u2DC2\\x02\" +\r\n\t\t\"\\u2DC8\\x02\\u2DCA\\x02\\u2DD0\\x02\\u2DD2\\x02\\u2DD8\\x02\\u2DDA\\x02\\u2DE0\\x02\" +\r\n\t\t\"\\u2DE2\\x02\\u2E01\\x02\\u2E31\\x02\\u2E31\\x02\\u3007\\x02\\u3009\\x02\\u3023\\x02\" +\r\n\t\t\"\\u3031\\x02\\u3033\\x02\\u3037\\x02\\u303A\\x02\\u303E\\x02\\u3043\\x02\\u3098\\x02\" +\r\n\t\t\"\\u309B\\x02\\u309C\\x02\\u309F\\x02\\u30A1\\x02\\u30A3\\x02\\u30FC\\x02\\u30FE\\x02\" +\r\n\t\t\"\\u3101\\x02\\u3107\\x02\\u312F\\x02\\u3133\\x02\\u3190\\x02\\u31A2\\x02\\u31BC\\x02\" +\r\n\t\t\"\\u31F2\\x02\\u3201\\x02\\u3402\\x02\\u4DB7\\x02\\u4E02\\x02\\u9FD7\\x02\\uA002\\x02\" +\r\n\t\t\"\\uA48E\\x02\\uA4D2\\x02\\uA4FF\\x02\\uA502\\x02\\uA60E\\x02\\uA612\\x02\\uA62D\\x02\" +\r\n\t\t\"\\uA642\\x02\\uA671\\x02\\uA676\\x02\\uA67F\\x02\\uA681\\x02\\uA6F3\\x02\\uA719\\x02\" +\r\n\t\t\"\\uA721\\x02\\uA724\\x02\\uA78A\\x02\\uA78D\\x02\\uA7B0\\x02\\uA7B2\\x02\\uA7B9\\x02\" +\r\n\t\t\"\\uA7F9\\x02\\uA829\\x02\\uA842\\x02\\uA875\\x02\\uA882\\x02\\uA8C7\\x02\\uA8D2\\x02\" +\r\n\t\t\"\\uA8DB\\x02\\uA8E2\\x02\\uA8F9\\x02\\uA8FD\\x02\\uA8FD\\x02\\uA8FF\\x02\\uA8FF\\x02\" +\r\n\t\t\"\\uA902\\x02\\uA92F\\x02\\uA932\\x02\\uA955\\x02\\uA962\\x02\\uA97E\\x02\\uA982\\x02\" +\r\n\t\t\"\\uA9C2\\x02\\uA9D1\\x02\\uA9DB\\x02\\uA9E2\\x02\\uAA00\\x02\\uAA02\\x02\\uAA38\\x02\" +\r\n\t\t\"\\uAA42\\x02\\uAA4F\\x02\\uAA52\\x02\\uAA5B\\x02\\uAA62\\x02\\uAA78\\x02\\uAA7C\\x02\" +\r\n\t\t\"\\uAAC4\\x02\\uAADD\\x02\\uAADF\\x02\\uAAE2\\x02\\uAAF1\\x02\\uAAF4\\x02\\uAAF8\\x02\" +\r\n\t\t\"\\uAB03\\x02\\uAB08\\x02\\uAB0B\\x02\\uAB10\\x02\\uAB13\\x02\\uAB18\\x02\\uAB22\\x02\" +\r\n\t\t\"\\uAB28\\x02\\uAB2A\\x02\\uAB30\\x02\\uAB32\\x02\\uAB5C\\x02\\uAB5E\\x02\\uAB67\\x02\" +\r\n\t\t\"\\uAB72\\x02\\uABEC\\x02\\uABEE\\x02\\uABEF\\x02\\uABF2\\x02\\uABFB\\x02\\uAC02\\x02\" +\r\n\t\t\"\\uD7A5\\x02\\uD7B2\\x02\\uD7C8\\x02\\uD7CD\\x02\\uD7FD\\x02\\uF902\\x02\\uFA6F\\x02\" +\r\n\t\t\"\\uFA72\\x02\\uFADB\\x02\\uFB02\\x02\\uFB08\\x02\\uFB15\\x02\\uFB19\\x02\\uFB1F\\x02\" +\r\n\t\t\"\\uFB2A\\x02\\uFB2C\\x02\\uFB38\\x02\\uFB3A\\x02\\uFB3E\\x02\\uFB40\\x02\\uFB40\\x02\" +\r\n\t\t\"\\uFB42\\x02\\uFB43\\x02\\uFB45\\x02\\uFB46\\x02\\uFB48\\x02\\uFBB3\\x02\\uFBD5\\x02\" +\r\n\t\t\"\\uFD3F\\x02\\uFD52\\x02\\uFD91\\x02\\uFD94\\x02\\uFDC9\\x02\\uFDF2\\x02\\uFDFD\\x02\" +\r\n\t\t\"\\uFE02\\x02\\uFE11\\x02\\uFE22\\x02\\uFE31\\x02\\uFE35\\x02\\uFE36\\x02\\uFE4F\\x02\" +\r\n\t\t\"\\uFE51\\x02\\uFE72\\x02\\uFE76\\x02\\uFE78\\x02\\uFEFE\\x02\\uFF01\\x02\\uFF01\\x02\" +\r\n\t\t\"\\uFF12\\x02\\uFF1B\\x02\\uFF23\\x02\\uFF3C\\x02\\uFF41\\x02\\uFF41\\x02\\uFF43\\x02\" +\r\n\t\t\"\\uFF5C\\x02\\uFF68\\x02\\uFFC0\\x02\\uFFC4\\x02\\uFFC9\\x02\\uFFCC\\x02\\uFFD1\\x02\" +\r\n\t\t\"\\uFFD4\\x02\\uFFD9\\x02\\uFFDC\\x02\\uFFDE\\x02\\uFFFB\\x02\\uFFFD\\x02\\x02\\x03\\r\" +\r\n\t\t\"\\x03\\x0F\\x03(\\x03*\\x03<\\x03>\\x03?\\x03A\\x03O\\x03R\\x03_\\x03\\x82\\x03\\xFC\" +\r\n\t\t\"\\x03\\u0142\\x03\\u0176\\x03\\u01FF\\x03\\u01FF\\x03\\u0282\\x03\\u029E\\x03\\u02A2\" +\r\n\t\t\"\\x03\\u02D2\\x03\\u02E2\\x03\\u02E2\\x03\\u0302\\x03\\u0321\\x03\\u0332\\x03\\u034C\" +\r\n\t\t\"\\x03\\u0352\\x03\\u037C\\x03\\u0382\\x03\\u039F\\x03\\u03A2\\x03\\u03C5\\x03\\u03CA\" +\r\n\t\t\"\\x03\\u03D1\\x03\\u03D3\\x03\\u03D7\\x03\\u0402\\x03\\u049F\\x03\\u04A2\\x03\\u04AB\" +\r\n\t\t\"\\x03\\u04B2\\x03\\u04D5\\x03\\u04DA\\x03\\u04FD\\x03\\u0502\\x03\\u0529\\x03\\u0532\" +\r\n\t\t\"\\x03\\u0565\\x03\\u0602\\x03\\u0738\\x03\\u0742\\x03\\u0757\\x03\\u0762\\x03\\u0769\" +\r\n\t\t\"\\x03\\u0802\\x03\\u0807\\x03\\u080A\\x03\\u080A\\x03\\u080C\\x03\\u0837\\x03\\u0839\" +\r\n\t\t\"\\x03\\u083A\\x03\\u083E\\x03\\u083E\\x03\\u0841\\x03\\u0857\\x03\\u0862\\x03\\u0878\" +\r\n\t\t\"\\x03\\u0882\\x03\\u08A0\\x03\\u08E2\\x03\\u08F4\\x03\\u08F6\\x03\\u08F7\\x03\\u0902\" +\r\n\t\t\"\\x03\\u0917\\x03\\u0922\\x03\\u093B\\x03\\u0982\\x03\\u09B9\\x03\\u09C0\\x03\\u09C1\" +\r\n\t\t\"\\x03\\u0A02\\x03\\u0A05\\x03\\u0A07\\x03\\u0A08\\x03\\u0A0E\\x03\\u0A15\\x03\\u0A17\" +\r\n\t\t\"\\x03\\u0A19\\x03\\u0A1B\\x03\\u0A35\\x03\\u0A3A\\x03\\u0A3C\\x03\\u0A41\\x03\\u0A41\" +\r\n\t\t\"\\x03\\u0A62\\x03\\u0A7E\\x03\\u0A82\\x03\\u0A9E\\x03\\u0AC2\\x03\\u0AC9\\x03\\u0ACB\" +\r\n\t\t\"\\x03\\u0AE8\\x03\\u0B02\\x03\\u0B37\\x03\\u0B42\\x03\\u0B57\\x03\\u0B62\\x03\\u0B74\" +\r\n\t\t\"\\x03\\u0B82\\x03\\u0B93\\x03\\u0C02\\x03\\u0C4A\\x03\\u0C82\\x03\\u0CB4\\x03\\u0CC2\" +\r\n\t\t\"\\x03\\u0CF4\\x03\\u1002\\x03\\u1048\\x03\\u1068\\x03\\u1071\\x03\\u1081\\x03\\u10BC\" +\r\n\t\t\"\\x03\\u10BF\\x03\\u10BF\\x03\\u10D2\\x03\\u10EA\\x03\\u10F2\\x03\\u10FB\\x03\\u1102\" +\r\n\t\t\"\\x03\\u1136\\x03\\u1138\\x03\\u1141\\x03\\u1152\\x03\\u1175\\x03\\u1178\\x03\\u1178\" +\r\n\t\t\"\\x03\\u1182\\x03\\u11C6\\x03\\u11CC\\x03\\u11CE\\x03\\u11D2\\x03\\u11DC\\x03\\u11DE\" +\r\n\t\t\"\\x03\\u11DE\\x03\\u1202\\x03\\u1213\\x03\\u1215\\x03\\u1239\\x03\\u1240\\x03\\u1240\" +\r\n\t\t\"\\x03\\u1282\\x03\\u1288\\x03\\u128A\\x03\\u128A\\x03\\u128C\\x03\\u128F\\x03\\u1291\" +\r\n\t\t\"\\x03\\u129F\\x03\\u12A1\\x03\\u12AA\\x03\\u12B2\\x03\\u12EC\\x03\\u12F2\\x03\\u12FB\" +\r\n\t\t\"\\x03\\u1302\\x03\\u1305\\x03\\u1307\\x03\\u130E\\x03\\u1311\\x03\\u1312\\x03\\u1315\" +\r\n\t\t\"\\x03\\u132A\\x03\\u132C\\x03\\u1332\\x03\\u1334\\x03\\u1335\\x03\\u1337\\x03\\u133B\" +\r\n\t\t\"\\x03\\u133E\\x03\\u1346\\x03\\u1349\\x03\\u134A\\x03\\u134D\\x03\\u134F\\x03\\u1352\" +\r\n\t\t\"\\x03\\u1352\\x03\\u1359\\x03\\u1359\\x03\\u135F\\x03\\u1365\\x03\\u1368\\x03\\u136E\" +\r\n\t\t\"\\x03\\u1372\\x03\\u1376\\x03\\u1402\\x03\\u144C\\x03\\u1452\\x03\\u145B\\x03\\u1482\" +\r\n\t\t\"\\x03\\u14C7\\x03\\u14C9\\x03\\u14C9\\x03\\u14D2\\x03\\u14DB\\x03\\u1582\\x03\\u15B7\" +\r\n\t\t\"\\x03\\u15BA\\x03\\u15C2\\x03\\u15DA\\x03\\u15DF\\x03\\u1602\\x03\\u1642\\x03\\u1646\" +\r\n\t\t\"\\x03\\u1646\\x03\\u1652\\x03\\u165B\\x03\\u1682\\x03\\u16B9\\x03\\u16C2\\x03\\u16CB\" +\r\n\t\t\"\\x03\\u1702\\x03\\u171B\\x03\\u171F\\x03\\u172D\\x03\\u1732\\x03\\u173B\\x03\\u18A2\" +\r\n\t\t\"\\x03\\u18EB\\x03\\u1901\\x03\\u1901\\x03\\u1AC2\\x03\\u1AFA\\x03\\u1C02\\x03\\u1C0A\" +\r\n\t\t\"\\x03\\u1C0C\\x03\\u1C38\\x03\\u1C3A\\x03\\u1C42\\x03\\u1C52\\x03\\u1C5B\\x03\\u1C74\" +\r\n\t\t\"\\x03\\u1C91\\x03\\u1C94\\x03\\u1CA9\\x03\\u1CAB\\x03\\u1CB8\\x03\\u2002\\x03\\u239B\" +\r\n\t\t\"\\x03\\u2402\\x03\\u2470\\x03\\u2482\\x03\\u2545\\x03\\u3002\\x03\\u3430\\x03\\u4402\" +\r\n\t\t\"\\x03\\u4648\\x03\\u6802\\x03\\u6A3A\\x03\\u6A42\\x03\\u6A60\\x03\\u6A62\\x03\\u6A6B\" +\r\n\t\t\"\\x03\\u6AD2\\x03\\u6AEF\\x03\\u6AF2\\x03\\u6AF6\\x03\\u6B02\\x03\\u6B38\\x03\\u6B42\" +\r\n\t\t\"\\x03\\u6B45\\x03\\u6B52\\x03\\u6B5B\\x03\\u6B65\\x03\\u6B79\\x03\\u6B7F\\x03\\u6B91\" +\r\n\t\t\"\\x03\\u6F02\\x03\\u6F46\\x03\\u6F52\\x03\\u6F80\\x03\\u6F91\\x03\\u6FA1\\x03\\u6FE2\" +\r\n\t\t\"\\x03\\u6FE2\\x03\\u7002\\x03\\u87EE\\x03\\u8802\\x03\\u8AF4\\x03\\uB002\\x03\\uB003\" +\r\n\t\t\"\\x03\\uBC02\\x03\\uBC6C\\x03\\uBC72\\x03\\uBC7E\\x03\\uBC82\\x03\\uBC8A\\x03\\uBC92\" +\r\n\t\t\"\\x03\\uBC9B\\x03\\uBC9F\\x03\\uBCA0\\x03\\uBCA2\\x03\\uBCA5\\x03\\uD167\\x03\\uD16B\" +\r\n\t\t\"\\x03\\uD16F\\x03\\uD184\\x03\\uD187\\x03\\uD18D\\x03\\uD1AC\\x03\\uD1AF\\x03\\uD244\" +\r\n\t\t\"\\x03\\uD246\\x03\\uD402\\x03\\uD456\\x03\\uD458\\x03\\uD49E\\x03\\uD4A0\\x03\\uD4A1\" +\r\n\t\t\"\\x03\\uD4A4\\x03\\uD4A4\\x03\\uD4A7\\x03\\uD4A8\\x03\\uD4AB\\x03\\uD4AE\\x03\\uD4B0\" +\r\n\t\t\"\\x03\\uD4BB\\x03\\uD4BD\\x03\\uD4BD\\x03\\uD4BF\\x03\\uD4C5\\x03\\uD4C7\\x03\\uD507\" +\r\n\t\t\"\\x03\\uD509\\x03\\uD50C\\x03\\uD50F\\x03\\uD516\\x03\\uD518\\x03\\uD51E\\x03\\uD520\" +\r\n\t\t\"\\x03\\uD53B\\x03\\uD53D\\x03\\uD540\\x03\\uD542\\x03\\uD546\\x03\\uD548\\x03\\uD548\" +\r\n\t\t\"\\x03\\uD54C\\x03\\uD552\\x03\\uD554\\x03\\uD6A7\\x03\\uD6AA\\x03\\uD6C2\\x03\\uD6C4\" +\r\n\t\t\"\\x03\\uD6DC\\x03\\uD6DE\\x03\\uD6FC\\x03\\uD6FE\\x03\\uD716\\x03\\uD718\\x03\\uD736\" +\r\n\t\t\"\\x03\\uD738\\x03\\uD750\\x03\\uD752\\x03\\uD770\\x03\\uD772\\x03\\uD78A\\x03\\uD78C\" +\r\n\t\t\"\\x03\\uD7AA\\x03\\uD7AC\\x03\\uD7C4\\x03\\uD7C6\\x03\\uD7CD\\x03\\uD7D0\\x03\\uD801\" +\r\n\t\t\"\\x03\\uDA02\\x03\\uDA38\\x03\\uDA3D\\x03\\uDA6E\\x03\\uDA77\\x03\\uDA77\\x03\\uDA86\" +\r\n\t\t\"\\x03\\uDA86\\x03\\uDA9D\\x03\\uDAA1\\x03\\uDAA3\\x03\\uDAB1\\x03\\uE002\\x03\\uE008\" +\r\n\t\t\"\\x03\\uE00A\\x03\\uE01A\\x03\\uE01D\\x03\\uE023\\x03\\uE025\\x03\\uE026\\x03\\uE028\" +\r\n\t\t\"\\x03\\uE02C\\x03\\uE802\\x03\\uE8C6\\x03\\uE8D2\\x03\\uE8D8\\x03\\uE902\\x03\\uE94C\" +\r\n\t\t\"\\x03\\uE952\\x03\\uE95B\\x03\\uEE02\\x03\\uEE05\\x03\\uEE07\\x03\\uEE21\\x03\\uEE23\" +\r\n\t\t\"\\x03\\uEE24\\x03\\uEE26\\x03\\uEE26\\x03\\uEE29\\x03\\uEE29\\x03\\uEE2B\\x03\\uEE34\" +\r\n\t\t\"\\x03\\uEE36\\x03\\uEE39\\x03\\uEE3B\\x03\\uEE3B\\x03\\uEE3D\\x03\\uEE3D\\x03\\uEE44\" +\r\n\t\t\"\\x03\\uEE44\\x03\\uEE49\\x03\\uEE49\\x03\\uEE4B\\x03\\uEE4B\\x03\\uEE4D\\x03\\uEE4D\" +\r\n\t\t\"\\x03\\uEE4F\\x03\\uEE51\\x03\\uEE53\\x03\\uEE54\\x03\\uEE56\\x03\\uEE56\\x03\\uEE59\" +\r\n\t\t\"\\x03\\uEE59\\x03\\uEE5B\\x03\\uEE5B\\x03\\uEE5D\\x03\\uEE5D\\x03\\uEE5F\\x03\\uEE5F\" +\r\n\t\t\"\\x03\\uEE61\\x03\\uEE61\\x03\\uEE63\\x03\\uEE64\\x03\\uEE66\\x03\\uEE66\\x03\\uEE69\" +\r\n\t\t\"\\x03\\uEE6C\\x03\\uEE6E\\x03\\uEE74\\x03\\uEE76\\x03\\uEE79\\x03\\uEE7B\\x03\\uEE7E\" +\r\n\t\t\"\\x03\\uEE80\\x03\\uEE80\\x03\\uEE82\\x03\\uEE8B\\x03\\uEE8D\\x03\\uEE9D\\x03\\uEEA3\" +\r\n\t\t\"\\x03\\uEEA5\\x03\\uEEA7\\x03\\uEEAB\\x03\\uEEAD\\x03\\uEEBD\\x03\\x02\\x04\\uA6D8\\x04\" +\r\n\t\t\"\\uA702\\x04\\uB736\\x04\\uB742\\x04\\uB81F\\x04\\uB822\\x04\\uCEA3\\x04\\uF802\\x04\" +\r\n\t\t\"\\uFA1F\\x04\\x03\\x10\\x03\\x10\\\"\\x10\\x81\\x10\\u0102\\x10\\u01F1\\x10\\u0240\\x02\" +\r\n\t\t\"C\\x02\\\\\\x02c\\x02|\\x02\\xAC\\x02\\xAC\\x02\\xB7\\x02\\xB7\\x02\\xBC\\x02\\xBC\\x02\" +\r\n\t\t\"\\xC2\\x02\\xD8\\x02\\xDA\\x02\\xF8\\x02\\xFA\\x02\\u02C3\\x02\\u02C8\\x02\\u02D3\\x02\" +\r\n\t\t\"\\u02E2\\x02\\u02E6\\x02\\u02EE\\x02\\u02EE\\x02\\u02F0\\x02\\u02F0\\x02\\u0372\\x02\" +\r\n\t\t\"\\u0376\\x02\\u0378\\x02\\u0379\\x02\\u037C\\x02\\u037F\\x02\\u0381\\x02\\u0381\\x02\" +\r\n\t\t\"\\u0388\\x02\\u0388\\x02\\u038A\\x02\\u038C\\x02\\u038E\\x02\\u038E\\x02\\u0390\\x02\" +\r\n\t\t\"\\u03A3\\x02\\u03A5\\x02\\u03F7\\x02\\u03F9\\x02\\u0483\\x02\\u048C\\x02\\u0531\\x02\" +\r\n\t\t\"\\u0533\\x02\\u0558\\x02\\u055B\\x02\\u055B\\x02\\u0563\\x02\\u0589\\x02\\u05D2\\x02\" +\r\n\t\t\"\\u05EC\\x02\\u05F2\\x02\\u05F4\\x02\\u0622\\x02\\u064C\\x02\\u0670\\x02\\u0671\\x02\" +\r\n\t\t\"\\u0673\\x02\\u06D5\\x02\\u06D7\\x02\\u06D7\\x02\\u06E7\\x02\\u06E8\\x02\\u06F0\\x02\" +\r\n\t\t\"\\u06F1\\x02\\u06FC\\x02\\u06FE\\x02\\u0701\\x02\\u0701\\x02\\u0712\\x02\\u0712\\x02\" +\r\n\t\t\"\\u0714\\x02\\u0731\\x02\\u074F\\x02\\u07A7\\x02\\u07B3\\x02\\u07B3\\x02\\u07CC\\x02\" +\r\n\t\t\"\\u07EC\\x02\\u07F6\\x02\\u07F7\\x02\\u07FC\\x02\\u07FC\\x02\\u0802\\x02\\u0817\\x02\" +\r\n\t\t\"\\u081C\\x02\\u081C\\x02\\u0826\\x02\\u0826\\x02\\u082A\\x02\\u082A\\x02\\u0842\\x02\" +\r\n\t\t\"\\u085A\\x02\\u08A2\\x02\\u08B6\\x02\\u08B8\\x02\\u08BF\\x02\\u0906\\x02\\u093B\\x02\" +\r\n\t\t\"\\u093F\\x02\\u093F\\x02\\u0952\\x02\\u0952\\x02\\u095A\\x02\\u0963\\x02\\u0973\\x02\" +\r\n\t\t\"\\u0982\\x02\\u0987\\x02\\u098E\\x02\\u0991\\x02\\u0992\\x02\\u0995\\x02\\u09AA\\x02\" +\r\n\t\t\"\\u09AC\\x02\\u09B2\\x02\\u09B4\\x02\\u09B4\\x02\\u09B8\\x02\\u09BB\\x02\\u09BF\\x02\" +\r\n\t\t\"\\u09BF\\x02\\u09D0\\x02\\u09D0\\x02\\u09DE\\x02\\u09DF\\x02\\u09E1\\x02\\u09E3\\x02\" +\r\n\t\t\"\\u09F2\\x02\\u09F3\\x02\\u0A07\\x02\\u0A0C\\x02\\u0A11\\x02\\u0A12\\x02\\u0A15\\x02\" +\r\n\t\t\"\\u0A2A\\x02\\u0A2C\\x02\\u0A32\\x02\\u0A34\\x02\\u0A35\\x02\\u0A37\\x02\\u0A38\\x02\" +\r\n\t\t\"\\u0A3A\\x02\\u0A3B\\x02\\u0A5B\\x02\\u0A5E\\x02\\u0A60\\x02\\u0A60\\x02\\u0A74\\x02\" +\r\n\t\t\"\\u0A76\\x02\\u0A87\\x02\\u0A8F\\x02\\u0A91\\x02\\u0A93\\x02\\u0A95\\x02\\u0AAA\\x02\" +\r\n\t\t\"\\u0AAC\\x02\\u0AB2\\x02\\u0AB4\\x02\\u0AB5\\x02\\u0AB7\\x02\\u0ABB\\x02\\u0ABF\\x02\" +\r\n\t\t\"\\u0ABF\\x02\\u0AD2\\x02\\u0AD2\\x02\\u0AE2\\x02\\u0AE3\\x02\\u0AFB\\x02\\u0AFB\\x02\" +\r\n\t\t\"\\u0B07\\x02\\u0B0E\\x02\\u0B11\\x02\\u0B12\\x02\\u0B15\\x02\\u0B2A\\x02\\u0B2C\\x02\" +\r\n\t\t\"\\u0B32\\x02\\u0B34\\x02\\u0B35\\x02\\u0B37\\x02\\u0B3B\\x02\\u0B3F\\x02\\u0B3F\\x02\" +\r\n\t\t\"\\u0B5E\\x02\\u0B5F\\x02\\u0B61\\x02\\u0B63\\x02\\u0B73\\x02\\u0B73\\x02\\u0B85\\x02\" +\r\n\t\t\"\\u0B85\\x02\\u0B87\\x02\\u0B8C\\x02\\u0B90\\x02\\u0B92\\x02\\u0B94\\x02\\u0B97\\x02\" +\r\n\t\t\"\\u0B9B\\x02\\u0B9C\\x02\\u0B9E\\x02\\u0B9E\\x02\\u0BA0\\x02\\u0BA1\\x02\\u0BA5\\x02\" +\r\n\t\t\"\\u0BA6\\x02\\u0BAA\\x02\\u0BAC\\x02\\u0BB0\\x02\\u0BBB\\x02\\u0BD2\\x02\\u0BD2\\x02\" +\r\n\t\t\"\\u0C07\\x02\\u0C0E\\x02\\u0C10\\x02\\u0C12\\x02\\u0C14\\x02\\u0C2A\\x02\\u0C2C\\x02\" +\r\n\t\t\"\\u0C3B\\x02\\u0C3F\\x02\\u0C3F\\x02\\u0C5A\\x02\\u0C5C\\x02\\u0C62\\x02\\u0C63\\x02\" +\r\n\t\t\"\\u0C82\\x02\\u0C82\\x02\\u0C87\\x02\\u0C8E\\x02\\u0C90\\x02\\u0C92\\x02\\u0C94\\x02\" +\r\n\t\t\"\\u0CAA\\x02\\u0CAC\\x02\\u0CB5\\x02\\u0CB7\\x02\\u0CBB\\x02\\u0CBF\\x02\\u0CBF\\x02\" +\r\n\t\t\"\\u0CE0\\x02\\u0CE0\\x02\\u0CE2\\x02\\u0CE3\\x02\\u0CF3\\x02\\u0CF4\\x02\\u0D07\\x02\" +\r\n\t\t\"\\u0D0E\\x02\\u0D10\\x02\\u0D12\\x02\\u0D14\\x02\\u0D3C\\x02\\u0D3F\\x02\\u0D3F\\x02\" +\r\n\t\t\"\\u0D50\\x02\\u0D50\\x02\\u0D56\\x02\\u0D58\\x02\\u0D61\\x02\\u0D63\\x02\\u0D7C\\x02\" +\r\n\t\t\"\\u0D81\\x02\\u0D87\\x02\\u0D98\\x02\\u0D9C\\x02\\u0DB3\\x02\\u0DB5\\x02\\u0DBD\\x02\" +\r\n\t\t\"\\u0DBF\\x02\\u0DBF\\x02\\u0DC2\\x02\\u0DC8\\x02\\u0E03\\x02\\u0E32\\x02\\u0E34\\x02\" +\r\n\t\t\"\\u0E35\\x02\\u0E42\\x02\\u0E48\\x02\\u0E83\\x02\\u0E84\\x02\\u0E86\\x02\\u0E86\\x02\" +\r\n\t\t\"\\u0E89\\x02\\u0E8A\\x02\\u0E8C\\x02\\u0E8C\\x02\\u0E8F\\x02\\u0E8F\\x02\\u0E96\\x02\" +\r\n\t\t\"\\u0E99\\x02\\u0E9B\\x02\\u0EA1\\x02\\u0EA3\\x02\\u0EA5\\x02\\u0EA7\\x02\\u0EA7\\x02\" +\r\n\t\t\"\\u0EA9\\x02\\u0EA9\\x02\\u0EAC\\x02\\u0EAD\\x02\\u0EAF\\x02\\u0EB2\\x02\\u0EB4\\x02\" +\r\n\t\t\"\\u0EB5\\x02\\u0EBF\\x02\\u0EBF\\x02\\u0EC2\\x02\\u0EC6\\x02\\u0EC8\\x02\\u0EC8\\x02\" +\r\n\t\t\"\\u0EDE\\x02\\u0EE1\\x02\\u0F02\\x02\\u0F02\\x02\\u0F42\\x02\\u0F49\\x02\\u0F4B\\x02\" +\r\n\t\t\"\\u0F6E\\x02\\u0F8A\\x02\\u0F8E\\x02\\u1002\\x02\\u102C\\x02\\u1041\\x02\\u1041\\x02\" +\r\n\t\t\"\\u1052\\x02\\u1057\\x02\\u105C\\x02\\u105F\\x02\\u1063\\x02\\u1063\\x02\\u1067\\x02\" +\r\n\t\t\"\\u1068\\x02\\u1070\\x02\\u1072\\x02\\u1077\\x02\\u1083\\x02\\u1090\\x02\\u1090\\x02\" +\r\n\t\t\"\\u10A2\\x02\\u10C7\\x02\\u10C9\\x02\\u10C9\\x02\\u10CF\\x02\\u10CF\\x02\\u10D2\\x02\" +\r\n\t\t\"\\u10FC\\x02\\u10FE\\x02\\u124A\\x02\\u124C\\x02\\u124F\\x02\\u1252\\x02\\u1258\\x02\" +\r\n\t\t\"\\u125A\\x02\\u125A\\x02\\u125C\\x02\\u125F\\x02\\u1262\\x02\\u128A\\x02\\u128C\\x02\" +\r\n\t\t\"\\u128F\\x02\\u1292\\x02\\u12B2\\x02\\u12B4\\x02\\u12B7\\x02\\u12BA\\x02\\u12C0\\x02\" +\r\n\t\t\"\\u12C2\\x02\\u12C2\\x02\\u12C4\\x02\\u12C7\\x02\\u12CA\\x02\\u12D8\\x02\\u12DA\\x02\" +\r\n\t\t\"\\u1312\\x02\\u1314\\x02\\u1317\\x02\\u131A\\x02\\u135C\\x02\\u1382\\x02\\u1391\\x02\" +\r\n\t\t\"\\u13A2\\x02\\u13F7\\x02\\u13FA\\x02\\u13FF\\x02\\u1403\\x02\\u166E\\x02\\u1671\\x02\" +\r\n\t\t\"\\u1681\\x02\\u1683\\x02\\u169C\\x02\\u16A2\\x02\\u16EC\\x02\\u16F0\\x02\\u16FA\\x02\" +\r\n\t\t\"\\u1702\\x02\\u170E\\x02\\u1710\\x02\\u1713\\x02\\u1722\\x02\\u1733\\x02\\u1742\\x02\" +\r\n\t\t\"\\u1753\\x02\\u1762\\x02\\u176E\\x02\\u1770\\x02\\u1772\\x02\\u1782\\x02\\u17B5\\x02\" +\r\n\t\t\"\\u17D9\\x02\\u17D9\\x02\\u17DE\\x02\\u17DE\\x02\\u1822\\x02\\u1879\\x02\\u1882\\x02\" +\r\n\t\t\"\\u1886\\x02\\u1889\\x02\\u18AA\\x02\\u18AC\\x02\\u18AC\\x02\\u18B2\\x02\\u18F7\\x02\" +\r\n\t\t\"\\u1902\\x02\\u1920\\x02\\u1952\\x02\\u196F\\x02\\u1972\\x02\\u1976\\x02\\u1982\\x02\" +\r\n\t\t\"\\u19AD\\x02\\u19B2\\x02\\u19CB\\x02\\u1A02\\x02\\u1A18\\x02\\u1A22\\x02\\u1A56\\x02\" +\r\n\t\t\"\\u1AA9\\x02\\u1AA9\\x02\\u1B07\\x02\\u1B35\\x02\\u1B47\\x02\\u1B4D\\x02\\u1B85\\x02\" +\r\n\t\t\"\\u1BA2\\x02\\u1BB0\\x02\\u1BB1\\x02\\u1BBC\\x02\\u1BE7\\x02\\u1C02\\x02\\u1C25\\x02\" +\r\n\t\t\"\\u1C4F\\x02\\u1C51\\x02\\u1C5C\\x02\\u1C7F\\x02\\u1C82\\x02\\u1C8A\\x02\\u1CEB\\x02\" +\r\n\t\t\"\\u1CEE\\x02\\u1CF0\\x02\\u1CF3\\x02\\u1CF7\\x02\\u1CF8\\x02\\u1D02\\x02\\u1DC1\\x02\" +\r\n\t\t\"\\u1E02\\x02\\u1F17\\x02\\u1F1A\\x02\\u1F1F\\x02\\u1F22\\x02\\u1F47\\x02\\u1F4A\\x02\" +\r\n\t\t\"\\u1F4F\\x02\\u1F52\\x02\\u1F59\\x02\\u1F5B\\x02\\u1F5B\\x02\\u1F5D\\x02\\u1F5D\\x02\" +\r\n\t\t\"\\u1F5F\\x02\\u1F5F\\x02\\u1F61\\x02\\u1F7F\\x02\\u1F82\\x02\\u1FB6\\x02\\u1FB8\\x02\" +\r\n\t\t\"\\u1FBE\\x02\\u1FC0\\x02\\u1FC0\\x02\\u1FC4\\x02\\u1FC6\\x02\\u1FC8\\x02\\u1FCE\\x02\" +\r\n\t\t\"\\u1FD2\\x02\\u1FD5\\x02\\u1FD8\\x02\\u1FDD\\x02\\u1FE2\\x02\\u1FEE\\x02\\u1FF4\\x02\" +\r\n\t\t\"\\u1FF6\\x02\\u1FF8\\x02\\u1FFE\\x02\\u2073\\x02\\u2073\\x02\\u2081\\x02\\u2081\\x02\" +\r\n\t\t\"\\u2092\\x02\\u209E\\x02\\u2104\\x02\\u2104\\x02\\u2109\\x02\\u2109\\x02\\u210C\\x02\" +\r\n\t\t\"\\u2115\\x02\\u2117\\x02\\u2117\\x02\\u211B\\x02\\u211F\\x02\\u2126\\x02\\u2126\\x02\" +\r\n\t\t\"\\u2128\\x02\\u2128\\x02\\u212A\\x02\\u212A\\x02\\u212C\\x02\\u212F\\x02\\u2131\\x02\" +\r\n\t\t\"\\u213B\\x02\\u213E\\x02\\u2141\\x02\\u2147\\x02\\u214B\\x02\\u2150\\x02\\u2150\\x02\" +\r\n\t\t\"\\u2162\\x02\\u218A\\x02\\u2C02\\x02\\u2C30\\x02\\u2C32\\x02\\u2C60\\x02\\u2C62\\x02\" +\r\n\t\t\"\\u2CE6\\x02\\u2CED\\x02\\u2CF0\\x02\\u2CF4\\x02\\u2CF5\\x02\\u2D02\\x02\\u2D27\\x02\" +\r\n\t\t\"\\u2D29\\x02\\u2D29\\x02\\u2D2F\\x02\\u2D2F\\x02\\u2D32\\x02\\u2D69\\x02\\u2D71\\x02\" +\r\n\t\t\"\\u2D71\\x02\\u2D82\\x02\\u2D98\\x02\\u2DA2\\x02\\u2DA8\\x02\\u2DAA\\x02\\u2DB0\\x02\" +\r\n\t\t\"\\u2DB2\\x02\\u2DB8\\x02\\u2DBA\\x02\\u2DC0\\x02\\u2DC2\\x02\\u2DC8\\x02\\u2DCA\\x02\" +\r\n\t\t\"\\u2DD0\\x02\\u2DD2\\x02\\u2DD8\\x02\\u2DDA\\x02\\u2DE0\\x02\\u2E31\\x02\\u2E31\\x02\" +\r\n\t\t\"\\u3007\\x02\\u3009\\x02\\u3023\\x02\\u302B\\x02\\u3033\\x02\\u3037\\x02\\u303A\\x02\" +\r\n\t\t\"\\u303E\\x02\\u3043\\x02\\u3098\\x02\\u309F\\x02\\u30A1\\x02\\u30A3\\x02\\u30FC\\x02\" +\r\n\t\t\"\\u30FE\\x02\\u3101\\x02\\u3107\\x02\\u312F\\x02\\u3133\\x02\\u3190\\x02\\u31A2\\x02\" +\r\n\t\t\"\\u31BC\\x02\\u31F2\\x02\\u3201\\x02\\u3402\\x02\\u4DB7\\x02\\u4E02\\x02\\u9FD7\\x02\" +\r\n\t\t\"\\uA002\\x02\\uA48E\\x02\\uA4D2\\x02\\uA4FF\\x02\\uA502\\x02\\uA60E\\x02\\uA612\\x02\" +\r\n\t\t\"\\uA621\\x02\\uA62C\\x02\\uA62D\\x02\\uA642\\x02\\uA670\\x02\\uA681\\x02\\uA69F\\x02\" +\r\n\t\t\"\\uA6A2\\x02\\uA6F1\\x02\\uA719\\x02\\uA721\\x02\\uA724\\x02\\uA78A\\x02\\uA78D\\x02\" +\r\n\t\t\"\\uA7B0\\x02\\uA7B2\\x02\\uA7B9\\x02\\uA7F9\\x02\\uA803\\x02\\uA805\\x02\\uA807\\x02\" +\r\n\t\t\"\\uA809\\x02\\uA80C\\x02\\uA80E\\x02\\uA824\\x02\\uA842\\x02\\uA875\\x02\\uA884\\x02\" +\r\n\t\t\"\\uA8B5\\x02\\uA8F4\\x02\\uA8F9\\x02\\uA8FD\\x02\\uA8FD\\x02\\uA8FF\\x02\\uA8FF\\x02\" +\r\n\t\t\"\\uA90C\\x02\\uA927\\x02\\uA932\\x02\\uA948\\x02\\uA962\\x02\\uA97E\\x02\\uA986\\x02\" +\r\n\t\t\"\\uA9B4\\x02\\uA9D1\\x02\\uA9D1\\x02\\uA9E2\\x02\\uA9E6\\x02\\uA9E8\\x02\\uA9F1\\x02\" +\r\n\t\t\"\\uA9FC\\x02\\uAA00\\x02\\uAA02\\x02\\uAA2A\\x02\\uAA42\\x02\\uAA44\\x02\\uAA46\\x02\" +\r\n\t\t\"\\uAA4D\\x02\\uAA62\\x02\\uAA78\\x02\\uAA7C\\x02\\uAA7C\\x02\\uAA80\\x02\\uAAB1\\x02\" +\r\n\t\t\"\\uAAB3\\x02\\uAAB3\\x02\\uAAB7\\x02\\uAAB8\\x02\\uAABB\\x02\\uAABF\\x02\\uAAC2\\x02\" +\r\n\t\t\"\\uAAC2\\x02\\uAAC4\\x02\\uAAC4\\x02\\uAADD\\x02\\uAADF\\x02\\uAAE2\\x02\\uAAEC\\x02\" +\r\n\t\t\"\\uAAF4\\x02\\uAAF6\\x02\\uAB03\\x02\\uAB08\\x02\\uAB0B\\x02\\uAB10\\x02\\uAB13\\x02\" +\r\n\t\t\"\\uAB18\\x02\\uAB22\\x02\\uAB28\\x02\\uAB2A\\x02\\uAB30\\x02\\uAB32\\x02\\uAB5C\\x02\" +\r\n\t\t\"\\uAB5E\\x02\\uAB67\\x02\\uAB72\\x02\\uABE4\\x02\\uAC02\\x02\\uD7A5\\x02\\uD7B2\\x02\" +\r\n\t\t\"\\uD7C8\\x02\\uD7CD\\x02\\uD7FD\\x02\\uF902\\x02\\uFA6F\\x02\\uFA72\\x02\\uFADB\\x02\" +\r\n\t\t\"\\uFB02\\x02\\uFB08\\x02\\uFB15\\x02\\uFB19\\x02\\uFB1F\\x02\\uFB1F\\x02\\uFB21\\x02\" +\r\n\t\t\"\\uFB2A\\x02\\uFB2C\\x02\\uFB38\\x02\\uFB3A\\x02\\uFB3E\\x02\\uFB40\\x02\\uFB40\\x02\" +\r\n\t\t\"\\uFB42\\x02\\uFB43\\x02\\uFB45\\x02\\uFB46\\x02\\uFB48\\x02\\uFBB3\\x02\\uFBD5\\x02\" +\r\n\t\t\"\\uFD3F\\x02\\uFD52\\x02\\uFD91\\x02\\uFD94\\x02\\uFDC9\\x02\\uFDF2\\x02\\uFDFD\\x02\" +\r\n\t\t\"\\uFE72\\x02\\uFE76\\x02\\uFE78\\x02\\uFEFE\\x02\\uFF23\\x02\\uFF3C\\x02\\uFF43\\x02\" +\r\n\t\t\"\\uFF5C\\x02\\uFF68\\x02\\uFFC0\\x02\\uFFC4\\x02\\uFFC9\\x02\\uFFCC\\x02\\uFFD1\\x02\" +\r\n\t\t\"\\uFFD4\\x02\\uFFD9\\x02\\uFFDC\\x02\\uFFDE\\x02\\x02\\x03\\r\\x03\\x0F\\x03(\\x03*\\x03\" +\r\n\t\t\"<\\x03>\\x03?\\x03A\\x03O\\x03R\\x03_\\x03\\x82\\x03\\xFC\\x03\\u0142\\x03\\u0176\\x03\" +\r\n\t\t\"\\u0282\\x03\\u029E\\x03\\u02A2\\x03\\u02D2\\x03\\u0302\\x03\\u0321\\x03\\u0332\\x03\" +\r\n\t\t\"\\u034C\\x03\\u0352\\x03\\u0377\\x03\\u0382\\x03\\u039F\\x03\\u03A2\\x03\\u03C5\\x03\" +\r\n\t\t\"\\u03CA\\x03\\u03D1\\x03\\u03D3\\x03\\u03D7\\x03\\u0402\\x03\\u049F\\x03\\u04B2\\x03\" +\r\n\t\t\"\\u04D5\\x03\\u04DA\\x03\\u04FD\\x03\\u0502\\x03\\u0529\\x03\\u0532\\x03\\u0565\\x03\" +\r\n\t\t\"\\u0602\\x03\\u0738\\x03\\u0742\\x03\\u0757\\x03\\u0762\\x03\\u0769\\x03\\u0802\\x03\" +\r\n\t\t\"\\u0807\\x03\\u080A\\x03\\u080A\\x03\\u080C\\x03\\u0837\\x03\\u0839\\x03\\u083A\\x03\" +\r\n\t\t\"\\u083E\\x03\\u083E\\x03\\u0841\\x03\\u0857\\x03\\u0862\\x03\\u0878\\x03\\u0882\\x03\" +\r\n\t\t\"\\u08A0\\x03\\u08E2\\x03\\u08F4\\x03\\u08F6\\x03\\u08F7\\x03\\u0902\\x03\\u0917\\x03\" +\r\n\t\t\"\\u0922\\x03\\u093B\\x03\\u0982\\x03\\u09B9\\x03\\u09C0\\x03\\u09C1\\x03\\u0A02\\x03\" +\r\n\t\t\"\\u0A02\\x03\\u0A12\\x03\\u0A15\\x03\\u0A17\\x03\\u0A19\\x03\\u0A1B\\x03\\u0A35\\x03\" +\r\n\t\t\"\\u0A62\\x03\\u0A7E\\x03\\u0A82\\x03\\u0A9E\\x03\\u0AC2\\x03\\u0AC9\\x03\\u0ACB\\x03\" +\r\n\t\t\"\\u0AE6\\x03\\u0B02\\x03\\u0B37\\x03\\u0B42\\x03\\u0B57\\x03\\u0B62\\x03\\u0B74\\x03\" +\r\n\t\t\"\\u0B82\\x03\\u0B93\\x03\\u0C02\\x03\\u0C4A\\x03\\u0C82\\x03\\u0CB4\\x03\\u0CC2\\x03\" +\r\n\t\t\"\\u0CF4\\x03\\u1005\\x03\\u1039\\x03\\u1085\\x03\\u10B1\\x03\\u10D2\\x03\\u10EA\\x03\" +\r\n\t\t\"\\u1105\\x03\\u1128\\x03\\u1152\\x03\\u1174\\x03\\u1178\\x03\\u1178\\x03\\u1185\\x03\" +\r\n\t\t\"\\u11B4\\x03\\u11C3\\x03\\u11C6\\x03\\u11DC\\x03\\u11DC\\x03\\u11DE\\x03\\u11DE\\x03\" +\r\n\t\t\"\\u1202\\x03\\u1213\\x03\\u1215\\x03\\u122D\\x03\\u1282\\x03\\u1288\\x03\\u128A\\x03\" +\r\n\t\t\"\\u128A\\x03\\u128C\\x03\\u128F\\x03\\u1291\\x03\\u129F\\x03\\u12A1\\x03\\u12AA\\x03\" +\r\n\t\t\"\\u12B2\\x03\\u12E0\\x03\\u1307\\x03\\u130E\\x03\\u1311\\x03\\u1312\\x03\\u1315\\x03\" +\r\n\t\t\"\\u132A\\x03\\u132C\\x03\\u1332\\x03\\u1334\\x03\\u1335\\x03\\u1337\\x03\\u133B\\x03\" +\r\n\t\t\"\\u133F\\x03\\u133F\\x03\\u1352\\x03\\u1352\\x03\\u135F\\x03\\u1363\\x03\\u1402\\x03\" +\r\n\t\t\"\\u1436\\x03\\u1449\\x03\\u144C\\x03\\u1482\\x03\\u14B1\\x03\\u14C6\\x03\\u14C7\\x03\" +\r\n\t\t\"\\u14C9\\x03\\u14C9\\x03\\u1582\\x03\\u15B0\\x03\\u15DA\\x03\\u15DD\\x03\\u1602\\x03\" +\r\n\t\t\"\\u1631\\x03\\u1646\\x03\\u1646\\x03\\u1682\\x03\\u16AC\\x03\\u1702\\x03\\u171B\\x03\" +\r\n\t\t\"\\u18A2\\x03\\u18E1\\x03\\u1901\\x03\\u1901\\x03\\u1AC2\\x03\\u1AFA\\x03\\u1C02\\x03\" +\r\n\t\t\"\\u1C0A\\x03\\u1C0C\\x03\\u1C30\\x03\\u1C42\\x03\\u1C42\\x03\\u1C74\\x03\\u1C91\\x03\" +\r\n\t\t\"\\u2002\\x03\\u239B\\x03\\u2402\\x03\\u2470\\x03\\u2482\\x03\\u2545\\x03\\u3002\\x03\" +\r\n\t\t\"\\u3430\\x03\\u4402\\x03\\u4648\\x03\\u6802\\x03\\u6A3A\\x03\\u6A42\\x03\\u6A60\\x03\" +\r\n\t\t\"\\u6AD2\\x03\\u6AEF\\x03\\u6B02\\x03\\u6B31\\x03\\u6B42\\x03\\u6B45\\x03\\u6B65\\x03\" +\r\n\t\t\"\\u6B79\\x03\\u6B7F\\x03\\u6B91\\x03\\u6F02\\x03\\u6F46\\x03\\u6F52\\x03\\u6F52\\x03\" +\r\n\t\t\"\\u6F95\\x03\\u6FA1\\x03\\u6FE2\\x03\\u6FE2\\x03\\u7002\\x03\\u87EE\\x03\\u8802\\x03\" +\r\n\t\t\"\\u8AF4\\x03\\uB002\\x03\\uB003\\x03\\uBC02\\x03\\uBC6C\\x03\\uBC72\\x03\\uBC7E\\x03\" +\r\n\t\t\"\\uBC82\\x03\\uBC8A\\x03\\uBC92\\x03\\uBC9B\\x03\\uD402\\x03\\uD456\\x03\\uD458\\x03\" +\r\n\t\t\"\\uD49E\\x03\\uD4A0\\x03\\uD4A1\\x03\\uD4A4\\x03\\uD4A4\\x03\\uD4A7\\x03\\uD4A8\\x03\" +\r\n\t\t\"\\uD4AB\\x03\\uD4AE\\x03\\uD4B0\\x03\\uD4BB\\x03\\uD4BD\\x03\\uD4BD\\x03\\uD4BF\\x03\" +\r\n\t\t\"\\uD4C5\\x03\\uD4C7\\x03\\uD507\\x03\\uD509\\x03\\uD50C\\x03\\uD50F\\x03\\uD516\\x03\" +\r\n\t\t\"\\uD518\\x03\\uD51E\\x03\\uD520\\x03\\uD53B\\x03\\uD53D\\x03\\uD540\\x03\\uD542\\x03\" +\r\n\t\t\"\\uD546\\x03\\uD548\\x03\\uD548\";\r\n\tprivate static readonly _serializedATNSegment1: string =\r\n\t\t\"\\x03\\uD54C\\x03\\uD552\\x03\\uD554\\x03\\uD6A7\\x03\\uD6AA\\x03\\uD6C2\\x03\\uD6C4\" +\r\n\t\t\"\\x03\\uD6DC\\x03\\uD6DE\\x03\\uD6FC\\x03\\uD6FE\\x03\\uD716\\x03\\uD718\\x03\\uD736\" +\r\n\t\t\"\\x03\\uD738\\x03\\uD750\\x03\\uD752\\x03\\uD770\\x03\\uD772\\x03\\uD78A\\x03\\uD78C\" +\r\n\t\t\"\\x03\\uD7AA\\x03\\uD7AC\\x03\\uD7C4\\x03\\uD7C6\\x03\\uD7CD\\x03\\uE802\\x03\\uE8C6\" +\r\n\t\t\"\\x03\\uE902\\x03\\uE945\\x03\\uEE02\\x03\\uEE05\\x03\\uEE07\\x03\\uEE21\\x03\\uEE23\" +\r\n\t\t\"\\x03\\uEE24\\x03\\uEE26\\x03\\uEE26\\x03\\uEE29\\x03\\uEE29\\x03\\uEE2B\\x03\\uEE34\" +\r\n\t\t\"\\x03\\uEE36\\x03\\uEE39\\x03\\uEE3B\\x03\\uEE3B\\x03\\uEE3D\\x03\\uEE3D\\x03\\uEE44\" +\r\n\t\t\"\\x03\\uEE44\\x03\\uEE49\\x03\\uEE49\\x03\\uEE4B\\x03\\uEE4B\\x03\\uEE4D\\x03\\uEE4D\" +\r\n\t\t\"\\x03\\uEE4F\\x03\\uEE51\\x03\\uEE53\\x03\\uEE54\\x03\\uEE56\\x03\\uEE56\\x03\\uEE59\" +\r\n\t\t\"\\x03\\uEE59\\x03\\uEE5B\\x03\\uEE5B\\x03\\uEE5D\\x03\\uEE5D\\x03\\uEE5F\\x03\\uEE5F\" +\r\n\t\t\"\\x03\\uEE61\\x03\\uEE61\\x03\\uEE63\\x03\\uEE64\\x03\\uEE66\\x03\\uEE66\\x03\\uEE69\" +\r\n\t\t\"\\x03\\uEE6C\\x03\\uEE6E\\x03\\uEE74\\x03\\uEE76\\x03\\uEE79\\x03\\uEE7B\\x03\\uEE7E\" +\r\n\t\t\"\\x03\\uEE80\\x03\\uEE80\\x03\\uEE82\\x03\\uEE8B\\x03\\uEE8D\\x03\\uEE9D\\x03\\uEEA3\" +\r\n\t\t\"\\x03\\uEEA5\\x03\\uEEA7\\x03\\uEEAB\\x03\\uEEAD\\x03\\uEEBD\\x03\\x02\\x04\\uA6D8\\x04\" +\r\n\t\t\"\\uA702\\x04\\uB736\\x04\\uB742\\x04\\uB81F\\x04\\uB822\\x04\\uCEA3\\x04\\uF802\\x04\" +\r\n\t\t\"\\uFA1F\\x041\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x05\\x03\\x02\\x02\\x02\\x02\\x07\\x03\" +\r\n\t\t\"\\x02\\x02\\x02\\x02\\t\\x03\\x02\\x02\\x02\\x02\\v\\x03\\x02\\x02\\x02\\x02\\x11\\x03\\x02\" +\r\n\t\t\"\\x02\\x02\\x03\\x13\\x03\\x02\\x02\\x02\\x05\\x16\\x03\\x02\\x02\\x02\\x07\\x18\\x03\\x02\" +\r\n\t\t\"\\x02\\x02\\t\\x1A\\x03\\x02\\x02\\x02\\v\\x1C\\x03\\x02\\x02\\x02\\r%\\x03\\x02\\x02\\x02\" +\r\n\t\t\"\\x0F\\'\\x03\\x02\\x02\\x02\\x11)\\x03\\x02\\x02\\x02\\x13\\x14\\x071\\x02\\x02\\x14\\x15\" +\r\n\t\t\"\\x071\\x02\\x02\\x15\\x04\\x03\\x02\\x02\\x02\\x16\\x17\\x071\\x02\\x02\\x17\\x06\\x03\" +\r\n\t\t\"\\x02\\x02\\x02\\x18\\x19\\x07,\\x02\\x02\\x19\\b\\x03\\x02\\x02\\x02\\x1A\\x1B\\x07#\\x02\" +\r\n\t\t\"\\x02\\x1B\\n\\x03\\x02\\x02\\x02\\x1C \\x05\\x0F\\b\\x02\\x1D\\x1F\\x05\\r\\x07\\x02\\x1E\" +\r\n\t\t\"\\x1D\\x03\\x02\\x02\\x02\\x1F\\\"\\x03\\x02\\x02\\x02 \\x1E\\x03\\x02\\x02\\x02 !\\x03\" +\r\n\t\t\"\\x02\\x02\\x02!#\\x03\\x02\\x02\\x02\\\" \\x03\\x02\\x02\\x02#$\\b\\x06\\x02\\x02$\\f\\x03\" +\r\n\t\t\"\\x02\\x02\\x02%&\\t\\x02\\x02\\x02&\\x0E\\x03\\x02\\x02\\x02\\'(\\t\\x03\\x02\\x02(\\x10\" +\r\n\t\t\"\\x03\\x02\\x02\\x02)-\\x07)\\x02\\x02*,\\v\\x02\\x02\\x02+*\\x03\\x02\\x02\\x02,/\\x03\" +\r\n\t\t\"\\x02\\x02\\x02-.\\x03\\x02\\x02\\x02-+\\x03\\x02\\x02\\x02.0\\x03\\x02\\x02\\x02/-\\x03\" +\r\n\t\t\"\\x02\\x02\\x0201\\x07)\\x02\\x021\\x12\\x03\\x02\\x02\\x02\\x05\\x02 -\\x03\\x03\\x06\" +\r\n\t\t\"\\x02\";\r\n\tpublic static readonly _serializedATN: string = Utils.join(\r\n\t\t[\r\n\t\t\tXPathLexer._serializedATNSegment0,\r\n\t\t\tXPathLexer._serializedATNSegment1,\r\n\t\t],\r\n\t\t\"\",\r\n\t);\r\n\tpublic static __ATN: ATN;\r\n\tpublic static get _ATN(): ATN {\r\n\t\tif (!XPathLexer.__ATN) {\r\n\t\t\tXPathLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(XPathLexer._serializedATN));\r\n\t\t}\r\n\r\n\t\treturn XPathLexer.__ATN;\r\n\t}\r\n\r\n}\r\n\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\n\r\nimport { ANTLRErrorListener } from \"../../ANTLRErrorListener\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { Recognizer } from \"../../Recognizer\";\r\nimport { RecognitionException } from \"../../RecognitionException\";\r\n\r\nexport class XPathLexerErrorListener implements ANTLRErrorListener {\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\trecognizer: Recognizer, offendingSymbol: T | undefined,\r\n\t\tline: number, charPositionInLine: number, msg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\t// intentionally empty\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\n\r\nexport abstract class XPathElement {\r\n\tprotected nodeName: string;\r\n\tpublic invert: boolean;\r\n\r\n\t/** Construct element like `/ID` or `ID` or `/*` etc...\r\n\t * op is null if just node\r\n\t */\r\n\tconstructor(nodeName: string) {\r\n\t\tthis.nodeName = nodeName;\r\n\t\tthis.invert = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Given tree rooted at `t` return all nodes matched by this path\r\n\t * element.\r\n\t */\r\n\tpublic abstract evaluate(t: ParseTree): ParseTree[];\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet inv: string = this.invert ? \"!\" : \"\";\r\n\t\tlet className: string = Object.constructor.name;\r\n\t\treturn className + \"[\" + inv + this.nodeName + \"]\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\n/**\r\n * Either `ID` at start of path or `...//ID` in middle of path.\r\n */\r\nexport class XPathRuleAnywhereElement extends XPathElement {\r\n\tprotected ruleIndex: number;\r\n\tconstructor(ruleName: string, ruleIndex: number) {\r\n\t\tsuper(ruleName);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\treturn Trees.findAllRuleNodes(t, this.ruleIndex);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathRuleElement extends XPathElement {\r\n\tprotected ruleIndex: number;\r\n\tconstructor(ruleName: string, ruleIndex: number) {\r\n\t\tsuper(ruleName);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\t// return all children of t that match nodeName\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tif (c instanceof ParserRuleContext) {\r\n\t\t\t\tif ((c.ruleIndex === this.ruleIndex && !this.invert) ||\r\n\t\t\t\t\t(c.ruleIndex !== this.ruleIndex && this.invert)) {\r\n\t\t\t\t\tnodes.push(c);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathTokenAnywhereElement extends XPathElement {\r\n\tprotected tokenType: number;\r\n\tconstructor(tokenName: string, tokenType: number) {\r\n\t\tsuper(tokenName);\r\n\t\tthis.tokenType = tokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\treturn Trees.findAllTokenNodes(t, this.tokenType);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathTokenElement extends XPathElement {\r\n\tprotected tokenType: number;\r\n\tconstructor(tokenName: string, tokenType: number) {\r\n\t\tsuper(tokenName);\r\n\t\tthis.tokenType = tokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\t// return all children of t that match nodeName\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tif (c instanceof TerminalNode) {\r\n\t\t\t\tif ((c.symbol.type === this.tokenType && !this.invert) ||\r\n\t\t\t\t\t(c.symbol.type !== this.tokenType && this.invert)) {\r\n\t\t\t\t\tnodes.push(c);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPath } from \"./XPath\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathWildcardAnywhereElement extends XPathElement {\r\n\tconstructor() {\r\n\t\tsuper(XPath.WILDCARD);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\tif (this.invert) {\r\n\t\t\t// !* is weird but valid (empty)\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn Trees.getDescendants(t);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPath } from \"./XPath\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathWildcardElement extends XPathElement {\r\n\tconstructor() {\r\n\t\tsuper(XPath.WILDCARD);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\tlet kids: ParseTree[] = [];\r\n\t\tif (this.invert) {\r\n\t\t\t// !* is weird but valid (empty)\r\n\t\t\treturn kids;\r\n\t\t}\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tkids.push(c);\r\n\t\t}\r\n\t\treturn kids;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.4373888-07:00\r\n\r\nimport { CharStreams } from \"../../CharStreams\";\r\nimport { CommonTokenStream } from \"../../CommonTokenStream\";\r\nimport { LexerNoViableAltException } from \"../../LexerNoViableAltException\";\r\nimport { Parser } from \"../../Parser\";\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Token } from \"../../Token\";\r\nimport { XPathElement } from \"./XPathElement\";\r\nimport { XPathLexer } from \"./XPathLexer\";\r\nimport { XPathLexerErrorListener } from \"./XPathLexerErrorListener\";\r\nimport { XPathRuleAnywhereElement } from \"./XPathRuleAnywhereElement\";\r\nimport { XPathRuleElement } from \"./XPathRuleElement\";\r\nimport { XPathTokenAnywhereElement } from \"./XPathTokenAnywhereElement\";\r\nimport { XPathTokenElement } from \"./XPathTokenElement\";\r\nimport { XPathWildcardAnywhereElement } from \"./XPathWildcardAnywhereElement\";\r\nimport { XPathWildcardElement } from \"./XPathWildcardElement\";\r\n\r\n/**\r\n * Represent a subset of XPath XML path syntax for use in identifying nodes in\r\n * parse trees.\r\n *\r\n * Split path into words and separators `/` and `//` via ANTLR\r\n * itself then walk path elements from left to right. At each separator-word\r\n * pair, find set of nodes. Next stage uses those as work list.\r\n *\r\n * The basic interface is\r\n * {@link XPath#findAll ParseTree.findAll}`(tree, pathString, parser)`.\r\n * But that is just shorthand for:\r\n *\r\n * ```\r\n * let p = new XPath(parser, pathString);\r\n * return p.evaluate(tree);\r\n * ```\r\n *\r\n * See `TestXPath` for descriptions. In short, this\r\n * allows operators:\r\n *\r\n * | | |\r\n * | --- | --- |\r\n * | `/` | root |\r\n * | `//` | anywhere |\r\n * | `!` | invert; this much appear directly after root or anywhere operator |\r\n *\r\n * and path elements:\r\n *\r\n * | | |\r\n * | --- | --- |\r\n * | `ID` | token name |\r\n * | `'string'` | any string literal token from the grammar |\r\n * | `expr` | rule name |\r\n * | `*` | wildcard matching any node |\r\n *\r\n * Whitespace is not allowed.\r\n */\r\nexport class XPath {\r\n\tpublic static readonly WILDCARD: string = \"*\"; // word not operator/separator\r\n\tpublic static readonly NOT: string = \"!\"; \t // word for invert operator\r\n\r\n\tprotected path: string;\r\n\tprotected elements: XPathElement[];\r\n\tprotected parser: Parser;\r\n\r\n\tconstructor(parser: Parser, path: string) {\r\n\t\tthis.parser = parser;\r\n\t\tthis.path = path;\r\n\t\tthis.elements = this.split(path);\r\n\t\t// console.log(this.elements.toString());\r\n\t}\r\n\r\n\t// TODO: check for invalid token/rule names, bad syntax\r\n\r\n\tpublic split(path: string): XPathElement[] {\r\n\t\tlet lexer = new XPathLexer(CharStreams.fromString(path));\r\n\t\tlexer.recover = (e: LexerNoViableAltException) => { throw e; };\r\n\r\n\t\tlexer.removeErrorListeners();\r\n\t\tlexer.addErrorListener(new XPathLexerErrorListener());\r\n\t\tlet tokenStream = new CommonTokenStream(lexer);\r\n\t\ttry {\r\n\t\t\ttokenStream.fill();\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tif (e instanceof LexerNoViableAltException) {\r\n\t\t\t\tlet pos: number = lexer.charPositionInLine;\r\n\t\t\t\tlet msg: string = \"Invalid tokens or characters at index \" + pos + \" in path '\" + path + \"' -- \" + e.message;\r\n\t\t\t\tthrow new RangeError(msg);\r\n\t\t\t}\r\n\t\t\tthrow e;\r\n\t\t}\r\n\r\n\t\tlet tokens: Token[] = tokenStream.getTokens();\r\n\t\t// console.log(\"path=\" + path + \"=>\" + tokens);\r\n\t\tlet elements: XPathElement[] = [];\r\n\t\tlet n: number = tokens.length;\r\n\t\tlet i: number = 0;\r\n\t\tloop:\r\n\t\twhile (i < n) {\r\n\t\t\tlet el: Token = tokens[i];\r\n\t\t\tlet next: Token | undefined;\r\n\t\t\tswitch (el.type) {\r\n\t\t\t\tcase XPathLexer.ROOT:\r\n\t\t\t\tcase XPathLexer.ANYWHERE:\r\n\t\t\t\t\tlet anywhere: boolean = el.type === XPathLexer.ANYWHERE;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tnext = tokens[i];\r\n\t\t\t\t\tlet invert: boolean = next.type === XPathLexer.BANG;\r\n\t\t\t\t\tif (invert) {\r\n\t\t\t\t\t\ti++;\r\n\t\t\t\t\t\tnext = tokens[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet pathElement: XPathElement = this.getXPathElement(next, anywhere);\r\n\t\t\t\t\tpathElement.invert = invert;\r\n\t\t\t\t\telements.push(pathElement);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase XPathLexer.TOKEN_REF:\r\n\t\t\t\tcase XPathLexer.RULE_REF:\r\n\t\t\t\tcase XPathLexer.WILDCARD:\r\n\t\t\t\t\telements.push(this.getXPathElement(el, false));\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase Token.EOF:\r\n\t\t\t\t\tbreak loop;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(\"Unknowth path element \" + el);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn elements;\r\n\t}\r\n\r\n\t/**\r\n\t * Convert word like `*` or `ID` or `expr` to a path\r\n\t * element. `anywhere` is `true` if `//` precedes the\r\n\t * word.\r\n\t */\r\n\tprotected getXPathElement(wordToken: Token, anywhere: boolean): XPathElement {\r\n\t\tif (wordToken.type === Token.EOF) {\r\n\t\t\tthrow new Error(\"Missing path element at end of path\");\r\n\t\t}\r\n\r\n\t\tlet word = wordToken.text;\r\n\t\tif (word == null) {\r\n\t\t\tthrow new Error(\"Expected wordToken to have text content.\");\r\n\t\t}\r\n\r\n\t\tlet ttype: number = this.parser.getTokenType(word);\r\n\t\tlet ruleIndex: number = this.parser.getRuleIndex(word);\r\n\t\tswitch (wordToken.type) {\r\n\t\t\tcase XPathLexer.WILDCARD:\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathWildcardAnywhereElement() :\r\n\t\t\t\t\tnew XPathWildcardElement();\r\n\t\t\tcase XPathLexer.TOKEN_REF:\r\n\t\t\tcase XPathLexer.STRING:\r\n\t\t\t\tif (ttype === Token.INVALID_TYPE) {\r\n\t\t\t\t\tthrow new Error(word + \" at index \" +\r\n\t\t\t\t\t\twordToken.startIndex +\r\n\t\t\t\t\t\t\" isn't a valid token name\");\r\n\t\t\t\t}\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathTokenAnywhereElement(word, ttype) :\r\n\t\t\t\t\tnew XPathTokenElement(word, ttype);\r\n\t\t\tdefault:\r\n\t\t\t\tif (ruleIndex === -1) {\r\n\t\t\t\t\tthrow new Error(word + \" at index \" +\r\n\t\t\t\t\t\twordToken.startIndex +\r\n\t\t\t\t\t\t\" isn't a valid rule name\");\r\n\t\t\t\t}\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathRuleAnywhereElement(word, ruleIndex) :\r\n\t\t\t\t\tnew XPathRuleElement(word, ruleIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static findAll(tree: ParseTree, xpath: string, parser: Parser): Set {\r\n\t\tlet p: XPath = new XPath(parser, xpath);\r\n\t\treturn p.evaluate(tree);\r\n\t}\r\n\r\n\t/**\r\n\t * Return a list of all nodes starting at `t` as root that satisfy the\r\n\t * path. The root `/` is relative to the node passed to {@link evaluate}.\r\n\t */\r\n\tpublic evaluate(t: ParseTree): Set {\r\n\t\tlet dummyRoot = new ParserRuleContext();\r\n\t\tdummyRoot.addChild(t as ParserRuleContext);\r\n\r\n\t\tlet work = new Set([dummyRoot]);\r\n\r\n\t\tlet i: number = 0;\r\n\t\twhile (i < this.elements.length) {\r\n\t\t\tlet next = new Set();\r\n\t\t\tfor (let node of work) {\r\n\t\t\t\tif (node.childCount > 0) {\r\n\t\t\t\t\t// only try to match next element if it has children\r\n\t\t\t\t\t// e.g., //func/*/stat might have a token node for which\r\n\t\t\t\t\t// we can't go looking for stat nodes.\r\n\t\t\t\t\tlet matching = this.elements[i].evaluate(node);\r\n\t\t\t\t\tmatching.forEach(next.add, next);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t\twork = next;\r\n\t\t}\r\n\r\n\t\treturn work;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreeMatch } from \"./ParseTreeMatch\";\r\nimport { ParseTreePatternMatcher } from \"./ParseTreePatternMatcher\";\r\nimport { XPath } from \"../xpath/XPath\";\r\n\r\n/**\r\n * A pattern like ` = ;` converted to a {@link ParseTree} by\r\n * {@link ParseTreePatternMatcher#compile(String, int)}.\r\n */\r\nexport class ParseTreePattern {\r\n\t/**\r\n\t * This is the backing field for `patternRuleIndex`.\r\n\t */\r\n\tprivate _patternRuleIndex: number;\r\n\r\n\t/**\r\n\t * This is the backing field for `pattern`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _pattern: string;\r\n\r\n\t/**\r\n\t * This is the backing field for `patternTree`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _patternTree: ParseTree;\r\n\r\n\t/**\r\n\t * This is the backing field for `matcher`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _matcher: ParseTreePatternMatcher;\r\n\r\n\t/**\r\n\t * Construct a new instance of the {@link ParseTreePattern} class.\r\n\t *\r\n\t * @param matcher The {@link ParseTreePatternMatcher} which created this\r\n\t * tree pattern.\r\n\t * @param pattern The tree pattern in concrete syntax form.\r\n\t * @param patternRuleIndex The parser rule which serves as the root of the\r\n\t * tree pattern.\r\n\t * @param patternTree The tree pattern in {@link ParseTree} form.\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull matcher: ParseTreePatternMatcher,\r\n\t\t@NotNull pattern: string,\r\n\t\tpatternRuleIndex: number,\r\n\t\t@NotNull patternTree: ParseTree) {\r\n\t\tthis._matcher = matcher;\r\n\t\tthis._patternRuleIndex = patternRuleIndex;\r\n\t\tthis._pattern = pattern;\r\n\t\tthis._patternTree = patternTree;\r\n\t}\r\n\r\n\t/**\r\n\t * Match a specific parse tree against this tree pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against this tree pattern.\r\n\t * @returns A {@link ParseTreeMatch} object describing the result of the\r\n\t * match operation. The `ParseTreeMatch.succeeded` method can be\r\n\t * used to determine whether or not the match was successful.\r\n\t */\r\n\t@NotNull\r\n\tpublic match(@NotNull tree: ParseTree): ParseTreeMatch {\r\n\t\treturn this._matcher.match(tree, this);\r\n\t}\r\n\r\n\t/**\r\n\t * Determine whether or not a parse tree matches this tree pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against this tree pattern.\r\n\t * @returns `true` if `tree` is a match for the current tree\r\n\t * pattern; otherwise, `false`.\r\n\t */\r\n\tpublic matches(@NotNull tree: ParseTree): boolean {\r\n\t\treturn this._matcher.match(tree, this).succeeded;\r\n\t}\r\n\r\n\t/**\r\n\t * Find all nodes using XPath and then try to match those subtrees against\r\n\t * this tree pattern.\r\n\t *\r\n\t * @param tree The {@link ParseTree} to match against this pattern.\r\n\t * @param xpath An expression matching the nodes\r\n\t *\r\n\t * @returns A collection of {@link ParseTreeMatch} objects describing the\r\n\t * successful matches. Unsuccessful matches are omitted from the result,\r\n\t * regardless of the reason for the failure.\r\n\t */\r\n\t@NotNull\r\n\tpublic findAll(@NotNull tree: ParseTree, @NotNull xpath: string): ParseTreeMatch[] {\r\n\t\tlet subtrees: Set = XPath.findAll(tree, xpath, this._matcher.parser);\r\n\t\tlet matches: ParseTreeMatch[] = [];\r\n\t\tfor (let t of subtrees) {\r\n\t\t\tlet match: ParseTreeMatch = this.match(t);\r\n\t\t\tif (match.succeeded) {\r\n\t\t\t\tmatches.push(match);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn matches;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the {@link ParseTreePatternMatcher} which created this tree pattern.\r\n\t *\r\n\t * @returns The {@link ParseTreePatternMatcher} which created this tree\r\n\t * pattern.\r\n\t */\r\n\t@NotNull\r\n\tget matcher(): ParseTreePatternMatcher {\r\n\t\treturn this._matcher;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern in concrete syntax form.\r\n\t *\r\n\t * @returns The tree pattern in concrete syntax form.\r\n\t */\r\n\t@NotNull\r\n\tget pattern(): string {\r\n\t\treturn this._pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the parser rule which serves as the outermost rule for the tree\r\n\t * pattern.\r\n\t *\r\n\t * @returns The parser rule which serves as the outermost rule for the tree\r\n\t * pattern.\r\n\t */\r\n\tget patternRuleIndex(): number {\r\n\t\treturn this._patternRuleIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern as a {@link ParseTree}. The rule and token tags from\r\n\t * the pattern are present in the parse tree as terminal nodes with a symbol\r\n\t * of type {@link RuleTagToken} or {@link TokenTagToken}.\r\n\t *\r\n\t * @returns The tree pattern as a {@link ParseTree}.\r\n\t */\r\n\t@NotNull\r\n\tget patternTree(): ParseTree {\r\n\t\treturn this._patternTree;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.0343500-07:00\r\n\r\nimport { CharStream } from \"../../CharStream\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\nimport { Token } from \"../../Token\";\r\nimport { TokenSource } from \"../../TokenSource\";\r\n\r\n/**\r\n * A {@link Token} object representing an entire subtree matched by a parser\r\n * rule; e.g., ``. These tokens are created for {@link TagChunk}\r\n * chunks where the tag corresponds to a parser rule.\r\n */\r\nexport class RuleTagToken implements Token {\r\n\t/**\r\n\t * This is the backing field for `ruleName`.\r\n\t */\r\n\tprivate _ruleName: string;\r\n\t/**\r\n\t * The token type for the current token. This is the token type assigned to\r\n\t * the bypass alternative for the rule during ATN deserialization.\r\n\t */\r\n\tprivate bypassTokenType: number;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label?: string;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link RuleTagToken} with the specified rule\r\n\t * name, bypass token type, and label.\r\n\t *\r\n\t * @param ruleName The name of the parser rule this rule tag matches.\r\n\t * @param bypassTokenType The bypass token type assigned to the parser rule.\r\n\t * @param label The label associated with the rule tag, or `undefined` if\r\n\t * the rule tag is unlabeled.\r\n\t *\r\n\t * @exception IllegalArgumentException if `ruleName` is not defined\r\n\t * or empty.\r\n\t */\r\n\tconstructor(@NotNull ruleName: string, bypassTokenType: number, label?: string) {\r\n\t\tif (ruleName == null || ruleName.length === 0) {\r\n\t\t\tthrow new Error(\"ruleName cannot be null or empty.\");\r\n\t\t}\r\n\r\n\t\tthis._ruleName = ruleName;\r\n\t\tthis.bypassTokenType = bypassTokenType;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the name of the rule associated with this rule tag.\r\n\t *\r\n\t * @returns The name of the parser rule associated with this rule tag.\r\n\t */\r\n\t@NotNull\r\n\tget ruleName(): string {\r\n\t\treturn this._ruleName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the label associated with the rule tag.\r\n\t *\r\n\t * @returns The name of the label associated with the rule tag, or\r\n\t * `undefined` if this is an unlabeled rule tag.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Rule tag tokens are always placed on the {@link #DEFAULT_CHANNEL}.\r\n\t */\r\n\t@Override\r\n\tget channel(): number {\r\n\t\treturn Token.DEFAULT_CHANNEL;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This method returns the rule tag formatted with `<` and `>`\r\n\t * delimiters.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn \"<\" + this._label + \":\" + this._ruleName + \">\";\r\n\t\t}\r\n\r\n\t\treturn \"<\" + this._ruleName + \">\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Rule tag tokens have types assigned according to the rule bypass\r\n\t * transitions created during ATN deserialization.\r\n\t */\r\n\t@Override\r\n\tget type(): number {\r\n\t\treturn this.bypassTokenType;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns 0.\r\n\t */\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget tokenIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget startIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget stopIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns `undefined`.\r\n\t */\r\n\t@Override\r\n\tget tokenSource(): TokenSource | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns `undefined`.\r\n\t */\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} returns a string of the form\r\n\t * `ruleName:bypassTokenType`.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._ruleName + \":\" + this.bypassTokenType;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:45.2799060-07:00\r\n\r\n/**\r\n * A chunk is either a token tag, a rule tag, or a span of literal text within a\r\n * tree pattern.\r\n *\r\n * The method {@link ParseTreePatternMatcher#split(String)} returns a list of\r\n * chunks in preparation for creating a token stream by\r\n * {@link ParseTreePatternMatcher#tokenize(String)}. From there, we get a parse\r\n * tree from with {@link ParseTreePatternMatcher#compile(String, int)}. These\r\n * chunks are converted to {@link RuleTagToken}, {@link TokenTagToken}, or the\r\n * regular tokens of the text surrounding the tags.\r\n */\r\nexport abstract class Chunk {\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.1670669-07:00\r\n\r\nimport { Chunk } from \"./Chunk\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * Represents a placeholder tag in a tree pattern. A tag can have any of the\r\n * following forms.\r\n *\r\n * * `expr`: An unlabeled placeholder for a parser rule `expr`.\r\n * * `ID`: An unlabeled placeholder for a token of type `ID`.\r\n * * `e:expr`: A labeled placeholder for a parser rule `expr`.\r\n * * `id:ID`: A labeled placeholder for a token of type `ID`.\r\n *\r\n * This class does not perform any validation on the tag or label names aside\r\n * from ensuring that the tag is a defined, non-empty string.\r\n */\r\nexport class TagChunk extends Chunk {\r\n\t/**\r\n\t * This is the backing field for `tag`.\r\n\t */\r\n\tprivate _tag: string;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label?: string;\r\n\r\n\t/**\r\n\t * Construct a new instance of {@link TagChunk} using the specified label\r\n\t * and tag.\r\n\t *\r\n\t * @param label The label for the tag. If this is `undefined`, the\r\n\t * {@link TagChunk} represents an unlabeled tag.\r\n\t * @param tag The tag, which should be the name of a parser rule or token\r\n\t * type.\r\n\t *\r\n\t * @exception IllegalArgumentException if `tag` is not defined or\r\n\t * empty.\r\n\t */\r\n\tconstructor(tag: string, label?: string) {\r\n\t\tsuper();\r\n\r\n\t\tif (tag == null || tag.length === 0) {\r\n\t\t\tthrow new Error(\"tag cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis._tag = tag;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tag for this chunk.\r\n\t *\r\n\t * @returns The tag for the chunk.\r\n\t */\r\n\t@NotNull\r\n\tget tag(): string {\r\n\t\treturn this._tag;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the label, if any, assigned to this chunk.\r\n\t *\r\n\t * @returns The label assigned to this chunk, or `undefined` if no label is\r\n\t * assigned to the chunk.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * This method returns a text representation of the tag chunk. Labeled tags\r\n\t * are returned in the form `label:tag`, and unlabeled tags are\r\n\t * returned as just the tag name.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn this._label + \":\" + this._tag;\r\n\t\t}\r\n\r\n\t\treturn this._tag;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.2521448-07:00\r\n\r\nimport { Chunk } from \"./Chunk\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * Represents a span of raw text (concrete syntax) between tags in a tree\r\n * pattern string.\r\n */\r\nexport class TextChunk extends Chunk {\r\n\t/**\r\n\t * This is the backing field for {@link #getText}.\r\n\t */\r\n\t@NotNull\r\n\tprivate _text: string;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link TextChunk} with the specified text.\r\n\t *\r\n\t * @param text The text of this chunk.\r\n\t * @exception IllegalArgumentException if `text` is not defined.\r\n\t */\r\n\tconstructor(@NotNull text: string) {\r\n\t\tsuper();\r\n\r\n\t\tif (text == null) {\r\n\t\t\tthrow new Error(\"text cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the raw text of this chunk.\r\n\t *\r\n\t * @returns The text of the chunk.\r\n\t */\r\n\t@NotNull\r\n\tget text(): string {\r\n\t\treturn this._text;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TextChunk} returns the result of\r\n\t * `text` in single quotes.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"'\" + this._text + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.3281988-07:00\r\n\r\nimport { CommonToken } from \"../../CommonToken\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * A {@link Token} object representing a token of a particular type; e.g.,\r\n * ``. These tokens are created for {@link TagChunk} chunks where the\r\n * tag corresponds to a lexer rule or token type.\r\n */\r\nexport class TokenTagToken extends CommonToken {\r\n\t/**\r\n\t * This is the backing field for `tokenName`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _tokenName: string;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label: string | undefined;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link TokenTagToken} with the specified\r\n\t * token name, type, and label.\r\n\t *\r\n\t * @param tokenName The token name.\r\n\t * @param type The token type.\r\n\t * @param label The label associated with the token tag, or `undefined` if\r\n\t * the token tag is unlabeled.\r\n\t */\r\n\tconstructor(@NotNull tokenName: string, type: number, label?: string) {\r\n\t\tsuper(type);\r\n\t\tthis._tokenName = tokenName;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the token name.\r\n\t * @returns The token name.\r\n\t */\r\n\t@NotNull\r\n\tget tokenName(): string {\r\n\t\treturn this._tokenName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the label associated with the rule tag.\r\n\t *\r\n\t * @returns The name of the label associated with the rule tag, or\r\n\t * `undefined` if this is an unlabeled rule tag.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TokenTagToken} returns the token tag\r\n\t * formatted with `<` and `>` delimiters.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn \"<\" + this._label + \":\" + this._tokenName + \">\";\r\n\t\t}\r\n\r\n\t\treturn \"<\" + this._tokenName + \">\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TokenTagToken} returns a string of the form\r\n\t * `tokenName:type`.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._tokenName + \":\" + this.type;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\n\r\nimport { BailErrorStrategy } from \"../../BailErrorStrategy\";\r\nimport { CharStreams } from \"../../CharStreams\";\r\nimport { Chunk } from \"./Chunk\";\r\nimport { CommonTokenStream } from \"../../CommonTokenStream\";\r\nimport { Lexer } from \"../../Lexer\";\r\nimport { ListTokenSource } from \"../../ListTokenSource\";\r\nimport { MultiMap } from \"../../misc/MultiMap\";\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { ParseCancellationException } from \"../../misc/ParseCancellationException\";\r\nimport { Parser } from \"../../Parser\";\r\nimport { ParserInterpreter } from \"../../ParserInterpreter\";\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreeMatch } from \"./ParseTreeMatch\";\r\nimport { ParseTreePattern } from \"./ParseTreePattern\";\r\nimport { RecognitionException } from \"../../RecognitionException\";\r\nimport { RuleNode } from \"../RuleNode\";\r\nimport { RuleTagToken } from \"./RuleTagToken\";\r\nimport { TagChunk } from \"./TagChunk\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { TextChunk } from \"./TextChunk\";\r\nimport { Token } from \"../../Token\";\r\nimport { TokenTagToken } from \"./TokenTagToken\";\r\n\r\n/**\r\n * A tree pattern matching mechanism for ANTLR {@link ParseTree}s.\r\n *\r\n * Patterns are strings of source input text with special tags representing\r\n * token or rule references such as:\r\n *\r\n * ```\r\n * = ;\r\n * ```\r\n *\r\n * Given a pattern start rule such as `statement`, this object constructs\r\n * a {@link ParseTree} with placeholders for the `ID` and `expr`\r\n * subtree. Then the {@link #match} routines can compare an actual\r\n * {@link ParseTree} from a parse with this pattern. Tag `` matches\r\n * any `ID` token and tag `` references the result of the\r\n * `expr` rule (generally an instance of `ExprContext`.\r\n *\r\n * Pattern `x = 0;` is a similar pattern that matches the same pattern\r\n * except that it requires the identifier to be `x` and the expression to\r\n * be `0`.\r\n *\r\n * The {@link #matches} routines return `true` or `false` based\r\n * upon a match for the tree rooted at the parameter sent in. The\r\n * {@link #match} routines return a {@link ParseTreeMatch} object that\r\n * contains the parse tree, the parse tree pattern, and a map from tag name to\r\n * matched nodes (more below). A subtree that fails to match, returns with\r\n * {@link ParseTreeMatch#mismatchedNode} set to the first tree node that did not\r\n * match.\r\n *\r\n * For efficiency, you can compile a tree pattern in string form to a\r\n * {@link ParseTreePattern} object.\r\n *\r\n * See `TestParseTreeMatcher` for lots of examples.\r\n * {@link ParseTreePattern} has two static helper methods:\r\n * {@link ParseTreePattern#findAll} and {@link ParseTreePattern#match} that\r\n * are easy to use but not super efficient because they create new\r\n * {@link ParseTreePatternMatcher} objects each time and have to compile the\r\n * pattern in string form before using it.\r\n *\r\n * The lexer and parser that you pass into the {@link ParseTreePatternMatcher}\r\n * constructor are used to parse the pattern in string form. The lexer converts\r\n * the ` = ;` into a sequence of four tokens (assuming lexer\r\n * throws out whitespace or puts it on a hidden channel). Be aware that the\r\n * input stream is reset for the lexer (but not the parser; a\r\n * {@link ParserInterpreter} is created to parse the input.). Any user-defined\r\n * fields you have put into the lexer might get changed when this mechanism asks\r\n * it to scan the pattern string.\r\n *\r\n * Normally a parser does not accept token `` as a valid\r\n * `expr` but, from the parser passed in, we create a special version of\r\n * the underlying grammar representation (an {@link ATN}) that allows imaginary\r\n * tokens representing rules (``) to match entire rules. We call\r\n * these *bypass alternatives*.\r\n *\r\n * Delimiters are `<`} and `>`}, with `\\` as the escape string\r\n * by default, but you can set them to whatever you want using\r\n * {@link #setDelimiters}. You must escape both start and stop strings\r\n * `\\<` and `\\>`.\r\n */\r\nexport class ParseTreePatternMatcher {\r\n\t/**\r\n\t * This is the backing field for `lexer`.\r\n\t */\r\n\tprivate _lexer: Lexer;\r\n\r\n\t/**\r\n\t * This is the backing field for `parser`.\r\n\t */\r\n\tprivate _parser: Parser;\r\n\r\n\tprotected start = \"<\";\r\n\tprotected stop = \">\";\r\n\tprotected escape = \"\\\\\"; // e.g., \\< and \\> must escape BOTH!\r\n\r\n\t/**\r\n\t * Regular expression corresponding to escape, for global replace\r\n\t */\r\n\tprotected escapeRE = /\\\\/g;\r\n\r\n\t/**\r\n\t * Constructs a {@link ParseTreePatternMatcher} or from a {@link Lexer} and\r\n\t * {@link Parser} object. The lexer input stream is altered for tokenizing\r\n\t * the tree patterns. The parser is used as a convenient mechanism to get\r\n\t * the grammar name, plus token, rule names.\r\n\t */\r\n\tconstructor(lexer: Lexer, parser: Parser) {\r\n\t\tthis._lexer = lexer;\r\n\t\tthis._parser = parser;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the delimiters used for marking rule and token tags within concrete\r\n\t * syntax used by the tree pattern parser.\r\n\t *\r\n\t * @param start The start delimiter.\r\n\t * @param stop The stop delimiter.\r\n\t * @param escapeLeft The escape sequence to use for escaping a start or stop delimiter.\r\n\t *\r\n\t * @throws {@link Error} if `start` is not defined or empty.\r\n\t * @throws {@link Error} if `stop` is not defined or empty.\r\n\t */\r\n\tpublic setDelimiters(start: string, stop: string, escapeLeft: string): void {\r\n\t\tif (!start) {\r\n\t\t\tthrow new Error(\"start cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tif (!stop) {\r\n\t\t\tthrow new Error(\"stop cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis.start = start;\r\n\t\tthis.stop = stop;\r\n\t\tthis.escape = escapeLeft;\r\n\t\tthis.escapeRE = new RegExp(escapeLeft.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"g\");\r\n\t}\r\n\r\n\t/** Does `pattern` matched as rule `patternRuleIndex` match `tree`? */\r\n\tpublic matches(tree: ParseTree, pattern: string, patternRuleIndex: number): boolean;\r\n\r\n\t/** Does `pattern` matched as rule patternRuleIndex match tree? Pass in a\r\n\t * compiled pattern instead of a string representation of a tree pattern.\r\n\t */\r\n\tpublic matches(tree: ParseTree, pattern: ParseTreePattern): boolean;\r\n\r\n\tpublic matches(tree: ParseTree, pattern: string | ParseTreePattern, patternRuleIndex: number = 0): boolean {\r\n\t\tif (typeof pattern === \"string\") {\r\n\t\t\tlet p: ParseTreePattern = this.compile(pattern, patternRuleIndex);\r\n\t\t\treturn this.matches(tree, p);\r\n\t\t} else {\r\n\t\t\tlet labels = new MultiMap();\r\n\t\t\tlet mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels);\r\n\t\t\treturn !mismatchedNode;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Compare `pattern` matched as rule `patternRuleIndex` against\r\n\t * `tree` and return a {@link ParseTreeMatch} object that contains the\r\n\t * matched elements, or the node at which the match failed.\r\n\t */\r\n\tpublic match(tree: ParseTree, pattern: string, patternRuleIndex: number): ParseTreeMatch;\r\n\r\n\t/**\r\n\t * Compare `pattern` matched against `tree` and return a\r\n\t * {@link ParseTreeMatch} object that contains the matched elements, or the\r\n\t * node at which the match failed. Pass in a compiled pattern instead of a\r\n\t * string representation of a tree pattern.\r\n\t */\r\n\tpublic match(tree: ParseTree, pattern: ParseTreePattern): ParseTreeMatch;\r\n\r\n\t// Implementation of match\r\n\t@NotNull\r\n\tpublic match(tree: ParseTree, @NotNull pattern: string | ParseTreePattern, patternRuleIndex: number = 0): ParseTreeMatch {\r\n\t\tif (typeof pattern === \"string\") {\r\n\t\t\tlet p: ParseTreePattern = this.compile(pattern, patternRuleIndex);\r\n\t\t\treturn this.match(tree, p);\r\n\t\t} else {\r\n\t\t\tlet labels = new MultiMap();\r\n\t\t\tlet mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels);\r\n\t\t\treturn new ParseTreeMatch(tree, pattern, labels, mismatchedNode);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * For repeated use of a tree pattern, compile it to a\r\n\t * {@link ParseTreePattern} using this method.\r\n\t */\r\n\tpublic compile(pattern: string, patternRuleIndex: number): ParseTreePattern {\r\n\t\tlet tokenList = this.tokenize(pattern);\r\n\t\tlet tokenSrc = new ListTokenSource(tokenList);\r\n\t\tlet tokens = new CommonTokenStream(tokenSrc);\r\n\t\tconst parser = this._parser;\r\n\r\n\t\tlet parserInterp = new ParserInterpreter(\r\n\t\t\tparser.grammarFileName,\r\n\t\t\tparser.vocabulary,\r\n\t\t\tparser.ruleNames,\r\n\t\t\tparser.getATNWithBypassAlts(),\r\n\t\t\ttokens);\r\n\r\n\t\tlet tree: ParseTree;\r\n\t\ttry {\r\n\t\t\tparserInterp.errorHandler = new BailErrorStrategy();\r\n\t\t\ttree = parserInterp.parse(patternRuleIndex);\r\n//\t\t\tSystem.out.println(\"pattern tree = \"+tree.toStringTree(parserInterp));\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof ParseCancellationException) {\r\n\t\t\t\tthrow e.getCause();\r\n\t\t\t} else if (e instanceof RecognitionException) {\r\n\t\t\t\tthrow e;\r\n\t\t\t} else if (e instanceof Error) {\r\n\t\t\t\tthrow new ParseTreePatternMatcher.CannotInvokeStartRule(e);\r\n\t\t\t} else {\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Make sure tree pattern compilation checks for a complete parse\r\n\t\tif (tokens.LA(1) !== Token.EOF) {\r\n\t\t\tthrow new ParseTreePatternMatcher.StartRuleDoesNotConsumeFullPattern();\r\n\t\t}\r\n\r\n\t\treturn new ParseTreePattern(this, pattern, patternRuleIndex, tree);\r\n\t}\r\n\r\n\t/**\r\n\t * Used to convert the tree pattern string into a series of tokens. The\r\n\t * input stream is reset.\r\n\t */\r\n\t@NotNull\r\n\tget lexer(): Lexer {\r\n\t\treturn this._lexer;\r\n\t}\r\n\r\n\t/**\r\n\t * Used to collect to the grammar file name, token names, rule names for\r\n\t * used to parse the pattern into a parse tree.\r\n\t */\r\n\t@NotNull\r\n\tget parser(): Parser {\r\n\t\treturn this._parser;\r\n\t}\r\n\r\n\t// ---- SUPPORT CODE ----\r\n\r\n\t/**\r\n\t * Recursively walk `tree` against `patternTree`, filling\r\n\t * `match.`{@link ParseTreeMatch#labels labels}.\r\n\t *\r\n\t * @returns the first node encountered in `tree` which does not match\r\n\t * a corresponding node in `patternTree`, or `undefined` if the match\r\n\t * was successful. The specific node returned depends on the matching\r\n\t * algorithm used by the implementation, and may be overridden.\r\n\t */\r\n\tprotected matchImpl(\r\n\t\t@NotNull tree: ParseTree,\r\n\t\t@NotNull patternTree: ParseTree,\r\n\t\t@NotNull labels: MultiMap): ParseTree | undefined {\r\n\t\tif (!tree) {\r\n\t\t\tthrow new TypeError(\"tree cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!patternTree) {\r\n\t\t\tthrow new TypeError(\"patternTree cannot be null\");\r\n\t\t}\r\n\r\n\t\t// x and , x and y, or x and x; or could be mismatched types\r\n\t\tif (tree instanceof TerminalNode && patternTree instanceof TerminalNode) {\r\n\t\t\tlet mismatchedNode: ParseTree | undefined;\r\n\t\t\t// both are tokens and they have same type\r\n\t\t\tif (tree.symbol.type === patternTree.symbol.type) {\r\n\t\t\t\tif (patternTree.symbol instanceof TokenTagToken) { // x and \r\n\t\t\t\t\tlet tokenTagToken = patternTree.symbol;\r\n\t\t\t\t\t// track label->list-of-nodes for both token name and label (if any)\r\n\t\t\t\t\tlabels.map(tokenTagToken.tokenName, tree);\r\n\t\t\t\t\tconst l = tokenTagToken.label;\r\n\t\t\t\t\tif (l) {\r\n\t\t\t\t\t\tlabels.map(l, tree);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (tree.text === patternTree.text) {\r\n\t\t\t\t\t// x and x\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// x and y\r\n\t\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn mismatchedNode;\r\n\t\t}\r\n\r\n\t\tif (tree instanceof ParserRuleContext\r\n\t\t\t&& patternTree instanceof ParserRuleContext) {\r\n\t\t\tlet mismatchedNode: ParseTree | undefined;\r\n\t\t\t// (expr ...) and \r\n\t\t\tlet ruleTagToken = this.getRuleTagToken(patternTree);\r\n\t\t\tif (ruleTagToken) {\r\n\t\t\t\tlet m: ParseTreeMatch;\r\n\t\t\t\tif (tree.ruleContext.ruleIndex === patternTree.ruleContext.ruleIndex) {\r\n\t\t\t\t\t// track label->list-of-nodes for both rule name and label (if any)\r\n\t\t\t\t\tlabels.map(ruleTagToken.ruleName, tree);\r\n\t\t\t\t\tconst l = ruleTagToken.label;\r\n\t\t\t\t\tif (l) {\r\n\t\t\t\t\t\tlabels.map(l, tree);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn mismatchedNode;\r\n\t\t\t}\r\n\r\n\t\t\t// (expr ...) and (expr ...)\r\n\t\t\tif (tree.childCount !== patternTree.childCount) {\r\n\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn mismatchedNode;\r\n\t\t\t}\r\n\r\n\t\t\tlet n: number = tree.childCount;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\tlet childMatch = this.matchImpl(tree.getChild(i), patternTree.getChild(i), labels);\r\n\t\t\t\tif (childMatch) {\r\n\t\t\t\t\treturn childMatch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn mismatchedNode;\r\n\t\t}\r\n\r\n\t\t// if nodes aren't both tokens or both rule nodes, can't match\r\n\t\treturn tree;\r\n\t}\r\n\r\n\t/** Is `t` `(expr )` subtree? */\r\n\tprotected getRuleTagToken(t: ParseTree): RuleTagToken | undefined {\r\n\t\tif (t instanceof RuleNode) {\r\n\t\t\tif (t.childCount === 1 && t.getChild(0) instanceof TerminalNode) {\r\n\t\t\t\tlet c = t.getChild(0) as TerminalNode;\r\n\t\t\t\tif (c.symbol instanceof RuleTagToken) {\r\n//\t\t\t\t\tSystem.out.println(\"rule tag subtree \"+t.toStringTree(parser));\r\n\t\t\t\t\treturn c.symbol;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic tokenize(pattern: string): Token[] {\r\n\t\t// split pattern into chunks: sea (raw input) and islands (, )\r\n\t\tlet chunks = this.split(pattern);\r\n\r\n\t\t// create token stream from text and tags\r\n\t\tlet tokens: Token[] = [];\r\n\r\n\t\tfor (let chunk of chunks) {\r\n\t\t\tif (chunk instanceof TagChunk) {\r\n\t\t\t\tlet tagChunk = chunk;\r\n\t\t\t\tconst firstChar = tagChunk.tag.substr(0, 1);\r\n\t\t\t\t// add special rule token or conjure up new token from name\r\n\t\t\t\tif (firstChar === firstChar.toUpperCase()) {\r\n\t\t\t\t\tlet ttype: number = this._parser.getTokenType(tagChunk.tag);\r\n\t\t\t\t\tif (ttype === Token.INVALID_TYPE) {\r\n\t\t\t\t\t\tthrow new Error(\"Unknown token \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet t: TokenTagToken = new TokenTagToken(tagChunk.tag, ttype, tagChunk.label);\r\n\t\t\t\t\ttokens.push(t);\r\n\t\t\t\t}\r\n\t\t\t\telse if (firstChar === firstChar.toLowerCase()) {\r\n\t\t\t\t\tlet ruleIndex: number = this._parser.getRuleIndex(tagChunk.tag);\r\n\t\t\t\t\tif (ruleIndex === -1) {\r\n\t\t\t\t\t\tthrow new Error(\"Unknown rule \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet ruleImaginaryTokenType: number = this._parser.getATNWithBypassAlts().ruleToTokenType[ruleIndex];\r\n\t\t\t\t\ttokens.push(new RuleTagToken(tagChunk.tag, ruleImaginaryTokenType, tagChunk.label));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthrow new Error(\"invalid tag: \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet textChunk = chunk as TextChunk;\r\n\t\t\t\tthis._lexer.inputStream = CharStreams.fromString(textChunk.text);\r\n\t\t\t\tlet t: Token = this._lexer.nextToken();\r\n\t\t\t\twhile (t.type !== Token.EOF) {\r\n\t\t\t\t\ttokens.push(t);\r\n\t\t\t\t\tt = this._lexer.nextToken();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(\"tokens=\"+tokens);\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\t/** Split ` = ;` into 4 chunks for tokenizing by {@link #tokenize}. */\r\n\tpublic split(pattern: string): Chunk[] {\r\n\t\tlet p: number = 0;\r\n\t\tlet n: number = pattern.length;\r\n\t\tlet chunks: Chunk[] = [];\r\n\t\tlet buf: \"\";\r\n\t\t// find all start and stop indexes first, then collect\r\n\t\tlet starts: number[] = [];\r\n\t\tlet stops: number[] = [];\r\n\t\twhile (p < n) {\r\n\t\t\tif (p === pattern.indexOf(this.escape + this.start, p)) {\r\n\t\t\t\tp += this.escape.length + this.start.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.escape + this.stop, p)) {\r\n\t\t\t\tp += this.escape.length + this.stop.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.start, p)) {\r\n\t\t\t\tstarts.push(p);\r\n\t\t\t\tp += this.start.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.stop, p)) {\r\n\t\t\t\tstops.push(p);\r\n\t\t\t\tp += this.stop.length;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tp++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(\"\");\r\n//\t\tSystem.out.println(starts);\r\n//\t\tSystem.out.println(stops);\r\n\t\tif (starts.length > stops.length) {\r\n\t\t\tthrow new Error(\"unterminated tag in pattern: \" + pattern);\r\n\t\t}\r\n\r\n\t\tif (starts.length < stops.length) {\r\n\t\t\tthrow new Error(\"missing start tag in pattern: \" + pattern);\r\n\t\t}\r\n\r\n\t\tlet ntags: number = starts.length;\r\n\t\tfor (let i = 0; i < ntags; i++) {\r\n\t\t\tif (starts[i] >= stops[i]) {\r\n\t\t\t\tthrow new Error(\"tag delimiters out of order in pattern: \" + pattern);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// collect into chunks now\r\n\t\tif (ntags === 0) {\r\n\t\t\tlet text: string = pattern.substring(0, n);\r\n\t\t\tchunks.push(new TextChunk(text));\r\n\t\t}\r\n\r\n\t\tif (ntags > 0 && starts[0] > 0) { // copy text up to first tag into chunks\r\n\t\t\tlet text: string = pattern.substring(0, starts[0]);\r\n\t\t\tchunks.push(new TextChunk(text));\r\n\t\t}\r\n\t\tfor (let i = 0; i < ntags; i++) {\r\n\t\t\t// copy inside of \r\n\t\t\tlet tag: string = pattern.substring(starts[i] + this.start.length, stops[i]);\r\n\t\t\tlet ruleOrToken: string = tag;\r\n\t\t\tlet label: string | undefined;\r\n\t\t\tlet colon: number = tag.indexOf(\":\");\r\n\t\t\tif (colon >= 0) {\r\n\t\t\t\tlabel = tag.substring(0, colon);\r\n\t\t\t\truleOrToken = tag.substring(colon + 1, tag.length);\r\n\t\t\t}\r\n\t\t\tchunks.push(new TagChunk(ruleOrToken, label));\r\n\t\t\tif (i + 1 < ntags) {\r\n\t\t\t\t// copy from end of to start of next\r\n\t\t\t\tlet text: string = pattern.substring(stops[i] + this.stop.length, starts[i + 1]);\r\n\t\t\t\tchunks.push(new TextChunk(text));\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (ntags > 0) {\r\n\t\t\tlet afterLastTag: number = stops[ntags - 1] + this.stop.length;\r\n\t\t\tif (afterLastTag < n) { // copy text from end of last tag to end\r\n\t\t\t\tlet text: string = pattern.substring(afterLastTag, n);\r\n\t\t\t\tchunks.push(new TextChunk(text));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// strip out the escape sequences from text chunks but not tags\r\n\t\tfor (let i = 0; i < chunks.length; i++) {\r\n\t\t\tlet c: Chunk = chunks[i];\r\n\t\t\tif (c instanceof TextChunk) {\r\n\t\t\t\tlet unescaped: string = c.text.replace(this.escapeRE, \"\");\r\n\t\t\t\tif (unescaped.length < c.text.length) {\r\n\t\t\t\t\tchunks[i] = new TextChunk(unescaped);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn chunks;\r\n\t}\r\n}\r\n\r\nexport namespace ParseTreePatternMatcher {\r\n\texport class CannotInvokeStartRule extends Error {\r\n\t\tpublic constructor(public error: Error) {\r\n\t\t\tsuper(`CannotInvokeStartRule: ${error}`);\r\n\t\t}\r\n\t}\r\n\r\n\t// Fixes https://github.com/antlr/antlr4/issues/413\r\n\t// \"Tree pattern compilation doesn't check for a complete parse\"\r\n\texport class StartRuleDoesNotConsumeFullPattern extends Error {\r\n\t\tconstructor() {\r\n\t\t\tsuper(\"StartRuleDoesNotConsumeFullPattern\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.2401032-07:00\r\n\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This is the base class for gathering detailed information about prediction\r\n * events which occur during parsing.\r\n *\r\n * Note that we could record the parser call stack at the time this event\r\n * occurred but in the presence of left recursive rules, the stack is kind of\r\n * meaningless. It's better to look at the individual configurations for their\r\n * individual stacks. Of course that is a {@link PredictionContext} object\r\n * not a parse tree node and so it does not have information about the extent\r\n * (start...stop) of the various subtrees. Examining the stack tops of all\r\n * configurations provide the return states for the rule invocations.\r\n * From there you can get the enclosing rule.\r\n *\r\n * @since 4.3\r\n */\r\nexport class DecisionEventInfo {\r\n\t/**\r\n\t * The invoked decision number which this event is related to.\r\n\t *\r\n\t * @see ATN#decisionToState\r\n\t */\r\n\tpublic decision: number;\r\n\r\n\t/**\r\n\t * The simulator state containing additional information relevant to the\r\n\t * prediction state when the current event occurred, or `undefined` if no\r\n\t * additional information is relevant or available.\r\n\t */\r\n\tpublic state: SimulatorState | undefined;\r\n\r\n\t/**\r\n\t * The input token stream which is being parsed.\r\n\t */\r\n\t@NotNull\r\n\tpublic input: TokenStream;\r\n\r\n\t/**\r\n\t * The token index in the input stream at which the current prediction was\r\n\t * originally invoked.\r\n\t */\r\n\tpublic startIndex: number;\r\n\r\n\t/**\r\n\t * The token index in the input stream at which the current event occurred.\r\n\t */\r\n\tpublic stopIndex: number;\r\n\r\n\t/**\r\n\t * `true` if the current event occurred during LL prediction;\r\n\t * otherwise, `false` if the input occurred during SLL prediction.\r\n\t */\r\n\tpublic fullCtx: boolean;\r\n\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\tstate: SimulatorState | undefined,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tfullCtx: boolean) {\r\n\r\n\t\tthis.decision = decision;\r\n\t\tthis.fullCtx = fullCtx;\r\n\t\tthis.stopIndex = stopIndex;\r\n\t\tthis.input = input;\r\n\t\tthis.startIndex = startIndex;\r\n\t\tthis.state = state;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.8229279-07:00\r\n\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for an ambiguity.\r\n * Ambiguities are decisions where a particular input resulted in an SLL\r\n * conflict, followed by LL prediction also reaching a conflict state\r\n * (indicating a true ambiguity in the grammar).\r\n *\r\n * This event may be reported during SLL prediction in cases where the\r\n * conflicting SLL configuration set provides sufficient information to\r\n * determine that the SLL conflict is truly an ambiguity. For example, if none\r\n * of the ATN configurations in the conflicting SLL configuration set have\r\n * traversed a global follow transition (i.e.\r\n * {@link ATNConfig#getReachesIntoOuterContext} is `false` for all\r\n * configurations), then the result of SLL prediction for that input is known to\r\n * be equivalent to the result of LL prediction for that input.\r\n *\r\n * In some cases, the minimum represented alternative in the conflicting LL\r\n * configuration set is not equal to the minimum represented alternative in the\r\n * conflicting SLL configuration set. Grammars and inputs which result in this\r\n * scenario are unable to use {@link PredictionMode#SLL}, which in turn means\r\n * they cannot use the two-stage parsing strategy to improve parsing performance\r\n * for that input.\r\n *\r\n * @see ParserATNSimulator#reportAmbiguity\r\n * @see ParserErrorListener#reportAmbiguity\r\n *\r\n * @since 4.3\r\n */\r\nexport class AmbiguityInfo extends DecisionEventInfo {\r\n\t/** The set of alternative numbers for this decision event that lead to a valid parse. */\r\n\t@NotNull\r\n\tprivate ambigAlts: BitSet;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link AmbiguityInfo} class with the\r\n\t * specified detailed ambiguity information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state identifying the ambiguous\r\n\t * alternatives for the current input\r\n\t * @param ambigAlts The set of alternatives in the decision that lead to a valid parse.\r\n\t * The predicted alt is the min(ambigAlts)\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the ambiguity was identified during\r\n\t * prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t\tthis.ambigAlts = ambigAlts;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of alternatives in the decision that lead to a valid parse.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\t@NotNull\r\n\tget ambiguousAlternatives(): BitSet {\r\n\t\treturn this.ambigAlts;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.1575933-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for a context sensitivity.\r\n * Context sensitivities are decisions where a particular input resulted in an\r\n * SLL conflict, but LL prediction produced a single unique alternative.\r\n *\r\n * In some cases, the unique alternative identified by LL prediction is not\r\n * equal to the minimum represented alternative in the conflicting SLL\r\n * configuration set. Grammars and inputs which result in this scenario are\r\n * unable to use {@link PredictionMode#SLL}, which in turn means they cannot use\r\n * the two-stage parsing strategy to improve parsing performance for that\r\n * input.\r\n *\r\n * @see ParserATNSimulator#reportContextSensitivity\r\n * @see ParserErrorListener#reportContextSensitivity\r\n *\r\n * @since 4.3\r\n */\r\nexport class ContextSensitivityInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * Constructs a new instance of the {@link ContextSensitivityInfo} class\r\n\t * with the specified detailed context sensitivity information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state containing the unique\r\n\t * alternative identified by full-context prediction\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the context sensitivity was\r\n\t * identified during full-context prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, true);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.3330673-07:00\r\n\r\nimport { AmbiguityInfo } from \"./AmbiguityInfo\";\r\nimport { ContextSensitivityInfo } from \"./ContextSensitivityInfo\";\r\nimport { ErrorInfo } from \"./ErrorInfo\";\r\nimport { LookaheadEventInfo } from \"./LookaheadEventInfo\";\r\nimport { Override } from \"../Decorators\";\r\nimport { PredicateEvalInfo } from \"./PredicateEvalInfo\";\r\n\r\n/**\r\n * This class contains profiling gathered for a particular decision.\r\n *\r\n * Parsing performance in ANTLR 4 is heavily influenced by both static factors\r\n * (e.g. the form of the rules in the grammar) and dynamic factors (e.g. the\r\n * choice of input and the state of the DFA cache at the time profiling\r\n * operations are started). For best results, gather and use aggregate\r\n * statistics from a large sample of inputs representing the inputs expected in\r\n * production before using the results to make changes in the grammar.\r\n *\r\n * @since 4.3\r\n */\r\nexport class DecisionInfo {\r\n\t/**\r\n\t * The decision number, which is an index into {@link ATN#decisionToState}.\r\n\t */\r\n\tpublic decision: number;\r\n\r\n\t/**\r\n\t * The total number of times {@link ParserATNSimulator#adaptivePredict} was\r\n\t * invoked for this decision.\r\n\t */\r\n\tpublic invocations: number = 0;\r\n\r\n\t/**\r\n\t * The total time spent in {@link ParserATNSimulator#adaptivePredict} for\r\n\t * this decision, in nanoseconds.\r\n\t *\r\n\t * The value of this field contains the sum of differential results obtained\r\n\t * by {@link System#nanoTime()}, and is not adjusted to compensate for JIT\r\n\t * and/or garbage collection overhead. For best accuracy, use a modern JVM\r\n\t * implementation that provides precise results from\r\n\t * {@link System#nanoTime()}, and perform profiling in a separate process\r\n\t * which is warmed up by parsing the input prior to profiling. If desired,\r\n\t * call {@link ATNSimulator#clearDFA} to reset the DFA cache to its initial\r\n\t * state before starting the profiling measurement pass.\r\n\t */\r\n\tpublic timeInPrediction: number = 0;\r\n\r\n\t/**\r\n\t * The sum of the lookahead required for SLL prediction for this decision.\r\n\t * Note that SLL prediction is used before LL prediction for performance\r\n\t * reasons even when {@link PredictionMode#LL} or\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} is used.\r\n\t */\r\n\tpublic SLL_TotalLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the minimum lookahead required for any single SLL prediction to\r\n\t * complete for this decision, by reaching a unique prediction, reaching an\r\n\t * SLL conflict state, or encountering a syntax error.\r\n\t */\r\n\tpublic SLL_MinLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the maximum lookahead required for any single SLL prediction to\r\n\t * complete for this decision, by reaching a unique prediction, reaching an\r\n\t * SLL conflict state, or encountering a syntax error.\r\n\t */\r\n\tpublic SLL_MaxLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the {@link LookaheadEventInfo} associated with the event where the\r\n\t * {@link #SLL_MaxLook} value was set.\r\n\t */\r\n\tpublic SLL_MaxLookEvent?: LookaheadEventInfo;\r\n\r\n\t/**\r\n\t * The sum of the lookahead required for LL prediction for this decision.\r\n\t * Note that LL prediction is only used when SLL prediction reaches a\r\n\t * conflict state.\r\n\t */\r\n\tpublic LL_TotalLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the minimum lookahead required for any single LL prediction to\r\n\t * complete for this decision. An LL prediction completes when the algorithm\r\n\t * reaches a unique prediction, a conflict state (for\r\n\t * {@link PredictionMode#LL}, an ambiguity state (for\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}, or a syntax error.\r\n\t */\r\n\tpublic LL_MinLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the maximum lookahead required for any single LL prediction to\r\n\t * complete for this decision. An LL prediction completes when the algorithm\r\n\t * reaches a unique prediction, a conflict state (for\r\n\t * {@link PredictionMode#LL}, an ambiguity state (for\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}, or a syntax error.\r\n\t */\r\n\tpublic LL_MaxLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the {@link LookaheadEventInfo} associated with the event where the\r\n\t * {@link #LL_MaxLook} value was set.\r\n\t */\r\n\tpublic LL_MaxLookEvent?: LookaheadEventInfo;\r\n\r\n\t/**\r\n\t * A collection of {@link ContextSensitivityInfo} instances describing the\r\n\t * context sensitivities encountered during LL prediction for this decision.\r\n\t *\r\n\t * @see ContextSensitivityInfo\r\n\t */\r\n\tpublic contextSensitivities: ContextSensitivityInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link ErrorInfo} instances describing the parse errors\r\n\t * identified during calls to {@link ParserATNSimulator#adaptivePredict} for\r\n\t * this decision.\r\n\t *\r\n\t * @see ErrorInfo\r\n\t */\r\n\tpublic errors: ErrorInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link AmbiguityInfo} instances describing the\r\n\t * ambiguities encountered during LL prediction for this decision.\r\n\t *\r\n\t * @see AmbiguityInfo\r\n\t */\r\n\tpublic ambiguities: AmbiguityInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link PredicateEvalInfo} instances describing the\r\n\t * results of evaluating individual predicates during prediction for this\r\n\t * decision.\r\n\t *\r\n\t * @see PredicateEvalInfo\r\n\t */\r\n\tpublic predicateEvals: PredicateEvalInfo[] = [];\r\n\r\n\t/**\r\n\t * The total number of ATN transitions required during SLL prediction for\r\n\t * this decision. An ATN transition is determined by the number of times the\r\n\t * DFA does not contain an edge that is required for prediction, resulting\r\n\t * in on-the-fly computation of that edge.\r\n\t *\r\n\t * If DFA caching of SLL transitions is employed by the implementation, ATN\r\n\t * computation may cache the computed edge for efficient lookup during\r\n\t * future parsing of this decision. Otherwise, the SLL parsing algorithm\r\n\t * will use ATN transitions exclusively.\r\n\t *\r\n\t * @see #SLL_ATNTransitions\r\n\t * @see ParserATNSimulator#computeTargetState\r\n\t * @see LexerATNSimulator#computeTargetState\r\n\t */\r\n\tpublic SLL_ATNTransitions: number = 0;\r\n\r\n\t/**\r\n\t * The total number of DFA transitions required during SLL prediction for\r\n\t * this decision.\r\n\t *\r\n\t * If the ATN simulator implementation does not use DFA caching for SLL\r\n\t * transitions, this value will be 0.\r\n\t *\r\n\t * @see ParserATNSimulator#getExistingTargetState\r\n\t * @see LexerATNSimulator#getExistingTargetState\r\n\t */\r\n\tpublic SLL_DFATransitions: number = 0;\r\n\r\n\t/**\r\n\t * Gets the total number of times SLL prediction completed in a conflict\r\n\t * state, resulting in fallback to LL prediction.\r\n\t *\r\n\t * Note that this value is not related to whether or not\r\n\t * {@link PredictionMode#SLL} may be used successfully with a particular\r\n\t * grammar. If the ambiguity resolution algorithm applied to the SLL\r\n\t * conflicts for this decision produce the same result as LL prediction for\r\n\t * this decision, {@link PredictionMode#SLL} would produce the same overall\r\n\t * parsing result as {@link PredictionMode#LL}.\r\n\t */\r\n\tpublic LL_Fallback: number = 0;\r\n\r\n\t/**\r\n\t * The total number of ATN transitions required during LL prediction for\r\n\t * this decision. An ATN transition is determined by the number of times the\r\n\t * DFA does not contain an edge that is required for prediction, resulting\r\n\t * in on-the-fly computation of that edge.\r\n\t *\r\n\t * If DFA caching of LL transitions is employed by the implementation, ATN\r\n\t * computation may cache the computed edge for efficient lookup during\r\n\t * future parsing of this decision. Otherwise, the LL parsing algorithm will\r\n\t * use ATN transitions exclusively.\r\n\t *\r\n\t * @see #LL_DFATransitions\r\n\t * @see ParserATNSimulator#computeTargetState\r\n\t * @see LexerATNSimulator#computeTargetState\r\n\t */\r\n\tpublic LL_ATNTransitions: number = 0;\r\n\r\n\t/**\r\n\t * The total number of DFA transitions required during LL prediction for\r\n\t * this decision.\r\n\t *\r\n\t * If the ATN simulator implementation does not use DFA caching for LL\r\n\t * transitions, this value will be 0.\r\n\t *\r\n\t * @see ParserATNSimulator#getExistingTargetState\r\n\t * @see LexerATNSimulator#getExistingTargetState\r\n\t */\r\n\tpublic LL_DFATransitions: number = 0;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link DecisionInfo} class to contain\r\n\t * statistics for a particular decision.\r\n\t *\r\n\t * @param decision The decision number\r\n\t */\r\n\tconstructor(decision: number) {\r\n\t\tthis.decision = decision;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"{\" +\r\n\t\t\t\"decision=\" + this.decision +\r\n\t\t\t\", contextSensitivities=\" + this.contextSensitivities.length +\r\n\t\t\t\", errors=\" + this.errors.length +\r\n\t\t\t\", ambiguities=\" + this.ambiguities.length +\r\n\t\t\t\", SLL_lookahead=\" + this.SLL_TotalLook +\r\n\t\t\t\", SLL_ATNTransitions=\" + this.SLL_ATNTransitions +\r\n\t\t\t\", SLL_DFATransitions=\" + this.SLL_DFATransitions +\r\n\t\t\t\", LL_Fallback=\" + this.LL_Fallback +\r\n\t\t\t\", LL_lookahead=\" + this.LL_TotalLook +\r\n\t\t\t\", LL_ATNTransitions=\" + this.LL_ATNTransitions +\r\n\t\t\t\"}\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.7213647-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for a syntax error\r\n * identified during prediction. Syntax errors occur when the prediction\r\n * algorithm is unable to identify an alternative which would lead to a\r\n * successful parse.\r\n *\r\n * @see Parser#notifyErrorListeners(Token, String, RecognitionException)\r\n * @see ANTLRErrorListener#syntaxError\r\n *\r\n * @since 4.3\r\n */\r\nexport class ErrorInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * Constructs a new instance of the {@link ErrorInfo} class with the\r\n\t * specified detailed syntax error information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state reached during prediction\r\n\t * prior to reaching the {@link ATNSimulator#ERROR} state\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the syntax error was identified\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.6852565-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for tracking the lookahead\r\n * depth required in order to make a prediction.\r\n *\r\n * @since 4.3\r\n */\r\nexport class LookaheadEventInfo extends DecisionEventInfo {\r\n\t/** The alternative chosen by adaptivePredict(), not necessarily\r\n\t * the outermost alt shown for a rule; left-recursive rules have\r\n\t * user-level alts that differ from the rewritten rule with a (...) block\r\n\t * and a (..)* loop.\r\n\t */\r\n\tpublic predictedAlt: number;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link LookaheadEventInfo} class with\r\n\t * the specified detailed lookahead information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state containing the necessary\r\n\t * information to determine the result of a prediction, or `undefined` if\r\n\t * the final state is not available\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the prediction was finally made\r\n\t * @param fullCtx `true` if the current lookahead is part of an LL\r\n\t * prediction; otherwise, `false` if the current lookahead is part of\r\n\t * an SLL prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\tstate: SimulatorState | undefined,\r\n\t\tpredictedAlt: number,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tfullCtx: boolean) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, fullCtx);\r\n\t\tthis.predictedAlt = predictedAlt;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.1914305-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for semantic predicate\r\n * evaluations which occur during prediction.\r\n *\r\n * @see ParserATNSimulator#evalSemanticContext\r\n *\r\n * @since 4.3\r\n */\r\nexport class PredicateEvalInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * The semantic context which was evaluated.\r\n\t */\r\n\tpublic semctx: SemanticContext;\r\n\t/**\r\n\t * The alternative number for the decision which is guarded by the semantic\r\n\t * context {@link #semctx}. Note that other ATN\r\n\t * configurations may predict the same alternative which are guarded by\r\n\t * other semantic contexts and/or {@link SemanticContext#NONE}.\r\n\t */\r\n\tpublic predictedAlt: number;\r\n\t/**\r\n\t * The result of evaluating the semantic context {@link #semctx}.\r\n\t */\r\n\tpublic evalResult: boolean;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link PredicateEvalInfo} class with the\r\n\t * specified detailed predicate evaluation information.\r\n\t *\r\n\t * @param state The simulator state\r\n\t * @param decision The decision number\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the predicate evaluation was\r\n\t * triggered. Note that the input stream may be reset to other positions for\r\n\t * the actual evaluation of individual predicates.\r\n\t * @param semctx The semantic context which was evaluated\r\n\t * @param evalResult The results of evaluating the semantic context\r\n\t * @param predictedAlt The alternative number for the decision which is\r\n\t * guarded by the semantic context `semctx`. See {@link #predictedAlt}\r\n\t * for more information.\r\n\t *\r\n\t * @see ParserATNSimulator#evalSemanticContext(SemanticContext, ParserRuleContext, int)\r\n\t * @see SemanticContext#eval(Recognizer, RuleContext)\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull state: SimulatorState,\r\n\t\tdecision: number,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\t@NotNull semctx: SemanticContext,\r\n\t\tevalResult: boolean,\r\n\t\tpredictedAlt: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t\tthis.semctx = semctx;\r\n\t\tthis.evalResult = evalResult;\r\n\t\tthis.predictedAlt = predictedAlt;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.4188352-07:00\r\n\r\nimport { AmbiguityInfo } from \"./AmbiguityInfo\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ContextSensitivityInfo } from \"./ContextSensitivityInfo\";\r\nimport { DecisionInfo } from \"./DecisionInfo\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { ErrorInfo } from \"./ErrorInfo\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { LookaheadEventInfo } from \"./LookaheadEventInfo\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserATNSimulator } from \"./ParserATNSimulator\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { PredicateEvalInfo } from \"./PredicateEvalInfo\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * @since 4.3\r\n */\r\nexport class ProfilingATNSimulator extends ParserATNSimulator {\r\n\tprotected decisions: DecisionInfo[];\r\n\tprotected numDecisions: number;\r\n\r\n\tprotected _input: TokenStream | undefined;\r\n\tprotected _startIndex: number = 0;\r\n\tprotected _sllStopIndex: number = 0;\r\n\tprotected _llStopIndex: number = 0;\r\n\r\n\tprotected currentDecision: number = 0;\r\n\tprotected currentState: SimulatorState | undefined;\r\n\r\n\t/** At the point of LL failover, we record how SLL would resolve the conflict so that\r\n\t * we can determine whether or not a decision / input pair is context-sensitive.\r\n\t * If LL gives a different result than SLL's predicted alternative, we have a\r\n\t * context sensitivity for sure. The converse is not necessarily true, however.\r\n\t * It's possible that after conflict resolution chooses minimum alternatives,\r\n\t * SLL could get the same answer as LL. Regardless of whether or not the result indicates\r\n\t * an ambiguity, it is not treated as a context sensitivity because LL prediction\r\n\t * was not required in order to produce a correct prediction for this decision and input sequence.\r\n\t * It may in fact still be a context sensitivity but we don't know by looking at the\r\n\t * minimum alternatives for the current input.\r\n\t */\r\n\tprotected conflictingAltResolvedBySLL: number = 0;\r\n\r\n\tconstructor(parser: Parser) {\r\n\t\tsuper(parser.interpreter.atn, parser);\r\n\t\tthis.optimize_ll1 = false;\r\n\t\tthis.reportAmbiguities = true;\r\n\t\tthis.numDecisions = this.atn.decisionToState.length;\r\n\t\tthis.decisions = [];\r\n\t\tfor (let i = 0; i < this.numDecisions; i++) {\r\n\t\t\tthis.decisions.push(new DecisionInfo(i));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined): number;\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined, useContext: boolean): number;\r\n\t@Override\r\n\tpublic adaptivePredict(\r\n\t\t@NotNull input: TokenStream,\r\n\t\tdecision: number,\r\n\t\touterContext: ParserRuleContext | undefined,\r\n\t\tuseContext?: boolean): number {\r\n\t\tif (useContext !== undefined) {\r\n\t\t\treturn super.adaptivePredict(input, decision, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis._input = input;\r\n\t\t\tthis._startIndex = input.index;\r\n\t\t\t// it's possible for SLL to reach a conflict state without consuming any input\r\n\t\t\tthis._sllStopIndex = this._startIndex - 1;\r\n\t\t\tthis._llStopIndex = -1;\r\n\t\t\tthis.currentDecision = decision;\r\n\t\t\tthis.currentState = undefined;\r\n\t\t\tthis.conflictingAltResolvedBySLL = ATN.INVALID_ALT_NUMBER;\r\n\t\t\tlet start: number[] = process.hrtime();\r\n\t\t\tlet alt: number = super.adaptivePredict(input, decision, outerContext);\r\n\t\t\tlet stop: number[] = process.hrtime();\r\n\r\n\t\t\tlet nanoseconds: number = (stop[0] - start[0]) * 1000000000;\r\n\t\t\tif (nanoseconds === 0) {\r\n\t\t\t\tnanoseconds = stop[1] - start[1];\r\n\t\t\t} else {\r\n\t\t\t\t// Add nanoseconds from start to end of that second, plus start of the end second to end\r\n\t\t\t\tnanoseconds += (1000000000 - start[1]) + stop[1];\r\n\t\t\t}\r\n\r\n\t\t\tthis.decisions[decision].timeInPrediction += nanoseconds;\r\n\t\t\tthis.decisions[decision].invocations++;\r\n\r\n\t\t\tlet SLL_k: number = this._sllStopIndex - this._startIndex + 1;\r\n\t\t\tthis.decisions[decision].SLL_TotalLook += SLL_k;\r\n\t\t\tthis.decisions[decision].SLL_MinLook = this.decisions[decision].SLL_MinLook === 0 ? SLL_k : Math.min(this.decisions[decision].SLL_MinLook, SLL_k);\r\n\t\t\tif (SLL_k > this.decisions[decision].SLL_MaxLook) {\r\n\t\t\t\tthis.decisions[decision].SLL_MaxLook = SLL_k;\r\n\t\t\t\tthis.decisions[decision].SLL_MaxLookEvent =\r\n\t\t\t\t\tnew LookaheadEventInfo(decision, undefined, alt, input, this._startIndex, this._sllStopIndex, false);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._llStopIndex >= 0) {\r\n\t\t\t\tlet LL_k: number = this._llStopIndex - this._startIndex + 1;\r\n\t\t\t\tthis.decisions[decision].LL_TotalLook += LL_k;\r\n\t\t\t\tthis.decisions[decision].LL_MinLook = this.decisions[decision].LL_MinLook === 0 ? LL_k : Math.min(this.decisions[decision].LL_MinLook, LL_k);\r\n\t\t\t\tif (LL_k > this.decisions[decision].LL_MaxLook) {\r\n\t\t\t\t\tthis.decisions[decision].LL_MaxLook = LL_k;\r\n\t\t\t\t\tthis.decisions[decision].LL_MaxLookEvent =\r\n\t\t\t\t\t\tnew LookaheadEventInfo(decision, undefined, alt, input, this._startIndex, this._llStopIndex, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn alt;\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis._input = undefined;\r\n\t\t\tthis.currentDecision = -1;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getStartState(dfa: DFA, input: TokenStream, outerContext: ParserRuleContext, useContext: boolean): SimulatorState | undefined {\r\n\t\tlet state: SimulatorState | undefined = super.getStartState(dfa, input, outerContext, useContext);\r\n\t\tthis.currentState = state;\r\n\t\treturn state;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeStartState(dfa: DFA, globalContext: ParserRuleContext, useContext: boolean): SimulatorState {\r\n\t\tlet state: SimulatorState = super.computeStartState(dfa, globalContext, useContext);\r\n\t\tthis.currentState = state;\r\n\t\treturn state;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeReachSet(dfa: DFA, previous: SimulatorState, t: number, contextCache: PredictionContextCache): SimulatorState | undefined {\r\n\t\tif (this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet reachState: SimulatorState | undefined = super.computeReachSet(dfa, previous, t, contextCache);\r\n\t\tif (reachState == null) {\r\n\t\t\t// no reach on current lookahead symbol. ERROR.\r\n\t\t\tthis.decisions[this.currentDecision].errors.push(\r\n\t\t\t\tnew ErrorInfo(this.currentDecision, previous, this._input, this._startIndex, this._input.index),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.currentState = reachState;\r\n\t\treturn reachState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getExistingTargetState(previousD: DFAState, t: number): DFAState | undefined {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\t// this method is called after each time the input position advances\r\n\t\tif (this.currentState.useContext) {\r\n\t\t\tthis._llStopIndex = this._input.index;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._sllStopIndex = this._input.index;\r\n\t\t}\r\n\r\n\t\tlet existingTargetState: DFAState | undefined = super.getExistingTargetState(previousD, t);\r\n\t\tif (existingTargetState != null) {\r\n\t\t\t// this method is directly called by execDFA; must construct a SimulatorState\r\n\t\t\t// to represent the current state for this case\r\n\t\t\tthis.currentState = new SimulatorState(this.currentState.outerContext, existingTargetState, this.currentState.useContext, this.currentState.remainingOuterContext);\r\n\r\n\t\t\tif (this.currentState.useContext) {\r\n\t\t\t\tthis.decisions[this.currentDecision].LL_DFATransitions++;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.decisions[this.currentDecision].SLL_DFATransitions++; // count only if we transition over a DFA state\r\n\t\t\t}\r\n\r\n\t\t\tif (existingTargetState === ATNSimulator.ERROR) {\r\n\t\t\t\tlet state: SimulatorState = new SimulatorState(this.currentState.outerContext, previousD, this.currentState.useContext, this.currentState.remainingOuterContext);\r\n\t\t\t\tthis.decisions[this.currentDecision].errors.push(\r\n\t\t\t\t\tnew ErrorInfo(this.currentDecision, state, this._input, this._startIndex, this._input.index),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn existingTargetState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeTargetState(dfa: DFA, s: DFAState, remainingGlobalContext: ParserRuleContext, t: number, useContext: boolean, contextCache: PredictionContextCache): [DFAState, ParserRuleContext | undefined] {\r\n\t\tlet targetState: [DFAState, ParserRuleContext | undefined] = super.computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache);\r\n\r\n\t\tif (useContext) {\r\n\t\t\tthis.decisions[this.currentDecision].LL_ATNTransitions++;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.decisions[this.currentDecision].SLL_ATNTransitions++;\r\n\t\t}\r\n\r\n\t\treturn targetState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected evalSemanticContextImpl(pred: SemanticContext, parserCallStack: ParserRuleContext, alt: number): boolean {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet result: boolean = super.evalSemanticContextImpl(pred, parserCallStack, alt);\r\n\t\tif (!(pred instanceof SemanticContext.PrecedencePredicate)) {\r\n\t\t\tlet fullContext: boolean = this._llStopIndex >= 0;\r\n\t\t\tlet stopIndex: number = fullContext ? this._llStopIndex : this._sllStopIndex;\r\n\t\t\tthis.decisions[this.currentDecision].predicateEvals.push(\r\n\t\t\t\tnew PredicateEvalInfo(this.currentState, this.currentDecision, this._input, this._startIndex, stopIndex, pred, result, alt),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportContextSensitivity(dfa: DFA, prediction: number, acceptState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tif (prediction !== this.conflictingAltResolvedBySLL) {\r\n\t\t\tthis.decisions[this.currentDecision].contextSensitivities.push(\r\n\t\t\t\tnew ContextSensitivityInfo(this.currentDecision, acceptState, this._input, startIndex, stopIndex),\r\n\t\t\t);\r\n\t\t}\r\n\t\tsuper.reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportAttemptingFullContext(dfa: DFA, conflictingAlts: BitSet, conflictState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (conflictingAlts != null) {\r\n\t\t\tthis.conflictingAltResolvedBySLL = conflictingAlts.nextSetBit(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.conflictingAltResolvedBySLL = conflictState.s0.configs.getRepresentedAlternatives().nextSetBit(0);\r\n\t\t}\r\n\t\tthis.decisions[this.currentDecision].LL_Fallback++;\r\n\t\tsuper.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportAmbiguity(@NotNull dfa: DFA, D: DFAState, startIndex: number, stopIndex: number, exact: boolean, @NotNull ambigAlts: BitSet, @NotNull configs: ATNConfigSet): void {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet prediction: number;\r\n\t\tif (ambigAlts != null) {\r\n\t\t\tprediction = ambigAlts.nextSetBit(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tprediction = configs.getRepresentedAlternatives().nextSetBit(0);\r\n\t\t}\r\n\t\tif (this.conflictingAltResolvedBySLL !== ATN.INVALID_ALT_NUMBER && prediction !== this.conflictingAltResolvedBySLL) {\r\n\t\t\t// Even though this is an ambiguity we are reporting, we can\r\n\t\t\t// still detect some context sensitivities. Both SLL and LL\r\n\t\t\t// are showing a conflict, hence an ambiguity, but if they resolve\r\n\t\t\t// to different minimum alternatives we have also identified a\r\n\t\t\t// context sensitivity.\r\n\t\t\tthis.decisions[this.currentDecision].contextSensitivities.push(\r\n\t\t\t\tnew ContextSensitivityInfo(this.currentDecision, this.currentState, this._input, startIndex, stopIndex),\r\n\t\t\t);\r\n\t\t}\r\n\t\tthis.decisions[this.currentDecision].ambiguities.push(\r\n\t\t\tnew AmbiguityInfo(this.currentDecision, this.currentState, ambigAlts, this._input, startIndex, stopIndex),\r\n\t\t);\r\n\t\tsuper.reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs);\r\n\t}\r\n\r\n\t// ---------------------------------------------------------------------\r\n\r\n\tpublic getDecisionInfo(): DecisionInfo[] {\r\n\t\treturn this.decisions;\r\n\t}\r\n\r\n\tpublic getCurrentState(): SimulatorState | undefined {\r\n\t\treturn this.currentState;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.4399193-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ANTLRErrorStrategy } from \"./ANTLRErrorStrategy\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNDeserializationOptions } from \"./atn/ATNDeserializationOptions\";\r\nimport { ATNDeserializer } from \"./atn/ATNDeserializer\";\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { DefaultErrorStrategy } from \"./DefaultErrorStrategy\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { ErrorNode } from \"./tree/ErrorNode\";\r\nimport { IntegerStack } from \"./misc/IntegerStack\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { Override, NotNull, Nullable } from \"./Decorators\";\r\nimport { ParseInfo } from \"./atn/ParseInfo\";\r\nimport { ParserATNSimulator } from \"./atn/ParserATNSimulator\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { ParseTreeListener } from \"./tree/ParseTreeListener\";\r\nimport { ParseTreePattern } from \"./tree/pattern/ParseTreePattern\";\r\nimport { ProxyParserErrorListener } from \"./ProxyParserErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { TerminalNode } from \"./tree/TerminalNode\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\nclass TraceListener implements ParseTreeListener {\r\n\tconstructor(private ruleNames: string[], private tokenStream: TokenStream) {\r\n\t}\r\n\r\n\t@Override\r\n\tpublic enterEveryRule(ctx: ParserRuleContext): void {\r\n\t\tconsole.log(\"enter \" + this.ruleNames[ctx.ruleIndex] +\r\n\t\t\t\", LT(1)=\" + this.tokenStream.LT(1).text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic exitEveryRule(ctx: ParserRuleContext): void {\r\n\t\tconsole.log(\"exit \" + this.ruleNames[ctx.ruleIndex] +\r\n\t\t\t\", LT(1)=\" + this.tokenStream.LT(1).text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic visitErrorNode(node: ErrorNode): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t@Override\r\n\tpublic visitTerminal(node: TerminalNode): void {\r\n\t\tlet parent = node.parent!.ruleContext;\r\n\t\tlet token: Token = node.symbol;\r\n\t\tconsole.log(\"consume \" + token + \" rule \" + this.ruleNames[parent.ruleIndex]);\r\n\t}\r\n}\r\n\r\n/** This is all the parsing support code essentially; most of it is error recovery stuff. */\r\nexport abstract class Parser extends Recognizer {\r\n\t/**\r\n\t * This field maps from the serialized ATN string to the deserialized {@link ATN} with\r\n\t * bypass alternatives.\r\n\t *\r\n\t * @see ATNDeserializationOptions.isGenerateRuleBypassTransitions\r\n\t */\r\n\tprivate static readonly bypassAltsAtnCache = new Map();\r\n\r\n\t/**\r\n\t * The error handling strategy for the parser. The default value is a new\r\n\t * instance of {@link DefaultErrorStrategy}.\r\n\t *\r\n\t * @see #getErrorHandler\r\n\t * @see #setErrorHandler\r\n\t */\r\n\t@NotNull\r\n\tprotected _errHandler: ANTLRErrorStrategy = new DefaultErrorStrategy();\r\n\r\n\t/**\r\n\t * The input stream.\r\n\t *\r\n\t * @see #getInputStream\r\n\t * @see #setInputStream\r\n\t */\r\n\tprotected _input!: TokenStream;\r\n\r\n\tprotected readonly _precedenceStack: IntegerStack = new IntegerStack();\r\n\r\n\t/**\r\n\t * The {@link ParserRuleContext} object for the currently executing rule.\r\n\t *\r\n\t * This is always non-undefined during the parsing process.\r\n\t */\r\n\tprotected _ctx!: ParserRuleContext;\r\n\r\n\t/**\r\n\t * Specifies whether or not the parser should construct a parse tree during\r\n\t * the parsing process. The default value is `true`.\r\n\t *\r\n\t * @see `buildParseTree`\r\n\t */\r\n\tprivate _buildParseTrees: boolean = true;\r\n\r\n\t/**\r\n\t * When {@link #setTrace}`(true)` is called, a reference to the\r\n\t * {@link TraceListener} is stored here so it can be easily removed in a\r\n\t * later call to {@link #setTrace}`(false)`. The listener itself is\r\n\t * implemented as a parser listener so this field is not directly used by\r\n\t * other parser methods.\r\n\t */\r\n\tprivate _tracer: TraceListener | undefined;\r\n\r\n\t/**\r\n\t * The list of {@link ParseTreeListener} listeners registered to receive\r\n\t * events during the parse.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected _parseListeners: ParseTreeListener[] = [];\r\n\r\n\t/**\r\n\t * The number of syntax errors reported during parsing. This value is\r\n\t * incremented each time {@link #notifyErrorListeners} is called.\r\n\t */\r\n\tprotected _syntaxErrors: number = 0;\r\n\r\n\t/** Indicates parser has match()ed EOF token. See {@link #exitRule()}. */\r\n\tprotected matchedEOF: boolean = false;\r\n\r\n\tconstructor(input: TokenStream) {\r\n\t\tsuper();\r\n\t\tthis._precedenceStack.push(0);\r\n\t\tthis.inputStream = input;\r\n\t}\r\n\r\n\t/** reset the parser's state */\r\n\tpublic reset(): void;\r\n\tpublic reset(resetInput: boolean): void;\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\t// Note: this method executes when not parsing, so _ctx can be undefined\r\n\t\tif (resetInput === undefined || resetInput) {\r\n\t\t\tthis.inputStream.seek(0);\r\n\t\t}\r\n\r\n\t\tthis._errHandler.reset(this);\r\n\t\tthis._ctx = undefined as any;\r\n\t\tthis._syntaxErrors = 0;\r\n\t\tthis.matchedEOF = false;\r\n\t\tthis.isTrace = false;\r\n\t\tthis._precedenceStack.clear();\r\n\t\tthis._precedenceStack.push(0);\r\n\t\tlet interpreter: ATNSimulator = this.interpreter;\r\n\t\tif (interpreter != null) {\r\n\t\t\tinterpreter.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Match current input symbol against `ttype`. If the symbol type\r\n\t * matches, {@link ANTLRErrorStrategy#reportMatch} and {@link #consume} are\r\n\t * called to complete the match process.\r\n\t *\r\n\t * If the symbol type does not match,\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is called on the current error\r\n\t * strategy to attempt recovery. If {@link #getBuildParseTree} is\r\n\t * `true` and the token index of the symbol returned by\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to\r\n\t * the parse tree by calling {@link #createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)}.\r\n\t *\r\n\t * @param ttype the token type to match\r\n\t * @returns the matched symbol\r\n\t * @ if the current input symbol did not match\r\n\t * `ttype` and the error strategy could not recover from the\r\n\t * mismatched symbol\r\n\t */\r\n\t@NotNull\r\n\tpublic match(ttype: number): Token {\r\n\t\tlet t: Token = this.currentToken;\r\n\t\tif (t.type === ttype) {\r\n\t\t\tif (ttype === Token.EOF) {\r\n\t\t\t\tthis.matchedEOF = true;\r\n\t\t\t}\r\n\t\t\tthis._errHandler.reportMatch(this);\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tt = this._errHandler.recoverInline(this);\r\n\t\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\r\n\t\t\t\t// we must have conjured up a new token during single token insertion\r\n\t\t\t\t// if it's not the current symbol\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, t));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Match current input symbol as a wildcard. If the symbol type matches\r\n\t * (i.e. has a value greater than 0), {@link ANTLRErrorStrategy#reportMatch}\r\n\t * and {@link #consume} are called to complete the match process.\r\n\t *\r\n\t * If the symbol type does not match,\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is called on the current error\r\n\t * strategy to attempt recovery. If {@link #getBuildParseTree} is\r\n\t * `true` and the token index of the symbol returned by\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to\r\n\t * the parse tree by calling {@link Parser#createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)}.\r\n\t *\r\n\t * @returns the matched symbol\r\n\t * @ if the current input symbol did not match\r\n\t * a wildcard and the error strategy could not recover from the mismatched\r\n\t * symbol\r\n\t */\r\n\t@NotNull\r\n\tpublic matchWildcard(): Token {\r\n\t\tlet t: Token = this.currentToken;\r\n\t\tif (t.type > 0) {\r\n\t\t\tthis._errHandler.reportMatch(this);\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tt = this._errHandler.recoverInline(this);\r\n\t\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\r\n\t\t\t\t// we must have conjured up a new token during single token insertion\r\n\t\t\t\t// if it's not the current symbol\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, t));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Track the {@link ParserRuleContext} objects during the parse and hook\r\n\t * them up using the {@link ParserRuleContext#children} list so that it\r\n\t * forms a parse tree. The {@link ParserRuleContext} returned from the start\r\n\t * rule represents the root of the parse tree.\r\n\t *\r\n\t * Note that if we are not building parse trees, rule contexts only point\r\n\t * upwards. When a rule exits, it returns the context but that gets garbage\r\n\t * collected if nobody holds a reference. It points upwards but nobody\r\n\t * points at it.\r\n\t *\r\n\t * When we build parse trees, we are adding all of these contexts to\r\n\t * {@link ParserRuleContext#children} list. Contexts are then not candidates\r\n\t * for garbage collection.\r\n\t */\r\n\tset buildParseTree(buildParseTrees: boolean) {\r\n\t\tthis._buildParseTrees = buildParseTrees;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether or not a complete parse tree will be constructed while\r\n\t * parsing. This property is `true` for a newly constructed parser.\r\n\t *\r\n\t * @returns `true` if a complete parse tree will be constructed while\r\n\t * parsing, otherwise `false`\r\n\t */\r\n\tget buildParseTree(): boolean {\r\n\t\treturn this._buildParseTrees;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getParseListeners(): ParseTreeListener[] {\r\n\t\treturn this._parseListeners;\r\n\t}\r\n\r\n\t/**\r\n\t * Registers `listener` to receive events during the parsing process.\r\n\t *\r\n\t * To support output-preserving grammar transformations (including but not\r\n\t * limited to left-recursion removal, automated left-factoring, and\r\n\t * optimized code generation), calls to listener methods during the parse\r\n\t * may differ substantially from calls made by\r\n\t * {@link ParseTreeWalker#DEFAULT} used after the parse is complete. In\r\n\t * particular, rule entry and exit events may occur in a different order\r\n\t * during the parse than after the parser. In addition, calls to certain\r\n\t * rule entry methods may be omitted.\r\n\t *\r\n\t * With the following specific exceptions, calls to listener events are\r\n\t * *deterministic*, i.e. for identical input the calls to listener\r\n\t * methods will be the same.\r\n\t *\r\n\t * * Alterations to the grammar used to generate code may change the\r\n\t * behavior of the listener calls.\r\n\t * * Alterations to the command line options passed to ANTLR 4 when\r\n\t * generating the parser may change the behavior of the listener calls.\r\n\t * * Changing the version of the ANTLR Tool used to generate the parser\r\n\t * may change the behavior of the listener calls.\r\n\t *\r\n\t * @param listener the listener to add\r\n\t *\r\n\t * @throws {@link TypeError} if `listener` is `undefined`\r\n\t */\r\n\tpublic addParseListener(@NotNull listener: ParseTreeListener): void {\r\n\t\tif (listener == null) {\r\n\t\t\tthrow new TypeError(\"listener cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._parseListeners.push(listener);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove `listener` from the list of parse listeners.\r\n\t *\r\n\t * If `listener` is `undefined` or has not been added as a parse\r\n\t * listener, this method does nothing.\r\n\t *\r\n\t * @see #addParseListener\r\n\t *\r\n\t * @param listener the listener to remove\r\n\t */\r\n\tpublic removeParseListener(listener: ParseTreeListener): void {\r\n\t\tlet index = this._parseListeners.findIndex((l) => l === listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tthis._parseListeners.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Remove all parse listeners.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tpublic removeParseListeners(): void {\r\n\t\tthis._parseListeners.length = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Notify any parse listeners of an enter rule event.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected triggerEnterRuleEvent(): void {\r\n\t\tfor (let listener of this._parseListeners) {\r\n\t\t\tif (listener.enterEveryRule) {\r\n\t\t\t\tlistener.enterEveryRule(this._ctx);\r\n\t\t\t}\r\n\r\n\t\t\tthis._ctx.enterRule(listener);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Notify any parse listeners of an exit rule event.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected triggerExitRuleEvent(): void {\r\n\t\t// reverse order walk of listeners\r\n\t\tfor (let i = this._parseListeners.length - 1; i >= 0; i--) {\r\n\t\t\tlet listener: ParseTreeListener = this._parseListeners[i];\r\n\t\t\tthis._ctx.exitRule(listener);\r\n\t\t\tif (listener.exitEveryRule) {\r\n\t\t\t\tlistener.exitEveryRule(this._ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the number of syntax errors reported during parsing. This value is\r\n\t * incremented each time {@link #notifyErrorListeners} is called.\r\n\t *\r\n\t * @see #notifyErrorListeners\r\n\t */\r\n\tget numberOfSyntaxErrors(): number {\r\n\t\treturn this._syntaxErrors;\r\n\t}\r\n\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._input.tokenSource.tokenFactory;\r\n\t}\r\n\r\n\t/**\r\n\t * The ATN with bypass alternatives is expensive to create so we create it\r\n\t * lazily.\r\n\t *\r\n\t * @ if the current parser does not\r\n\t * implement the `serializedATN` property.\r\n\t */\r\n\t@NotNull\r\n\tpublic getATNWithBypassAlts(): ATN {\r\n\t\tlet serializedAtn: string = this.serializedATN;\r\n\t\tif (serializedAtn == null) {\r\n\t\t\tthrow new Error(\"The current parser does not support an ATN with bypass alternatives.\");\r\n\t\t}\r\n\r\n\t\tlet result = Parser.bypassAltsAtnCache.get(serializedAtn);\r\n\t\tif (result == null) {\r\n\t\t\tlet deserializationOptions: ATNDeserializationOptions = new ATNDeserializationOptions();\r\n\t\t\tdeserializationOptions.isGenerateRuleBypassTransitions = true;\r\n\t\t\tresult = new ATNDeserializer(deserializationOptions).deserialize(Utils.toCharArray(serializedAtn));\r\n\t\t\tParser.bypassAltsAtnCache.set(serializedAtn, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * The preferred method of getting a tree pattern. For example, here's a\r\n\t * sample use:\r\n\t *\r\n\t * ```\r\n\t * let t: ParseTree = parser.expr();\r\n\t * let p: ParseTreePattern = await parser.compileParseTreePattern(\"+0\", MyParser.RULE_expr);\r\n\t * let m: ParseTreeMatch = p.match(t);\r\n\t * let id: string = m.get(\"ID\");\r\n\t * ```\r\n\t */\r\n\tpublic compileParseTreePattern(pattern: string, patternRuleIndex: number): Promise;\r\n\r\n\t/**\r\n\t * The same as {@link #compileParseTreePattern(String, int)} but specify a\r\n\t * {@link Lexer} rather than trying to deduce it from this parser.\r\n\t */\r\n\tpublic compileParseTreePattern(pattern: string, patternRuleIndex: number, lexer?: Lexer): Promise;\r\n\r\n\tpublic async compileParseTreePattern(pattern: string, patternRuleIndex: number, lexer?: Lexer): Promise {\r\n\t\tif (!lexer) {\r\n\t\t\tif (this.inputStream) {\r\n\t\t\t\tlet tokenSource = this.inputStream.tokenSource;\r\n\t\t\t\tif (tokenSource instanceof Lexer) {\r\n\t\t\t\t\tlexer = tokenSource;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!lexer) {\r\n\t\t\t\tthrow new Error(\"Parser can't discover a lexer to use\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet currentLexer = lexer;\r\n\t\tlet m = await import(\"./tree/pattern/ParseTreePatternMatcher\");\r\n\t\tlet matcher = new m.ParseTreePatternMatcher(currentLexer, this);\r\n\t\treturn matcher.compile(pattern, patternRuleIndex);\r\n\t}\r\n\r\n\t@NotNull\r\n\tget errorHandler(): ANTLRErrorStrategy {\r\n\t\treturn this._errHandler;\r\n\t}\r\n\r\n\tset errorHandler(@NotNull handler: ANTLRErrorStrategy) {\r\n\t\tthis._errHandler = handler;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): TokenStream {\r\n\t\treturn this._input;\r\n\t}\r\n\r\n\t/** Set the token stream and reset the parser. */\r\n\tset inputStream(input: TokenStream) {\r\n\t\tthis.reset(false);\r\n\t\tthis._input = input;\r\n\t}\r\n\r\n\t/** Match needs to return the current input symbol, which gets put\r\n\t * into the label for the associated token ref; e.g., x=ID.\r\n\t */\r\n\t@NotNull\r\n\tget currentToken(): Token {\r\n\t\treturn this._input.LT(1);\r\n\t}\r\n\r\n\tpublic notifyErrorListeners(/*@NotNull*/ msg: string): void;\r\n\tpublic notifyErrorListeners(/*@NotNull*/ msg: string, /*@NotNull*/ offendingToken: Token | null, e: RecognitionException | undefined): void;\r\n\r\n\tpublic notifyErrorListeners(msg: string, offendingToken?: Token | null, e?: RecognitionException | undefined): void {\r\n\t\tif (offendingToken === undefined) {\r\n\t\t\toffendingToken = this.currentToken;\r\n\t\t} else if (offendingToken === null) {\r\n\t\t\toffendingToken = undefined;\r\n\t\t}\r\n\r\n\t\tthis._syntaxErrors++;\r\n\t\tlet line: number = -1;\r\n\t\tlet charPositionInLine: number = -1;\r\n\t\tif (offendingToken != null) {\r\n\t\t\tline = offendingToken.line;\r\n\t\t\tcharPositionInLine = offendingToken.charPositionInLine;\r\n\t\t}\r\n\r\n\t\tlet listener = this.getErrorListenerDispatch();\r\n\t\tif (listener.syntaxError) {\r\n\t\t\tlistener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Consume and return the [current symbol](`currentToken`).\r\n\t *\r\n\t * E.g., given the following input with `A` being the current\r\n\t * lookahead symbol, this function moves the cursor to `B` and returns\r\n\t * `A`.\r\n\t *\r\n\t * ```\r\n\t * A B\r\n\t * ^\r\n\t * ```\r\n\t *\r\n\t * If the parser is not in error recovery mode, the consumed symbol is added\r\n\t * to the parse tree using {@link ParserRuleContext#addChild(TerminalNode)}, and\r\n\t * {@link ParseTreeListener#visitTerminal} is called on any parse listeners.\r\n\t * If the parser *is* in error recovery mode, the consumed symbol is\r\n\t * added to the parse tree using {@link #createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)} and\r\n\t * {@link ParseTreeListener#visitErrorNode} is called on any parse\r\n\t * listeners.\r\n\t */\r\n\tpublic consume(): Token {\r\n\t\tlet o: Token = this.currentToken;\r\n\t\tif (o.type !== Parser.EOF) {\r\n\t\t\tthis.inputStream.consume();\r\n\t\t}\r\n\t\tlet hasListener: boolean = this._parseListeners.length !== 0;\r\n\t\tif (this._buildParseTrees || hasListener) {\r\n\t\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\r\n\t\t\t\tlet node: ErrorNode = this._ctx.addErrorNode(this.createErrorNode(this._ctx, o));\r\n\t\t\t\tif (hasListener) {\r\n\t\t\t\t\tfor (let listener of this._parseListeners) {\r\n\t\t\t\t\t\tif (listener.visitErrorNode) {\r\n\t\t\t\t\t\t\tlistener.visitErrorNode(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet node: TerminalNode = this.createTerminalNode(this._ctx, o);\r\n\t\t\t\tthis._ctx.addChild(node);\r\n\t\t\t\tif (hasListener) {\r\n\t\t\t\t\tfor (let listener of this._parseListeners) {\r\n\t\t\t\t\t\tif (listener.visitTerminal) {\r\n\t\t\t\t\t\t\tlistener.visitTerminal(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\r\n\t/**\r\n\t * How to create a token leaf node associated with a parent.\r\n\t * Typically, the terminal node to create is not a function of the parent.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic createTerminalNode(parent: ParserRuleContext, t: Token): TerminalNode {\r\n\t\treturn new TerminalNode(t);\r\n\t}\r\n\r\n\t/**\r\n\t * How to create an error node, given a token, associated with a parent.\r\n\t * Typically, the error node to create is not a function of the parent.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic createErrorNode(parent: ParserRuleContext, t: Token): ErrorNode {\r\n\t\treturn new ErrorNode(t);\r\n\t}\r\n\r\n\tprotected addContextToParseTree(): void {\r\n\t\tlet parent = this._ctx._parent as ParserRuleContext | undefined;\r\n\t\t// add current context to parent if we have a parent\r\n\t\tif (parent != null) {\r\n\t\t\tparent.addChild(this._ctx);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Always called by generated parsers upon entry to a rule. Access field\r\n\t * {@link #_ctx} get the current context.\r\n\t */\r\n\tpublic enterRule(@NotNull localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tthis.state = state;\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis.addContextToParseTree();\r\n\t\t}\r\n\t\tthis.triggerEnterRuleEvent();\r\n\t}\r\n\r\n\tpublic enterLeftFactoredRule(localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tthis.state = state;\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tlet factoredContext = this._ctx.getChild(this._ctx.childCount - 1) as ParserRuleContext;\r\n\t\t\tthis._ctx.removeLastChild();\r\n\t\t\tfactoredContext._parent = localctx;\r\n\t\t\tlocalctx.addChild(factoredContext);\r\n\t\t}\r\n\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis.addContextToParseTree();\r\n\t\t}\r\n\r\n\t\tthis.triggerEnterRuleEvent();\r\n\t}\r\n\r\n\tpublic exitRule(): void {\r\n\t\tif (this.matchedEOF) {\r\n\t\t\t// if we have matched EOF, it cannot consume past EOF so we use LT(1) here\r\n\t\t\tthis._ctx._stop = this._input.LT(1); // LT(1) will be end of file\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ctx._stop = this._input.tryLT(-1); // stop node is what we just matched\r\n\t\t}\r\n\t\t// trigger event on _ctx, before it reverts to parent\r\n\t\tthis.triggerExitRuleEvent();\r\n\t\tthis.state = this._ctx.invokingState;\r\n\t\tthis._ctx = this._ctx._parent as ParserRuleContext;\r\n\t}\r\n\r\n\tpublic enterOuterAlt(localctx: ParserRuleContext, altNum: number): void {\r\n\t\tlocalctx.altNumber = altNum;\r\n\t\t// if we have new localctx, make sure we replace existing ctx\r\n\t\t// that is previous child of parse tree\r\n\t\tif (this._buildParseTrees && this._ctx !== localctx) {\r\n\t\t\tlet parent = this._ctx._parent as ParserRuleContext | undefined;\r\n\t\t\tif (parent != null) {\r\n\t\t\t\tparent.removeLastChild();\r\n\t\t\t\tparent.addChild(localctx);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._ctx = localctx;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the precedence level for the top-most precedence rule.\r\n\t *\r\n\t * @returns The precedence level for the top-most precedence rule, or -1 if\r\n\t * the parser context is not nested within a precedence rule.\r\n\t */\r\n\tget precedence(): number {\r\n\t\tif (this._precedenceStack.isEmpty) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\treturn this._precedenceStack.peek();\r\n\t}\r\n\r\n\tpublic enterRecursionRule(localctx: ParserRuleContext, state: number, ruleIndex: number, precedence: number): void {\r\n\t\tthis.state = state;\r\n\t\tthis._precedenceStack.push(precedence);\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\r\n\t}\r\n\r\n\t/** Like {@link #enterRule} but for recursive rules.\r\n\t * Make the current context the child of the incoming localctx.\r\n\t */\r\n\tpublic pushNewRecursionContext(localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tlet previous: ParserRuleContext = this._ctx;\r\n\t\tprevious._parent = localctx;\r\n\t\tprevious.invokingState = state;\r\n\t\tprevious._stop = this._input.tryLT(-1);\r\n\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = previous._start;\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis._ctx.addChild(previous);\r\n\t\t}\r\n\r\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\r\n\t}\r\n\r\n\tpublic unrollRecursionContexts(_parentctx: ParserRuleContext): void {\r\n\t\tthis._precedenceStack.pop();\r\n\t\tthis._ctx._stop = this._input.tryLT(-1);\r\n\t\tlet retctx: ParserRuleContext = this._ctx; // save current ctx (return value)\r\n\r\n\t\t// unroll so _ctx is as it was before call to recursive method\r\n\t\tif (this._parseListeners.length > 0) {\r\n\t\t\twhile (this._ctx !== _parentctx) {\r\n\t\t\t\tthis.triggerExitRuleEvent();\r\n\t\t\t\tthis._ctx = this._ctx._parent as ParserRuleContext;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ctx = _parentctx;\r\n\t\t}\r\n\r\n\t\t// hook into tree\r\n\t\tretctx._parent = _parentctx;\r\n\r\n\t\tif (this._buildParseTrees && _parentctx != null) {\r\n\t\t\t// add return ctx into invoking rule's tree\r\n\t\t\t_parentctx.addChild(retctx);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getInvokingContext(ruleIndex: number): ParserRuleContext | undefined {\r\n\t\tlet p = this._ctx;\r\n\t\twhile (p && p.ruleIndex !== ruleIndex) {\r\n\t\t\tp = p._parent as ParserRuleContext;\r\n\t\t}\r\n\t\treturn p;\r\n\t}\r\n\r\n\tget context(): ParserRuleContext {\r\n\t\treturn this._ctx;\r\n\t}\r\n\r\n\tset context(ctx: ParserRuleContext) {\r\n\t\tthis._ctx = ctx;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic precpred(@Nullable localctx: RuleContext, precedence: number): boolean {\r\n\t\treturn precedence >= this._precedenceStack.peek();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getErrorListenerDispatch(): ParserErrorListener {\r\n\t\treturn new ProxyParserErrorListener(this.getErrorListeners());\r\n\t}\r\n\r\n\tpublic inContext(context: string): boolean {\r\n\t\t// TODO: useful in parser?\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether or not `symbol` can follow the current state in the\r\n\t * ATN. The behavior of this method is equivalent to the following, but is\r\n\t * implemented such that the complete context-sensitive follow set does not\r\n\t * need to be explicitly constructed.\r\n\t *\r\n\t * ```\r\n\t * return getExpectedTokens().contains(symbol);\r\n\t * ```\r\n\t *\r\n\t * @param symbol the symbol type to check\r\n\t * @returns `true` if `symbol` can follow the current state in\r\n\t * the ATN, otherwise `false`.\r\n\t */\r\n\tpublic isExpectedToken(symbol: number): boolean {\r\n// \t\treturn interpreter.atn.nextTokens(_ctx);\r\n\t\tlet atn: ATN = this.interpreter.atn;\r\n\t\tlet ctx: ParserRuleContext = this._ctx;\r\n\t\tlet s: ATNState = atn.states[this.state];\r\n\t\tlet following: IntervalSet = atn.nextTokens(s);\r\n\t\tif (following.contains(symbol)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n// System.out.println(\"following \"+s+\"=\"+following);\r\n\t\tif (!following.contains(Token.EPSILON)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\twhile (ctx != null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\r\n\t\t\tlet invokingState: ATNState = atn.states[ctx.invokingState];\r\n\t\t\tlet rt = invokingState.transition(0) as RuleTransition;\r\n\t\t\tfollowing = atn.nextTokens(rt.followState);\r\n\t\t\tif (following.contains(symbol)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tctx = ctx._parent as ParserRuleContext;\r\n\t\t}\r\n\r\n\t\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isMatchedEOF(): boolean {\r\n\t\treturn this.matchedEOF;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of input symbols which could follow the current parser\r\n\t * state and context, as given by {@link #getState} and {@link #getContext},\r\n\t * respectively.\r\n\t *\r\n\t * @see ATN#getExpectedTokens(int, RuleContext)\r\n\t */\r\n\t@NotNull\r\n\tpublic getExpectedTokens(): IntervalSet {\r\n\t\treturn this.atn.getExpectedTokens(this.state, this.context);\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getExpectedTokensWithinCurrentRule(): IntervalSet {\r\n\t\tlet atn: ATN = this.interpreter.atn;\r\n\t\tlet s: ATNState = atn.states[this.state];\r\n\t\treturn atn.nextTokens(s);\r\n\t}\r\n\r\n\t/** Get a rule's index (i.e., `RULE_ruleName` field) or -1 if not found. */\r\n\tpublic getRuleIndex(ruleName: string): number {\r\n\t\tlet ruleIndex = this.getRuleIndexMap().get(ruleName);\r\n\t\tif (ruleIndex != null) {\r\n\t\t\treturn ruleIndex;\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tget ruleContext(): ParserRuleContext { return this._ctx; }\r\n\r\n\t/** Return List<String> of the rule names in your parser instance\r\n\t * leading up to a call to the current rule. You could override if\r\n\t * you want more details such as the file/line info of where\r\n\t * in the ATN a rule is invoked.\r\n\t *\r\n\t * This is very useful for error messages.\r\n\t */\r\n\r\n\tpublic getRuleInvocationStack(ctx: RuleContext = this._ctx): string[] {\r\n\t\tlet p: RuleContext | undefined = ctx; \t\t// Workaround for Microsoft/TypeScript#14487\r\n\t\tlet ruleNames: string[] = this.ruleNames;\r\n\t\tlet stack: string[] = [];\r\n\t\twhile (p != null) {\r\n\t\t\t// compute what follows who invoked us\r\n\t\t\tlet ruleIndex: number = p.ruleIndex;\r\n\t\t\tif (ruleIndex < 0) {\r\n\t\t\t\tstack.push(\"n/a\");\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(ruleNames[ruleIndex]);\r\n\t\t\t}\r\n\t\t\tp = p._parent as RuleContext;\r\n\t\t}\r\n\t\treturn stack;\r\n\t}\r\n\r\n\t/** For debugging and other purposes. */\r\n\tpublic getDFAStrings(): string[] {\r\n\t\tlet s: string[] = [];\r\n\t\tfor (let dfa of this._interp.atn.decisionToDFA) {\r\n\t\t\ts.push(dfa.toString(this.vocabulary, this.ruleNames));\r\n\t\t}\r\n\t\treturn s;\r\n\t}\r\n\r\n\t/** For debugging and other purposes. */\r\n\tpublic dumpDFA(): void {\r\n\t\tlet seenOne: boolean = false;\r\n\t\tfor (let dfa of this._interp.atn.decisionToDFA) {\r\n\t\t\tif (!dfa.isEmpty) {\r\n\t\t\t\tif (seenOne) {\r\n\t\t\t\t\tconsole.log();\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log(\"Decision \" + dfa.decision + \":\");\r\n\t\t\t\tprocess.stdout.write(dfa.toString(this.vocabulary, this.ruleNames));\r\n\t\t\t\tseenOne = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget sourceName(): string {\r\n\t\treturn this._input.sourceName;\r\n\t}\r\n\r\n\t@Override\r\n\tget parseInfo(): Promise {\r\n\t\treturn import(\"./atn/ProfilingATNSimulator\").then((m) => {\r\n\t\t\tlet interp: ParserATNSimulator = this.interpreter;\r\n\t\t\tif (interp instanceof m.ProfilingATNSimulator) {\r\n\t\t\t\treturn new ParseInfo(interp);\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @since 4.3\r\n\t */\r\n\tpublic async setProfile(profile: boolean): Promise {\r\n\t\tlet m = await import(\"./atn/ProfilingATNSimulator\");\r\n\t\tlet interp: ParserATNSimulator = this.interpreter;\r\n\t\tif (profile) {\r\n\t\t\tif (!(interp instanceof m.ProfilingATNSimulator)) {\r\n\t\t\t\tthis.interpreter = new m.ProfilingATNSimulator(this);\r\n\t\t\t}\r\n\t\t} else if (interp instanceof m.ProfilingATNSimulator) {\r\n\t\t\tthis.interpreter = new ParserATNSimulator(this.atn, this);\r\n\t\t}\r\n\r\n\t\tthis.interpreter.setPredictionMode(interp.getPredictionMode());\r\n\t}\r\n\r\n\t/** During a parse is sometimes useful to listen in on the rule entry and exit\r\n\t * events as well as token matches. This is for quick and dirty debugging.\r\n\t */\r\n\tset isTrace(trace: boolean) {\r\n\t\tif (!trace) {\r\n\t\t\tif (this._tracer) {\r\n\t\t\t\tthis.removeParseListener(this._tracer);\r\n\t\t\t\tthis._tracer = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._tracer) {\r\n\t\t\t\tthis.removeParseListener(this._tracer);\r\n\t\t\t} else {\r\n\t\t\t\tthis._tracer = new TraceListener(this.ruleNames, this._input);\r\n\t\t\t}\r\n\r\n\t\t\tthis.addParseListener(this._tracer);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether a {@link TraceListener} is registered as a parse listener\r\n\t * for the parser.\r\n\t */\r\n\tget isTrace(): boolean {\r\n\t\treturn this._tracer != null;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.3255548-07:00\r\n\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { NotNull } from \"./Decorators\";\r\n\r\n/** Indicates that the parser could not decide which of two or more paths\r\n * to take based upon the remaining input. It tracks the starting token\r\n * of the offending input and also knows where the parser was\r\n * in the various paths when the error. Reported by reportNoViableAlternative()\r\n */\r\nexport class NoViableAltException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 5096000008992867052L;\r\n\r\n\t/** Which configurations did we try at input.index that couldn't match input.LT(1)? */\r\n\tprivate _deadEndConfigs?: ATNConfigSet;\r\n\r\n\t/** The token object at the start index; the input stream might\r\n\t * \tnot be buffering tokens so get a reference to it. (At the\r\n\t * time the error occurred, of course the stream needs to keep a\r\n\t * buffer all of the tokens but later we might not have access to those.)\r\n\t */\r\n\t@NotNull\r\n\tprivate _startToken: Token;\r\n\r\n\tconstructor(/*@NotNull*/ recognizer: Parser);\r\n\tconstructor(\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\t/*@NotNull*/\r\n\t\tinput: TokenStream,\r\n\t\t/*@NotNull*/\r\n\t\tstartToken: Token,\r\n\t\t/*@NotNull*/\r\n\t\toffendingToken: Token,\r\n\t\tdeadEndConfigs: ATNConfigSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tctx: ParserRuleContext);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer,\r\n\t\tinput?: TokenStream,\r\n\t\tstartToken?: Token,\r\n\t\toffendingToken?: Token,\r\n\t\tdeadEndConfigs?: ATNConfigSet,\r\n\t\tctx?: ParserRuleContext) {\r\n\t\tif (recognizer instanceof Parser) {\r\n\t\t\tif (input === undefined) {\r\n\t\t\t\tinput = recognizer.inputStream;\r\n\t\t\t}\r\n\r\n\t\t\tif (startToken === undefined) {\r\n\t\t\t\tstartToken = recognizer.currentToken;\r\n\t\t\t}\r\n\r\n\t\t\tif (offendingToken === undefined) {\r\n\t\t\t\toffendingToken = recognizer.currentToken;\r\n\t\t\t}\r\n\r\n\t\t\tif (ctx === undefined) {\r\n\t\t\t\tctx = recognizer.context;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper(recognizer, input, ctx);\r\n\t\tthis._deadEndConfigs = deadEndConfigs;\r\n\t\tthis._startToken = startToken as Token;\r\n\t\tthis.setOffendingToken(recognizer, offendingToken);\r\n\t}\r\n\r\n\tget startToken(): Token {\r\n\t\treturn this._startToken;\r\n\t}\r\n\r\n\tget deadEndConfigs(): ATNConfigSet | undefined {\r\n\t\treturn this._deadEndConfigs;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.8290527-07:00\r\n\r\nimport { ANTLRErrorStrategy } from \"./ANTLRErrorStrategy\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { ATNStateType } from \"./atn/ATNStateType\";\r\nimport { FailedPredicateException } from \"./FailedPredicateException\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { NoViableAltException } from \"./NoViableAltException\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { PredictionContext } from \"./atn/PredictionContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\n\r\n/**\r\n * This is the default implementation of {@link ANTLRErrorStrategy} used for\r\n * error reporting and recovery in ANTLR parsers.\r\n */\r\nexport class DefaultErrorStrategy implements ANTLRErrorStrategy {\r\n\t/**\r\n\t * Indicates whether the error strategy is currently \"recovering from an\r\n\t * error\". This is used to suppress reporting multiple error messages while\r\n\t * attempting to recover from a detected syntax error.\r\n\t *\r\n\t * @see #inErrorRecoveryMode\r\n\t */\r\n\tprotected errorRecoveryMode: boolean = false;\r\n\r\n\t/** The index into the input stream where the last error occurred.\r\n\t * \tThis is used to prevent infinite loops where an error is found\r\n\t * but no token is consumed during recovery...another error is found,\r\n\t * ad nauseum. This is a failsafe mechanism to guarantee that at least\r\n\t * one token/tree node is consumed for two errors.\r\n\t */\r\n\tprotected lastErrorIndex: number = -1;\r\n\r\n\tprotected lastErrorStates?: IntervalSet;\r\n\r\n\t/**\r\n\t * This field is used to propagate information about the lookahead following\r\n\t * the previous match. Since prediction prefers completing the current rule\r\n\t * to error recovery efforts, error reporting may occur later than the\r\n\t * original point where it was discoverable. The original context is used to\r\n\t * compute the true expected sets as though the reporting occurred as early\r\n\t * as possible.\r\n\t */\r\n\tprotected nextTokensContext?: ParserRuleContext;\r\n\r\n\t/**\r\n\t * @see #nextTokensContext\r\n\t */\r\n\tprotected nextTokensState: number = ATNState.INVALID_STATE_NUMBER;\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation simply calls {@link #endErrorCondition} to\r\n\t * ensure that the handler is not in error recovery mode.\r\n\t */\r\n\t@Override\r\n\tpublic reset(recognizer: Parser): void {\r\n\t\tthis.endErrorCondition(recognizer);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to enter error recovery mode when a recognition\r\n\t * exception is reported.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected beginErrorCondition(@NotNull recognizer: Parser): void {\r\n\t\tthis.errorRecoveryMode = true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic inErrorRecoveryMode(recognizer: Parser): boolean {\r\n\t\treturn this.errorRecoveryMode;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to leave error recovery mode after recovering from\r\n\t * a recognition exception.\r\n\t *\r\n\t * @param recognizer\r\n\t */\r\n\tprotected endErrorCondition(@NotNull recognizer: Parser): void {\r\n\t\tthis.errorRecoveryMode = false;\r\n\t\tthis.lastErrorStates = undefined;\r\n\t\tthis.lastErrorIndex = -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation simply calls {@link #endErrorCondition}.\r\n\t */\r\n\t@Override\r\n\tpublic reportMatch(recognizer: Parser): void {\r\n\t\tthis.endErrorCondition(recognizer);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns immediately if the handler is already\r\n\t * in error recovery mode. Otherwise, it calls {@link #beginErrorCondition}\r\n\t * and dispatches the reporting task based on the runtime type of `e`\r\n\t * according to the following table.\r\n\t *\r\n\t * * {@link NoViableAltException}: Dispatches the call to\r\n\t * {@link #reportNoViableAlternative}\r\n\t * * {@link InputMismatchException}: Dispatches the call to\r\n\t * {@link #reportInputMismatch}\r\n\t * * {@link FailedPredicateException}: Dispatches the call to\r\n\t * {@link #reportFailedPredicate}\r\n\t * * All other types: calls {@link Parser#notifyErrorListeners} to report\r\n\t * the exception\r\n\t */\r\n\t@Override\r\n\tpublic reportError(\r\n\t\trecognizer: Parser,\r\n\t\te: RecognitionException): void {\r\n\t\t// if we've already reported an error and have not matched a token\r\n\t\t// yet successfully, don't report any errors.\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n//\t\t\tSystem.err.print(\"[SPURIOUS] \");\r\n\t\t\treturn; // don't report spurious errors\r\n\t\t}\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\t\tif (e instanceof NoViableAltException) {\r\n\t\t\tthis.reportNoViableAlternative(recognizer, e);\r\n\t\t}\r\n\t\telse if (e instanceof InputMismatchException) {\r\n\t\t\tthis.reportInputMismatch(recognizer, e);\r\n\t\t}\r\n\t\telse if (e instanceof FailedPredicateException) {\r\n\t\t\tthis.reportFailedPredicate(recognizer, e);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.error(`unknown recognition error type: ${e}`);\r\n\t\t\tthis.notifyErrorListeners(recognizer, e.toString(), e);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected notifyErrorListeners(@NotNull recognizer: Parser, message: string, e: RecognitionException): void {\r\n\t\tlet offendingToken: Token | null | undefined = e.getOffendingToken(recognizer);\r\n\t\tif (offendingToken === undefined) {\r\n\t\t\t// Pass null to notifyErrorListeners so it in turn calls the error listeners with undefined as the offending\r\n\t\t\t// token. If we passed undefined, it would instead call the listeners with currentToken from the parser.\r\n\t\t\toffendingToken = null;\r\n\t\t}\r\n\r\n\t\trecognizer.notifyErrorListeners(message, offendingToken, e);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation resynchronizes the parser by consuming tokens\r\n\t * until we find one in the resynchronization set--loosely the set of tokens\r\n\t * that can follow the current rule.\r\n\t */\r\n\t@Override\r\n\tpublic recover(recognizer: Parser, e: RecognitionException): void {\r\n//\t\tSystem.out.println(\"recover in \"+recognizer.getRuleInvocationStack()+\r\n//\t\t\t\t\t\t \" index=\"+recognizer.inputStream.index+\r\n//\t\t\t\t\t\t \", lastErrorIndex=\"+\r\n//\t\t\t\t\t\t lastErrorIndex+\r\n//\t\t\t\t\t\t \", states=\"+lastErrorStates);\r\n\t\tif (this.lastErrorIndex === recognizer.inputStream.index &&\r\n\t\t\tthis.lastErrorStates &&\r\n\t\t\tthis.lastErrorStates.contains(recognizer.state)) {\r\n\t\t\t// uh oh, another error at same token index and previously-visited\r\n\t\t\t// state in ATN; must be a case where LT(1) is in the recovery\r\n\t\t\t// token set so nothing got consumed. Consume a single token\r\n\t\t\t// at least to prevent an infinite loop; this is a failsafe.\r\n//\t\t\tSystem.err.println(\"seen error condition before index=\"+\r\n//\t\t\t\t\t\t\t lastErrorIndex+\", states=\"+lastErrorStates);\r\n//\t\t\tSystem.err.println(\"FAILSAFE consumes \"+recognizer.getTokenNames()[recognizer.inputStream.LA(1)]);\r\n\t\t\trecognizer.consume();\r\n\t\t}\r\n\t\tthis.lastErrorIndex = recognizer.inputStream.index;\r\n\t\tif (!this.lastErrorStates) {\r\n\t\t\tthis.lastErrorStates = new IntervalSet();\r\n\t\t}\r\n\t\tthis.lastErrorStates.add(recognizer.state);\r\n\t\tlet followSet: IntervalSet = this.getErrorRecoverySet(recognizer);\r\n\t\tthis.consumeUntil(recognizer, followSet);\r\n\t}\r\n\r\n\t/**\r\n\t * The default implementation of {@link ANTLRErrorStrategy#sync} makes sure\r\n\t * that the current lookahead symbol is consistent with what were expecting\r\n\t * at this point in the ATN. You can call this anytime but ANTLR only\r\n\t * generates code to check before subrules/loops and each iteration.\r\n\t *\r\n\t * Implements Jim Idle's magic sync mechanism in closures and optional\r\n\t * subrules. E.g.,\r\n\t *\r\n\t * ```antlr\r\n\t * a : sync ( stuff sync )* ;\r\n\t * sync : {consume to what can follow sync} ;\r\n\t * ```\r\n\t *\r\n\t * At the start of a sub rule upon error, {@link #sync} performs single\r\n\t * token deletion, if possible. If it can't do that, it bails on the current\r\n\t * rule and uses the default error recovery, which consumes until the\r\n\t * resynchronization set of the current rule.\r\n\t *\r\n\t * If the sub rule is optional (`(...)?`, `(...)*`, or block\r\n\t * with an empty alternative), then the expected set includes what follows\r\n\t * the subrule.\r\n\t *\r\n\t * During loop iteration, it consumes until it sees a token that can start a\r\n\t * sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\r\n\t * stay in the loop as long as possible.\r\n\t *\r\n\t * **ORIGINS**\r\n\t *\r\n\t * Previous versions of ANTLR did a poor job of their recovery within loops.\r\n\t * A single mismatch token or missing token would force the parser to bail\r\n\t * out of the entire rules surrounding the loop. So, for rule\r\n\t *\r\n\t * ```antlr\r\n\t * classDef : 'class' ID '{' member* '}'\r\n\t * ```\r\n\t *\r\n\t * input with an extra token between members would force the parser to\r\n\t * consume until it found the next class definition rather than the next\r\n\t * member definition of the current class.\r\n\t *\r\n\t * This functionality cost a little bit of effort because the parser has to\r\n\t * compare token set at the start of the loop and at each iteration. If for\r\n\t * some reason speed is suffering for you, you can turn off this\r\n\t * functionality by simply overriding this method as a blank { }.\r\n\t */\r\n\t@Override\r\n\tpublic sync(recognizer: Parser): void {\r\n\t\tlet s: ATNState = recognizer.interpreter.atn.states[recognizer.state];\r\n//\t\tSystem.err.println(\"sync @ \"+s.stateNumber+\"=\"+s.getClass().getSimpleName());\r\n\t\t// If already recovering, don't try to sync\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet tokens: TokenStream = recognizer.inputStream;\r\n\t\tlet la: number = tokens.LA(1);\r\n\r\n\t\t// try cheaper subset first; might get lucky. seems to shave a wee bit off\r\n\t\tlet nextTokens: IntervalSet = recognizer.atn.nextTokens(s);\r\n\t\tif (nextTokens.contains(la)) {\r\n\t\t\t// We are sure the token matches\r\n\t\t\tthis.nextTokensContext = undefined;\r\n\t\t\tthis.nextTokensState = ATNState.INVALID_STATE_NUMBER;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (nextTokens.contains(Token.EPSILON)) {\r\n\t\t\tif (this.nextTokensContext === undefined) {\r\n\t\t\t\t// It's possible the next token won't match; information tracked\r\n\t\t\t\t// by sync is restricted for performance.\r\n\t\t\t\tthis.nextTokensContext = recognizer.context;\r\n\t\t\t\tthis.nextTokensState = recognizer.state;\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch (s.stateType) {\r\n\t\tcase ATNStateType.BLOCK_START:\r\n\t\tcase ATNStateType.STAR_BLOCK_START:\r\n\t\tcase ATNStateType.PLUS_BLOCK_START:\r\n\t\tcase ATNStateType.STAR_LOOP_ENTRY:\r\n\t\t\t// report error and recover if possible\r\n\t\t\tif (this.singleTokenDeletion(recognizer)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new InputMismatchException(recognizer);\r\n\r\n\t\tcase ATNStateType.PLUS_LOOP_BACK:\r\n\t\tcase ATNStateType.STAR_LOOP_BACK:\r\n//\t\t\tSystem.err.println(\"at loop back: \"+s.getClass().getSimpleName());\r\n\t\t\tthis.reportUnwantedToken(recognizer);\r\n\t\t\tlet expecting: IntervalSet = recognizer.getExpectedTokens();\r\n\t\t\tlet whatFollowsLoopIterationOrRule: IntervalSet =\r\n\t\t\t\texpecting.or(this.getErrorRecoverySet(recognizer));\r\n\t\t\tthis.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\t// do nothing if we can't identify the exact kind of ATN state\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is a\r\n\t * {@link NoViableAltException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportNoViableAlternative(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: NoViableAltException): void {\r\n\t\tlet tokens: TokenStream = recognizer.inputStream;\r\n\t\tlet input: string;\r\n\t\tif (tokens) {\r\n\t\t\tif (e.startToken.type === Token.EOF) {\r\n\t\t\t\tinput = \"\";\r\n\t\t\t} else {\r\n\t\t\t\tinput = tokens.getTextFromRange(e.startToken, e.getOffendingToken());\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinput = \"\";\r\n\t\t}\r\n\t\tlet msg: string = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is an\r\n\t * {@link InputMismatchException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportInputMismatch(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: InputMismatchException): void {\r\n\t\tlet expected = e.expectedTokens;\r\n\t\tlet expectedString = expected ? expected.toStringVocabulary(recognizer.vocabulary) : \"\";\r\n\t\tlet msg: string = \"mismatched input \" + this.getTokenErrorDisplay(e.getOffendingToken(recognizer)) +\r\n\t\t\t\" expecting \" + expectedString;\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is a\r\n\t * {@link FailedPredicateException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportFailedPredicate(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: FailedPredicateException): void {\r\n\t\tlet ruleName: string = recognizer.ruleNames[recognizer.context.ruleIndex];\r\n\t\tlet msg: string = \"rule \" + ruleName + \" \" + e.message;\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to report a syntax error which requires the removal\r\n\t * of a token from the input stream. At the time this method is called, the\r\n\t * erroneous symbol is current `LT(1)` symbol and has not yet been\r\n\t * removed from the input stream. When this method returns,\r\n\t * `recognizer` is in error recovery mode.\r\n\t *\r\n\t * This method is called when {@link #singleTokenDeletion} identifies\r\n\t * single-token deletion as a viable recovery strategy for a mismatched\r\n\t * input error.\r\n\t *\r\n\t * The default implementation simply returns if the handler is already in\r\n\t * error recovery mode. Otherwise, it calls {@link #beginErrorCondition} to\r\n\t * enter error recovery mode, followed by calling\r\n\t * {@link Parser#notifyErrorListeners}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected reportUnwantedToken(@NotNull recognizer: Parser): void {\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\r\n\t\tlet t: Token = recognizer.currentToken;\r\n\t\tlet tokenName: string = this.getTokenErrorDisplay(t);\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet msg: string = \"extraneous input \" + tokenName + \" expecting \" +\r\n\t\t\texpecting.toStringVocabulary(recognizer.vocabulary);\r\n\t\trecognizer.notifyErrorListeners(msg, t, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to report a syntax error which requires the\r\n\t * insertion of a missing token into the input stream. At the time this\r\n\t * method is called, the missing token has not yet been inserted. When this\r\n\t * method returns, `recognizer` is in error recovery mode.\r\n\t *\r\n\t * This method is called when {@link #singleTokenInsertion} identifies\r\n\t * single-token insertion as a viable recovery strategy for a mismatched\r\n\t * input error.\r\n\t *\r\n\t * The default implementation simply returns if the handler is already in\r\n\t * error recovery mode. Otherwise, it calls {@link #beginErrorCondition} to\r\n\t * enter error recovery mode, followed by calling\r\n\t * {@link Parser#notifyErrorListeners}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected reportMissingToken(@NotNull recognizer: Parser): void {\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\r\n\t\tlet t: Token = recognizer.currentToken;\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet msg: string = \"missing \" + expecting.toStringVocabulary(recognizer.vocabulary) +\r\n\t\t\t\" at \" + this.getTokenErrorDisplay(t);\r\n\r\n\t\trecognizer.notifyErrorListeners(msg, t, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation attempts to recover from the mismatched input\r\n\t * by using single token insertion and deletion as described below. If the\r\n\t * recovery attempt fails, this method\r\n\t * {@link InputMismatchException}.\r\n\t *\r\n\t * **EXTRA TOKEN** (single token deletion)\r\n\t *\r\n\t * `LA(1)` is not what we are looking for. If `LA(2)` has the\r\n\t * right token, however, then assume `LA(1)` is some extra spurious\r\n\t * token and delete it. Then consume and return the next token (which was\r\n\t * the `LA(2)` token) as the successful result of the match operation.\r\n\t *\r\n\t * This recovery strategy is implemented by {@link #singleTokenDeletion}.\r\n\t *\r\n\t * **MISSING TOKEN** (single token insertion)\r\n\t *\r\n\t * If current token (at `LA(1)`) is consistent with what could come\r\n\t * after the expected `LA(1)` token, then assume the token is missing\r\n\t * and use the parser's {@link TokenFactory} to create it on the fly. The\r\n\t * \"insertion\" is performed by returning the created token as the successful\r\n\t * result of the match operation.\r\n\t *\r\n\t * This recovery strategy is implemented by {@link #singleTokenInsertion}.\r\n\t *\r\n\t * **EXAMPLE**\r\n\t *\r\n\t * For example, Input `i=(3;` is clearly missing the `')'`. When\r\n\t * the parser returns from the nested call to `expr`, it will have\r\n\t * call chain:\r\n\t *\r\n\t * ```\r\n\t * stat \u2192 expr \u2192 atom\r\n\t * ```\r\n\t *\r\n\t * and it will be trying to match the `')'` at this point in the\r\n\t * derivation:\r\n\t *\r\n\t * ```\r\n\t * => ID '=' '(' INT ')' ('+' atom)* ';'\r\n\t * ^\r\n\t * ```\r\n\t *\r\n\t * The attempt to match `')'` will fail when it sees `';'` and\r\n\t * call {@link #recoverInline}. To recover, it sees that `LA(1)==';'`\r\n\t * is in the set of tokens that can follow the `')'` token reference\r\n\t * in rule `atom`. It can assume that you forgot the `')'`.\r\n\t */\r\n\t@Override\r\n\tpublic recoverInline(recognizer: Parser): Token {\r\n\t\t// SINGLE TOKEN DELETION\r\n\t\tlet matchedSymbol = this.singleTokenDeletion(recognizer);\r\n\t\tif (matchedSymbol) {\r\n\t\t\t// we have deleted the extra token.\r\n\t\t\t// now, move past ttype token as if all were ok\r\n\t\t\trecognizer.consume();\r\n\t\t\treturn matchedSymbol;\r\n\t\t}\r\n\r\n\t\t// SINGLE TOKEN INSERTION\r\n\t\tif (this.singleTokenInsertion(recognizer)) {\r\n\t\t\treturn this.getMissingSymbol(recognizer);\r\n\t\t}\r\n\r\n\t\t// even that didn't work; must throw the exception\r\n\t\tif (this.nextTokensContext === undefined) {\r\n\t\t\tthrow new InputMismatchException(recognizer);\r\n\t\t} else {\r\n\t\t\tthrow new InputMismatchException(recognizer, this.nextTokensState, this.nextTokensContext);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method implements the single-token insertion inline error recovery\r\n\t * strategy. It is called by {@link #recoverInline} if the single-token\r\n\t * deletion strategy fails to recover from the mismatched input. If this\r\n\t * method returns `true`, `recognizer` will be in error recovery\r\n\t * mode.\r\n\t *\r\n\t * This method determines whether or not single-token insertion is viable by\r\n\t * checking if the `LA(1)` input symbol could be successfully matched\r\n\t * if it were instead the `LA(2)` symbol. If this method returns\r\n\t * `true`, the caller is responsible for creating and inserting a\r\n\t * token with the correct type to produce this behavior.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns `true` if single-token insertion is a viable recovery\r\n\t * strategy for the current mismatched input, otherwise `false`\r\n\t */\r\n\tprotected singleTokenInsertion(@NotNull recognizer: Parser): boolean {\r\n\t\tlet currentSymbolType: number = recognizer.inputStream.LA(1);\r\n\t\t// if current token is consistent with what could come after current\r\n\t\t// ATN state, then we know we're missing a token; error recovery\r\n\t\t// is free to conjure up and insert the missing token\r\n\t\tlet currentState = recognizer.interpreter.atn.states[recognizer.state];\r\n\t\tlet next: ATNState = currentState.transition(0).target;\r\n\t\tlet atn: ATN = recognizer.interpreter.atn;\r\n\t\tlet expectingAtLL2: IntervalSet = atn.nextTokens(next, PredictionContext.fromRuleContext(atn, recognizer.context));\r\n//\t\tconsole.warn(\"LT(2) set=\"+expectingAtLL2.toString(recognizer.getTokenNames()));\r\n\t\tif (expectingAtLL2.contains(currentSymbolType)) {\r\n\t\t\tthis.reportMissingToken(recognizer);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * This method implements the single-token deletion inline error recovery\r\n\t * strategy. It is called by {@link #recoverInline} to attempt to recover\r\n\t * from mismatched input. If this method returns `undefined`, the parser and error\r\n\t * handler state will not have changed. If this method returns non-`undefined`,\r\n\t * `recognizer` will *not* be in error recovery mode since the\r\n\t * returned token was a successful match.\r\n\t *\r\n\t * If the single-token deletion is successful, this method calls\r\n\t * {@link #reportUnwantedToken} to report the error, followed by\r\n\t * {@link Parser#consume} to actually \"delete\" the extraneous token. Then,\r\n\t * before returning {@link #reportMatch} is called to signal a successful\r\n\t * match.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns the successfully matched {@link Token} instance if single-token\r\n\t * deletion successfully recovers from the mismatched input, otherwise\r\n\t * `undefined`\r\n\t */\r\n\tprotected singleTokenDeletion(@NotNull recognizer: Parser): Token | undefined {\r\n\t\tlet nextTokenType: number = recognizer.inputStream.LA(2);\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tif (expecting.contains(nextTokenType)) {\r\n\t\t\tthis.reportUnwantedToken(recognizer);\r\n\t\t\t/*\r\n\t\t\tSystem.err.println(\"recoverFromMismatchedToken deleting \"+\r\n\t\t\t\t\t\t\t ((TokenStream)recognizer.inputStream).LT(1)+\r\n\t\t\t\t\t\t\t \" since \"+((TokenStream)recognizer.inputStream).LT(2)+\r\n\t\t\t\t\t\t\t \" is what we want\");\r\n\t\t\t*/\r\n\t\t\trecognizer.consume(); // simply delete extra token\r\n\t\t\t// we want to return the token we're actually matching\r\n\t\t\tlet matchedSymbol: Token = recognizer.currentToken;\r\n\t\t\tthis.reportMatch(recognizer); // we know current token is correct\r\n\t\t\treturn matchedSymbol;\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** Conjure up a missing token during error recovery.\r\n\t *\r\n\t * The recognizer attempts to recover from single missing\r\n\t * symbols. But, actions might refer to that missing symbol.\r\n\t * For example, x=ID {f($x);}. The action clearly assumes\r\n\t * that there has been an identifier matched previously and that\r\n\t * $x points at that token. If that token is missing, but\r\n\t * the next token in the stream is what we want we assume that\r\n\t * this token is missing and we keep going. Because we\r\n\t * have to return some token to replace the missing token,\r\n\t * we have to conjure one up. This method gives the user control\r\n\t * over the tokens returned for missing tokens. Mostly,\r\n\t * you will want to create something special for identifier\r\n\t * tokens. For literals such as '{' and ',', the default\r\n\t * action in the parser or tree parser works. It simply creates\r\n\t * a CommonToken of the appropriate type. The text will be the token.\r\n\t * If you change what tokens must be created by the lexer,\r\n\t * override this method to create the appropriate tokens.\r\n\t */\r\n\t@NotNull\r\n\tprotected getMissingSymbol(@NotNull recognizer: Parser): Token {\r\n\t\tlet currentSymbol: Token = recognizer.currentToken;\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet expectedTokenType: number = Token.INVALID_TYPE;\r\n\t\tif (!expecting.isNil) {\r\n\t\t\t// get any element\r\n\t\t\texpectedTokenType = expecting.minElement;\r\n\t\t}\r\n\r\n\t\tlet tokenText: string;\r\n\t\tif (expectedTokenType === Token.EOF) {\r\n\t\t\ttokenText = \"\";\r\n\t\t} else {\r\n\t\t\ttokenText = \"\";\r\n\t\t}\r\n\t\tlet current: Token = currentSymbol;\r\n\t\tlet lookback = recognizer.inputStream.tryLT(-1);\r\n\t\tif (current.type === Token.EOF && lookback != null) {\r\n\t\t\tcurrent = lookback;\r\n\t\t}\r\n\r\n\t\treturn this.constructToken(recognizer.inputStream.tokenSource, expectedTokenType, tokenText, current);\r\n\t}\r\n\r\n\tprotected constructToken(\r\n\t\ttokenSource: TokenSource,\r\n\t\texpectedTokenType: number,\r\n\t\ttokenText: string,\r\n\t\tcurrent: Token): Token {\r\n\t\tlet factory: TokenFactory = tokenSource.tokenFactory;\r\n\t\tlet x = current.tokenSource;\r\n\t\tlet stream = x ? x.inputStream : undefined;\r\n\r\n\t\treturn factory.create(\r\n\t\t\t{ source: tokenSource, stream },\r\n\t\t\texpectedTokenType, tokenText,\r\n\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t-1, -1,\r\n\t\t\tcurrent.line, current.charPositionInLine);\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected getExpectedTokens(@NotNull recognizer: Parser): IntervalSet {\r\n\t\treturn recognizer.getExpectedTokens();\r\n\t}\r\n\r\n\t/** How should a token be displayed in an error message? The default\r\n\t * is to display just the text, but during development you might\r\n\t * want to have a lot of information spit out. Override in that case\r\n\t * to use t.toString() (which, for CommonToken, dumps everything about\r\n\t * the token). This is better than forcing you to override a method in\r\n\t * your token objects because you don't have to go modify your lexer\r\n\t * so that it creates a new Java type.\r\n\t */\r\n\tprotected getTokenErrorDisplay(t: Token | undefined): string {\r\n\t\tif (!t) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\tlet s = this.getSymbolText(t);\r\n\t\tif (!s) {\r\n\t\t\tif (this.getSymbolType(t) === Token.EOF) {\r\n\t\t\t\ts = \"\";\r\n\t\t\t} else {\r\n\t\t\t\ts = `<${this.getSymbolType(t)}>`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.escapeWSAndQuote(s);\r\n\t}\r\n\r\n\tprotected getSymbolText(@NotNull symbol: Token): string | undefined {\r\n\t\treturn symbol.text;\r\n\t}\r\n\r\n\tprotected getSymbolType(@NotNull symbol: Token): number {\r\n\t\treturn symbol.type;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected escapeWSAndQuote(@NotNull s: string): string {\r\n//\t\tif ( s==null ) return s;\r\n\t\ts = s.replace(\"\\n\", \"\\\\n\");\r\n\t\ts = s.replace(\"\\r\", \"\\\\r\");\r\n\t\ts = s.replace(\"\\t\", \"\\\\t\");\r\n\t\treturn \"'\" + s + \"'\";\r\n\t}\r\n\r\n\t/* Compute the error recovery set for the current rule. During\r\n\t * rule invocation, the parser pushes the set of tokens that can\r\n\t * follow that rule reference on the stack; this amounts to\r\n\t * computing FIRST of what follows the rule reference in the\r\n\t * enclosing rule. See LinearApproximator.FIRST().\r\n\t * This local follow set only includes tokens\r\n\t * from within the rule; i.e., the FIRST computation done by\r\n\t * ANTLR stops at the end of a rule.\r\n\t *\r\n\t * EXAMPLE\r\n\t *\r\n\t * When you find a \"no viable alt exception\", the input is not\r\n\t * consistent with any of the alternatives for rule r. The best\r\n\t * thing to do is to consume tokens until you see something that\r\n\t * can legally follow a call to r *or* any rule that called r.\r\n\t * You don't want the exact set of viable next tokens because the\r\n\t * input might just be missing a token--you might consume the\r\n\t * rest of the input looking for one of the missing tokens.\r\n\t *\r\n\t * Consider grammar:\r\n\t *\r\n\t * a : '[' b ']'\r\n\t * | '(' b ')'\r\n\t * ;\r\n\t * b : c '^' INT ;\r\n\t * c : ID\r\n\t * | INT\r\n\t * ;\r\n\t *\r\n\t * At each rule invocation, the set of tokens that could follow\r\n\t * that rule is pushed on a stack. Here are the various\r\n\t * context-sensitive follow sets:\r\n\t *\r\n\t * FOLLOW(b1_in_a) = FIRST(']') = ']'\r\n\t * FOLLOW(b2_in_a) = FIRST(')') = ')'\r\n\t * FOLLOW(c_in_b) = FIRST('^') = '^'\r\n\t *\r\n\t * Upon erroneous input \"[]\", the call chain is\r\n\t *\r\n\t * a -> b -> c\r\n\t *\r\n\t * and, hence, the follow context stack is:\r\n\t *\r\n\t * depth follow set start of rule execution\r\n\t * 0 a (from main())\r\n\t * 1 ']' b\r\n\t * 2 '^' c\r\n\t *\r\n\t * Notice that ')' is not included, because b would have to have\r\n\t * been called from a different context in rule a for ')' to be\r\n\t * included.\r\n\t *\r\n\t * For error recovery, we cannot consider FOLLOW(c)\r\n\t * (context-sensitive or otherwise). We need the combined set of\r\n\t * all context-sensitive FOLLOW sets--the set of all tokens that\r\n\t * could follow any reference in the call chain. We need to\r\n\t * resync to one of those tokens. Note that FOLLOW(c)='^' and if\r\n\t * we resync'd to that token, we'd consume until EOF. We need to\r\n\t * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\r\n\t * In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\r\n\t * not consume anything. After printing an error, rule c would\r\n\t * return normally. Rule b would not find the required '^' though.\r\n\t * At this point, it gets a mismatched token error and\r\n\t * exception (since LA(1) is not in the viable following token\r\n\t * set). The rule exception handler tries to recover, but finds\r\n\t * the same recovery set and doesn't consume anything. Rule b\r\n\t * exits normally returning to rule a. Now it finds the ']' (and\r\n\t * with the successful match exits errorRecovery mode).\r\n\t *\r\n\t * So, you can see that the parser walks up the call chain looking\r\n\t * for the token that was a member of the recovery set.\r\n\t *\r\n\t * Errors are not generated in errorRecovery mode.\r\n\t *\r\n\t * ANTLR's error recovery mechanism is based upon original ideas:\r\n\t *\r\n\t * \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\r\n\t *\r\n\t * and\r\n\t *\r\n\t * \"A note on error recovery in recursive descent parsers\":\r\n\t * http://portal.acm.org/citation.cfm?id=947902.947905\r\n\t *\r\n\t * Later, Josef Grosch had some good ideas:\r\n\t *\r\n\t * \"Efficient and Comfortable Error Recovery in Recursive Descent\r\n\t * Parsers\":\r\n\t * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\r\n\t *\r\n\t * Like Grosch I implement context-sensitive FOLLOW sets that are combined\r\n\t * at run-time upon error to avoid overhead during parsing.\r\n\t */\r\n\t@NotNull\r\n\tprotected getErrorRecoverySet(@NotNull recognizer: Parser): IntervalSet {\r\n\t\tlet atn: ATN = recognizer.interpreter.atn;\r\n\t\tlet ctx: RuleContext | undefined = recognizer.context;\r\n\t\tlet recoverSet: IntervalSet = new IntervalSet();\r\n\t\twhile (ctx && ctx.invokingState >= 0) {\r\n\t\t\t// compute what follows who invoked us\r\n\t\t\tlet invokingState: ATNState = atn.states[ctx.invokingState];\r\n\t\t\tlet rt = invokingState.transition(0) as RuleTransition;\r\n\t\t\tlet follow: IntervalSet = atn.nextTokens(rt.followState);\r\n\t\t\trecoverSet.addAll(follow);\r\n\t\t\tctx = ctx._parent;\r\n\t\t}\r\n\t\trecoverSet.remove(Token.EPSILON);\r\n//\t\tSystem.out.println(\"recover set \"+recoverSet.toString(recognizer.getTokenNames()));\r\n\t\treturn recoverSet;\r\n\t}\r\n\r\n\t/** Consume tokens until one matches the given token set. */\r\n\tprotected consumeUntil(@NotNull recognizer: Parser, @NotNull set: IntervalSet): void {\r\n//\t\tSystem.err.println(\"consumeUntil(\"+set.toString(recognizer.getTokenNames())+\")\");\r\n\t\tlet ttype: number = recognizer.inputStream.LA(1);\r\n\t\twhile (ttype !== Token.EOF && !set.contains(ttype)) {\r\n\t\t\t//System.out.println(\"consume during recover LA(1)=\"+getTokenNames()[input.LA(1)]);\r\n//\t\t\trecognizer.inputStream.consume();\r\n\t\t\trecognizer.consume();\r\n\t\t\tttype = recognizer.inputStream.LA(1);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.2855056-07:00\r\n\r\nimport { DefaultErrorStrategy } from \"./DefaultErrorStrategy\";\r\nimport { Parser } from \"./Parser\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { Override } from \"./Decorators\";\r\nimport { ParseCancellationException } from \"./misc/ParseCancellationException\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Token } from \"./Token\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\r\n * by immediately canceling the parse operation with a\r\n * {@link ParseCancellationException}. The implementation ensures that the\r\n * {@link ParserRuleContext#exception} field is set for all parse tree nodes\r\n * that were not completed prior to encountering the error.\r\n *\r\n * This error strategy is useful in the following scenarios.\r\n *\r\n * * **Two-stage parsing:** This error strategy allows the first\r\n * stage of two-stage parsing to immediately terminate if an error is\r\n * encountered, and immediately fall back to the second stage. In addition to\r\n * avoiding wasted work by attempting to recover from errors here, the empty\r\n * implementation of {@link BailErrorStrategy#sync} improves the performance of\r\n * the first stage.\r\n * * **Silent validation:** When syntax errors are not being\r\n * reported or logged, and the parse result is simply ignored if errors occur,\r\n * the {@link BailErrorStrategy} avoids wasting work on recovering from errors\r\n * when the result will be ignored either way.\r\n *\r\n * ```\r\n * myparser.errorHandler = new BailErrorStrategy();\r\n * ```\r\n *\r\n * @see Parser.errorHandler\r\n */\r\nexport class BailErrorStrategy extends DefaultErrorStrategy {\r\n\t/** Instead of recovering from exception `e`, re-throw it wrapped\r\n\t * in a {@link ParseCancellationException} so it is not caught by the\r\n\t * rule function catches. Use {@link Exception#getCause()} to get the\r\n\t * original {@link RecognitionException}.\r\n\t */\r\n\t@Override\r\n\tpublic recover(recognizer: Parser, e: RecognitionException): void {\r\n\t\tfor (let context: ParserRuleContext | undefined = recognizer.context; context; context = context.parent) {\r\n\t\t\tcontext.exception = e;\r\n\t\t}\r\n\r\n\t\tthrow new ParseCancellationException(e);\r\n\t}\r\n\r\n\t/** Make sure we don't attempt to recover inline; if the parser\r\n\t * successfully recovers, it won't throw an exception.\r\n\t */\r\n\t@Override\r\n\tpublic recoverInline(recognizer: Parser): Token {\r\n\t\tlet e = new InputMismatchException(recognizer);\r\n\t\tfor (let context: ParserRuleContext | undefined = recognizer.context; context; context = context.parent) {\r\n\t\t\tcontext.exception = e;\r\n\t\t}\r\n\r\n\t\tthrow new ParseCancellationException(e);\r\n\t}\r\n\r\n\t/** Make sure we don't attempt to recover from problems in subrules. */\r\n\t@Override\r\n\tpublic sync(recognizer: Parser): void {\r\n\t\t// intentionally empty\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.0659297-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\n\r\n/** A source of characters for an ANTLR lexer. */\r\nexport interface CharStream extends IntStream {\r\n\t/**\r\n\t * This method returns the text for a range of characters within this input\r\n\t * stream. This method is guaranteed to not throw an exception if the\r\n\t * specified `interval` lies entirely within a marked range. For more\r\n\t * information about marked ranges, see {@link IntStream#mark}.\r\n\t *\r\n\t * @param interval an interval within the stream\r\n\t * @returns the text of the specified interval\r\n\t *\r\n\t * @throws NullPointerException if `interval` is `undefined`\r\n\t * @throws IllegalArgumentException if `interval.a < 0`, or if\r\n\t * `interval.b < interval.a - 1`, or if `interval.b` lies at or\r\n\t * past the end of the stream\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * getting the text of the specified interval\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ interval: Interval): string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.1349829-07:00\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport enum Dependents {\r\n\r\n\t/**\r\n\t * The element is dependent upon the specified rule.\r\n\t */\r\n\tSELF,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's parents\r\n\t * (rules which directly reference it).\r\n\t */\r\n\tPARENTS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's children\r\n\t * (rules which it directly references).\r\n\t */\r\n\tCHILDREN,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's ancestors\r\n\t * (the transitive closure of `PARENTS` rules).\r\n\t */\r\n\tANCESTORS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's descendants\r\n\t * (the transitive closure of `CHILDREN` rules).\r\n\t */\r\n\tDESCENDANTS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's siblings\r\n\t * (the union of `CHILDREN` of its `PARENTS`).\r\n\t */\r\n\tSIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's preceeding\r\n\t * siblings (the union of `CHILDREN` of its `PARENTS` which\r\n\t * appear before a reference to the rule).\r\n\t */\r\n\tPRECEEDING_SIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's following\r\n\t * siblings (the union of `CHILDREN` of its `PARENTS` which\r\n\t * appear after a reference to the rule).\r\n\t */\r\n\tFOLLOWING_SIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's preceeding\r\n\t * elements (rules which might end before the start of the specified rule\r\n\t * while parsing). This is calculated by taking the\r\n\t * `PRECEEDING_SIBLINGS` of the rule and each of its\r\n\t * `ANCESTORS`, along with the `DESCENDANTS` of those\r\n\t * elements.\r\n\t */\r\n\tPRECEEDING,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's following\r\n\t * elements (rules which might start after the end of the specified rule\r\n\t * while parsing). This is calculated by taking the\r\n\t * `FOLLOWING_SIBLINGS` of the rule and each of its\r\n\t * `ANCESTORS`, along with the `DESCENDANTS` of those\r\n\t * elements.\r\n\t */\r\n\tFOLLOWING,\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.2133685-07:00\r\n\r\nimport { ATNConfig } from \"./atn/ATNConfig\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\nimport { Interval } from \"./misc/Interval\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorListener} can be used to identify\r\n * certain potential correctness and performance problems in grammars. \"Reports\"\r\n * are made by calling {@link Parser#notifyErrorListeners} with the appropriate\r\n * message.\r\n *\r\n * * **Ambiguities**: These are cases where more than one path through the\r\n * grammar can match the input.\r\n * * **Weak context sensitivity**: These are cases where full-context\r\n * prediction resolved an SLL conflict to a unique alternative which equaled the\r\n * minimum alternative of the SLL conflict.\r\n * * **Strong (forced) context sensitivity**: These are cases where the\r\n * full-context prediction resolved an SLL conflict to a unique alternative,\r\n * *and* the minimum alternative of the SLL conflict was found to not be\r\n * a truly viable alternative. Two-stage parsing cannot be used for inputs where\r\n * this situation occurs.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class DiagnosticErrorListener implements ParserErrorListener {\r\n\r\n\t/**\r\n\t * Initializes a new instance of {@link DiagnosticErrorListener}, specifying\r\n\t * whether all ambiguities or only exact ambiguities are reported.\r\n\t *\r\n\t * @param exactOnly `true` to report only exact ambiguities, otherwise\r\n\t * `false` to report all ambiguities. Defaults to true.\r\n\t */\r\n\tconstructor(protected exactOnly: boolean = true) {\r\n\t\tthis.exactOnly = exactOnly;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t/*@NotNull*/\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined): void\r\n\t{\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAmbiguity(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\t@NotNull configs: ATNConfigSet): void {\r\n\t\tif (this.exactOnly && !exact) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet conflictingAlts: BitSet = this.getConflictingAlts(ambigAlts, configs);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportAmbiguity d=${decision}: ambigAlts=${conflictingAlts}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAttemptingFullContext(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\t@NotNull conflictState: SimulatorState): void {\r\n\t\tlet format: string = \"reportAttemptingFullContext d=%s, input='%s'\";\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportAttemptingFullContext d=${decision}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportContextSensitivity(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\t@NotNull acceptState: SimulatorState): void {\r\n\t\tlet format: string = \"reportContextSensitivity d=%s, input='%s'\";\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportContextSensitivity d=${decision}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\tprotected getDecisionDescription(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA): string {\r\n\t\tlet decision: number = dfa.decision;\r\n\t\tlet ruleIndex: number = dfa.atnStartState.ruleIndex;\r\n\r\n\t\tlet ruleNames: string[] = recognizer.ruleNames;\r\n\t\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\r\n\t\t\treturn decision.toString();\r\n\t\t}\r\n\r\n\t\tlet ruleName: string = ruleNames[ruleIndex];\r\n\t\tif (!ruleName) {\r\n\t\t\treturn decision.toString();\r\n\t\t}\r\n\r\n\t\treturn `${decision} (${ruleName})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of conflicting or ambiguous alternatives from a\r\n\t * configuration set, if that information was not already provided by the\r\n\t * parser.\r\n\t *\r\n\t * @param reportedAlts The set of conflicting or ambiguous alternatives, as\r\n\t * reported by the parser.\r\n\t * @param configs The conflicting or ambiguous configuration set.\r\n\t * @returns Returns `reportedAlts` if it is not `undefined`, otherwise\r\n\t * returns the set of alternatives represented in `configs`.\r\n\t */\r\n\t@NotNull\r\n\tprotected getConflictingAlts(reportedAlts: BitSet | undefined, @NotNull configs: ATNConfigSet): BitSet {\r\n\t\tif (reportedAlts != null) {\r\n\t\t\treturn reportedAlts;\r\n\t\t}\r\n\r\n\t\tlet result: BitSet = new BitSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\tresult.set(config.alt);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.9954566-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNType } from \"./atn/ATNType\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { LexerATNSimulator } from \"./atn/LexerATNSimulator\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\nexport class LexerInterpreter extends Lexer {\r\n\tprotected _grammarFileName: string;\r\n\tprotected _atn: ATN;\r\n\r\n\tprotected _ruleNames: string[];\r\n\tprotected _channelNames: string[];\r\n\tprotected _modeNames: string[];\r\n\t@NotNull\r\n\tprivate _vocabulary: Vocabulary;\r\n\r\n\tconstructor(grammarFileName: string, @NotNull vocabulary: Vocabulary, ruleNames: string[], channelNames: string[], modeNames: string[], atn: ATN, input: CharStream) {\r\n\t\tsuper(input);\r\n\r\n\t\tif (atn.grammarType !== ATNType.LEXER) {\r\n\t\t\tthrow new Error(\"IllegalArgumentException: The ATN must be a lexer ATN.\");\r\n\t\t}\r\n\r\n\t\tthis._grammarFileName = grammarFileName;\r\n\t\tthis._atn = atn;\r\n\r\n\t\tthis._ruleNames = ruleNames.slice(0);\r\n\t\tthis._channelNames = channelNames.slice(0);\r\n\t\tthis._modeNames = modeNames.slice(0);\r\n\t\tthis._vocabulary = vocabulary;\r\n\t\tthis._interp = new LexerATNSimulator(atn, this);\r\n\t}\r\n\r\n\t@Override\r\n\tget atn(): ATN {\r\n\t\treturn this._atn;\r\n\t}\r\n\r\n\t@Override\r\n\tget grammarFileName(): string {\r\n\t\treturn this._grammarFileName;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleNames(): string[] {\r\n\t\treturn this._ruleNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget channelNames(): string[] {\r\n\t\treturn this._channelNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget modeNames(): string[] {\r\n\t\treturn this._modeNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget vocabulary(): Vocabulary {\r\n\t\treturn this._vocabulary;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.9471863-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport * as Stubs from \"./misc/Stubs\";\r\nimport * as Exception from \"./RecognitionException\";\r\n\r\n/** How to emit recognition errors for parsers.\r\n */\r\nexport interface ParserErrorListener extends ANTLRErrorListener {\r\n\t/**\r\n\t * This method is called by the parser when a full-context prediction\r\n\t * results in an ambiguity.\r\n\t *\r\n\t * Each full-context prediction which does not result in a syntax error\r\n\t * will call either {@link #reportContextSensitivity} or\r\n\t * {@link #reportAmbiguity}.\r\n\t *\r\n\t * When `ambigAlts` is not `undefined`, it contains the set of potentially\r\n\t * viable alternatives identified by the prediction algorithm. When\r\n\t * `ambigAlts` is `undefined`, use\r\n\t * {@link ATNConfigSet#getRepresentedAlternatives} to obtain the represented\r\n\t * alternatives from the `configs` argument.\r\n\t *\r\n\t * When `exact` is `true`, *all* of the potentially\r\n\t * viable alternatives are truly viable, i.e. this is reporting an exact\r\n\t * ambiguity. When `exact` is `false`, *at least two* of\r\n\t * the potentially viable alternatives are viable for the current input, but\r\n\t * the prediction algorithm terminated as soon as it determined that at\r\n\t * least the *minimum* potentially viable alternative is truly\r\n\t * viable.\r\n\t *\r\n\t * When the {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} prediction\r\n\t * mode is used, the parser is required to identify exact ambiguities so\r\n\t * `exact` will always be `true`.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input input where the ambiguity was identified\r\n\t * @param exact `true` if the ambiguity is exactly known, otherwise\r\n\t * `false`. This is always `true` when\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} is used.\r\n\t * @param ambigAlts the potentially ambiguous alternatives, or `undefined`\r\n\t * to indicate that the potentially ambiguous alternatives are the complete\r\n\t * set of represented alternatives in `configs`\r\n\t * @param configs the ATN configuration set where the ambiguity was\r\n\t * identified\r\n\t */\r\n\treportAmbiguity?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tconfigs: ATNConfigSet) => void;\r\n\r\n\t/**\r\n\t * This method is called when an SLL conflict occurs and the parser is about\r\n\t * to use the full context information to make an LL decision.\r\n\t *\r\n\t * If one or more configurations in `configs` contains a semantic\r\n\t * predicate, the predicates are evaluated before this method is called. The\r\n\t * subset of alternatives which are still viable after predicates are\r\n\t * evaluated is reported in `conflictingAlts`.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input index where the SLL conflict occurred\r\n\t * @param conflictingAlts The specific conflicting alternatives. If this is\r\n\t * `undefined`, the conflicting alternatives are all alternatives\r\n\t * represented in `configs`.\r\n\t * @param conflictState the simulator state when the SLL conflict was\r\n\t * detected\r\n\t */\r\n\treportAttemptingFullContext?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tconflictState: SimulatorState) => void;\r\n\r\n\t/**\r\n\t * This method is called by the parser when a full-context prediction has a\r\n\t * unique result.\r\n\t *\r\n\t * Each full-context prediction which does not result in a syntax error\r\n\t * will call either {@link #reportContextSensitivity} or\r\n\t * {@link #reportAmbiguity}.\r\n\t *\r\n\t * For prediction implementations that only evaluate full-context\r\n\t * predictions when an SLL conflict is found (including the default\r\n\t * {@link ParserATNSimulator} implementation), this method reports cases\r\n\t * where SLL conflicts were resolved to unique full-context predictions,\r\n\t * i.e. the decision was context-sensitive. This report does not necessarily\r\n\t * indicate a problem, and it may appear even in completely unambiguous\r\n\t * grammars.\r\n\t *\r\n\t * `configs` may have more than one represented alternative if the\r\n\t * full-context prediction algorithm does not evaluate predicates before\r\n\t * beginning the full-context prediction. In all cases, the final prediction\r\n\t * is passed as the `prediction` argument.\r\n\t *\r\n\t * Note that the definition of \"context sensitivity\" in this method\r\n\t * differs from the concept in {@link DecisionInfo#contextSensitivities}.\r\n\t * This method reports all instances where an SLL conflict occurred but LL\r\n\t * parsing produced a unique result, whether or not that unique result\r\n\t * matches the minimum alternative in the SLL conflicting set.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input index where the context sensitivity was\r\n\t * finally determined\r\n\t * @param prediction the unambiguous result of the full-context prediction\r\n\t * @param acceptState the simulator state when the unambiguous prediction\r\n\t * was determined\r\n\t */\r\n\treportContextSensitivity?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\t/*@NotNull*/\r\n\t\tacceptState: SimulatorState) => void;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.4741196-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { Override } from \"./Decorators\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** A handy class for use with\r\n *\r\n * options {contextSuperClass=org.antlr.v4.runtime.RuleContextWithAltNum;}\r\n *\r\n * that provides a backing field / impl for the outer alternative number\r\n * matched for an internal parse tree node.\r\n *\r\n * I'm only putting into Java runtime as I'm certain I'm the only one that\r\n * will really every use this.\r\n */\r\nexport class RuleContextWithAltNum extends ParserRuleContext {\r\n\tprivate _altNumber: number;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\tconstructor(parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber !== undefined) {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tthis._altNumber = ATN.INVALID_ALT_NUMBER;\r\n\t}\r\n\r\n\t@Override\r\n\tget altNumber(): number {\r\n\t\treturn this._altNumber;\r\n\t}\r\n\r\n\t// @Override\r\n\tset altNumber(altNum: number) {\r\n\t\tthis._altNumber = altNum;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.6271221-07:00\r\n\r\nimport { Dependents } from \"./Dependents\";\r\nimport { Parser } from \"./Parser\";\r\n\r\n/**\r\n * Declares a dependency upon a grammar rule, along with a set of zero or more dependent rules.\r\n *\r\n * Version numbers within a grammar should be assigned on a monotonically increasing basis to allow for accurate\r\n * tracking of dependent rules.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport function RuleDependency(dependency: DependencySpecification) {\r\n\treturn (target: object, propertyKey: PropertyKey, propertyDescriptor: PropertyDescriptor) => {\r\n\t\t// intentionally empty\r\n\t};\r\n}\r\n\r\nexport interface DependencySpecification {\r\n\treadonly recognizer: { new (...args: any[]): Parser; };\r\n\r\n\treadonly rule: number;\r\n\r\n\treadonly version: number;\r\n\r\n\t/**\r\n\t * Specifies the set of grammar rules related to `rule` which the annotated element depends on. Even when absent\r\n\t * from this set, the annotated element is implicitly dependent upon the explicitly specified `rule`, which\r\n\t * corresponds to the `Dependents.SELF` element.\r\n\t *\r\n\t * By default, the annotated element is dependent upon the specified `rule` and its `Dependents.PARENTS`, i.e. the\r\n\t * rule within one level of context information. The parents are included since the most frequent assumption about a\r\n\t * rule is where it's used in the grammar.\r\n\t */\r\n\treadonly dependents?: Dependents[];\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.7170027-07:00\r\n\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport function RuleVersion(version: number) {\r\n\r\n\treturn (target: Parser, propertyKey: PropertyKey, propertyDescriptor: TypedPropertyDescriptor<(...args: any[]) => T>) => {\r\n\t\t// intentionally empty\r\n\t};\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.8783640-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/** The default mechanism for creating tokens. It's used by default in Lexer and\r\n * the error handling strategy (to create missing tokens). Notifying the parser\r\n * of a new factory means that it notifies its token source and error strategy.\r\n */\r\nexport interface TokenFactory {\r\n\t/** This is the method used to create tokens in the lexer and in the\r\n\t * error handling strategy. If text!=undefined, than the start and stop positions\r\n\t * are wiped to -1 in the text override is set in the CommonToken.\r\n\t */\r\n\t//@NotNull\r\n\tcreate(\r\n\t\t/*@NotNull*/\r\n\t\tsource: { source?: TokenSource, stream?: CharStream },\r\n\t\ttype: number,\r\n\t\ttext: string | undefined,\r\n\t\tchannel: number,\r\n\t\tstart: number,\r\n\t\tstop: number,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number): Token;\r\n\r\n\t/** Generically useful */\r\n\t//@NotNull\r\n\tcreateSimple(type: number, text: string): Token;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.9604200-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\n\r\n/**\r\n * A source of tokens must provide a sequence of tokens via {@link #nextToken()}\r\n * and also must reveal it's source of characters; {@link CommonToken}'s text is\r\n * computed from a {@link CharStream}; it only store indices into the char\r\n * stream.\r\n *\r\n * Errors from the lexer are never passed to the parser. Either you want to keep\r\n * going or you do not upon token recognition error. If you do not want to\r\n * continue lexing then you do not want to continue parsing. Just throw an\r\n * exception not under {@link RecognitionException} and Java will naturally toss\r\n * you all the way out of the recognizers. If you want to continue lexing then\r\n * you should not throw an exception to the parser--it has already requested a\r\n * token. Keep lexing until you get a valid one. Just report errors and keep\r\n * going, looking for a valid token.\r\n */\r\nexport interface TokenSource {\r\n\t/**\r\n\t * Return a {@link Token} object from your input stream (usually a\r\n\t * {@link CharStream}). Do not fail/return upon lexing error; keep chewing\r\n\t * on the characters until you get a good one; errors are not passed through\r\n\t * to the parser.\r\n\t */\r\n\t//@NotNull\r\n\tnextToken(): Token;\r\n\r\n\t/**\r\n\t * Get the line number for the current position in the input stream. The\r\n\t * first line in the input is line 1.\r\n\t *\r\n\t * @returns The line number for the current position in the input stream, or\r\n\t * 0 if the current token source does not track line numbers.\r\n\t */\r\n\treadonly line: number;\r\n\r\n\t/**\r\n\t * Get the index into the current line for the current position in the input\r\n\t * stream. The first character on a line has position 0.\r\n\t *\r\n\t * @returns The line number for the current position in the input stream, or\r\n\t * -1 if the current token source does not track character positions.\r\n\t */\r\n\treadonly charPositionInLine: number;\r\n\r\n\t/**\r\n\t * Get the {@link CharStream} from which this token source is currently\r\n\t * providing tokens.\r\n\t *\r\n\t * @returns The {@link CharStream} associated with the current position in\r\n\t * the input, or `undefined` if no input stream is available for the token\r\n\t * source.\r\n\t */\r\n\treadonly inputStream: CharStream | undefined;\r\n\r\n\t/**\r\n\t * Gets the name of the underlying input source. This method returns a\r\n\t * non-undefined, non-empty string. If such a name is not known, this method\r\n\t * returns {@link IntStream#UNKNOWN_SOURCE_NAME}.\r\n\t */\r\n\t//@NotNull\r\n\treadonly sourceName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the `TokenFactory` this token source is currently using for\r\n\t * creating `Token` objects from the input.\r\n\t */\r\n\t//@NotNull\r\n\ttokenFactory: TokenFactory;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:58.0433998-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * An {@link IntStream} whose symbols are {@link Token} instances.\r\n */\r\nexport interface TokenStream extends IntStream {\r\n\t/**\r\n\t * Get the `Token` instance associated with the value returned by `LA(k)`. This method has the same pre- and\r\n\t * post-conditions as `IntStream.LA`. In addition, when the preconditions of this method are met, the return value\r\n\t * is non-undefined and the value of `LT(k).type === LA(k)`.\r\n\t *\r\n\t * A `RangeError` is thrown if `k<0` and fewer than `-k` calls to `consume()` have occurred from the beginning of\r\n\t * the stream before calling this method.\r\n\t *\r\n\t * See `IntStream.LA`\r\n\t */\r\n\tLT(k: number): Token;\r\n\r\n\t/**\r\n\t * Get the `Token` instance associated with the value returned by `LA(k)`. This method has the same pre- and\r\n\t * post-conditions as `IntStream.LA`. In addition, when the preconditions of this method are met, the return value\r\n\t * is non-undefined and the value of `tryLT(k).type === LA(k)`.\r\n\t *\r\n\t * The return value is `undefined` if `k<0` and fewer than `-k` calls to `consume()` have occurred from the\r\n\t * beginning of the stream before calling this method.\r\n\t *\r\n\t * See `IntStream.LA`\r\n\t */\r\n\ttryLT(k: number): Token | undefined;\r\n\r\n\t/**\r\n\t * Gets the {@link Token} at the specified `index` in the stream. When\r\n\t * the preconditions of this method are met, the return value is non-undefined.\r\n\t *\r\n\t * The preconditions for this method are the same as the preconditions of\r\n\t * {@link IntStream#seek}. If the behavior of `seek(index)` is\r\n\t * unspecified for the current state and given `index`, then the\r\n\t * behavior of this method is also unspecified.\r\n\t *\r\n\t * The symbol referred to by `index` differs from `seek()` only\r\n\t * in the case of filtering streams where `index` lies before the end\r\n\t * of the stream. Unlike `seek()`, this method does not adjust\r\n\t * `index` to point to a non-ignored symbol.\r\n\t *\r\n\t * @throws IllegalArgumentException if {code index} is less than 0\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * retrieving the token at the specified index\r\n\t */\r\n\t//@NotNull\r\n\tget(i: number): Token;\r\n\r\n\t/**\r\n\t * Gets the underlying {@link TokenSource} which provides tokens for this\r\n\t * stream.\r\n\t */\r\n\t//@NotNull\r\n\treadonly tokenSource: TokenSource;\r\n\r\n\t/**\r\n\t * Return the text of all tokens within the specified `interval`. This\r\n\t * method behaves like the following code (including potential exceptions\r\n\t * for violating preconditions of {@link #get}, but may be optimized by the\r\n\t * specific implementation.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = \"\";\r\n\t * for (int i = interval.a; i <= interval.b; i++) {\r\n\t * text += stream.get(i).text;\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param interval The interval of tokens within this stream to get text\r\n\t * for.\r\n\t * @returns The text of all tokens within the specified interval in this\r\n\t * stream.\r\n\t *\r\n\t * @throws NullPointerException if `interval` is `undefined`\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ interval: Interval): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in the stream. This method behaves like the\r\n\t * following code, including potential exceptions from the calls to\r\n\t * {@link IntStream#size} and {@link #getText(Interval)}, but may be\r\n\t * optimized by the specific implementation.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = stream.getText(new Interval(0, stream.size));\r\n\t * ```\r\n\t *\r\n\t * @returns The text of all tokens in the stream.\r\n\t */\r\n\t//@NotNull\r\n\tgetText(): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in the source interval of the specified\r\n\t * context. This method behaves like the following code, including potential\r\n\t * exceptions from the call to {@link #getText(Interval)}, but may be\r\n\t * optimized by the specific implementation.\r\n\t *\r\n\t * If `ctx.sourceInterval` does not return a valid interval of\r\n\t * tokens provided by this stream, the behavior is unspecified.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = stream.getText(ctx.sourceInterval);\r\n\t * ```\r\n\t *\r\n\t * @param ctx The context providing the source interval of tokens to get\r\n\t * text for.\r\n\t * @returns The text of all tokens within the source interval of `ctx`.\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ ctx: RuleContext): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in this stream between `start` and\r\n\t * `stop` (inclusive).\r\n\t *\r\n\t * If the specified `start` or `stop` token was not provided by\r\n\t * this stream, or if the `stop` occurred before the `start`}\r\n\t * token, the behavior is unspecified.\r\n\t *\r\n\t * For streams which ensure that the `Token.tokenIndex` method is\r\n\t * accurate for all of its provided tokens, this method behaves like the\r\n\t * following code. Other streams may implement this method in other ways\r\n\t * provided the behavior is consistent with this at a high level.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = \"\";\r\n\t * for (int i = start.tokenIndex; i <= stop.tokenIndex; i++) {\r\n\t * text += stream.get(i).text;\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param start The first token in the interval to get text for.\r\n\t * @param stop The last token in the interval to get text for (inclusive).\r\n\t * @returns The text of all tokens lying between the specified `start`\r\n\t * and `stop` tokens.\r\n\t *\r\n\t * @throws UnsupportedOperationException if this stream does not support\r\n\t * this method for the specified tokens\r\n\t */\r\n\t//@NotNull\r\n\tgetTextFromRange(start: any, stop: any): string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:58.1768850-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\n/**\r\n * Useful for rewriting out a buffered input token stream after doing some\r\n * augmentation or other manipulations on it.\r\n *\r\n * You can insert stuff, replace, and delete chunks. Note that the operations\r\n * are done lazily--only if you convert the buffer to a {@link String} with\r\n * {@link TokenStream#getText()}. This is very efficient because you are not\r\n * moving data around all the time. As the buffer of tokens is converted to\r\n * strings, the {@link #getText()} method(s) scan the input token stream and\r\n * check to see if there is an operation at the current index. If so, the\r\n * operation is done and then normal {@link String} rendering continues on the\r\n * buffer. This is like having multiple Turing machine instruction streams\r\n * (programs) operating on a single input tape. :)\r\n *\r\n * This rewriter makes no modifications to the token stream. It does not ask the\r\n * stream to fill itself up nor does it advance the input cursor. The token\r\n * stream `TokenStream.index` will return the same value before and\r\n * after any {@link #getText()} call.\r\n *\r\n * The rewriter only works on tokens that you have in the buffer and ignores the\r\n * current input cursor. If you are buffering tokens on-demand, calling\r\n * {@link #getText()} halfway through the input will only do rewrites for those\r\n * tokens in the first half of the file.\r\n *\r\n * Since the operations are done lazily at {@link #getText}-time, operations do\r\n * not screw up the token index values. That is, an insert operation at token\r\n * index `i` does not change the index values for tokens\r\n * `i`+1..n-1.\r\n *\r\n * Because operations never actually alter the buffer, you may always get the\r\n * original token stream back without undoing anything. Since the instructions\r\n * are queued up, you can easily simulate transactions and roll back any changes\r\n * if there is an error just by removing instructions. For example,\r\n *\r\n * ```\r\n * CharStream input = new ANTLRFileStream(\"input\");\r\n * TLexer lex = new TLexer(input);\r\n * CommonTokenStream tokens = new CommonTokenStream(lex);\r\n * T parser = new T(tokens);\r\n * TokenStreamRewriter rewriter = new TokenStreamRewriter(tokens);\r\n * parser.startRule();\r\n * ```\r\n *\r\n * Then in the rules, you can execute (assuming rewriter is visible):\r\n *\r\n * ```\r\n * Token t,u;\r\n * ...\r\n * rewriter.insertAfter(t, \"text to put after t\");}\r\n * rewriter.insertAfter(u, \"text after u\");}\r\n * System.out.println(rewriter.getText());\r\n * ```\r\n *\r\n * You can also have multiple \"instruction streams\" and get multiple rewrites\r\n * from a single pass over the input. Just name the instruction streams and use\r\n * that name again when printing the buffer. This could be useful for generating\r\n * a C file and also its header file--all from the same buffer:\r\n *\r\n * ```\r\n * rewriter.insertAfter(\"pass1\", t, \"text to put after t\");}\r\n * rewriter.insertAfter(\"pass2\", u, \"text after u\");}\r\n * System.out.println(rewriter.getText(\"pass1\"));\r\n * System.out.println(rewriter.getText(\"pass2\"));\r\n * ```\r\n *\r\n * If you don't use named rewrite streams, a \"default\" stream is used as the\r\n * first example shows.\r\n */\r\nexport class TokenStreamRewriter {\r\n\tpublic static readonly DEFAULT_PROGRAM_NAME: string = \"default\";\r\n\tpublic static readonly PROGRAM_INIT_SIZE: number = 100;\r\n\tpublic static readonly MIN_TOKEN_INDEX: number = 0;\r\n\r\n\t/** Our source stream */\r\n\tprotected tokens: TokenStream;\r\n\r\n\t/** You may have multiple, named streams of rewrite operations.\r\n\t * I'm calling these things \"programs.\"\r\n\t * Maps String (name) → rewrite (List)\r\n\t */\r\n\tprotected programs: Map;\r\n\r\n\t/** Map String (program name) → Integer index */\r\n\tprotected lastRewriteTokenIndexes: Map;\r\n\r\n\tconstructor(tokens: TokenStream) {\r\n\t\tthis.tokens = tokens;\r\n\t\tthis.programs = new Map();\r\n\t\tthis.programs.set(TokenStreamRewriter.DEFAULT_PROGRAM_NAME, []);\r\n\t\tthis.lastRewriteTokenIndexes = new Map();\r\n\t}\r\n\r\n\tpublic getTokenStream(): TokenStream {\r\n\t\treturn this.tokens;\r\n\t}\r\n\r\n\tpublic rollback(instructionIndex: number): void;\r\n\t/** Rollback the instruction stream for a program so that\r\n\t * the indicated instruction (via instructionIndex) is no\r\n\t * longer in the stream. UNTESTED!\r\n\t */\r\n\tpublic rollback(instructionIndex: number, programName: string): void;\r\n\tpublic rollback(instructionIndex: number, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet is: RewriteOperation[] | undefined = this.programs.get(programName);\r\n\t\tif ( is != null ) {\r\n\t\t\tthis.programs.set(programName, is.slice(TokenStreamRewriter.MIN_TOKEN_INDEX, instructionIndex));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic deleteProgram(): void;\r\n\r\n\t/** Reset the program so that no instructions exist */\r\n\tpublic deleteProgram(programName: string): void;\r\n\tpublic deleteProgram(programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tthis.rollback(TokenStreamRewriter.MIN_TOKEN_INDEX, programName);\r\n\t}\r\n\r\n\tpublic insertAfter(t: Token, text: {}): void;\r\n\tpublic insertAfter(index: number, text: {}): void;\r\n\tpublic insertAfter(t: Token, text: {}, programName: string): void;\r\n\tpublic insertAfter(index: number, text: {}, programName: string): void;\r\n\tpublic insertAfter(tokenOrIndex: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet index: number;\r\n\t\tif (typeof tokenOrIndex === \"number\") {\r\n\t\t\tindex = tokenOrIndex;\r\n\t\t} else {\r\n\t\t\tindex = tokenOrIndex.tokenIndex;\r\n\t\t}\r\n\r\n\t\t// to insert after, just insert before next index (even if past end)\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op = new InsertAfterOp(this.tokens, index, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic insertBefore(t: Token, text: {}): void;\r\n\tpublic insertBefore(index: number, text: {}): void;\r\n\tpublic insertBefore(t: Token, text: {}, programName: string): void;\r\n\tpublic insertBefore(index: number, text: {}, programName: string): void;\r\n\tpublic insertBefore(tokenOrIndex: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet index: number;\r\n\t\tif (typeof tokenOrIndex === \"number\") {\r\n\t\t\tindex = tokenOrIndex;\r\n\t\t} else {\r\n\t\t\tindex = tokenOrIndex.tokenIndex;\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op: RewriteOperation = new InsertBeforeOp(this.tokens, index, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic replaceSingle(index: number, text: {}): void;\r\n\tpublic replaceSingle(indexT: Token, text: {}): void;\r\n\tpublic replaceSingle(index: Token | number, text: {}): void {\r\n\t\tif (typeof index === \"number\") {\r\n\t\t\tthis.replace(index, index, text);\r\n\t\t} else {\r\n\t\t\tthis.replace(index, index, text);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic replace(from: number, to: number, text: {}): void;\r\n\r\n\tpublic replace(from: Token, to: Token, text: {}): void;\r\n\r\n\tpublic replace(from: number, to: number, text: {}, programName: string): void;\r\n\r\n\tpublic replace(from: Token, to: Token, text: {}, programName: string): void;\r\n\r\n\tpublic replace(from: Token | number, to: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tif (typeof from !== \"number\") {\r\n\t\t\tfrom = from.tokenIndex;\r\n\t\t}\r\n\r\n\t\tif (typeof to !== \"number\") {\r\n\t\t\tto = to.tokenIndex;\r\n\t\t}\r\n\r\n\t\tif ( from > to || from < 0 || to < 0 || to >= this.tokens.size ) {\r\n\t\t\tthrow new RangeError(`replace: range invalid: ${from}..${to}(size=${this.tokens.size})`);\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op: RewriteOperation = new ReplaceOp(this.tokens, from, to, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic delete(index: number): void;\r\n\r\n\tpublic delete(from: number, to: number): void;\r\n\r\n\tpublic delete(indexT: Token): void;\r\n\r\n\tpublic delete(from: Token, to: Token): void;\r\n\r\n\tpublic delete(from: number, to: number, programName: string): void;\r\n\r\n\tpublic delete(from: Token, to: Token, programName: string): void;\r\n\r\n\tpublic delete(from: Token | number, to?: Token | number, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tif (to === undefined) {\r\n\t\t\tto = from;\r\n\t\t}\r\n\r\n\t\tif (typeof from === \"number\") {\r\n\t\t\tthis.replace(from, to as number, \"\", programName);\r\n\t\t} else {\r\n\t\t\tthis.replace(from, to as Token, \"\", programName);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getLastRewriteTokenIndex(): number;\r\n\r\n\tprotected getLastRewriteTokenIndex(programName: string): number;\r\n\r\n\tprotected getLastRewriteTokenIndex(programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): number {\r\n\t\tlet I: number | undefined = this.lastRewriteTokenIndexes.get(programName);\r\n\t\tif ( I == null ) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\treturn I;\r\n\t}\r\n\r\n\tprotected setLastRewriteTokenIndex(programName: string, i: number): void {\r\n\t\tthis.lastRewriteTokenIndexes.set(programName, i);\r\n\t}\r\n\r\n\tprotected getProgram(name: string): RewriteOperation[] {\r\n\t\tlet is: RewriteOperation[] | undefined = this.programs.get(name);\r\n\t\tif ( is == null ) {\r\n\t\t\tis = this.initializeProgram(name);\r\n\t\t}\r\n\r\n\t\treturn is;\r\n\t}\r\n\r\n\tprivate initializeProgram(name: string): RewriteOperation[] {\r\n\t\tlet is: RewriteOperation[] = [];\r\n\t\tthis.programs.set(name, is);\r\n\t\treturn is;\r\n\t}\r\n\r\n\t/** Return the text from the original tokens altered per the\r\n\t * instructions given to this rewriter.\r\n\t */\r\n\tpublic getText(): string;\r\n\r\n\t/** Return the text from the original tokens altered per the\r\n\t * instructions given to this rewriter in programName.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic getText(programName: string): string;\r\n\r\n\t/** Return the text associated with the tokens in the interval from the\r\n\t * original token stream but with the alterations given to this rewriter.\r\n\t * The interval refers to the indexes in the original token stream.\r\n\t * We do not alter the token stream in any way, so the indexes\r\n\t * and intervals are still consistent. Includes any operations done\r\n\t * to the first and last token in the interval. So, if you did an\r\n\t * insertBefore on the first token, you would get that insertion.\r\n\t * The same is true if you do an insertAfter the stop token.\r\n\t */\r\n\tpublic getText(interval: Interval): string;\r\n\r\n\tpublic getText(interval: Interval, programName: string): string;\r\n\r\n\tpublic getText(intervalOrProgram?: Interval | string, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): string {\r\n\t\tlet interval: Interval;\r\n\t\tif (intervalOrProgram instanceof Interval) {\r\n\t\t\tinterval = intervalOrProgram;\r\n\t\t} else {\r\n\t\t\tinterval = Interval.of(0, this.tokens.size - 1);\r\n\t\t}\r\n\r\n\t\tif (typeof intervalOrProgram === \"string\") {\r\n\t\t\tprogramName = intervalOrProgram;\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] | undefined = this.programs.get(programName);\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\r\n\t\t// ensure start/end are in range\r\n\t\tif ( stop > this.tokens.size - 1 ) {\r\n\t\t\tstop = this.tokens.size - 1;\r\n\t\t}\r\n\t\tif ( start < 0 ) {\r\n\t\t\tstart = 0;\r\n\t\t}\r\n\r\n\t\tif ( rewrites == null || rewrites.length === 0 ) {\r\n\t\t\treturn this.tokens.getText(interval); // no instructions to execute\r\n\t\t}\r\n\r\n\t\tlet buf: string[] = [];\r\n\r\n\t\t// First, optimize instruction stream\r\n\t\tlet indexToOp: Map = this.reduceToSingleOperationPerIndex(rewrites);\r\n\r\n\t\t// Walk buffer, executing instructions and emitting tokens\r\n\t\tlet i: number = start;\r\n\t\twhile ( i <= stop && i < this.tokens.size ) {\r\n\t\t\tlet op: RewriteOperation | undefined = indexToOp.get(i);\r\n\t\t\tindexToOp.delete(i); // remove so any left have index size-1\r\n\t\t\tlet t: Token = this.tokens.get(i);\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// no operation at that index, just dump token\r\n\t\t\t\tif ( t.type !== Token.EOF ) {\r\n\t\t\t\t\tbuf.push(String(t.text));\r\n\t\t\t\t}\r\n\t\t\t\ti++; // move to next token\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ti = op.execute(buf); // execute operation and skip\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// include stuff after end if it's last index in buffer\r\n\t\t// So, if they did an insertAfter(lastValidIndex, \"foo\"), include\r\n\t\t// foo if end==lastValidIndex.\r\n\t\tif ( stop === this.tokens.size - 1 ) {\r\n\t\t\t// Scan any remaining operations after last token\r\n\t\t\t// should be included (they will be inserts).\r\n\t\t\tfor (let op of indexToOp.values()) {\r\n\t\t\t\tif ( op.index >= this.tokens.size - 1 ) {\r\n\t\t\t\t\tbuf.push(op.text.toString());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn buf.join(\"\");\r\n\t}\r\n\r\n\t/** We need to combine operations and report invalid operations (like\r\n\t * overlapping replaces that are not completed nested). Inserts to\r\n\t * same index need to be combined etc... Here are the cases:\r\n\t *\r\n\t * I.i.u I.j.v\t\t\t\t\t\t\t\tleave alone, nonoverlapping\r\n\t * I.i.u I.i.v\t\t\t\t\t\t\t\tcombine: Iivu\r\n\t *\r\n\t * R.i-j.u R.x-y.v\t| i-j in x-y\t\t\tdelete first R\r\n\t * R.i-j.u R.i-j.v\t\t\t\t\t\t\tdelete first R\r\n\t * R.i-j.u R.x-y.v\t| x-y in i-j\t\t\tERROR\r\n\t * R.i-j.u R.x-y.v\t| boundaries overlap\tERROR\r\n\t *\r\n\t * Delete special case of replace (text==undefined):\r\n\t * D.i-j.u D.x-y.v\t| boundaries overlap\tcombine to max(min)..max(right)\r\n\t *\r\n\t * I.i.u R.x-y.v | i in (x+1)-y\t\t\tdelete I (since insert before\r\n\t * \t\t\t\t\t\t\t\t\t\t\twe're not deleting i)\r\n\t * I.i.u R.x-y.v | i not in (x+1)-y\t\tleave alone, nonoverlapping\r\n\t * R.x-y.v I.i.u | i in x-y\t\t\t\tERROR\r\n\t * R.x-y.v I.x.u \t\t\t\t\t\t\tR.x-y.uv (combine, delete I)\r\n\t * R.x-y.v I.i.u | i not in x-y\t\t\tleave alone, nonoverlapping\r\n\t *\r\n\t * I.i.u = insert u before op @ index i\r\n\t * R.x-y.u = replace x-y indexed tokens with u\r\n\t *\r\n\t * First we need to examine replaces. For any replace op:\r\n\t *\r\n\t * \t\t1. wipe out any insertions before op within that range.\r\n\t * \t\t2. Drop any replace op before that is contained completely within\r\n\t * \t that range.\r\n\t * \t\t3. Throw exception upon boundary overlap with any previous replace.\r\n\t *\r\n\t * Then we can deal with inserts:\r\n\t *\r\n\t * \t\t1. for any inserts to same index, combine even if not adjacent.\r\n\t * \t\t2. for any prior replace with same left boundary, combine this\r\n\t * \t insert with replace and delete this replace.\r\n\t * \t\t3. throw exception if index in same range as previous replace\r\n\t *\r\n\t * Don't actually delete; make op undefined in list. Easier to walk list.\r\n\t * Later we can throw as we add to index → op map.\r\n\t *\r\n\t * Note that I.2 R.2-2 will wipe out I.2 even though, technically, the\r\n\t * inserted stuff would be before the replace range. But, if you\r\n\t * add tokens in front of a method body '{' and then delete the method\r\n\t * body, I think the stuff before the '{' you added should disappear too.\r\n\t *\r\n\t * Return a map from token index to operation.\r\n\t */\r\n\tprotected reduceToSingleOperationPerIndex(rewrites: Array): Map {\r\n\t\t// console.log(`rewrites=[${Utils.join(rewrites, \", \")}]`);\r\n\r\n\t\t// WALK REPLACES\r\n\t\tfor (let i = 0; i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( !(op instanceof ReplaceOp) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet rop: ReplaceOp = op;\r\n\t\t\t// Wipe prior inserts within range\r\n\t\t\tlet inserts: InsertBeforeOp[] = this.getKindOfOps(rewrites, InsertBeforeOp, i);\r\n\t\t\tfor (let iop of inserts) {\r\n\t\t\t\tif ( iop.index === rop.index ) {\r\n\t\t\t\t\t// E.g., insert before 2, delete 2..2; update replace\r\n\t\t\t\t\t// text to include insert before, kill insert\r\n\t\t\t\t\trewrites[iop.instructionIndex] = undefined;\r\n\t\t\t\t\trop.text = iop.text.toString() + (rop.text != null ? rop.text.toString() : \"\");\r\n\t\t\t\t}\r\n\t\t\t\telse if ( iop.index > rop.index && iop.index <= rop.lastIndex ) {\r\n\t\t\t\t\t// delete insert as it's a no-op.\r\n\t\t\t\t\trewrites[iop.instructionIndex] = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Drop any prior replaces contained within\r\n\t\t\tlet prevReplaces: ReplaceOp[] = this.getKindOfOps(rewrites, ReplaceOp, i);\r\n\t\t\tfor (let prevRop of prevReplaces) {\r\n\t\t\t\tif ( prevRop.index >= rop.index && prevRop.lastIndex <= rop.lastIndex ) {\r\n\t\t\t\t\t// delete replace as it's a no-op.\r\n\t\t\t\t\trewrites[prevRop.instructionIndex] = undefined;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// throw exception unless disjoint or identical\r\n\t\t\t\tlet disjoint: boolean =\r\n\t\t\t\t\tprevRop.lastIndex < rop.index || prevRop.index > rop.lastIndex;\r\n\t\t\t\t// Delete special case of replace (text==null):\r\n\t\t\t\t// D.i-j.u D.x-y.v\t| boundaries overlap\tcombine to max(min)..max(right)\r\n\t\t\t\tif ( prevRop.text == null && rop.text == null && !disjoint ) {\r\n\t\t\t\t\t// console.log(`overlapping deletes: ${prevRop}, ${rop}`);\r\n\t\t\t\t\trewrites[prevRop.instructionIndex] = undefined; // kill first delete\r\n\t\t\t\t\trop.index = Math.min(prevRop.index, rop.index);\r\n\t\t\t\t\trop.lastIndex = Math.max(prevRop.lastIndex, rop.lastIndex);\r\n\t\t\t\t\t// console.log(`new rop ${rop}`);\r\n\t\t\t\t}\r\n\t\t\t\telse if ( !disjoint ) {\r\n\t\t\t\t\tthrow new Error(`replace op boundaries of ${rop} overlap with previous ${prevRop}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// WALK INSERTS\r\n\t\tfor (let i = 0; i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( !(op instanceof InsertBeforeOp) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet iop: InsertBeforeOp = op;\r\n\t\t\t// combine current insert with prior if any at same index\r\n\t\t\tlet prevInserts: InsertBeforeOp[] = this.getKindOfOps(rewrites, InsertBeforeOp, i);\r\n\t\t\tfor (let prevIop of prevInserts) {\r\n\t\t\t\tif ( prevIop.index === iop.index ) {\r\n\t\t\t\t\tif (prevIop instanceof InsertAfterOp) {\r\n\t\t\t\t\t\tiop.text = this.catOpText(prevIop.text, iop.text);\r\n\t\t\t\t\t\trewrites[prevIop.instructionIndex] = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (prevIop instanceof InsertBeforeOp) { // combine objects\r\n\t\t\t\t\t\t// convert to strings...we're in process of toString'ing\r\n\t\t\t\t\t\t// whole token buffer so no lazy eval issue with any templates\r\n\t\t\t\t\t\tiop.text = this.catOpText(iop.text, prevIop.text);\r\n\t\t\t\t\t\t// delete redundant prior insert\r\n\t\t\t\t\t\trewrites[prevIop.instructionIndex] = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// look for replaces where iop.index is in range; error\r\n\t\t\tlet prevReplaces: ReplaceOp[] = this.getKindOfOps(rewrites, ReplaceOp, i);\r\n\t\t\tfor (let rop of prevReplaces) {\r\n\t\t\t\tif ( iop.index === rop.index ) {\r\n\t\t\t\t\trop.text = this.catOpText(iop.text, rop.text);\r\n\t\t\t\t\trewrites[i] = undefined;\t// delete current insert\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif ( iop.index >= rop.index && iop.index <= rop.lastIndex ) {\r\n\t\t\t\t\tthrow new Error(`insert op ${iop} within boundaries of previous ${rop}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// console.log(`rewrites after=[${Utils.join(rewrites, \", \")}]`);\r\n\t\tlet m: Map = new Map();\r\n\t\tfor (let op of rewrites) {\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// ignore deleted ops\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( m.get(op.index) != null ) {\r\n\t\t\t\tthrow new Error(\"should only be one op per index\");\r\n\t\t\t}\r\n\t\t\tm.set(op.index, op);\r\n\t\t}\r\n\t\t// console.log(`index to op: ${m}`);\r\n\t\treturn m;\r\n\t}\r\n\r\n\tprotected catOpText(a: {}, b: {}): string {\r\n\t\tlet x: string = \"\";\r\n\t\tlet y: string = \"\";\r\n\t\tif ( a != null ) {\r\n\t\t\tx = a.toString();\r\n\t\t}\r\n\t\tif ( b != null ) {\r\n\t\t\ty = b.toString();\r\n\t\t}\r\n\t\treturn x + y;\r\n\t}\r\n\r\n\t/** Get all operations before an index of a particular kind */\r\n\tprotected getKindOfOps(rewrites: Array, kind: {new(...args: any[]): T}, before: number): T[] {\r\n\t\tlet ops: T[] = [];\r\n\t\tfor (let i = 0; i < before && i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// ignore deleted\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( op instanceof kind ) {\r\n\t\t\t\tops.push(op);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ops;\r\n\t}\r\n}\r\n\r\n// Define the rewrite operation hierarchy\r\n\r\nexport class RewriteOperation {\r\n\tprotected readonly tokens: TokenStream;\r\n\t/** What index into rewrites List are we? */\r\n\tpublic readonly instructionIndex: number;\r\n\t/** Token buffer index. */\r\n\tpublic index: number;\r\n\tpublic text: {};\r\n\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number);\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {});\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text?: {}) {\r\n\t\tthis.tokens = tokens;\r\n\t\tthis.instructionIndex = instructionIndex;\r\n\t\tthis.index = index;\r\n\t\tthis.text = text === undefined ? \"\" : text;\r\n\t}\r\n\r\n\t/** Execute the rewrite operation by possibly adding to the buffer.\r\n\t * Return the index of the next token to operate on.\r\n\t */\r\n\tpublic execute(buf: string[]): number {\r\n\t\treturn this.index;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet opName: string = this.constructor.name;\r\n\t\tlet $index = opName.indexOf(\"$\");\r\n\t\topName = opName.substring($index + 1, opName.length);\r\n\t\treturn \"<\" + opName + \"@\" + this.tokens.get(this.index) +\r\n\t\t\t\t\":\\\"\" + this.text + \"\\\">\";\r\n\t}\r\n}\r\n\r\nclass InsertBeforeOp extends RewriteOperation {\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, index, instructionIndex, text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic execute(buf: string[]): number {\r\n\t\tbuf.push(this.text.toString());\r\n\t\tif ( this.tokens.get(this.index).type !== Token.EOF ) {\r\n\t\t\tbuf.push(String(this.tokens.get(this.index).text));\r\n\t\t}\r\n\t\treturn this.index + 1;\r\n\t}\r\n}\r\n\r\n/** Distinguish between insert after/before to do the \"insert afters\"\r\n * first and then the \"insert befores\" at same index. Implementation\r\n * of \"insert after\" is \"insert before index+1\".\r\n */\r\nclass InsertAfterOp extends InsertBeforeOp {\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, index + 1, instructionIndex, text); // insert after is insert before index+1\r\n\t}\r\n}\r\n\r\n/** I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp\r\n * instructions.\r\n */\r\nclass ReplaceOp extends RewriteOperation {\r\n\tpublic lastIndex: number;\r\n\tconstructor(tokens: TokenStream, from: number, to: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, from, instructionIndex, text);\r\n\t\tthis.lastIndex = to;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic execute(buf: string[]): number {\r\n\t\tif ( this.text != null ) {\r\n\t\t\tbuf.push(this.text.toString());\r\n\t\t}\r\n\t\treturn this.lastIndex + 1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif ( this.text == null ) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.4986610-07:00\r\n\r\n/**\r\n * This interface provides information about the vocabulary used by a\r\n * recognizer.\r\n *\r\n * @see Recognizer.vocabulary\r\n * @author Sam Harwell\r\n */\r\nexport interface Vocabulary {\r\n\r\n\t/**\r\n\t * Returns the highest token type value. It can be used to iterate from\r\n\t * zero to that number, inclusively, thus querying all stored entries.\r\n\t * @returns the highest token type value\r\n\t */\r\n\treadonly maxTokenType: number;\r\n\r\n\t/**\r\n\t * Gets the string literal associated with a token type. The string returned\r\n\t * by this method, when not `undefined`, can be used unaltered in a parser\r\n\t * grammar to represent this token type.\r\n\t *\r\n\t * The following table shows examples of lexer rules and the literal\r\n\t * names assigned to the corresponding token types.\r\n\t *\r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t *
RuleLiteral NameJava String Literal
`THIS : 'this';``'this'``\"'this'\"`
`SQUOTE : '\\'';``'\\''``\"'\\\\''\"`
`ID : [A-Z]+;`n/a`undefined`
\r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The string literal associated with the specified token type, or\r\n\t * `undefined` if no string literal is associated with the type.\r\n\t */\r\n\tgetLiteralName(tokenType: number): string | undefined;\r\n\r\n\t/**\r\n\t * Gets the symbolic name associated with a token type. The string returned\r\n\t * by this method, when not `undefined`, can be used unaltered in a parser\r\n\t * grammar to represent this token type.\r\n\t *\r\n\t * This method supports token types defined by any of the following\r\n\t * methods:\r\n\t *\r\n\t * * Tokens created by lexer rules.\r\n\t * * Tokens defined in a `tokens{}` block in a lexer or parser\r\n\t * grammar.\r\n\t * * The implicitly defined `EOF` token, which has the token type\r\n\t * {@link Token#EOF}.\r\n\t *\r\n\t * The following table shows examples of lexer rules and the literal\r\n\t * names assigned to the corresponding token types.\r\n\t *\r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t *
RuleSymbolic Name
`THIS : 'this';``THIS`
`SQUOTE : '\\'';``SQUOTE`
`ID : [A-Z]+;``ID`
\r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The symbolic name associated with the specified token type, or\r\n\t * `undefined` if no symbolic name is associated with the type.\r\n\t */\r\n\tgetSymbolicName(tokenType: number): string | undefined;\r\n\r\n\t/**\r\n\t * Gets the display name of a token type.\r\n\t *\r\n\t * ANTLR provides a default implementation of this method, but\r\n\t * applications are free to override the behavior in any manner which makes\r\n\t * sense for the application. The default implementation returns the first\r\n\t * result from the following list which produces a non-`undefined`\r\n\t * result.\r\n\t *\r\n\t * 1. The result of {@link #getLiteralName}\r\n\t * 1. The result of {@link #getSymbolicName}\r\n\t * 1. The result of {@link Integer#toString}\r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The display name of the token type, for use in error reporting or\r\n\t * other user-visible messages which reference specific token types.\r\n\t */\r\n\t//@NotNull\r\n\tgetDisplayName(tokenType: number): string;\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.7015751-07:00\r\n\r\nimport { Token } from \"./Token\";\r\n\r\nexport interface WritableToken extends Token {\r\n\ttext: string | undefined;\r\n\r\n\ttype: number;\r\n\r\n\tline: number;\r\n\r\n\tcharPositionInLine: number;\r\n\r\n\tchannel: number;\r\n\r\n\ttokenIndex: number;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport * from \"./ANTLRErrorListener\";\r\nexport * from \"./ANTLRErrorStrategy\";\r\n// export * from \"./ANTLRFileStream\";\r\nexport * from \"./ANTLRInputStream\";\r\nexport * from \"./BailErrorStrategy\";\r\nexport * from \"./BufferedTokenStream\";\r\nexport * from \"./CharStream\";\r\nexport * from \"./CharStreams\";\r\nexport * from \"./CodePointBuffer\";\r\nexport * from \"./CodePointCharStream\";\r\nexport * from \"./CommonToken\";\r\nexport * from \"./CommonTokenFactory\";\r\nexport * from \"./CommonTokenStream\";\r\nexport * from \"./ConsoleErrorListener\";\r\nexport * from \"./DefaultErrorStrategy\";\r\nexport * from \"./Dependents\";\r\nexport * from \"./DiagnosticErrorListener\";\r\nexport * from \"./FailedPredicateException\";\r\nexport * from \"./InputMismatchException\";\r\nexport * from \"./InterpreterRuleContext\";\r\nexport * from \"./IntStream\";\r\nexport * from \"./Lexer\";\r\nexport * from \"./LexerInterpreter\";\r\nexport * from \"./LexerNoViableAltException\";\r\nexport * from \"./ListTokenSource\";\r\nexport * from \"./NoViableAltException\";\r\nexport * from \"./Parser\";\r\nexport * from \"./ParserErrorListener\";\r\nexport * from \"./ParserInterpreter\";\r\nexport * from \"./ParserRuleContext\";\r\nexport * from \"./ProxyErrorListener\";\r\nexport * from \"./ProxyParserErrorListener\";\r\nexport * from \"./RecognitionException\";\r\nexport * from \"./Recognizer\";\r\nexport * from \"./RuleContext\";\r\nexport * from \"./RuleContextWithAltNum\";\r\nexport * from \"./RuleDependency\";\r\nexport * from \"./RuleVersion\";\r\nexport * from \"./Token\";\r\nexport * from \"./TokenFactory\";\r\nexport * from \"./TokenSource\";\r\nexport * from \"./TokenStream\";\r\nexport * from \"./TokenStreamRewriter\";\r\n// export * from \"./UnbufferedCharStream\";\r\n// export * from \"./UnbufferedTokenStream\";\r\nexport * from \"./Vocabulary\";\r\nexport * from \"./VocabularyImpl\";\r\nexport * from \"./WritableToken\";\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.3092279-07:00\r\n\r\nimport { ErrorNode } from \"./ErrorNode\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\n\r\nexport abstract class AbstractParseTreeVisitor implements ParseTreeVisitor {\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation calls {@link ParseTree#accept} on the\r\n\t * specified tree.\r\n\t */\r\n\t@Override\r\n\tpublic visit(@NotNull tree: ParseTree): Result {\r\n\t\treturn tree.accept(this);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation initializes the aggregate result to\r\n\t * {@link #defaultResult defaultResult()}. Before visiting each child, it\r\n\t * calls {@link #shouldVisitNextChild shouldVisitNextChild}; if the result\r\n\t * is `false` no more children are visited and the current aggregate\r\n\t * result is returned. After visiting a child, the aggregate result is\r\n\t * updated by calling {@link #aggregateResult aggregateResult} with the\r\n\t * previous aggregate result and the result of visiting the child.\r\n\t *\r\n\t * The default implementation is not safe for use in visitors that modify\r\n\t * the tree structure. Visitors that modify the tree should override this\r\n\t * method to behave properly in respect to the specific algorithm in use.\r\n\t */\r\n\t@Override\r\n\tpublic visitChildren(@NotNull node: RuleNode): Result {\r\n\t\tlet result: Result = this.defaultResult();\r\n\t\tlet n: number = node.childCount;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tif (!this.shouldVisitNextChild(node, result)) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet c: ParseTree = node.getChild(i);\r\n\t\t\tlet childResult: Result = c.accept(this);\r\n\t\t\tresult = this.aggregateResult(result, childResult);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns the result of\r\n\t * {@link #defaultResult defaultResult}.\r\n\t */\r\n\t@Override\r\n\tpublic visitTerminal(@NotNull node: TerminalNode): Result {\r\n\t\treturn this.defaultResult();\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns the result of\r\n\t * {@link #defaultResult defaultResult}.\r\n\t */\r\n\t@Override\r\n\tpublic visitErrorNode(@NotNull node: ErrorNode): Result {\r\n\t\treturn this.defaultResult();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default value returned by visitor methods. This value is\r\n\t * returned by the default implementations of\r\n\t * {@link #visitTerminal visitTerminal}, {@link #visitErrorNode visitErrorNode}.\r\n\t * The default implementation of {@link #visitChildren visitChildren}\r\n\t * initializes its aggregate result to this value.\r\n\t *\r\n\t * @returns The default value returned by visitor methods.\r\n\t */\r\n\tprotected abstract defaultResult(): Result;\r\n\r\n\t/**\r\n\t * Aggregates the results of visiting multiple children of a node. After\r\n\t * either all children are visited or {@link #shouldVisitNextChild} returns\r\n\t * `false`, the aggregate value is returned as the result of\r\n\t * {@link #visitChildren}.\r\n\t *\r\n\t * The default implementation returns `nextResult`, meaning\r\n\t * {@link #visitChildren} will return the result of the last child visited\r\n\t * (or return the initial value if the node has no children).\r\n\t *\r\n\t * @param aggregate The previous aggregate value. In the default\r\n\t * implementation, the aggregate value is initialized to\r\n\t * {@link #defaultResult}, which is passed as the `aggregate` argument\r\n\t * to this method after the first child node is visited.\r\n\t * @param nextResult The result of the immediately preceeding call to visit\r\n\t * a child node.\r\n\t *\r\n\t * @returns The updated aggregate result.\r\n\t */\r\n\tprotected aggregateResult(aggregate: Result, nextResult: Result): Result {\r\n\t\treturn nextResult;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called after visiting each child in\r\n\t * {@link #visitChildren}. This method is first called before the first\r\n\t * child is visited; at that point `currentResult` will be the initial\r\n\t * value (in the default implementation, the initial value is returned by a\r\n\t * call to {@link #defaultResult}. This method is not called after the last\r\n\t * child is visited.\r\n\t *\r\n\t * The default implementation always returns `true`, indicating that\r\n\t * `visitChildren` should only return after all children are visited.\r\n\t * One reason to override this method is to provide a \"short circuit\"\r\n\t * evaluation option for situations where the result of visiting a single\r\n\t * child has the potential to determine the result of the visit operation as\r\n\t * a whole.\r\n\t *\r\n\t * @param node The {@link RuleNode} whose children are currently being\r\n\t * visited.\r\n\t * @param currentResult The current aggregate result of the children visited\r\n\t * to the current point.\r\n\t *\r\n\t * @returns `true` to continue visiting children. Otherwise return\r\n\t * `false` to stop visiting children and immediately return the\r\n\t * current aggregate result from {@link #visitChildren}.\r\n\t */\r\n\tprotected shouldVisitNextChild(@NotNull node: RuleNode, currentResult: Result): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction arrayToString(a) {\n return Array.isArray(a) ? (\"[\" + a.join(\", \") + \"]\") : \"null\";\n}\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n const key = this.toString();\n let h1b, k1;\n\n const remainder = key.length & 3; // key.length % 4\n const bytes = key.length - remainder;\n let h1 = String.prototype.seed;\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n let i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n\nfunction standardEqualsFunction(a, b) {\n return a ? a.equals(b) : a==b;\n}\n\nfunction standardHashCodeFunction(a) {\n return a ? a.hashCode() : -1;\n}\n\nclass Set {\n constructor(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n }\n\n add(value) {\n const hash = this.hashFunction(value);\n const key = \"hash_\" + hash;\n if (key in this.data) {\n const values = this.data[key];\n for (let i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n }\n\n contains(value) {\n return this.get(value) != null;\n }\n\n get(value) {\n const hash = this.hashFunction(value);\n const key = \"hash_\" + hash;\n if (key in this.data) {\n const values = this.data[key];\n for (let i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n }\n\n values() {\n let l = [];\n for (const key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n }\n\n toString() {\n return arrayToString(this.values());\n }\n\n get length(){\n let l = 0;\n for (const key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l + this.data[key].length;\n }\n }\n return l;\n }\n}\n\n\nclass BitSet {\n constructor() {\n this.data = [];\n }\n\n add(value) {\n this.data[value] = true;\n }\n\n or(set) {\n const bits = this;\n Object.keys(set.data).map(function (alt) {\n bits.add(alt);\n });\n }\n\n remove(value) {\n delete this.data[value];\n }\n\n contains(value) {\n return this.data[value] === true;\n }\n\n values() {\n return Object.keys(this.data);\n }\n\n minValue() {\n return Math.min.apply(null, this.values());\n }\n\n hashCode() {\n const hash = new Hash();\n hash.update(this.values());\n return hash.finish();\n }\n\n equals(other) {\n if (!(other instanceof BitSet)) {\n return false;\n }\n return this.hashCode() === other.hashCode();\n }\n\n toString() {\n return \"{\" + this.values().join(\", \") + \"}\";\n }\n\n get length(){\n return this.values().length;\n }\n}\n\n\nclass Map {\n constructor(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n }\n\n put(key, value) {\n const hashKey = \"hash_\" + this.hashFunction(key);\n if (hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n const oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n }\n\n containsKey(key) {\n const hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n }\n\n get(key) {\n const hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n }\n\n entries() {\n let l = [];\n for (const key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n }\n\n getKeys() {\n return this.entries().map(function(e) {\n return e.key;\n });\n }\n\n getValues() {\n return this.entries().map(function(e) {\n return e.value;\n });\n }\n\n toString() {\n const ss = this.entries().map(function(entry) {\n return '{' + entry.key + ':' + entry.value + '}';\n });\n return '[' + ss.join(\", \") + ']';\n }\n\n get length(){\n let l = 0;\n for (const hashKey in this.data) {\n if (hashKey.indexOf(\"hash_\") === 0) {\n l = l + this.data[hashKey].length;\n }\n }\n return l;\n }\n}\n\n\nclass AltDict {\n constructor() {\n this.data = {};\n }\n\n get(key) {\n key = \"k-\" + key;\n if (key in this.data) {\n return this.data[key];\n } else {\n return null;\n }\n }\n\n put(key, value) {\n key = \"k-\" + key;\n this.data[key] = value;\n }\n\n values() {\n const data = this.data;\n const keys = Object.keys(this.data);\n return keys.map(function (key) {\n return data[key];\n });\n }\n}\n\n\nclass DoubleDict {\n constructor(defaultMapCtor) {\n this.defaultMapCtor = defaultMapCtor || Map;\n this.cacheMap = new this.defaultMapCtor();\n }\n\n get(a, b) {\n const d = this.cacheMap.get(a) || null;\n return d === null ? null : (d.get(b) || null);\n }\n\n set(a, b, o) {\n let d = this.cacheMap.get(a) || null;\n if (d === null) {\n d = new this.defaultMapCtor();\n this.cacheMap.put(a, d);\n }\n d.put(b, o);\n }\n}\n\nclass Hash {\n constructor() {\n this.count = 0;\n this.hash = 0;\n }\n\n update() {\n for(let i=0;i>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n let hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n }\n\n finish() {\n let hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n }\n}\n\nfunction hashStuff() {\n const hash = new Hash();\n hash.update.apply(hash, arguments);\n return hash.finish();\n}\n\n\nfunction escapeWhitespace(s, escapeSpaces) {\n s = s.replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\");\n if (escapeSpaces) {\n s = s.replace(/ /g, \"\\u00B7\");\n }\n return s;\n}\n\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n}\n\nfunction equalArrays(a, b) {\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a === b)\n return true;\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i])\n continue;\n if (!a[i].equals || !a[i].equals(b[i]))\n return false;\n }\n return true;\n}\n\nmodule.exports = {\n Hash,\n Set,\n Map,\n BitSet,\n AltDict,\n DoubleDict,\n hashStuff,\n escapeWhitespace,\n arrayToString,\n titleCase,\n equalArrays\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * A token has properties: text, type, line, character position in the line\n * (so we can ignore tabs), token channel, index, and source from which\n * we obtained this token.\n */\nclass Token {\n\tconstructor() {\n\t\tthis.source = null;\n\t\tthis.type = null; // token type of the token\n\t\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\t\tthis.start = null; // optional; return -1 if not implemented.\n\t\tthis.stop = null; // optional; return -1 if not implemented.\n\t\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\t\tthis.line = null; // line=1..n of the 1st character\n\t\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\t\tthis._text = null; // text of the token.\n\t}\n\n\tgetTokenSource() {\n\t\treturn this.source[0];\n\t}\n\n\tgetInputStream() {\n\t\treturn this.source[1];\n\t}\n\n\tget text(){\n\t\treturn this._text;\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\nToken.INVALID_TYPE = 0;\n\n/**\n * During lookahead operations, this \"token\" signifies we hit rule end ATN state\n * and did not follow it despite needing to.\n */\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n/**\n * All tokens go to the parser (unless skip() is called in that rule)\n * on a particular \"channel\". The parser tunes to a particular channel\n * so that whitespace etc... can go to the parser on a \"hidden\" channel.\n */\nToken.DEFAULT_CHANNEL = 0;\n\n/**\n * Anything on different channel than DEFAULT_CHANNEL is not parsed\n * by parser.\n */\nToken.HIDDEN_CHANNEL = 1;\n\n\nclass CommonToken extends Token {\n\tconstructor(source, type, channel, start, stop) {\n\t\tsuper();\n\t\tthis.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n\t\tthis.type = type !== undefined ? type : null;\n\t\tthis.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n\t\tthis.start = start !== undefined ? start : -1;\n\t\tthis.stop = stop !== undefined ? stop : -1;\n\t\tthis.tokenIndex = -1;\n\t\tif (this.source[0] !== null) {\n\t\t\tthis.line = source[0].line;\n\t\t\tthis.column = source[0].column;\n\t\t} else {\n\t\t\tthis.column = -1;\n\t\t}\n\t}\n\n\t/**\n\t * Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n\t *\n\t *

\n\t * If {@code oldToken} is also a {@link CommonToken} instance, the newly\n\t * constructed token will share a reference to the {@link //text} field and\n\t * the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n\t * be assigned the result of calling {@link //getText}, and {@link //source}\n\t * will be constructed from the result of {@link Token//getTokenSource} and\n\t * {@link Token//getInputStream}.

\n\t *\n\t * @param oldToken The token to copy.\n\t */\n\tclone() {\n\t\tconst t = new CommonToken(this.source, this.type, this.channel, this.start, this.stop);\n\t\tt.tokenIndex = this.tokenIndex;\n\t\tt.line = this.line;\n\t\tt.column = this.column;\n\t\tt.text = this.text;\n\t\treturn t;\n\t}\n\n\ttoString() {\n\t\tlet txt = this.text;\n\t\tif (txt !== null) {\n\t\t\ttxt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n\t\t} else {\n\t\t\ttxt = \"\";\n\t\t}\n\t\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n\t\t\t\ttxt + \"',<\" + this.type + \">\" +\n\t\t\t\t(this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n\t\t\t\tthis.line + \":\" + this.column + \"]\";\n\t}\n\n\tget text(){\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t}\n\t\tconst input = this.getInputStream();\n\t\tif (input === null) {\n\t\t\treturn null;\n\t\t}\n\t\tconst n = input.size;\n\t\tif (this.start < n && this.stop < n) {\n\t\t\treturn input.getText(this.start, this.stop);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\n/**\n * An empty {@link Pair} which is used as the default value of\n * {@link //source} for tokens that do not have a source.\n */\nCommonToken.EMPTY_SOURCE = [ null, null ];\n\nmodule.exports = {\n\tToken,\n\tCommonToken\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst INITIAL_NUM_TRANSITIONS = 4;\n\n/**\n * The following images show the relation of states and\n * {@link ATNState//transitions} for various grammar constructs.\n *\n *
    \n *\n *
  • Solid edges marked with an &//0949; indicate a required\n * {@link EpsilonTransition}.
  • \n *\n *
  • Dashed edges indicate locations where any transition derived from\n * {@link Transition} might appear.
  • \n *\n *
  • Dashed nodes are place holders for either a sequence of linked\n * {@link BasicState} states or the inclusion of a block representing a nested\n * construct in one of the forms below.
  • \n *\n *
  • Nodes showing multiple outgoing alternatives with a {@code ...} support\n * any number of alternatives (one or more). Nodes without the {@code ...} only\n * support the exact number of alternatives shown in the diagram.
  • \n *\n *
\n *\n *

Basic Blocks

\n *\n *

Rule

\n *\n * \n *\n *

Block of 1 or more alternatives

\n *\n * \n *\n *

Greedy Loops

\n *\n *

Greedy Closure: {@code (...)*}

\n *\n * \n *\n *

Greedy Positive Closure: {@code (...)+}

\n *\n * \n *\n *

Greedy Optional: {@code (...)?}

\n *\n * \n *\n *

Non-Greedy Loops

\n *\n *

Non-Greedy Closure: {@code (...)*?}

\n *\n * \n *\n *

Non-Greedy Positive Closure: {@code (...)+?}

\n *\n * \n *\n *

Non-Greedy Optional: {@code (...)??}

\n *\n * \n */\nclass ATNState {\n constructor() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n }\n\n toString() {\n return this.stateNumber;\n }\n\n equals(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n }\n\n isNonGreedyExitState() {\n return false;\n }\n\n addTransition(trans, index) {\n if(index===undefined) {\n index = -1;\n }\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n }\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\n\nclass BasicState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.BASIC;\n }\n}\n\nclass DecisionState extends ATNState {\n constructor() {\n super();\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n }\n}\n\n/**\n * The start of a regular {@code (...)} block\n */\nclass BlockStartState extends DecisionState {\n constructor() {\n super();\n this.endState = null;\n return this;\n }\n}\n\nclass BasicBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.BLOCK_START;\n return this;\n }\n}\n\n/**\n * Terminal node of a simple {@code (a|b|c)} block\n */\nclass BlockEndState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n }\n}\n\n/**\n * The last node in the ATN for a rule, unless that rule is the start symbol.\n * In that case, there is one transition to EOF. Later, we might encode\n * references to all calls to this rule to compute FOLLOW sets for\n * error handling\n */\nclass RuleStopState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.RULE_STOP;\n return this;\n }\n}\n\nclass RuleStartState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.RULE_START;\n this.stopState = null;\n this.isPrecedenceRule = false;\n return this;\n }\n}\n\n/**\n * Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n * one to the loop back to start of the block and one to exit.\n */\nclass PlusLoopbackState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.PLUS_LOOP_BACK;\n return this;\n }\n}\n\n/**\n * Start of {@code (A|B|...)+} loop. Technically a decision state, but\n * we don't use for code generation; somebody might need it, so I'm defining\n * it for completeness. In reality, the {@link PlusLoopbackState} node is the\n * real decision-making note for {@code A+}\n */\nclass PlusBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n }\n}\n\n/**\n * The block that begins a closure loop\n */\nclass StarBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_BLOCK_START;\n return this;\n }\n}\n\nclass StarLoopbackState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_LOOP_BACK;\n return this;\n }\n}\n\nclass StarLoopEntryState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n }\n}\n\n/**\n * Mark the end of a * or + loop\n */\nclass LoopEndState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.LOOP_END;\n this.loopBackState = null;\n return this;\n }\n}\n\n/**\n * The Tokens rule start state linking to each lexer rule start state\n */\nclass TokensStartState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.TOKEN_START;\n return this;\n }\n}\n\nmodule.exports = {\n ATNState,\n BasicState,\n DecisionState,\n BlockStartState,\n BlockEndState,\n LoopEndState,\n RuleStartState,\n RuleStopState,\n TokensStartState,\n PlusLoopbackState,\n StarLoopbackState,\n StarLoopEntryState,\n PlusBlockStartState,\n StarBlockStartState,\n BasicBlockStartState\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst { Set, Hash, equalArrays } = require('./../Utils');\n\n/**\n * A tree structure used to record the semantic context in which\n * an ATN configuration is valid. It's either a single predicate,\n * a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n *\n *

I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n * {@link SemanticContext} within the scope of this outer class.

\n */\nclass SemanticContext {\n\n\thashCode() {\n\t\tconst hash = new Hash();\n\t\tthis.updateHashCode(hash);\n\t\treturn hash.finish();\n\t}\n\n\t/**\n\t * For context independent predicates, we evaluate them without a local\n\t * context (i.e., null context). That way, we can evaluate them without\n\t * having to create proper rule-specific context during prediction (as\n\t * opposed to the parser, which creates them naturally). In a practical\n\t * sense, this avoids a cast exception from RuleContext to myruleContext.\n\t *\n\t *

For context dependent predicates, we must pass in a local context so that\n\t * references such as $arg evaluate properly as _localctx.arg. We only\n\t * capture context dependent predicates in the context in which we begin\n\t * prediction, so we passed in the outer context here in case of context\n\t * dependent predicate evaluation.

\n\t */\n\tevaluate(parser, outerContext) {}\n\n\t/**\n\t * Evaluate the precedence predicates for the context and reduce the result.\n\t *\n\t * @param parser The parser instance.\n\t * @param outerContext The current parser context object.\n\t * @return The simplified semantic context after precedence predicates are\n\t * evaluated, which will be one of the following values.\n\t *
    \n\t *
  • {@link //NONE}: if the predicate simplifies to {@code true} after\n\t * precedence predicates are evaluated.
  • \n\t *
  • {@code null}: if the predicate simplifies to {@code false} after\n\t * precedence predicates are evaluated.
  • \n\t *
  • {@code this}: if the semantic context is not changed as a result of\n\t * precedence predicate evaluation.
  • \n\t *
  • A non-{@code null} {@link SemanticContext}: the new simplified\n\t * semantic context after precedence predicates are evaluated.
  • \n\t *
\n\t */\n\tevalPrecedence(parser, outerContext) {\n\t\treturn this;\n\t}\n\n\tstatic andContext(a, b) {\n\t\tif (a === null || a === SemanticContext.NONE) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null || b === SemanticContext.NONE) {\n\t\t\treturn a;\n\t\t}\n\t\tconst result = new AND(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tstatic orContext(a, b) {\n\t\tif (a === null) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null) {\n\t\t\treturn a;\n\t\t}\n\t\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tconst result = new OR(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\n\nclass Predicate extends SemanticContext {\n\n\tconstructor(ruleIndex, predIndex, isCtxDependent) {\n\t\tsuper();\n\t\tthis.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n\t\tthis.predIndex = predIndex === undefined ? -1 : predIndex;\n\t\tthis.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n\t}\n\n\tevaluate(parser, outerContext) {\n\t\tconst localctx = this.isCtxDependent ? outerContext : null;\n\t\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof Predicate)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn this.ruleIndex === other.ruleIndex &&\n\t\t\t\t\tthis.predIndex === other.predIndex &&\n\t\t\t\t\tthis.isCtxDependent === other.isCtxDependent;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n\t}\n}\n\n/**\n * The default {@link SemanticContext}, which is semantically equivalent to\n * a predicate of the form {@code {true}?}\n */\nSemanticContext.NONE = new Predicate();\n\n\nclass PrecedencePredicate extends SemanticContext {\n\n\tconstructor(precedence) {\n\t\tsuper();\n\t\tthis.precedence = precedence === undefined ? 0 : precedence;\n\t}\n\n\tevaluate(parser, outerContext) {\n\t\treturn parser.precpred(outerContext, this.precedence);\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tif (parser.precpred(outerContext, this.precedence)) {\n\t\t\treturn SemanticContext.NONE;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tcompareTo(other) {\n\t\treturn this.precedence - other.precedence;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.precedence);\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof PrecedencePredicate)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn this.precedence === other.precedence;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn \"{\" + this.precedence + \">=prec}?\";\n\t}\n\n\tstatic filterPrecedencePredicates(set) {\n\t\tconst result = [];\n\t\tset.values().map( function(context) {\n\t\t\tif (context instanceof PrecedencePredicate) {\n\t\t\t\tresult.push(context);\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n}\n\nclass AND extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever none of the contained contexts\n\t * is false\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new Set();\n\t\tif (a instanceof AND) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof AND) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\t\tconst precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the lowest precedence\n\t\t\tlet reduced = null;\n\t\t\tprecedencePredicates.map( function(p) {\n\t\t\t\tif(reduced===null || p.precedence\n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.

\n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === null) {\n\t\t\t\t// The AND context is false if any element is false\n\t\t\t\treturn null;\n\t\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t\t// Reduce the result by skipping true elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were true, so the AND context is true\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tlet result = null;\n\t\toperands.map(function(o) {\n\t\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"&&\");\n\t}\n}\n\n\nclass OR extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever at least one of the contained\n\t * contexts is true\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new Set();\n\t\tif (a instanceof OR) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof OR) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\n\t\tconst precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the highest precedence\n\t\t\tconst s = precedencePredicates.sort(function(a, b) {\n\t\t\t\treturn a.compareTo(b);\n\t\t\t});\n\t\t\tconst reduced = s[s.length-1];\n\t\t\toperands.add(reduced);\n\t\t}\n\t\tthis.opnds = Array.from(operands.values());\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof OR)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn equalArrays(this.opnds, other.opnds);\n\t\t}\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.opnds, \"OR\");\n\t}\n\n\t/**\n\t *

\n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.

\n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t\t// The OR context is true if any element is true\n\t\t\t\treturn SemanticContext.NONE;\n\t\t\t} else if (evaluated !== null) {\n\t\t\t\t// Reduce the result by skipping false elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were false, so the OR context is false\n\t\t\treturn null;\n\t\t}\n\t\tconst result = null;\n\t\toperands.map(function(o) {\n\t\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"||\");\n\t}\n}\n\nmodule.exports = {\n\tSemanticContext,\n\tPrecedencePredicate,\n\tPredicate\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {DecisionState} = require('./ATNState');\nconst {SemanticContext} = require('./SemanticContext');\nconst {Hash} = require(\"../Utils\");\n\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tconst result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tconst props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nclass ATNConfig {\n /**\n * @param {Object} params A tuple: (ATN state, predicted alt, syntactic, semantic context).\n * The syntactic context is a graph-structured stack node whose\n * path(s) to the root is the rule invocation(s)\n * chain used to arrive at the state. The semantic context is\n * the tree of semantic predicates encountered before reaching\n * an ATN state\n */\n constructor(params, config) {\n this.checkContext(params, config);\n params = checkParams(params);\n config = checkParams(config, true);\n // The ATN state associated with this configuration///\n this.state = params.state!==null ? params.state : config.state;\n // What alt (or lexer rule) is predicted by this configuration///\n this.alt = params.alt!==null ? params.alt : config.alt;\n /**\n * The stack of invoking states leading to the rule/states associated\n * with this config. We track only those contexts pushed during\n * execution of the ATN simulator\n */\n this.context = params.context!==null ? params.context : config.context;\n this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n // TODO: make it a boolean then\n /**\n * We cannot execute predicates dependent upon local context unless\n * we know for sure we are in the correct context. Because there is\n * no way to do this efficiently, we simply cannot evaluate\n * dependent predicates unless we are in the rule that initially\n * invokes the ATN simulator.\n * closure() tracks the depth of how far we dip into the\n * outer context: depth > 0. Note that it may not be totally\n * accurate depth since I don't ever decrement\n */\n this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n }\n\n checkContext(params, config) {\n if((params.context===null || params.context===undefined) &&\n (config===null || config.context===null || config.context===undefined)) {\n this.context = null;\n }\n }\n\n hashCode() {\n const hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n }\n\n updateHashCode(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n }\n\n /**\n * An ATN configuration is equal to another if both have\n * the same state, they predict the same alternative, and\n * syntactic/semantic contexts are the same\n */\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n this.semanticContext.equals(other.semanticContext) &&\n this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n }\n }\n\n hashCodeForConfigSet() {\n const hash = new Hash();\n hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n return hash.finish();\n }\n\n equalsForConfigSet(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n this.semanticContext.equals(other.semanticContext);\n }\n }\n\n toString() {\n return \"(\" + this.state + \",\" + this.alt +\n (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n (this.semanticContext !== SemanticContext.NONE ?\n (\",\" + this.semanticContext.toString())\n : \"\") +\n (this.reachesIntoOuterContext>0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n }\n}\n\n\nclass LexerATNConfig extends ATNConfig {\n constructor(params, config) {\n super(params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n const lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n this.equalsForConfigSet = LexerATNConfig.prototype.equals;\n return this;\n }\n\n updateHashCode(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n }\n\n equals(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n super.equals(other));\n }\n\n checkNonGreedyDecision(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n }\n}\n\n\nmodule.exports.ATNConfig = ATNConfig;\nmodule.exports.LexerATNConfig = LexerATNConfig;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\n\n/* stop is not included! */\nclass Interval {\n\tconstructor(start, stop) {\n\t\tthis.start = start;\n\t\tthis.stop = stop;\n\t}\n\n\tcontains(item) {\n\t\treturn item >= this.start && item < this.stop;\n\t}\n\n\ttoString() {\n\t\tif(this.start===this.stop-1) {\n\t\t\treturn this.start.toString();\n\t\t} else {\n\t\t\treturn this.start.toString() + \"..\" + (this.stop-1).toString();\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn this.stop - this.start;\n\t}\n}\n\n\nclass IntervalSet {\n\tconstructor() {\n\t\tthis.intervals = null;\n\t\tthis.readOnly = false;\n\t}\n\n\tfirst(v) {\n\t\tif (this.intervals === null || this.intervals.length===0) {\n\t\t\treturn Token.INVALID_TYPE;\n\t\t} else {\n\t\t\treturn this.intervals[0].start;\n\t\t}\n\t}\n\n\taddOne(v) {\n\t\tthis.addInterval(new Interval(v, v + 1));\n\t}\n\n\taddRange(l, h) {\n\t\tthis.addInterval(new Interval(l, h + 1));\n\t}\n\n\taddInterval(toAdd) {\n\t\tif (this.intervals === null) {\n\t\t\tthis.intervals = [];\n\t\t\tthis.intervals.push(toAdd);\n\t\t} else {\n\t\t\t// find insert pos\n\t\t\tfor (let pos = 0; pos < this.intervals.length; pos++) {\n\t\t\t\tconst existing = this.intervals[pos];\n\t\t\t\t// distinct range -> insert\n\t\t\t\tif (toAdd.stop < existing.start) {\n\t\t\t\t\tthis.intervals.splice(pos, 0, toAdd);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// contiguous range -> adjust\n\t\t\t\telse if (toAdd.stop === existing.start) {\n\t\t\t\t\tthis.intervals[pos].start = toAdd.start;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// overlapping range -> adjust and reduce\n\t\t\t\telse if (toAdd.start <= existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(Math.min(existing.start, toAdd.start), Math.max(existing.stop, toAdd.stop));\n\t\t\t\t\tthis.reduce(pos);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// greater than any existing\n\t\t\tthis.intervals.push(toAdd);\n\t\t}\n\t}\n\n\taddSet(other) {\n\t\tif (other.intervals !== null) {\n\t\t\tother.intervals.forEach( toAdd => this.addInterval(toAdd), this);\n\t\t}\n\t\treturn this;\n\t}\n\n\treduce(pos) {\n\t\t// only need to reduce if pos is not the last\n\t\tif (pos < this.intervals.length - 1) {\n\t\t\tconst current = this.intervals[pos];\n\t\t\tconst next = this.intervals[pos + 1];\n\t\t\t// if next contained in current\n\t\t\tif (current.stop >= next.stop) {\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t\tthis.reduce(pos);\n\t\t\t} else if (current.stop >= next.start) {\n\t\t\t\tthis.intervals[pos] = new Interval(current.start, next.stop);\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tcomplement(start, stop) {\n\t\tconst result = new IntervalSet();\n\t\tresult.addInterval(new Interval(start,stop+1));\n\t\tif(this.intervals !== null)\n\t\t\tthis.intervals.forEach(toRemove => result.removeRange(toRemove));\n\t\treturn result;\n\t}\n\n\tcontains(item) {\n\t\tif (this.intervals === null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tfor (let k = 0; k < this.intervals.length; k++) {\n\t\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tremoveRange(toRemove) {\n\t\tif(toRemove.start===toRemove.stop-1) {\n\t\t\tthis.removeOne(toRemove.start);\n\t\t} else if (this.intervals !== null) {\n\t\t\tlet pos = 0;\n\t\t\tfor(let n=0; nexisting.start && toRemove.stop=existing.stop) {\n\t\t\t\t\tthis.intervals.splice(pos, 1);\n\t\t\t\t\tpos = pos - 1; // need another pass\n\t\t\t\t}\n\t\t\t\t// check for lower boundary\n\t\t\t\telse if(toRemove.start\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'..'\" + String.fromCharCode(existing.stop-1) + \"'\");\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoIndexString() {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tif(existing.stop===existing.start+1) {\n\t\t\t\tif ( existing.start===Token.EOF ) {\n\t\t\t\t\tnames.push(\"\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(existing.start.toString());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(existing.start.toString() + \"..\" + (existing.stop-1).toString());\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoTokenString(literalNames, symbolicNames) {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tfor (let j = existing.start; j < existing.stop; j++) {\n\t\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\telementName(literalNames, symbolicNames, token) {\n\t\tif (token === Token.EOF) {\n\t\t\treturn \"\";\n\t\t} else if (token === Token.EPSILON) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\treturn literalNames[token] || symbolicNames[token];\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn this.intervals.map( interval => interval.length ).reduce((acc, val) => acc + val);\n\t}\n}\n\nmodule.exports = {\n\tInterval,\n\tIntervalSet\n};\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./../Token');\nconst {IntervalSet} = require('./../IntervalSet');\nconst {Predicate, PrecedencePredicate} = require('./SemanticContext');\n\n/**\n * An ATN transition between any two ATN states. Subclasses define\n * atom, set, epsilon, action, predicate, rule transitions.\n *\n *

This is a one way link. It emanates from a state (usually via a list of\n * transitions) and has a target state.

\n *\n *

Since we never have to change the ATN transitions once we construct it,\n * we can fix these transitions as specific classes. The DFA transitions\n * on the other hand need to update the labels as it adds transitions to\n * the states. We'll use the term Edge for the DFA to distinguish them from\n * ATN transitions.

\n */\nclass Transition {\n constructor(target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n }\n}\n\n// constants for serialization\n\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\n// e.g., {isType(input.LT(1))}?\nTransition.PREDICATE = 4;\nTransition.ATOM = 5;\nTransition.ACTION = 6;\n// ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.SET = 7;\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n\n// TODO: make all transitions sets? no, should remove set edges\n\nclass AtomTransition extends Transition {\n constructor(target, label) {\n super(target);\n // The token type or character value; or, signifies special label.\n this.label_ = label;\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n }\n\n makeLabel() {\n const s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n }\n\n toString() {\n return this.label_;\n }\n}\n\n\nclass RuleTransition extends Transition {\n constructor(ruleStart, ruleIndex, precedence, followState) {\n super(ruleStart);\n // ptr to the rule definition object for this rule ref\n this.ruleIndex = ruleIndex;\n this.precedence = precedence;\n // what node to begin computations following ref to rule\n this.followState = followState;\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n}\n\nclass EpsilonTransition extends Transition {\n constructor(target, outermostPrecedenceReturn) {\n super(target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n toString() {\n return \"epsilon\";\n }\n}\n\n\nclass RangeTransition extends Transition {\n constructor(target, start, stop) {\n super(target);\n this.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n }\n\n makeLabel() {\n const s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= this.start && symbol <= this.stop;\n }\n\n toString() {\n return \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n }\n}\n\n\nclass AbstractPredicateTransition extends Transition {\n constructor(target) {\n super(target);\n }\n}\n\nclass PredicateTransition extends AbstractPredicateTransition {\n constructor(target, ruleIndex, predIndex, isCtxDependent) {\n super(target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n getPredicate() {\n return new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n }\n\n toString() {\n return \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n }\n}\n\n\nclass ActionTransition extends Transition {\n constructor(target, ruleIndex, actionIndex, isCtxDependent) {\n super(target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n toString() {\n return \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n }\n}\n\n\n// A transition containing a set of values.\nclass SetTransition extends Transition {\n constructor(target, set) {\n super(target);\n this.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label.contains(symbol);\n }\n\n toString() {\n return this.label.toString();\n }\n}\n\nclass NotSetTransition extends SetTransition {\n constructor(target, set) {\n super(target, set);\n this.serializationType = Transition.NOT_SET;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n !super.matches(symbol, minVocabSymbol, maxVocabSymbol);\n }\n\n toString() {\n return '~' + super.toString();\n }\n}\n\nclass WildcardTransition extends Transition {\n constructor(target) {\n super(target);\n this.serializationType = Transition.WILDCARD;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n }\n\n toString() {\n return \".\";\n }\n}\n\nclass PrecedencePredicateTransition extends AbstractPredicateTransition {\n constructor(target, precedence) {\n super(target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n getPredicate() {\n return new PrecedencePredicate(this.precedence);\n }\n\n toString() {\n return this.precedence + \" >= _p\";\n }\n}\n\nmodule.exports = {\n Transition,\n AtomTransition,\n SetTransition,\n NotSetTransition,\n RuleTransition,\n ActionTransition,\n EpsilonTransition,\n RangeTransition,\n WildcardTransition,\n PredicateTransition,\n PrecedencePredicateTransition,\n AbstractPredicateTransition\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./../Token');\nconst {Interval} = require('./../IntervalSet');\nconst INVALID_INTERVAL = new Interval(-1, -2);\n\n/**\n * The basic notion of a tree has a parent, a payload, and a list of children.\n * It is the most abstract interface for all the trees used by ANTLR.\n */\nclass Tree {}\n\nclass SyntaxTree extends Tree {\n\tconstructor() {\n\t\tsuper();\n\t}\n}\n\nclass ParseTree extends SyntaxTree {\n\tconstructor() {\n\t\tsuper();\n\t}\n}\n\nclass RuleNode extends ParseTree {\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tgetRuleContext(){\n\t\tthrow new Error(\"missing interface implementation\")\n\t}\n}\n\nclass TerminalNode extends ParseTree {\n\tconstructor() {\n\t\tsuper();\n\t}\n}\n\nclass ErrorNode extends TerminalNode {\n\tconstructor() {\n\t\tsuper();\n\t}\n}\n\nclass ParseTreeVisitor {\n\tvisit(ctx) {\n\t\t if (Array.isArray(ctx)) {\n\t\t\treturn ctx.map(function(child) {\n\t\t\t\treturn child.accept(this);\n\t\t\t}, this);\n\t\t} else {\n\t\t\treturn ctx.accept(this);\n\t\t}\n\t}\n\n\tvisitChildren(ctx) {\n\t\tif (ctx.children) {\n\t\t\treturn this.visit(ctx.children);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tvisitTerminal(node) {\n\t}\n\n\tvisitErrorNode(node) {\n\t}\n}\n\nclass ParseTreeListener {\n\tvisitTerminal(node) {\n\t}\n\n\tvisitErrorNode(node) {\n\t}\n\n\tenterEveryRule(node) {\n\t}\n\n\texitEveryRule(node) {\n\t}\n}\n\nclass TerminalNodeImpl extends TerminalNode {\n\tconstructor(symbol) {\n\t\tsuper();\n\t\tthis.parentCtx = null;\n\t\tthis.symbol = symbol;\n\t}\n\n\tgetChild(i) {\n\t\treturn null;\n\t}\n\n\tgetSymbol() {\n\t\treturn this.symbol;\n\t}\n\n\tgetParent() {\n\t\treturn this.parentCtx;\n\t}\n\n\tgetPayload() {\n\t\treturn this.symbol;\n\t}\n\n\tgetSourceInterval() {\n\t\tif (this.symbol === null) {\n\t\t\treturn INVALID_INTERVAL;\n\t\t}\n\t\tconst tokenIndex = this.symbol.tokenIndex;\n\t\treturn new Interval(tokenIndex, tokenIndex);\n\t}\n\n\tgetChildCount() {\n\t\treturn 0;\n\t}\n\n\taccept(visitor) {\n\t\treturn visitor.visitTerminal(this);\n\t}\n\n\tgetText() {\n\t\treturn this.symbol.text;\n\t}\n\n\ttoString() {\n\t\tif (this.symbol.type === Token.EOF) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\treturn this.symbol.text;\n\t\t}\n\t}\n}\n\n\n/**\n * Represents a token that was consumed during resynchronization\n * rather than during a valid match operation. For example,\n * we will create this kind of a node during single token insertion\n * and deletion as well as during \"consume until error recovery set\"\n * upon no viable alternative exceptions.\n */\nclass ErrorNodeImpl extends TerminalNodeImpl {\n\tconstructor(token) {\n\t\tsuper(token);\n\t}\n\n\tisErrorNode() {\n\t\treturn true;\n\t}\n\n\taccept(visitor) {\n\t\treturn visitor.visitErrorNode(this);\n\t}\n}\n\nclass ParseTreeWalker {\n\n\t/**\n\t * Performs a walk on the given parse tree starting at the root and going down recursively\n\t * with depth-first search. On each node, {@link ParseTreeWalker//enterRule} is called before\n\t * recursively walking down into child nodes, then\n\t * {@link ParseTreeWalker//exitRule} is called after the recursive call to wind up.\n\t * @param listener The listener used by the walker to process grammar rules\n\t * @param t The parse tree to be walked on\n\t */\n\twalk(listener, t) {\n\t\tconst errorNode = t instanceof ErrorNode ||\n\t\t\t\t(t.isErrorNode !== undefined && t.isErrorNode());\n\t\tif (errorNode) {\n\t\t\tlistener.visitErrorNode(t);\n\t\t} else if (t instanceof TerminalNode) {\n\t\t\tlistener.visitTerminal(t);\n\t\t} else {\n\t\t\tthis.enterRule(listener, t);\n\t\t\tfor (let i = 0; i < t.getChildCount(); i++) {\n\t\t\t\tconst child = t.getChild(i);\n\t\t\t\tthis.walk(listener, child);\n\t\t\t}\n\t\t\tthis.exitRule(listener, t);\n\t\t}\n\t}\n\n\t/**\n\t * Enters a grammar rule by first triggering the generic event {@link ParseTreeListener//enterEveryRule}\n\t * then by triggering the event specific to the given parse tree node\n\t * @param listener The listener responding to the trigger events\n\t * @param r The grammar rule containing the rule context\n\t */\n\tenterRule(listener, r) {\n\t\tconst ctx = r.getRuleContext();\n\t\tlistener.enterEveryRule(ctx);\n\t\tctx.enterRule(listener);\n\t}\n\n\t/**\n\t * Exits a grammar rule by first triggering the event specific to the given parse tree node\n\t * then by triggering the generic event {@link ParseTreeListener//exitEveryRule}\n\t * @param listener The listener responding to the trigger events\n\t * @param r The grammar rule containing the rule context\n\t */\n\texitRule(listener, r) {\n\t\tconst ctx = r.getRuleContext();\n\t\tctx.exitRule(listener);\n\t\tlistener.exitEveryRule(ctx);\n\t}\n}\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n\nmodule.exports = {\n\tRuleNode,\n\tErrorNode,\n\tTerminalNode,\n\tErrorNodeImpl,\n\tTerminalNodeImpl,\n\tParseTreeListener,\n\tParseTreeVisitor,\n\tParseTreeWalker,\n\tINVALID_INTERVAL\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst Utils = require('./../Utils');\nconst {Token} = require('./../Token');\nconst {ErrorNode, TerminalNode, RuleNode} = require('./Tree');\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nconst Trees = {\n /**\n * Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n * node payloads to get the text for the nodes. Detect\n * parse trees and extract data appropriately.\n */\n toStringTree: function(tree, ruleNames, recog) {\n ruleNames = ruleNames || null;\n recog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n let s = Trees.getNodeText(tree, ruleNames);\n s = Utils.escapeWhitespace(s, false);\n const c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n let res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(let i=1;i\n\t * Since tokens on hidden channels (e.g. whitespace or comments) are not\n\t * added to the parse trees, they will not appear in the output of this\n\t * method.\n\t */\n\tgetText() {\n\t\tif (this.getChildCount() === 0) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\treturn this.children.map(function(child) {\n\t\t\t\treturn child.getText();\n\t\t\t}).join(\"\");\n\t\t}\n\t}\n\n\t/**\n\t * For rule associated with this parse tree internal node, return\n\t * the outer alternative number used to match the input. Default\n\t * implementation does not compute nor store this alt num. Create\n\t * a subclass of ParserRuleContext with backing field and set\n\t * option contextSuperClass.\n\t * to set it.\n\t */\n\tgetAltNumber() {\n\t // use constant value of ATN.INVALID_ALT_NUMBER to avoid circular dependency\n\t return 0;\n }\n\n\t/**\n\t * Set the outer alternative number for this context node. Default\n\t * implementation does nothing to avoid backing field overhead for\n\t * trees that don't need it. Create\n\t * a subclass of ParserRuleContext with backing field and set\n\t * option contextSuperClass.\n\t */\n\tsetAltNumber(altNumber) { }\n\n\tgetChild(i) {\n\t\treturn null;\n\t}\n\n\tgetChildCount() {\n\t\treturn 0;\n\t}\n\n\taccept(visitor) {\n\t\treturn visitor.visitChildren(this);\n\t}\n\n\t/**\n\t * Print out a whole tree, not just a node, in LISP format\n\t * (root child1 .. childN). Print just a node if this is a leaf.\n\t */\n\ttoStringTree(ruleNames, recog) {\n\t\treturn Trees.toStringTree(this, ruleNames, recog);\n\t}\n\n\ttoString(ruleNames, stop) {\n\t\truleNames = ruleNames || null;\n\t\tstop = stop || null;\n\t\tlet p = this;\n\t\tlet s = \"[\";\n\t\twhile (p !== null && p !== stop) {\n\t\t\tif (ruleNames === null) {\n\t\t\t\tif (!p.isEmpty()) {\n\t\t\t\t\ts += p.invokingState;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst ri = p.ruleIndex;\n\t\t\t\tconst ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n\t\t\t\t\t\t: \"\" + ri;\n\t\t\t\ts += ruleName;\n\t\t\t}\n\t\t\tif (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n\t\t\t\ts += \" \";\n\t\t\t}\n\t\t\tp = p.parentCtx;\n\t\t}\n\t\ts += \"]\";\n\t\treturn s;\n\t}\n}\n\nmodule.exports = RuleContext;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst RuleContext = require('./RuleContext');\nconst {Hash, Map, equalArrays} = require('./Utils');\n\nclass PredictionContext {\n\n\tconstructor(cachedHashCode) {\n\t\tthis.cachedHashCode = cachedHashCode;\n\t}\n\n\t/**\n\t * Stores the computed hash code of this {@link PredictionContext}. The hash\n\t * code is computed in parts to match the following reference algorithm.\n\t *\n\t *
\n\t * private int referenceHashCode() {\n\t * int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n\t * //INITIAL_HASH});\n\t *\n\t * for (int i = 0; i < {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n\t * getParent}(i));\n\t * }\n\t *\n\t * for (int i = 0; i < {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n\t * //getReturnState getReturnState}(i));\n\t * }\n\t *\n\t * hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n\t * //size()});\n\t * return hash;\n\t * }\n\t * 
\n\t * This means only the {@link //EMPTY} context is in set.\n\t */\n\tisEmpty() {\n\t\treturn this === PredictionContext.EMPTY;\n\t}\n\n\thasEmptyPath() {\n\t\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n}\n\n/**\n * Represents {@code $} in local context prediction, which means wildcard.\n * {@code//+x =//}.\n */\nPredictionContext.EMPTY = null;\n\n/**\n * Represents {@code $} in an array in full context mode, when {@code $}\n * doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n * {@code $} = {@link //EMPTY_RETURN_STATE}.\n */\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n\n\n/*\nfunction calculateHashString(parent, returnState) {\n\treturn \"\" + parent + returnState;\n}\n*/\n\n/**\n * Used to cache {@link PredictionContext} objects. Its used for the shared\n * context cash associated with contexts in DFA states. This cache\n * can be used for both lexers and parsers.\n */\nclass PredictionContextCache {\n\n\tconstructor() {\n\t\tthis.cache = new Map();\n\t}\n\n\t/**\n\t * Add a context to the cache and return it. If the context already exists,\n\t * return that one instead and do not add a new context to the cache.\n\t * Protect shared cache from unsafe thread access.\n\t */\n\tadd(ctx) {\n\t\tif (ctx === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY;\n\t\t}\n\t\tconst existing = this.cache.get(ctx) || null;\n\t\tif (existing !== null) {\n\t\t\treturn existing;\n\t\t}\n\t\tthis.cache.put(ctx, ctx);\n\t\treturn ctx;\n\t}\n\n\tget(ctx) {\n\t\treturn this.cache.get(ctx) || null;\n\t}\n\n\tget length(){\n\t\treturn this.cache.length;\n\t}\n}\n\n\nclass SingletonPredictionContext extends PredictionContext {\n\n\tconstructor(parent, returnState) {\n\t\tlet hashCode = 0;\n\t\tconst hash = new Hash();\n\t\tif(parent !== null) {\n\t\t\thash.update(parent, returnState);\n\t\t} else {\n\t\t\thash.update(1);\n\t\t}\n\t\thashCode = hash.finish();\n\t\tsuper(hashCode);\n\t\tthis.parentCtx = parent;\n\t\tthis.returnState = returnState;\n\t}\n\n\tgetParent(index) {\n\t\treturn this.parentCtx;\n\t}\n\n\tgetReturnState(index) {\n\t\treturn this.returnState;\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof SingletonPredictionContext)) {\n\t\t\treturn false;\n\t\t} else if (this.hashCode() !== other.hashCode()) {\n\t\t\treturn false; // can't be same if hash is different\n\t\t} else {\n\t\t\tif(this.returnState !== other.returnState)\n\t\t\t\treturn false;\n\t\t\telse if(this.parentCtx==null)\n\t\t\t\treturn other.parentCtx==null\n\t\t\telse\n\t\t\t\treturn this.parentCtx.equals(other.parentCtx);\n\t\t}\n\t}\n\n\ttoString() {\n\t\tconst up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n\t\tif (up.length === 0) {\n\t\t\tif (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\treturn \"$\";\n\t\t\t} else {\n\t\t\t\treturn \"\" + this.returnState;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\" + this.returnState + \" \" + up;\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn 1;\n\t}\n\n\tstatic create(parent, returnState) {\n\t\tif (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n\t\t\t// someone can pass in the bits of an array ctx that mean $\n\t\t\treturn PredictionContext.EMPTY;\n\t\t} else {\n\t\t\treturn new SingletonPredictionContext(parent, returnState);\n\t\t}\n\t}\n}\n\nclass EmptyPredictionContext extends SingletonPredictionContext {\n\n\tconstructor() {\n\t\tsuper(null, PredictionContext.EMPTY_RETURN_STATE);\n\t}\n\n\tisEmpty() {\n\t\treturn true;\n\t}\n\n\tgetParent(index) {\n\t\treturn null;\n\t}\n\n\tgetReturnState(index) {\n\t\treturn this.returnState;\n\t}\n\n\tequals(other) {\n\t\treturn this === other;\n\t}\n\n\ttoString() {\n\t\treturn \"$\";\n\t}\n}\n\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n\nclass ArrayPredictionContext extends PredictionContext {\n\n\tconstructor(parents, returnStates) {\n\t\t/**\n\t\t * Parent can be null only if full ctx mode and we make an array\n\t\t * from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n\t\t * null parent and\n\t\t * returnState == {@link //EMPTY_RETURN_STATE}.\n\t\t */\n\t\tconst h = new Hash();\n\t\th.update(parents, returnStates);\n\t\tconst hashCode = h.finish();\n\t\tsuper(hashCode);\n\t\tthis.parents = parents;\n\t\tthis.returnStates = returnStates;\n\t\treturn this;\n\t}\n\n\tisEmpty() {\n\t\t// since EMPTY_RETURN_STATE can only appear in the last position, we\n\t\t// don't need to verify that size==1\n\t\treturn this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n\t}\n\n\tgetParent(index) {\n\t\treturn this.parents[index];\n\t}\n\n\tgetReturnState(index) {\n\t\treturn this.returnStates[index];\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof ArrayPredictionContext)) {\n\t\t\treturn false;\n\t\t} else if (this.hashCode() !== other.hashCode()) {\n\t\t\treturn false; // can't be same if hash is different\n\t\t} else {\n\t\t\treturn equalArrays(this.returnStates, other.returnStates) &&\n\t\t\t\tequalArrays(this.parents, other.parents);\n\t\t}\n\t}\n\n\ttoString() {\n\t\tif (this.isEmpty()) {\n\t\t\treturn \"[]\";\n\t\t} else {\n\t\t\tlet s = \"[\";\n\t\t\tfor (let i = 0; i < this.returnStates.length; i++) {\n\t\t\t\tif (i > 0) {\n\t\t\t\t\ts = s + \", \";\n\t\t\t\t}\n\t\t\t\tif (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\ts = s + \"$\";\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ts = s + this.returnStates[i];\n\t\t\t\tif (this.parents[i] !== null) {\n\t\t\t\t\ts = s + \" \" + this.parents[i];\n\t\t\t\t} else {\n\t\t\t\t\ts = s + \"null\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn s + \"]\";\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn this.returnStates.length;\n\t}\n}\n\n\n/**\n * Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n * Return {@link //EMPTY} if {@code outerContext} is empty or null.\n */\nfunction predictionContextFromRuleContext(atn, outerContext) {\n\tif (outerContext === undefined || outerContext === null) {\n\t\touterContext = RuleContext.EMPTY;\n\t}\n\t// if we are in RuleContext of start rule, s, then PredictionContext\n\t// is EMPTY. Nobody called us. (if we are empty, return empty)\n\tif (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\t// If we have a parent, convert it to a PredictionContext graph\n\tconst parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n\tconst state = atn.states[outerContext.invokingState];\n\tconst transition = state.transitions[0];\n\treturn SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n/*\nfunction calculateListsHashString(parents, returnStates) {\n\tconst s = \"\";\n\tparents.map(function(p) {\n\t\ts = s + p;\n\t});\n\treturnStates.map(function(r) {\n\t\ts = s + r;\n\t});\n\treturn s;\n}\n*/\nfunction merge(a, b, rootIsWildcard, mergeCache) {\n\t// share same graph if both same\n\tif (a === b) {\n\t\treturn a;\n\t}\n\tif (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n\t\treturn mergeSingletons(a, b, rootIsWildcard, mergeCache);\n\t}\n\t// At least one of a or b is array\n\t// If one is $ and rootIsWildcard, return $ as// wildcard\n\tif (rootIsWildcard) {\n\t\tif (a instanceof EmptyPredictionContext) {\n\t\t\treturn a;\n\t\t}\n\t\tif (b instanceof EmptyPredictionContext) {\n\t\t\treturn b;\n\t\t}\n\t}\n\t// convert singleton so both are arrays to normalize\n\tif (a instanceof SingletonPredictionContext) {\n\t\ta = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n\t}\n\tif (b instanceof SingletonPredictionContext) {\n\t\tb = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n\t}\n\treturn mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n/**\n * Merge two {@link SingletonPredictionContext} instances.\n *\n *

Stack tops equal, parents merge is same; return left graph.
\n *

\n *\n *

Same stack top, parents differ; merge parents giving array node, then\n * remainders of those graphs. A new root node is created to point to the\n * merged parents.
\n *

\n *\n *

Different stack tops pointing to same parent. Make array node for the\n * root where both element in the root point to the same (original)\n * parent.
\n *

\n *\n *

Different stack tops pointing to different parents. Make array node for\n * the root where each element points to the corresponding original\n * parent.
\n *

\n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n * @param mergeCache\n */\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tlet previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\n\tconst rootMerge = mergeRoot(a, b, rootIsWildcard);\n\tif (rootMerge !== null) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, rootMerge);\n\t\t}\n\t\treturn rootMerge;\n\t}\n\tif (a.returnState === b.returnState) {\n\t\tconst parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n\t\t// if parent is same as existing a or b parent or reduced to a parent,\n\t\t// return it\n\t\tif (parent === a.parentCtx) {\n\t\t\treturn a; // ax + bx = ax, if a=b\n\t\t}\n\t\tif (parent === b.parentCtx) {\n\t\t\treturn b; // ax + bx = bx, if a=b\n\t\t}\n\t\t// else: ax + ay = a'[x,y]\n\t\t// merge parents x and y, giving array node with x,y then remainders\n\t\t// of those graphs. dup a, a' points at merged array\n\t\t// new joined parent so create new singleton pointing to it, a'\n\t\tconst spc = SingletonPredictionContext.create(parent, a.returnState);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, spc);\n\t\t}\n\t\treturn spc;\n\t} else { // a != b payloads differ\n\t\t// see if we can collapse parents due to $+x parents if local ctx\n\t\tlet singleParent = null;\n\t\tif (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// bx =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// [a,b]x\n\t\t\tsingleParent = a.parentCtx;\n\t\t}\n\t\tif (singleParent !== null) { // parents are same\n\t\t\t// sort payloads and use same parent\n\t\t\tconst payloads = [ a.returnState, b.returnState ];\n\t\t\tif (a.returnState > b.returnState) {\n\t\t\t\tpayloads[0] = b.returnState;\n\t\t\t\tpayloads[1] = a.returnState;\n\t\t\t}\n\t\t\tconst parents = [ singleParent, singleParent ];\n\t\t\tconst apc = new ArrayPredictionContext(parents, payloads);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, apc);\n\t\t\t}\n\t\t\treturn apc;\n\t\t}\n\t\t// parents differ and can't merge them. Just pack together\n\t\t// into array; can't merge.\n\t\t// ax + by = [ax,by]\n\t\tconst payloads = [ a.returnState, b.returnState ];\n\t\tlet parents = [ a.parentCtx, b.parentCtx ];\n\t\tif (a.returnState > b.returnState) { // sort by payload\n\t\t\tpayloads[0] = b.returnState;\n\t\t\tpayloads[1] = a.returnState;\n\t\t\tparents = [ b.parentCtx, a.parentCtx ];\n\t\t}\n\t\tconst a_ = new ArrayPredictionContext(parents, payloads);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a_);\n\t\t}\n\t\treturn a_;\n\t}\n}\n\n/**\n * Handle case where at least one of {@code a} or {@code b} is\n * {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n * to represent {@link //EMPTY}.\n *\n *

Local-Context Merges

\n *\n *

These local-context merge operations are used when {@code rootIsWildcard}\n * is true.

\n *\n *

{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.
\n *

\n *\n *

{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n * {@code //EMPTY}; return left graph.
\n *

\n *\n *

Special case of last merge if local context.
\n *

\n *\n *

Full-Context Merges

\n *\n *

These full-context merge operations are used when {@code rootIsWildcard}\n * is false.

\n *\n *

\n *\n *

Must keep all contexts; {@link //EMPTY} in array is a special value (and\n * null parent).
\n *

\n *\n *

\n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n */\nfunction mergeRoot(a, b, rootIsWildcard) {\n\tif (rootIsWildcard) {\n\t\tif (a === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // // + b =//\n\t\t}\n\t\tif (b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // a +// =//\n\t\t}\n\t} else {\n\t\tif (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // $ + $ = $\n\t\t} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n\t\t\tconst payloads = [ b.returnState,\n\t\t\t\t\tPredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tconst parents = [ b.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n\t\t\tconst payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tconst parents = [ a.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Merge two {@link ArrayPredictionContext} instances.\n *\n *

Different tops, different parents.
\n *

\n *\n *

Shared top, same parents.
\n *

\n *\n *

Shared top, different parents.
\n *

\n *\n *

Shared top, all shared parents.
\n *

\n *\n *

Equal tops, merge parents and reduce top to\n * {@link SingletonPredictionContext}.
\n *

\n */\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tlet previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\t// merge sorted payloads a + b => M\n\tlet i = 0; // walks a\n\tlet j = 0; // walks b\n\tlet k = 0; // walks target M array\n\n\tlet mergedReturnStates = [];\n\tlet mergedParents = [];\n\t// walk and merge to yield mergedParents, mergedReturnStates\n\twhile (i < a.returnStates.length && j < b.returnStates.length) {\n\t\tconst a_parent = a.parents[i];\n\t\tconst b_parent = b.parents[j];\n\t\tif (a.returnStates[i] === b.returnStates[j]) {\n\t\t\t// same payload (stack tops are equal), must yield merged singleton\n\t\t\tconst payload = a.returnStates[i];\n\t\t\t// $+$ = $\n\t\t\tconst bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n\t\t\t\t\ta_parent === null && b_parent === null;\n\t\t\tconst ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ax\n\t\t\tif (bothDollars || ax_ax) {\n\t\t\t\tmergedParents[k] = a_parent; // choose left\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t} else { // ax+ay -> a'[x,y]\n\t\t\t\tmergedParents[k] = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t}\n\t\t\ti += 1; // hop over left one as usual\n\t\t\tj += 1; // but also skip one in right side since we merge\n\t\t} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n\t\t\tmergedParents[k] = a_parent;\n\t\t\tmergedReturnStates[k] = a.returnStates[i];\n\t\t\ti += 1;\n\t\t} else { // b > a, copy b[j] to M\n\t\t\tmergedParents[k] = b_parent;\n\t\t\tmergedReturnStates[k] = b.returnStates[j];\n\t\t\tj += 1;\n\t\t}\n\t\tk += 1;\n\t}\n\t// copy over any payloads remaining in either array\n\tif (i < a.returnStates.length) {\n\t\tfor (let p = i; p < a.returnStates.length; p++) {\n\t\t\tmergedParents[k] = a.parents[p];\n\t\t\tmergedReturnStates[k] = a.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t} else {\n\t\tfor (let p = j; p < b.returnStates.length; p++) {\n\t\t\tmergedParents[k] = b.parents[p];\n\t\t\tmergedReturnStates[k] = b.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t}\n\t// trim merged if we combined a few that had same stack tops\n\tif (k < mergedParents.length) { // write index < last position; trim\n\t\tif (k === 1) { // for just one merged element, return singleton top\n\t\t\tconst a_ = SingletonPredictionContext.create(mergedParents[0],\n\t\t\t\t\tmergedReturnStates[0]);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, a_);\n\t\t\t}\n\t\t\treturn a_;\n\t\t}\n\t\tmergedParents = mergedParents.slice(0, k);\n\t\tmergedReturnStates = mergedReturnStates.slice(0, k);\n\t}\n\n\tconst M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n\t// if we created same array as a or b, return that instead\n\t// TODO: track whether this is possible above during merge sort for speed\n\tif (M === a) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a);\n\t\t}\n\t\treturn a;\n\t}\n\tif (M === b) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, b);\n\t\t}\n\t\treturn b;\n\t}\n\tcombineCommonParents(mergedParents);\n\n\tif (mergeCache !== null) {\n\t\tmergeCache.set(a, b, M);\n\t}\n\treturn M;\n}\n\n/**\n * Make pass over all M {@code parents}; merge any {@code equals()}\n * ones.\n */\nfunction combineCommonParents(parents) {\n\tconst uniqueParents = new Map();\n\n\tfor (let p = 0; p < parents.length; p++) {\n\t\tconst parent = parents[p];\n\t\tif (!(uniqueParents.containsKey(parent))) {\n\t\t\tuniqueParents.put(parent, parent);\n\t\t}\n\t}\n\tfor (let q = 0; q < parents.length; q++) {\n\t\tparents[q] = uniqueParents.get(parents[q]);\n\t}\n}\n\nfunction getCachedPredictionContext(context, contextCache, visited) {\n\tif (context.isEmpty()) {\n\t\treturn context;\n\t}\n\tlet existing = visited.get(context) || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\texisting = contextCache.get(context);\n\tif (existing !== null) {\n\t\tvisited.put(context, existing);\n\t\treturn existing;\n\t}\n\tlet changed = false;\n\tlet parents = [];\n\tfor (let i = 0; i < parents.length; i++) {\n\t\tconst parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n\t\tif (changed || parent !== context.getParent(i)) {\n\t\t\tif (!changed) {\n\t\t\t\tparents = [];\n\t\t\t\tfor (let j = 0; j < context.length; j++) {\n\t\t\t\t\tparents[j] = context.getParent(j);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tparents[i] = parent;\n\t\t}\n\t}\n\tif (!changed) {\n\t\tcontextCache.add(context);\n\t\tvisited.put(context, context);\n\t\treturn context;\n\t}\n\tlet updated = null;\n\tif (parents.length === 0) {\n\t\tupdated = PredictionContext.EMPTY;\n\t} else if (parents.length === 1) {\n\t\tupdated = SingletonPredictionContext.create(parents[0], context\n\t\t\t\t.getReturnState(0));\n\t} else {\n\t\tupdated = new ArrayPredictionContext(parents, context.returnStates);\n\t}\n\tcontextCache.add(updated);\n\tvisited.put(updated, updated);\n\tvisited.put(context, updated);\n\n\treturn updated;\n}\n\n// ter's recursive version of Sam's getAllNodes()\nfunction getAllContextNodes(context, nodes, visited) {\n\tif (nodes === null) {\n\t\tnodes = [];\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else if (visited === null) {\n\t\tvisited = new Map();\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else {\n\t\tif (context === null || visited.containsKey(context)) {\n\t\t\treturn nodes;\n\t\t}\n\t\tvisited.put(context, context);\n\t\tnodes.push(context);\n\t\tfor (let i = 0; i < context.length; i++) {\n\t\t\tgetAllContextNodes(context.getParent(i), nodes, visited);\n\t\t}\n\t\treturn nodes;\n\t}\n}\n\nmodule.exports = {\n\tmerge,\n\tPredictionContext,\n\tPredictionContextCache,\n\tSingletonPredictionContext,\n\tpredictionContextFromRuleContext,\n\tgetCachedPredictionContext\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Set, BitSet} = require('./Utils');\nconst {Token} = require('./Token');\nconst {ATNConfig} = require('./atn/ATNConfig');\nconst {IntervalSet} = require('./IntervalSet');\nconst {RuleStopState} = require('./atn/ATNState');\nconst {RuleTransition, NotSetTransition, WildcardTransition, AbstractPredicateTransition} = require('./atn/Transition');\nconst {predictionContextFromRuleContext, PredictionContext, SingletonPredictionContext} = require('./PredictionContext');\n\nclass LL1Analyzer {\n constructor(atn) {\n this.atn = atn;\n }\n\n /**\n * Calculates the SLL(1) expected lookahead set for each outgoing transition\n * of an {@link ATNState}. The returned array has one element for each\n * outgoing transition in {@code s}. If the closure from transition\n * i leads to a semantic predicate before matching a symbol, the\n * element at index i of the result will be {@code null}.\n *\n * @param s the ATN state\n * @return the expected symbols for each outgoing transition of {@code s}.\n */\n getDecisionLookahead(s) {\n if (s === null) {\n return null;\n }\n const count = s.transitions.length;\n const look = [];\n for(let alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n const lookBusy = new Set();\n const seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n }\n\n /**\n * Compute set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n *\n *

If {@code ctx} is {@code null} and the end of the rule containing\n * {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n * If {@code ctx} is not {@code null} and the end of the outermost rule is\n * reached, {@link Token//EOF} is added to the result set.

\n *\n * @param s the ATN state\n * @param stopState the ATN state to stop at. This can be a\n * {@link BlockEndState} to detect epsilon paths through a closure.\n * @param ctx the complete parser context, or {@code null} if the context\n * should be ignored\n *\n * @return The set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n */\n LOOK(s, stopState, ctx) {\n const r = new IntervalSet();\n const seeThruPreds = true; // ignore preds; get all lookahead\n ctx = ctx || null;\n const lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);\n return r;\n }\n\n /**\n * Compute set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n *\n *

If {@code ctx} is {@code null} and {@code stopState} or the end of the\n * rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n * the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n * {@code true} and {@code stopState} or the end of the outermost rule is\n * reached, {@link Token//EOF} is added to the result set.

\n *\n * @param s the ATN state.\n * @param stopState the ATN state to stop at. This can be a\n * {@link BlockEndState} to detect epsilon paths through a closure.\n * @param ctx The outer context, or {@code null} if the outer context should\n * not be used.\n * @param look The result lookahead set.\n * @param lookBusy A set used for preventing epsilon closures in the ATN\n * from causing a stack overflow. Outside code should pass\n * {@code new Set} for this argument.\n * @param calledRuleStack A set used for preventing left recursion in the\n * ATN from causing a stack overflow. Outside code should pass\n * {@code new BitSet()} for this argument.\n * @param seeThruPreds {@code true} to true semantic predicates as\n * implicitly {@code true} and \"see through them\", otherwise {@code false}\n * to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n * result if one is encountered.\n * @param addEOF Add {@link Token//EOF} to the result if the end of the\n * outermost context is reached. This parameter has no effect if {@code ctx}\n * is {@code null}.\n */\n _LOOK(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n const c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.contains(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n const removed = calledRuleStack.contains(s.ruleIndex);\n try {\n calledRuleStack.remove(s.ruleIndex);\n // run thru all possible stack tops in ctx\n for (let i = 0; i < ctx.length; i++) {\n const returnState = this.atn.states[ctx.getReturnState(i)];\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n }\n }finally {\n if (removed) {\n calledRuleStack.add(s.ruleIndex);\n }\n }\n return;\n }\n }\n for(let j=0; jIf {@code context} is {@code null}, it is treated as\n * {@link ParserRuleContext//EMPTY}.

\n *\n * @param stateNumber the ATN state number\n * @param ctx the full parse context\n *\n * @return {IntervalSet} The set of potentially valid input symbols which could follow the\n * specified state in the specified context.\n *\n * @throws IllegalArgumentException if the ATN does not contain a state with\n * number {@code stateNumber}\n */\n getExpectedTokens(stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n const s = this.states[stateNumber];\n let following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n const expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n const invokingState = this.states[ctx.invokingState];\n const rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n }\n}\n\nATN.INVALID_ALT_NUMBER = 0;\n\nmodule.exports = ATN;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Represents the type of recognizer an ATN applies to\n */\nmodule.exports = {\n LEXER: 0,\n PARSER: 1\n};\n\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nclass ATNDeserializationOptions {\n\tconstructor(copyFrom) {\n\t\tif(copyFrom===undefined) {\n\t\t\tcopyFrom = null;\n\t\t}\n\t\tthis.readOnly = false;\n\t\tthis.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n\t\tthis.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\t}\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n// def __setattr__(self, key, value):\n// if key!=\"readOnly\" and self.readOnly:\n// raise Exception(\"The object is read only.\")\n// super(type(self), self).__setattr__(key,value)\n\nmodule.exports = ATNDeserializationOptions\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst LexerActionType = {\n // The type of a {@link LexerChannelAction} action.\n CHANNEL: 0,\n // The type of a {@link LexerCustomAction} action\n CUSTOM: 1,\n // The type of a {@link LexerModeAction} action.\n MODE: 2,\n //The type of a {@link LexerMoreAction} action.\n MORE: 3,\n //The type of a {@link LexerPopModeAction} action.\n POP_MODE: 4,\n //The type of a {@link LexerPushModeAction} action.\n PUSH_MODE: 5,\n //The type of a {@link LexerSkipAction} action.\n SKIP: 6,\n //The type of a {@link LexerTypeAction} action.\n TYPE: 7\n}\n\nclass LexerAction {\n constructor(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n }\n\n hashCode() {\n const hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish()\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType);\n }\n\n equals(other) {\n return this === other;\n }\n}\n\n\n/**\n * Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n *\n *

The {@code skip} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

\n */\nclass LexerSkipAction extends LexerAction {\n constructor() {\n super(LexerActionType.SKIP);\n }\n\n execute(lexer) {\n lexer.skip();\n }\n\n toString() {\n return \"skip\";\n }\n}\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n\n/**\n * Implements the {@code type} lexer action by calling {@link Lexer//setType}\n * with the assigned type\n */\nclass LexerTypeAction extends LexerAction {\n constructor(type) {\n super(LexerActionType.TYPE);\n this.type = type;\n }\n\n execute(lexer) {\n lexer.type = this.type;\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.type);\n }\n\n equals(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n }\n\n toString() {\n return \"type(\" + this.type + \")\";\n }\n}\n\n\n/**\n * Implements the {@code pushMode} lexer action by calling\n * {@link Lexer//pushMode} with the assigned mode\n */\nclass LexerPushModeAction extends LexerAction {\n constructor(mode) {\n super(LexerActionType.PUSH_MODE);\n this.mode = mode;\n }\n\n /**\n *

This action is implemented by calling {@link Lexer//pushMode} with the\n * value provided by {@link //getMode}.

\n */\n execute(lexer) {\n lexer.pushMode(this.mode);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.mode);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n }\n\n toString() {\n return \"pushMode(\" + this.mode + \")\";\n }\n}\n\n/**\n * Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n *\n *

The {@code popMode} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

\n */\nclass LexerPopModeAction extends LexerAction {\n constructor() {\n super(LexerActionType.POP_MODE);\n }\n\n /**\n *

This action is implemented by calling {@link Lexer//popMode}.

\n */\n execute(lexer) {\n lexer.popMode();\n }\n\n toString() {\n return \"popMode\";\n }\n}\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n\n/**\n * Implements the {@code more} lexer action by calling {@link Lexer//more}.\n *\n *

The {@code more} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

\n */\nclass LexerMoreAction extends LexerAction {\n constructor() {\n super(LexerActionType.MORE);\n }\n\n /**\n *

This action is implemented by calling {@link Lexer//popMode}.

\n */\n execute(lexer) {\n lexer.more();\n }\n\n toString() {\n return \"more\";\n }\n}\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n\n/**\n * Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n * the assigned mode\n */\nclass LexerModeAction extends LexerAction {\n constructor(mode) {\n super(LexerActionType.MODE);\n this.mode = mode;\n }\n\n /**\n *

This action is implemented by calling {@link Lexer//mode} with the\n * value provided by {@link //getMode}.

\n */\n execute(lexer) {\n lexer.mode(this.mode);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.mode);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n }\n\n toString() {\n return \"mode(\" + this.mode + \")\";\n }\n}\n\n/**\n * Executes a custom lexer action by calling {@link Recognizer//action} with the\n * rule and action indexes assigned to the custom action. The implementation of\n * a custom action is added to the generated code for the lexer in an override\n * of {@link Recognizer//action} when the grammar is compiled.\n *\n *

This class may represent embedded actions created with the {...}\n * syntax in ANTLR 4, as well as actions created for lexer commands where the\n * command argument could not be evaluated when the grammar was compiled.

\n */\nclass LexerCustomAction extends LexerAction {\n /**\n * Constructs a custom lexer action with the specified rule and action\n * indexes.\n *\n * @param ruleIndex The rule index to use for calls to\n * {@link Recognizer//action}.\n * @param actionIndex The action index to use for calls to\n * {@link Recognizer//action}.\n */\n constructor(ruleIndex, actionIndex) {\n super(LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n }\n\n /**\n *

Custom actions are implemented by calling {@link Lexer//action} with the\n * appropriate rule and action indexes.

\n */\n execute(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n }\n}\n\n/**\n * Implements the {@code channel} lexer action by calling\n * {@link Lexer//setChannel} with the assigned channel.\n * Constructs a new {@code channel} action with the specified channel value.\n * @param channel The channel value to pass to {@link Lexer//setChannel}\n */\nclass LexerChannelAction extends LexerAction {\n constructor(channel) {\n super(LexerActionType.CHANNEL);\n this.channel = channel;\n }\n\n /**\n *

This action is implemented by calling {@link Lexer//setChannel} with the\n * value provided by {@link //getChannel}.

\n */\n execute(lexer) {\n lexer._channel = this.channel;\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.channel);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n }\n\n toString() {\n return \"channel(\" + this.channel + \")\";\n }\n}\n\n\n/**\n * This implementation of {@link LexerAction} is used for tracking input offsets\n * for position-dependent actions within a {@link LexerActionExecutor}.\n *\n *

This action is not serialized as part of the ATN, and is only required for\n * position-dependent lexer actions which appear at a location other than the\n * end of a rule. For more information about DFA optimizations employed for\n * lexer actions, see {@link LexerActionExecutor//append} and\n * {@link LexerActionExecutor//fixOffsetBeforeMatch}.

\n *\n * Constructs a new indexed custom action by associating a character offset\n * with a {@link LexerAction}.\n *\n *

Note: This class is only required for lexer actions for which\n * {@link LexerAction//isPositionDependent} returns {@code true}.

\n *\n * @param offset The offset into the input {@link CharStream}, relative to\n * the token start index, at which the specified lexer action should be\n * executed.\n * @param action The lexer action to execute at a particular offset in the\n * input {@link CharStream}.\n */\nclass LexerIndexedCustomAction extends LexerAction {\n constructor(offset, action) {\n super(action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n }\n\n /**\n *

This method calls {@link //execute} on the result of {@link //getAction}\n * using the provided {@code lexer}.

\n */\n execute(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.offset, this.action);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n }\n}\n\nmodule.exports = {\n LexerActionType,\n LexerSkipAction,\n LexerChannelAction,\n LexerCustomAction,\n LexerIndexedCustomAction,\n LexerMoreAction,\n LexerTypeAction,\n LexerPushModeAction,\n LexerPopModeAction,\n LexerModeAction\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./../Token');\nconst ATN = require('./ATN');\nconst ATNType = require('./ATNType');\n\nconst {\n ATNState,\n BasicState,\n DecisionState,\n BlockStartState,\n BlockEndState,\n LoopEndState,\n RuleStartState,\n RuleStopState,\n TokensStartState,\n PlusLoopbackState,\n StarLoopbackState,\n StarLoopEntryState,\n PlusBlockStartState,\n StarBlockStartState,\n BasicBlockStartState\n} = require('./ATNState');\n\nconst {\n Transition,\n AtomTransition,\n SetTransition,\n NotSetTransition,\n RuleTransition,\n RangeTransition,\n ActionTransition,\n EpsilonTransition,\n WildcardTransition,\n PredicateTransition,\n PrecedencePredicateTransition\n} = require('./Transition')\n\nconst {IntervalSet} = require('./../IntervalSet');\nconst ATNDeserializationOptions = require('./ATNDeserializationOptions');\n\nconst {\n LexerActionType,\n LexerSkipAction,\n LexerChannelAction,\n LexerCustomAction,\n LexerMoreAction,\n LexerTypeAction,\n LexerPushModeAction,\n LexerPopModeAction,\n LexerModeAction,\n} = require('./LexerAction');\n\n// This is the earliest supported serialized UUID.\n// stick to serialized version for now, we don't need a UUID instance\nconst BASE_SERIALIZED_UUID = \"AADB8D7E-AEEF-4415-AD2B-8204D6CF042E\";\n\n//\n// This UUID indicates the serialized ATN contains two sets of\n// IntervalSets, where the second set's values are encoded as\n// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\n//\nconst ADDED_UNICODE_SMP = \"59627784-3BE5-417A-B9EB-8131A7286089\";\n\n// This list contains all of the currently supported UUIDs, ordered by when\n// the feature first appeared in this branch.\nconst SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];\n\nconst SERIALIZED_VERSION = 3;\n\n// This is the current serialized UUID.\nconst SERIALIZED_UUID = ADDED_UNICODE_SMP;\n\nfunction initArray( length, value) {\n\tconst tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nclass ATNDeserializer {\n constructor(options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n }\n\n /**\n * Determines if a particular serialized representation of an ATN supports\n * a particular feature, identified by the {@link UUID} used for serializing\n * the ATN at the time the feature was first introduced.\n *\n * @param feature The {@link UUID} marking the first time the feature was\n * supported in the serialized ATN.\n * @param actualUuid The {@link UUID} of the actual serialized ATN which is\n * currently being deserialized.\n * @return {@code true} if the {@code actualUuid} value represents a\n * serialized ATN at or after the feature identified by {@code feature} was\n * introduced; otherwise, {@code false}.\n */\n isFeatureSupported(feature, actualUuid) {\n const idx1 = SUPPORTED_UUIDS.indexOf(feature);\n if (idx1<0) {\n return false;\n }\n const idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);\n return idx2 >= idx1;\n }\n\n deserialize(data) {\n this.reset(data);\n this.checkVersion();\n this.checkUUID();\n const atn = this.readATN();\n this.readStates(atn);\n this.readRules(atn);\n this.readModes(atn);\n const sets = [];\n // First, deserialize sets with 16-bit arguments <= U+FFFF.\n this.readSets(atn, sets, this.readInt.bind(this));\n // Next, if the ATN was serialized with the Unicode SMP feature,\n // deserialize sets with 32-bit arguments <= U+10FFFF.\n if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {\n this.readSets(atn, sets, this.readInt32.bind(this));\n }\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n }\n\n reset(data) {\n const adjust = function(c) {\n const v = c.charCodeAt(0);\n return v>1 ? v-2 : v + 65534;\n };\n const temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n }\n\n checkVersion() {\n const version = this.readInt();\n if ( version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n }\n\n checkUUID() {\n const uuid = this.readUUID();\n if (SUPPORTED_UUIDS.indexOf(uuid)<0) {\n throw (\"Could not deserialize ATN with UUID: \" + uuid +\n \" (expected \" + SERIALIZED_UUID + \" or a legacy UUID).\", uuid, SERIALIZED_UUID);\n }\n this.uuid = uuid;\n }\n\n readATN() {\n const grammarType = this.readInt();\n const maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n }\n\n readStates(atn) {\n let j, pair, stateNumber;\n const loopBackStateNumbers = [];\n const endStateNumbers = [];\n const nstates = this.readInt();\n for(let i=0; i 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n const matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n }\n\n stateIsEndStateFor(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n const maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n }\n\n /**\n * Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n * the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n * correct value.\n * @param atn The ATN.\n */\n markPrecedenceDecisions(atn) {\n for(let i=0; i= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n }\n }\n\n checkCondition(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n }\n\n readInt() {\n return this.data[this.pos++];\n }\n\n readInt32() {\n const low = this.readInt();\n const high = this.readInt();\n return low | (high << 16);\n }\n\n readLong() {\n const low = this.readInt32();\n const high = this.readInt32();\n return (low & 0x00000000FFFFFFFF) | (high << 32);\n }\n\n readUUID() {\n const bb = [];\n for(let i=7;i>=0;i--) {\n const int = this.readInt();\n /* jshint bitwise: false */\n bb[(2*i)+1] = int & 0xFF;\n bb[2*i] = (int >> 8) & 0xFF;\n }\n return byteToHex[bb[0]] + byteToHex[bb[1]] +\n byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +\n byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +\n byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +\n byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +\n byteToHex[bb[10]] + byteToHex[bb[11]] +\n byteToHex[bb[12]] + byteToHex[bb[13]] +\n byteToHex[bb[14]] + byteToHex[bb[15]];\n }\n\n edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) {\n const target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n }\n\n stateFactory(type, ruleIndex) {\n if (this.stateFactories === null) {\n const sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = () => new BasicState();\n sf[ATNState.RULE_START] = () => new RuleStartState();\n sf[ATNState.BLOCK_START] = () => new BasicBlockStartState();\n sf[ATNState.PLUS_BLOCK_START] = () => new PlusBlockStartState();\n sf[ATNState.STAR_BLOCK_START] = () => new StarBlockStartState();\n sf[ATNState.TOKEN_START] = () => new TokensStartState();\n sf[ATNState.RULE_STOP] = () => new RuleStopState();\n sf[ATNState.BLOCK_END] = () => new BlockEndState();\n sf[ATNState.STAR_LOOP_BACK] = () => new StarLoopbackState();\n sf[ATNState.STAR_LOOP_ENTRY] = () => new StarLoopEntryState();\n sf[ATNState.PLUS_LOOP_BACK] = () => new PlusLoopbackState();\n sf[ATNState.LOOP_END] = () => new LoopEndState();\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n const s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n }\n\n lexerActionFactory(type, data1, data2) {\n if (this.actionFactories === null) {\n const af = [];\n af[LexerActionType.CHANNEL] = (data1, data2) => new LexerChannelAction(data1);\n af[LexerActionType.CUSTOM] = (data1, data2) => new LexerCustomAction(data1, data2);\n af[LexerActionType.MODE] = (data1, data2) => new LexerModeAction(data1);\n af[LexerActionType.MORE] = (data1, data2) => LexerMoreAction.INSTANCE;\n af[LexerActionType.POP_MODE] = (data1, data2) => LexerPopModeAction.INSTANCE;\n af[LexerActionType.PUSH_MODE] = (data1, data2) => new LexerPushModeAction(data1);\n af[LexerActionType.SKIP] = (data1, data2) => LexerSkipAction.INSTANCE;\n af[LexerActionType.TYPE] = (data1, data2) => new LexerTypeAction(data1);\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n }\n}\n\nfunction createByteToHex() {\n\tconst bth = [];\n\tfor (let i = 0; i < 256; i++) {\n\t\tbth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();\n\t}\n\treturn bth;\n}\n\nconst byteToHex = createByteToHex();\n\n\nmodule.exports = ATNDeserializer;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Provides an empty default implementation of {@link ANTLRErrorListener}. The\n * default implementation of each method does nothing, but can be overridden as\n * necessary.\n */\nclass ErrorListener {\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n }\n\n reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n }\n\n reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n }\n\n reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n }\n}\n\n/**\n * {@inheritDoc}\n *\n *

\n * This implementation prints messages to {@link System//err} containing the\n * values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n * the following format.

\n *\n *
\n * line line:charPositionInLine msg\n * 
\n *\n */\nclass ConsoleErrorListener extends ErrorListener {\n constructor() {\n super();\n }\n\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n }\n}\n\n\n/**\n * Provides a default instance of {@link ConsoleErrorListener}.\n */\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n\nclass ProxyErrorListener extends ErrorListener {\n constructor(delegates) {\n super();\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n return this;\n }\n\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(d => d.syntaxError(recognizer, offendingSymbol, line, column, msg, e));\n }\n\n reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(d => d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs));\n }\n\n reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n this.delegates.map(d => d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs));\n }\n\n reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n this.delegates.map(d => d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs));\n }\n}\n\nmodule.exports = {ErrorListener, ConsoleErrorListener, ProxyErrorListener}\n\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\nconst {ConsoleErrorListener} = require('./error/ErrorListener');\nconst {ProxyErrorListener} = require('./error/ErrorListener');\n\nclass Recognizer {\n constructor() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n }\n\n checkVersion(toolVersion) {\n const runtimeVersion = \"4.9.2\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n }\n\n addErrorListener(listener) {\n this._listeners.push(listener);\n }\n\n removeErrorListeners() {\n this._listeners = [];\n }\n\n getTokenTypeMap() {\n const tokenNames = this.getTokenNames();\n if (tokenNames===null) {\n throw(\"The current recognizer does not provide a list of token names.\");\n }\n let result = this.tokenTypeMapCache[tokenNames];\n if(result===undefined) {\n result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n result.EOF = Token.EOF;\n this.tokenTypeMapCache[tokenNames] = result;\n }\n return result;\n }\n\n /**\n * Get a map from rule names to rule indexes.\n *

Used for XPath and tree pattern compilation.

\n */\n getRuleIndexMap() {\n const ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n let result = this.ruleIndexMapCache[ruleNames]; // todo: should it be Recognizer.ruleIndexMapCache ?\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n }\n\n getTokenType(tokenName) {\n const ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n }\n\n // What is the error header, normally line/character position information?\n getErrorHeader(e) {\n const line = e.getOffendingToken().line;\n const column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n }\n\n /**\n * How should a token be displayed in an error message? The default\n * is to display just the text, but during development you might\n * want to have a lot of information spit out. Override in that case\n * to use t.toString() (which, for CommonToken, dumps everything about\n * the token). This is better than forcing you to override a method in\n * your token objects because you don't have to go modify your lexer\n * so that it creates a new Java type.\n *\n * @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n * implementations of {@link ANTLRErrorStrategy} may provide a similar\n * feature when necessary. For example, see\n * {@link DefaultErrorStrategy//getTokenErrorDisplay}.*/\n getTokenErrorDisplay(t) {\n if (t===null) {\n return \"\";\n }\n let s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n }\n\n getErrorListenerDispatch() {\n return new ProxyErrorListener(this._listeners);\n }\n\n /**\n * subclass needs to override these if there are sempreds or actions\n * that the ATN interp needs to execute\n */\n sempred(localctx, ruleIndex, actionIndex) {\n return true;\n }\n\n precpred(localctx , precedence) {\n return true;\n }\n\n get state(){\n return this._stateNumber;\n }\n\n set state(state) {\n this._stateNumber = state;\n }\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n\nmodule.exports = Recognizer;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst CommonToken = require('./Token').CommonToken;\n\nclass TokenFactory {}\n\n/**\n * This default implementation of {@link TokenFactory} creates\n * {@link CommonToken} objects.\n */\nclass CommonTokenFactory extends TokenFactory {\n constructor(copyText) {\n super();\n /**\n * Indicates whether {@link CommonToken//setText} should be called after\n * constructing tokens to explicitly set the text. This is useful for cases\n * where the input stream might not be able to provide arbitrary substrings\n * of text from the input after the lexer creates a token (e.g. the\n * implementation of {@link CharStream//getText} in\n * {@link UnbufferedCharStream} throws an\n * {@link UnsupportedOperationException}). Explicitly setting the token text\n * allows {@link Token//getText} to be called at any time regardless of the\n * input stream implementation.\n *\n *

\n * The default value is {@code false} to avoid the performance and memory\n * overhead of copying text for every token unless explicitly requested.

\n */\n this.copyText = copyText===undefined ? false : copyText;\n }\n\n create(source, type, text, channel, start, stop, line, column) {\n const t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n }\n\n createThin(type, text) {\n const t = new CommonToken(null, type);\n t.text = text;\n return t;\n }\n}\n\n/**\n * The default {@link CommonTokenFactory} instance.\n *\n *

\n * This token factory does not explicitly copy token text when constructing\n * tokens.

\n */\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n\nmodule.exports = CommonTokenFactory;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n * 3 kinds of errors: prediction errors, failed predicate errors, and\n * mismatched input errors. In each case, the parser knows where it is\n * in the input, where it is in the ATN, the rule invocation stack,\n * and what kind of problem occurred.\n */\n\nconst {PredicateTransition} = require('./../atn/Transition');\nconst {Interval} = require('../IntervalSet').Interval;\n\nclass RecognitionException extends Error {\n constructor(params) {\n super(params.message);\n if (!!Error.captureStackTrace) {\n Error.captureStackTrace(this, RecognitionException);\n } else {\n var stack = new Error().stack;\n }\n this.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n /**\n * The current {@link Token} when an error occurred. Since not all streams\n * support accessing symbols by index, we have to track the {@link Token}\n * instance itself\n */\n this.offendingToken = null;\n /**\n * Get the ATN state number the parser was in at the time the error\n * occurred. For {@link NoViableAltException} and\n * {@link LexerNoViableAltException} exceptions, this is the\n * {@link DecisionState} number. For others, it is the state whose outgoing\n * edge we couldn't match.\n */\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n }\n\n /**\n * Gets the set of input symbols which could potentially follow the\n * previously matched symbol at the time this exception was thrown.\n *\n *

If the set of expected tokens is not known and could not be computed,\n * this method returns {@code null}.

\n *\n * @return The set of token types that could potentially follow the current\n * state in the ATN, or {@code null} if the information is not available.\n */\n getExpectedTokens() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n }\n\n //

If the state number is not known, this method returns -1.

\n toString() {\n return this.message;\n }\n}\n\nclass LexerNoViableAltException extends RecognitionException {\n constructor(lexer, input, startIndex, deadEndConfigs) {\n super({message: \"\", recognizer: lexer, input: input, ctx: null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n }\n\n toString() {\n let symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText(new Interval(this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n }\n}\n\n\n/**\n * Indicates that the parser could not decide which of two or more paths\n * to take based upon the remaining input. It tracks the starting token\n * of the offending input and also knows where the parser was\n * in the various paths when the error. Reported by reportNoViableAlternative()\n */\nclass NoViableAltException extends RecognitionException {\n constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n ctx = ctx || recognizer._ctx;\n offendingToken = offendingToken || recognizer.getCurrentToken();\n startToken = startToken || recognizer.getCurrentToken();\n input = input || recognizer.getInputStream();\n super({message: \"\", recognizer: recognizer, input: input, ctx: ctx});\n // Which configurations did we try at input.index() that couldn't match\n // input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n }\n}\n\n/**\n * This signifies any kind of mismatched input exceptions such as\n * when the current input does not match the expected token.\n*/\nclass InputMismatchException extends RecognitionException {\n constructor(recognizer) {\n super({message: \"\", recognizer: recognizer, input: recognizer.getInputStream(), ctx: recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n }\n}\n\nfunction formatMessage(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n}\n\n/**\n * A semantic predicate failed during validation. Validation of predicates\n * occurs when normally parsing the alternative just like matching a token.\n * Disambiguating predicate evaluation occurs when we test a predicate during\n * prediction.\n*/\nclass FailedPredicateException extends RecognitionException {\n constructor(recognizer, predicate, message) {\n super({\n message: formatMessage(predicate, message || null), recognizer: recognizer,\n input: recognizer.getInputStream(), ctx: recognizer._ctx\n });\n const s = recognizer._interp.atn.states[recognizer.state]\n const trans = s.transitions[0]\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n }\n}\n\n\nclass ParseCancellationException extends Error{\n constructor() {\n super()\n Error.captureStackTrace(this, ParseCancellationException);\n }\n}\n\nmodule.exports = {\n RecognitionException,\n NoViableAltException,\n LexerNoViableAltException,\n InputMismatchException,\n FailedPredicateException,\n ParseCancellationException\n};\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\nconst Recognizer = require('./Recognizer');\nconst CommonTokenFactory = require('./CommonTokenFactory');\nconst {RecognitionException} = require('./error/Errors');\nconst {LexerNoViableAltException} = require('./error/Errors');\n\nclass TokenSource {}\n\n/**\n * A lexer is recognizer that draws input symbols from a character stream.\n * lexer grammars result in a subclass of this object. A Lexer object\n * uses simplified match() and error recovery mechanisms in the interest of speed.\n */\nclass Lexer extends Recognizer {\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis._input = input;\n\t\tthis._factory = CommonTokenFactory.DEFAULT;\n\t\tthis._tokenFactorySourcePair = [ this, input ];\n\n\t\tthis._interp = null; // child classes must populate this\n\n\t\t/**\n\t\t * The goal of all lexer rules/methods is to create a token object.\n\t\t * this is an instance variable as multiple rules may collaborate to\n\t\t * create a single token. nextToken will return this object after\n\t\t * matching lexer rule(s). If you subclass to allow multiple token\n\t\t * emissions, then set this to the last token to be matched or\n\t\t * something nonnull so that the auto token emit mechanism will not\n\t\t * emit another token.\n\t\t */\n\t\tthis._token = null;\n\n\t\t/**\n\t\t * What character index in the stream did the current token start at?\n\t\t * Needed, for example, to get the text for current token. Set at\n\t\t * the start of nextToken.\n\t\t */\n\t\tthis._tokenStartCharIndex = -1;\n\n\t\t// The line on which the first character of the token resides///\n\t\tthis._tokenStartLine = -1;\n\n\t\t// The character position of first character within the line///\n\t\tthis._tokenStartColumn = -1;\n\n\t\t// Once we see EOF on char stream, next token will be EOF.\n\t\t// If you have DONE : EOF ; then you see DONE EOF.\n\t\tthis._hitEOF = false;\n\n\t\t// The channel number for the current token///\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t\t// The token type for the current token///\n\t\tthis._type = Token.INVALID_TYPE;\n\n\t\tthis._modeStack = [];\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t\t/**\n\t\t * You can set the text for the current token to override what is in\n\t\t * the input char buffer. Use setText() or can set this instance var.\n\t\t */\n\t\tthis._text = null;\n\t}\n\n\treset() {\n\t\t// wack Lexer state variables\n\t\tif (this._input !== null) {\n\t\t\tthis._input.seek(0); // rewind the input\n\t\t}\n\t\tthis._token = null;\n\t\tthis._type = Token.INVALID_TYPE;\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\tthis._tokenStartCharIndex = -1;\n\t\tthis._tokenStartColumn = -1;\n\t\tthis._tokenStartLine = -1;\n\t\tthis._text = null;\n\n\t\tthis._hitEOF = false;\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\t\tthis._modeStack = [];\n\n\t\tthis._interp.reset();\n\t}\n\n// Return a token from this source; i.e., match a token on the char stream.\n\tnextToken() {\n\t\tif (this._input === null) {\n\t\t\tthrow \"nextToken requires a non-null input stream.\";\n\t\t}\n\n\t\t/**\n\t\t * Mark start location in char stream so unbuffered streams are\n\t\t * guaranteed at least have text of current token\n\t\t */\n\t\tconst tokenStartMarker = this._input.mark();\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tif (this._hitEOF) {\n\t\t\t\t\tthis.emitEOF();\n\t\t\t\t\treturn this._token;\n\t\t\t\t}\n\t\t\t\tthis._token = null;\n\t\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\t\tthis._text = null;\n\t\t\t\tlet continueOuter = false;\n\t\t\t\twhile (true) {\n\t\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\t\tlet ttype = Lexer.SKIP;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif(e instanceof RecognitionException) {\n\t\t\t\t\t\t\tthis.notifyListeners(e); // report error\n\t\t\t\t\t\t\tthis.recover(e);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(e.stack);\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\t\tthis._type = ttype;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (continueOuter) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._token === null) {\n\t\t\t\t\tthis.emit();\n\t\t\t\t}\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t} finally {\n\t\t\t// make sure we release marker after match or\n\t\t\t// unbuffered char stream will keep buffering\n\t\t\tthis._input.release(tokenStartMarker);\n\t\t}\n\t}\n\n\t/**\n\t * Instruct the lexer to skip creating a token for current lexer rule\n\t * and look for another token. nextToken() knows to keep looking when\n\t * a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n\t * if token==null at end of any token rule, it creates one for you\n\t * and emits it.\n\t */\n\tskip() {\n\t\tthis._type = Lexer.SKIP;\n\t}\n\n\tmore() {\n\t\tthis._type = Lexer.MORE;\n\t}\n\n\tmode(m) {\n\t\tthis._mode = m;\n\t}\n\n\tpushMode(m) {\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"pushMode \" + m);\n\t\t}\n\t\tthis._modeStack.push(this._mode);\n\t\tthis.mode(m);\n\t}\n\n\tpopMode() {\n\t\tif (this._modeStack.length === 0) {\n\t\t\tthrow \"Empty Stack\";\n\t\t}\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t\t}\n\t\tthis.mode(this._modeStack.pop());\n\t\treturn this._mode;\n\t}\n\n\t/**\n\t * By default does not support multiple emits per nextToken invocation\n\t * for efficiency reasons. Subclass and override this method, nextToken,\n\t * and getToken (to push tokens into a list and pull from that list\n\t * rather than a single variable as this implementation does).\n\t */\n\temitToken(token) {\n\t\tthis._token = token;\n\t}\n\n\t/**\n\t * The standard method called to automatically emit a token at the\n\t * outermost lexical rule. The token object should point into the\n\t * char buffer start..stop. If there is a text override in 'text',\n\t * use that to set the token's text. Override this method to emit\n\t * custom Token objects or provide a new factory.\n\t */\n\temit() {\n\t\tconst t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn);\n\t\tthis.emitToken(t);\n\t\treturn t;\n\t}\n\n\temitEOF() {\n\t\tconst cpos = this.column;\n\t\tconst lpos = this.line;\n\t\tconst eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\t\tthis._input.index - 1, lpos, cpos);\n\t\tthis.emitToken(eof);\n\t\treturn eof;\n\t}\n\n// What is the index of the current character of lookahead?///\n\tgetCharIndex() {\n\t\treturn this._input.index;\n\t}\n\n\t/**\n\t * Return a list of all Token objects in input char stream.\n\t * Forces load of all tokens. Does not include EOF token.\n\t */\n\tgetAllTokens() {\n\t\tconst tokens = [];\n\t\tlet t = this.nextToken();\n\t\twhile (t.type !== Token.EOF) {\n\t\t\ttokens.push(t);\n\t\t\tt = this.nextToken();\n\t\t}\n\t\treturn tokens;\n\t}\n\n\tnotifyListeners(e) {\n\t\tconst start = this._tokenStartCharIndex;\n\t\tconst stop = this._input.index;\n\t\tconst text = this._input.getText(start, stop);\n\t\tconst msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\t\tconst listener = this.getErrorListenerDispatch();\n\t\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn, msg, e);\n\t}\n\n\tgetErrorDisplay(s) {\n\t\tconst d = [];\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\td.push(s[i]);\n\t\t}\n\t\treturn d.join('');\n\t}\n\n\tgetErrorDisplayForChar(c) {\n\t\tif (c.charCodeAt(0) === Token.EOF) {\n\t\t\treturn \"\";\n\t\t} else if (c === '\\n') {\n\t\t\treturn \"\\\\n\";\n\t\t} else if (c === '\\t') {\n\t\t\treturn \"\\\\t\";\n\t\t} else if (c === '\\r') {\n\t\t\treturn \"\\\\r\";\n\t\t} else {\n\t\t\treturn c;\n\t\t}\n\t}\n\n\tgetCharErrorDisplay(c) {\n\t\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n\t}\n\n\t/**\n\t * Lexers can normally match any char in it's vocabulary after matching\n\t * a token, so do the easy thing and just kill a character and hope\n\t * it all works out. You can instead use the rule invocation stack\n\t * to do sophisticated error recovery if you are in a fragment rule.\n\t */\n\trecover(re) {\n\t\tif (this._input.LA(1) !== Token.EOF) {\n\t\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t\t// skip a char and try again\n\t\t\t\tthis._interp.consume(this._input);\n\t\t\t} else {\n\t\t\t\t// TODO: Do we lose character or line position information?\n\t\t\t\tthis._input.consume();\n\t\t\t}\n\t\t}\n\t}\n\n\tget inputStream(){\n\t\treturn this._input;\n\t}\n\n\tset inputStream(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n\n\tget sourceName(){\n\t\treturn this._input.sourceName;\n\t}\n\n\tget type(){\n\t\treturn this.type;\n\t}\n\n\tset type(type) {\n\t\tthis._type = type;\n\t}\n\n\tget line(){\n\t\treturn this._interp.line;\n\t}\n\n\tset line(line) {\n\t\tthis._interp.line = line;\n\t}\n\n\tget column(){\n\t\treturn this._interp.column;\n\t}\n\n\tset column(column) {\n\t\tthis._interp.column = column;\n\t}\n\n\tget text(){\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\n\n\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\n// Set the char stream and reset the lexer\n\n\nmodule.exports = Lexer;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst ATN = require('./ATN');\nconst Utils = require('./../Utils');\nconst {SemanticContext} = require('./SemanticContext');\nconst {merge} = require('./../PredictionContext');\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n/**\n * Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n * info about the set, with support for combining similar configurations using a\n * graph-structured stack\n */\nclass ATNConfigSet {\n\tconstructor(fullCtx) {\n\t\t/**\n\t\t * The reason that we need this is because we don't want the hash map to use\n\t\t * the standard hash code and equals. We need all configurations with the\n\t\t * same\n\t\t * {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t\t * doubles\n\t\t * the number of objects associated with ATNConfigs. The other solution is\n\t\t * to\n\t\t * use a hash table that lets us specify the equals/hashcode operation.\n\t\t * All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t\t * when we go readonly as this set becomes a DFA state\n\t\t */\n\t\tthis.configLookup = new Utils.Set(hashATNConfig, equalATNConfigs);\n\t\t/**\n\t\t * Indicates that this configuration set is part of a full context\n\t\t * LL prediction. It will be used to determine how to merge $. With SLL\n\t\t * it's a wildcard whereas it is not for LL context merge\n\t\t */\n\t\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t\t/**\n\t\t * Indicates that the set of configurations is read-only. Do not\n\t\t * allow any code to manipulate the set; DFA states will point at\n\t\t * the sets and they must not change. This does not protect the other\n\t\t * fields; in particular, conflictingAlts is set after\n\t\t * we've made this readonly\n\t\t */\n\t\tthis.readOnly = false;\n\t\t// Track the elements as they are added to the set; supports get(i)///\n\t\tthis.configs = [];\n\n\t\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t\t// together, saves recomputation\n\t\t// TODO: can we track conflicts as they are added to save scanning configs\n\t\t// later?\n\t\tthis.uniqueAlt = 0;\n\t\tthis.conflictingAlts = null;\n\n\t\t/**\n\t\t * Used in parser and lexer. In lexer, it indicates we hit a pred\n\t\t * while computing a closure operation. Don't make a DFA state from this\n\t\t */\n\t\tthis.hasSemanticContext = false;\n\t\tthis.dipsIntoOuterContext = false;\n\n\t\tthis.cachedHashCode = -1;\n\t}\n\n\t/**\n\t * Adding a new config means merging contexts with existing configs for\n\t * {@code (s, i, pi, _)}, where {@code s} is the\n\t * {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n\t * {@code pi} is the {@link ATNConfig//semanticContext}. We use\n\t * {@code (s,i,pi)} as key.\n\t *\n\t *

This method updates {@link //dipsIntoOuterContext} and\n\t * {@link //hasSemanticContext} when necessary.

\n\t */\n\tadd(config, mergeCache) {\n\t\tif (mergeCache === undefined) {\n\t\t\tmergeCache = null;\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\t\tthis.hasSemanticContext = true;\n\t\t}\n\t\tif (config.reachesIntoOuterContext > 0) {\n\t\t\tthis.dipsIntoOuterContext = true;\n\t\t}\n\t\tconst existing = this.configLookup.add(config);\n\t\tif (existing === config) {\n\t\t\tthis.cachedHashCode = -1;\n\t\t\tthis.configs.push(config); // track order here\n\t\t\treturn true;\n\t\t}\n\t\t// a previous (s,i,pi,_), merge with it and save result\n\t\tconst rootIsWildcard = !this.fullCtx;\n\t\tconst merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t\t/**\n\t\t * no need to check for existing.context, config.context in cache\n\t\t * since only way to create new graphs is \"call rule\" and here. We\n\t\t * cache at both places\n\t\t */\n\t\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t\t// make sure to preserve the precedence filter suppression during the merge\n\t\tif (config.precedenceFilterSuppressed) {\n\t\t\texisting.precedenceFilterSuppressed = true;\n\t\t}\n\t\texisting.context = merged; // replace context; no need to alt mapping\n\t\treturn true;\n\t}\n\n\tgetStates() {\n\t\tconst states = new Utils.Set();\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tstates.add(this.configs[i].state);\n\t\t}\n\t\treturn states;\n\t}\n\n\tgetPredicates() {\n\t\tconst preds = [];\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst c = this.configs[i].semanticContext;\n\t\t\tif (c !== SemanticContext.NONE) {\n\t\t\t\tpreds.push(c.semanticContext);\n\t\t\t}\n\t\t}\n\t\treturn preds;\n\t}\n\n\toptimizeConfigs(interpreter) {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (this.configLookup.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst config = this.configs[i];\n\t\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t\t}\n\t}\n\n\taddAll(coll) {\n\t\tfor (let i = 0; i < coll.length; i++) {\n\t\t\tthis.add(coll[i]);\n\t\t}\n\t\treturn false;\n\t}\n\n\tequals(other) {\n\t\treturn this === other ||\n\t\t\t(other instanceof ATNConfigSet &&\n\t\t\tUtils.equalArrays(this.configs, other.configs) &&\n\t\t\tthis.fullCtx === other.fullCtx &&\n\t\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n\t}\n\n\thashCode() {\n\t\tconst hash = new Utils.Hash();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n\n\tupdateHashCode(hash) {\n\t\tif (this.readOnly) {\n\t\t\tif (this.cachedHashCode === -1) {\n\t\t\t\tthis.cachedHashCode = this.hashCode();\n\t\t\t}\n\t\t\thash.update(this.cachedHashCode);\n\t\t} else {\n\t\t\thash.update(this.hashCode());\n\t\t}\n\t}\n\n\tisEmpty() {\n\t\treturn this.configs.length === 0;\n\t}\n\n\tcontains(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.contains(item);\n\t}\n\n\tcontainsFast(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.containsFast(item);\n\t}\n\n\tclear() {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tthis.configs = [];\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configLookup = new Utils.Set();\n\t}\n\n\tsetReadonly(readOnly) {\n\t\tthis.readOnly = readOnly;\n\t\tif (readOnly) {\n\t\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn Utils.arrayToString(this.configs) +\n\t\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n\t}\n\n\tget items(){\n\t\treturn this.configs;\n\t}\n\n\tget length(){\n\t\treturn this.configs.length;\n\t}\n}\n\n\nclass OrderedATNConfigSet extends ATNConfigSet {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.configLookup = new Utils.Set();\n\t}\n}\n\nmodule.exports = {\n\tATNConfigSet,\n\tOrderedATNConfigSet\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {ATNConfigSet} = require('./../atn/ATNConfigSet');\nconst {Hash, Set} = require('./../Utils');\n\n/**\n * Map a predicate to a predicted alternative.\n */\nclass PredPrediction {\n\tconstructor(pred, alt) {\n\t\tthis.alt = alt;\n\t\tthis.pred = pred;\n\t}\n\n\ttoString() {\n\t\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\n\t}\n}\n\n/**\n * A DFA state represents a set of possible ATN configurations.\n * As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n * to keep track of all possible states the ATN can be in after\n * reading each input symbol. That is to say, after reading\n * input a1a2..an, the DFA is in a state that represents the\n * subset T of the states of the ATN that are reachable from the\n * ATN's start state along some path labeled a1a2..an.\"\n * In conventional NFA→DFA conversion, therefore, the subset T\n * would be a bitset representing the set of states the\n * ATN could be in. We need to track the alt predicted by each\n * state as well, however. More importantly, we need to maintain\n * a stack of states, tracking the closure operations as they\n * jump from rule to rule, emulating rule invocations (method calls).\n * I have to add a stack to simulate the proper lookahead sequences for\n * the underlying LL grammar from which the ATN was derived.\n *\n *

I use a set of ATNConfig objects not simple states. An ATNConfig\n * is both a state (ala normal conversion) and a RuleContext describing\n * the chain of rules (if any) followed to arrive at that state.

\n *\n *

A DFA state may have multiple references to a particular state,\n * but with different ATN contexts (with same or different alts)\n * meaning that state was reached via a different set of rule invocations.

\n */\nclass DFAState {\n\tconstructor(stateNumber, configs) {\n\t\tif (stateNumber === null) {\n\t\t\tstateNumber = -1;\n\t\t}\n\t\tif (configs === null) {\n\t\t\tconfigs = new ATNConfigSet();\n\t\t}\n\t\tthis.stateNumber = stateNumber;\n\t\tthis.configs = configs;\n\t\t/**\n\t\t * {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t\t * {@link Token//EOF} maps to {@code edges[0]}.\n\t\t */\n\t\tthis.edges = null;\n\t\tthis.isAcceptState = false;\n\t\t/**\n\t\t * if accept state, what ttype do we match or alt do we predict?\n\t\t * This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link//predicates}\n\t\t * {@code !=null} or {@link //requiresFullContext}.\n\t\t */\n\t\tthis.prediction = 0;\n\t\tthis.lexerActionExecutor = null;\n\t\t/**\n\t\t * Indicates that this state was created during SLL prediction that\n\t\t * discovered a conflict between the configurations in the state. Future\n\t\t * {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t\t * full context prediction if this field is true.\n\t\t */\n\t\tthis.requiresFullContext = false;\n\t\t/**\n\t\t * During SLL parsing, this is a list of predicates associated with the\n\t\t * ATN configurations of the DFA state. When we have predicates,\n\t\t * {@link //requiresFullContext} is {@code false} since full context\n\t\t * prediction evaluates predicates\n\t\t * on-the-fly. If this is not null, then {@link //prediction} is\n\t\t * {@link ATN//INVALID_ALT_NUMBER}.\n\t\t *\n\t\t *

We only use these for non-{@link //requiresFullContext} but\n\t\t * conflicting states. That\n\t\t * means we know from the context (it's $ or we don't dip into outer\n\t\t * context) that it's an ambiguity not a conflict.

\n\t\t *\n\t\t *

This list is computed by {@link\n\t\t * ParserATNSimulator//predicateDFAState}.

\n\t\t */\n\t\tthis.predicates = null;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the set of all alts mentioned by all ATN configurations in this\n\t * DFA state.\n\t */\n\tgetAltSet() {\n\t\tconst alts = new Set();\n\t\tif (this.configs !== null) {\n\t\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\t\tconst c = this.configs[i];\n\t\t\t\talts.add(c.alt);\n\t\t\t}\n\t\t}\n\t\tif (alts.length === 0) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn alts;\n\t\t}\n\t}\n\n\t/**\n\t * Two {@link DFAState} instances are equal if their ATN configuration sets\n\t * are the same. This method is used to see if a state already exists.\n\t *\n\t *

Because the number of alternatives and number of ATN configurations are\n\t * finite, there is a finite number of DFA states that can be processed.\n\t * This is necessary to show that the algorithm terminates.

\n\t *\n\t *

Cannot test the DFA state numbers here because in\n\t * {@link ParserATNSimulator//addDFAState} we need to know if any other state\n\t * exists that has this exact set of ATN configurations. The\n\t * {@link //stateNumber} is irrelevant.

\n\t */\n\tequals(other) {\n\t\t// compare set of ATN configurations in this set with other\n\t\treturn this === other ||\n\t\t\t\t(other instanceof DFAState &&\n\t\t\t\t\tthis.configs.equals(other.configs));\n\t}\n\n\ttoString() {\n\t\tlet s = \"\" + this.stateNumber + \":\" + this.configs;\n\t\tif(this.isAcceptState) {\n\t\t\ts = s + \"=>\";\n\t\t\tif (this.predicates !== null)\n\t\t\t\ts = s + this.predicates;\n\t\t\telse\n\t\t\t\ts = s + this.prediction;\n\t\t}\n\t\treturn s;\n\t}\n\n\thashCode() {\n\t\tconst hash = new Hash();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n}\n\nmodule.exports = { DFAState, PredPrediction };\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {DFAState} = require('./../dfa/DFAState');\nconst {ATNConfigSet} = require('./ATNConfigSet');\nconst {getCachedPredictionContext} = require('./../PredictionContext');\nconst {Map} = require('./../Utils');\n\nclass ATNSimulator {\n constructor(atn, sharedContextCache) {\n /**\n * The context cache maps all PredictionContext objects that are ==\n * to a single cached copy. This cache is shared across all contexts\n * in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n * to use only cached nodes/graphs in addDFAState(). We don't want to\n * fill this during closure() since there are lots of contexts that\n * pop up but are not used ever again. It also greatly slows down closure().\n *\n *

This cache makes a huge difference in memory and a little bit in speed.\n * For the Java grammar on java.*, it dropped the memory requirements\n * at the end from 25M to 16M. We don't store any of the full context\n * graphs in the DFA because they are limited to local context only,\n * but apparently there's a lot of repetition there as well. We optimize\n * the config contexts before storing the config set in the DFA states\n * by literally rebuilding them with cached subgraphs only.

\n *\n *

I tried a cache for use during closure operations, that was\n * whacked after each adaptivePredict(). It cost a little bit\n * more time I think and doesn't save on the overall footprint\n * so it's not worth the complexity.

\n */\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n }\n\n getCachedContext(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n const visited = new Map();\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n }\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n\nmodule.exports = ATNSimulator;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {hashStuff} = require(\"../Utils\");\nconst {LexerIndexedCustomAction} = require('./LexerAction');\n\nclass LexerActionExecutor {\n\t/**\n\t * Represents an executor for a sequence of lexer actions which traversed during\n\t * the matching operation of a lexer rule (token).\n\t *\n\t *

The executor tracks position information for position-dependent lexer actions\n\t * efficiently, ensuring that actions appearing only at the end of the rule do\n\t * not cause bloating of the {@link DFA} created for the lexer.

\n\t */\n\tconstructor(lexerActions) {\n\t\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t\t/**\n\t\t * Caches the result of {@link //hashCode} since the hash code is an element\n\t\t * of the performance-critical {@link LexerATNConfig//hashCode} operation\n\t\t */\n\t\tthis.cachedHashCode = hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t\t// lexerActions]))\n\t\treturn this;\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which encodes the current offset\n\t * for position-dependent lexer actions.\n\t *\n\t *

Normally, when the executor encounters lexer actions where\n\t * {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n\t * {@link IntStream//seek} on the input {@link CharStream} to set the input\n\t * position to the end of the current token. This behavior provides\n\t * for efficient DFA representation of lexer actions which appear at the end\n\t * of a lexer rule, even when the lexer rule matches a variable number of\n\t * characters.

\n\t *\n\t *

Prior to traversing a match transition in the ATN, the current offset\n\t * from the token start index is assigned to all position-dependent lexer\n\t * actions which have not already been assigned a fixed offset. By storing\n\t * the offsets relative to the token start index, the DFA representation of\n\t * lexer actions which appear in the middle of tokens remains efficient due\n\t * to sharing among tokens of the same length, regardless of their absolute\n\t * position in the input stream.

\n\t *\n\t *

If the current executor already has offsets assigned to all\n\t * position-dependent lexer actions, the method returns {@code this}.

\n\t *\n\t * @param offset The current offset to assign to all position-dependent\n\t * lexer actions which do not already have offsets assigned.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} which stores input stream offsets\n\t * for all position-dependent lexer actions.\n\t */\n\tfixOffsetBeforeMatch(offset) {\n\t\tlet updatedLexerActions = null;\n\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\t\tif (updatedLexerActions === null) {\n\t\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t\t}\n\t\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\t\tthis.lexerActions[i]);\n\t\t\t}\n\t\t}\n\t\tif (updatedLexerActions === null) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t\t}\n\t}\n\n\t/**\n\t * Execute the actions encapsulated by this executor within the context of a\n\t * particular {@link Lexer}.\n\t *\n\t *

This method calls {@link IntStream//seek} to set the position of the\n\t * {@code input} {@link CharStream} prior to calling\n\t * {@link LexerAction//execute} on a position-dependent action. Before the\n\t * method returns, the input position will be restored to the same position\n\t * it was in when the method was invoked.

\n\t *\n\t * @param lexer The lexer instance.\n\t * @param input The input stream which is the source for the current token.\n\t * When this method is called, the current {@link IntStream//index} for\n\t * {@code input} should be the start of the following token, i.e. 1\n\t * character past the end of the current token.\n\t * @param startIndex The token start index. This value may be passed to\n\t * {@link IntStream//seek} to set the {@code input} position to the beginning\n\t * of the token.\n\t */\n\texecute(lexer, input, startIndex) {\n\t\tlet requiresSeek = false;\n\t\tconst stopIndex = input.index;\n\t\ttry {\n\t\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\t\tlet lexerAction = this.lexerActions[i];\n\t\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\t\tconst offset = lexerAction.offset;\n\t\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\t\tinput.seek(stopIndex);\n\t\t\t\t\trequiresSeek = false;\n\t\t\t\t}\n\t\t\t\tlexerAction.execute(lexer);\n\t\t\t}\n\t\t} finally {\n\t\t\tif (requiresSeek) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t}\n\t\t}\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\t\treturn false;\n\t\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\t\treturn false;\n\t\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tconst numActions = this.lexerActions.length\n\t\t\tfor (let idx = 0; idx < numActions; ++idx) {\n\t\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which executes the actions for\n\t * the input {@code lexerActionExecutor} followed by a specified\n\t * {@code lexerAction}.\n\t *\n\t * @param lexerActionExecutor The executor for actions already traversed by\n\t * the lexer while matching a token within a particular\n\t * {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n\t * though it were an empty executor.\n\t * @param lexerAction The lexer action to execute after the actions\n\t * specified in {@code lexerActionExecutor}.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} for executing the combine actions\n\t * of {@code lexerActionExecutor} and {@code lexerAction}.\n\t */\n\tstatic append(lexerActionExecutor, lexerAction) {\n\t\tif (lexerActionExecutor === null) {\n\t\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t\t}\n\t\tconst lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\t\treturn new LexerActionExecutor(lexerActions);\n\t}\n}\n\n\nmodule.exports = LexerActionExecutor;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./../Token');\nconst Lexer = require('./../Lexer');\nconst ATN = require('./ATN');\nconst ATNSimulator = require('./ATNSimulator');\nconst {DFAState} = require('./../dfa/DFAState');\nconst {OrderedATNConfigSet} = require('./ATNConfigSet');\nconst {PredictionContext} = require('./../PredictionContext');\nconst {SingletonPredictionContext} = require('./../PredictionContext');\nconst {RuleStopState} = require('./ATNState');\nconst {LexerATNConfig} = require('./ATNConfig');\nconst {Transition} = require('./Transition');\nconst LexerActionExecutor = require('./LexerActionExecutor');\nconst {LexerNoViableAltException} = require('./../error/Errors');\n\nfunction resetSimState(sim) {\n\tsim.index = -1;\n\tsim.line = 0;\n\tsim.column = -1;\n\tsim.dfaState = null;\n}\n\nclass SimState {\n\tconstructor() {\n\t\tresetSimState(this);\n\t}\n\n\treset() {\n\t\tresetSimState(this);\n\t}\n}\n\nclass LexerATNSimulator extends ATNSimulator {\n\t/**\n\t * When we hit an accept state in either the DFA or the ATN, we\n\t * have to notify the character stream to start buffering characters\n\t * via {@link IntStream//mark} and record the current state. The current sim state\n\t * includes the current index into the input, the current line,\n\t * and current character position in that line. Note that the Lexer is\n\t * tracking the starting line and characterization of the token. These\n\t * variables track the \"state\" of the simulator when it hits an accept state.\n\t *\n\t *

We track these variables separately for the DFA and ATN simulation\n\t * because the DFA simulation often has to fail over to the ATN\n\t * simulation. If the ATN simulation fails, we need the DFA to fall\n\t * back to its previously accepted state, if any. If the ATN succeeds,\n\t * then the ATN does the accept and the DFA simulator that invoked it\n\t * can simply return the predicted token type.

\n\t */\n\tconstructor(recog, atn, decisionToDFA, sharedContextCache) {\n\t\tsuper(atn, sharedContextCache);\n\t\tthis.decisionToDFA = decisionToDFA;\n\t\tthis.recog = recog;\n\t\t/**\n\t\t * The current token's starting index into the character stream.\n\t\t * Shared across DFA to ATN simulation in case the ATN fails and the\n\t\t * DFA did not have a previous accept state. In this case, we use the\n\t\t * ATN-generated exception object\n\t\t */\n\t\tthis.startIndex = -1;\n\t\t// line number 1..n within the input///\n\t\tthis.line = 1;\n\t\t/**\n\t\t * The index of the character relative to the beginning of the line\n\t\t * 0..n-1\n\t\t */\n\t\tthis.column = 0;\n\t\tthis.mode = Lexer.DEFAULT_MODE;\n\t\t/**\n\t\t * Used during DFA/ATN exec to record the most recent accept configuration\n\t\t * info\n\t\t */\n\t\tthis.prevAccept = new SimState();\n\t}\n\n\tcopyState(simulator) {\n\t\tthis.column = simulator.column;\n\t\tthis.line = simulator.line;\n\t\tthis.mode = simulator.mode;\n\t\tthis.startIndex = simulator.startIndex;\n\t}\n\n\tmatch(input, mode) {\n\t\tthis.match_calls += 1;\n\t\tthis.mode = mode;\n\t\tconst mark = input.mark();\n\t\ttry {\n\t\t\tthis.startIndex = input.index;\n\t\t\tthis.prevAccept.reset();\n\t\t\tconst dfa = this.decisionToDFA[mode];\n\t\t\tif (dfa.s0 === null) {\n\t\t\t\treturn this.matchATN(input);\n\t\t\t} else {\n\t\t\t\treturn this.execATN(input, dfa.s0);\n\t\t\t}\n\t\t} finally {\n\t\t\tinput.release(mark);\n\t\t}\n\t}\n\n\treset() {\n\t\tthis.prevAccept.reset();\n\t\tthis.startIndex = -1;\n\t\tthis.line = 1;\n\t\tthis.column = 0;\n\t\tthis.mode = Lexer.DEFAULT_MODE;\n\t}\n\n\tmatchATN(input) {\n\t\tconst startState = this.atn.modeToStartState[this.mode];\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n\t\t}\n\t\tconst old_mode = this.mode;\n\t\tconst s0_closure = this.computeStartState(input, startState);\n\t\tconst suppressEdge = s0_closure.hasSemanticContext;\n\t\ts0_closure.hasSemanticContext = false;\n\n\t\tconst next = this.addDFAState(s0_closure);\n\t\tif (!suppressEdge) {\n\t\t\tthis.decisionToDFA[this.mode].s0 = next;\n\t\t}\n\n\t\tconst predict = this.execATN(input, next);\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n\t\t}\n\t\treturn predict;\n\t}\n\n\texecATN(input, ds0) {\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"start state closure=\" + ds0.configs);\n\t\t}\n\t\tif (ds0.isAcceptState) {\n\t\t\t// allow zero-length tokens\n\t\t\tthis.captureSimState(this.prevAccept, input, ds0);\n\t\t}\n\t\tlet t = input.LA(1);\n\t\tlet s = ds0; // s is current/from DFA state\n\n\t\twhile (true) { // while more work\n\t\t\tif (LexerATNSimulator.debug) {\n\t\t\t\tconsole.log(\"execATN loop starting closure: \" + s.configs);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * As we move src->trg, src->trg, we keep track of the previous trg to\n\t\t\t * avoid looking up the DFA state again, which is expensive.\n\t\t\t * If the previous target was already part of the DFA, we might\n\t\t\t * be able to avoid doing a reach operation upon t. If s!=null,\n\t\t\t * it means that semantic predicates didn't prevent us from\n\t\t\t * creating a DFA state. Once we know s!=null, we check to see if\n\t\t\t * the DFA state has an edge already for t. If so, we can just reuse\n\t\t\t * it's configuration set; there's no point in re-computing it.\n\t\t\t * This is kind of like doing DFA simulation within the ATN\n\t\t\t * simulation because DFA simulation is really just a way to avoid\n\t\t\t * computing reach/closure sets. Technically, once we know that\n\t\t\t * we have a previously added DFA state, we could jump over to\n\t\t\t * the DFA simulator. But, that would mean popping back and forth\n\t\t\t * a lot and making things more complicated algorithmically.\n\t\t\t * This optimization makes a lot of sense for loops within DFA.\n\t\t\t * A character will take us back to an existing DFA state\n\t\t\t * that already has lots of edges out of it. e.g., .* in comments.\n\t\t\t * print(\"Target for:\" + str(s) + \" and:\" + str(t))\n\t\t\t */\n\t\t\tlet target = this.getExistingTargetState(s, t);\n\t\t\t// print(\"Existing:\" + str(target))\n\t\t\tif (target === null) {\n\t\t\t\ttarget = this.computeTargetState(input, s, t);\n\t\t\t\t// print(\"Computed:\" + str(target))\n\t\t\t}\n\t\t\tif (target === ATNSimulator.ERROR) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// If this is a consumable input element, make sure to consume before\n\t\t\t// capturing the accept state so the input index, line, and char\n\t\t\t// position accurately reflect the state of the interpreter at the\n\t\t\t// end of the token.\n\t\t\tif (t !== Token.EOF) {\n\t\t\t\tthis.consume(input);\n\t\t\t}\n\t\t\tif (target.isAcceptState) {\n\t\t\t\tthis.captureSimState(this.prevAccept, input, target);\n\t\t\t\tif (t === Token.EOF) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tt = input.LA(1);\n\t\t\ts = target; // flip; current DFA target becomes new src/from state\n\t\t}\n\t\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\n\t}\n\n\t/**\n\t * Get an existing target state for an edge in the DFA. If the target state\n\t * for the edge has not yet been computed or is otherwise not available,\n\t * this method returns {@code null}.\n\t *\n\t * @param s The current DFA state\n\t * @param t The next input symbol\n\t * @return The existing target DFA state for the given input symbol\n\t * {@code t}, or {@code null} if the target state for this edge is not\n\t * already cached\n\t */\n\tgetExistingTargetState(s, t) {\n\t\tif (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n\t\tif(target===undefined) {\n\t\t\ttarget = null;\n\t\t}\n\t\tif (LexerATNSimulator.debug && target !== null) {\n\t\t\tconsole.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n\t\t}\n\t\treturn target;\n\t}\n\n\t/**\n\t * Compute a target state for an edge in the DFA, and attempt to add the\n\t * computed state and corresponding edge to the DFA.\n\t *\n\t * @param input The input stream\n\t * @param s The current DFA state\n\t * @param t The next input symbol\n\t *\n\t * @return The computed target DFA state for the given input symbol\n\t * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n\t * returns {@link //ERROR}.\n\t */\n\tcomputeTargetState(input, s, t) {\n\t\tconst reach = new OrderedATNConfigSet();\n\t\t// if we don't find an existing DFA state\n\t\t// Fill reach starting from closure, following t transitions\n\t\tthis.getReachableConfigSet(input, s.configs, reach, t);\n\n\t\tif (reach.items.length === 0) { // we got nowhere on t from s\n\t\t\tif (!reach.hasSemanticContext) {\n\t\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\n\t\t\t\t// cause a failover from DFA later.\n\t\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\n\t\t\t}\n\t\t\t// stop when we can't match any more char\n\t\t\treturn ATNSimulator.ERROR;\n\t\t}\n\t\t// Add an edge from s to target DFA found/created for reach\n\t\treturn this.addDFAEdge(s, t, null, reach);\n\t}\n\n\tfailOrAccept(prevAccept, input, reach, t) {\n\t\tif (this.prevAccept.dfaState !== null) {\n\t\t\tconst lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n\t\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\n\t\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.column);\n\t\t\treturn prevAccept.dfaState.prediction;\n\t\t} else {\n\t\t\t// if no accept and EOF is first char, return EOF\n\t\t\tif (t === Token.EOF && input.index === this.startIndex) {\n\t\t\t\treturn Token.EOF;\n\t\t\t}\n\t\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n\t\t}\n\t}\n\n\t/**\n\t * Given a starting configuration set, figure out all ATN configurations\n\t * we can reach upon input {@code t}. Parameter {@code reach} is a return\n\t * parameter.\n\t */\n\tgetReachableConfigSet(input, closure,\n\t\t\treach, t) {\n\t\t// this is used to skip processing for configs which have a lower priority\n\t\t// than a config that already reached an accept state for the same rule\n\t\tlet skipAlt = ATN.INVALID_ALT_NUMBER;\n\t\tfor (let i = 0; i < closure.items.length; i++) {\n\t\t\tconst cfg = closure.items[i];\n\t\t\tconst currentAltReachedAcceptState = (cfg.alt === skipAlt);\n\t\t\tif (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (LexerATNSimulator.debug) {\n\t\t\t\tconsole.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n\t\t\t\t\t\t.toString(this.recog, true));\n\t\t\t}\n\t\t\tfor (let j = 0; j < cfg.state.transitions.length; j++) {\n\t\t\t\tconst trans = cfg.state.transitions[j]; // for each transition\n\t\t\t\tconst target = this.getReachableTarget(trans, t);\n\t\t\t\tif (target !== null) {\n\t\t\t\t\tlet lexerActionExecutor = cfg.lexerActionExecutor;\n\t\t\t\t\tif (lexerActionExecutor !== null) {\n\t\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n\t\t\t\t\t}\n\t\t\t\t\tconst treatEofAsEpsilon = (t === Token.EOF);\n\t\t\t\t\tconst config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);\n\t\t\t\t\tif (this.closure(input, config, reach,\n\t\t\t\t\t\t\tcurrentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n\t\t\t\t\t\t// any remaining configs for this alt have a lower priority\n\t\t\t\t\t\t// than the one that just reached an accept state.\n\t\t\t\t\t\tskipAlt = cfg.alt;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\taccept(input, lexerActionExecutor,\n\t\t\t startIndex, index, line, charPos) {\n\t\t if (LexerATNSimulator.debug) {\n\t\t\t console.log(\"ACTION %s\\n\", lexerActionExecutor);\n\t\t }\n\t\t // seek to after last char in token\n\t\t input.seek(index);\n\t\t this.line = line;\n\t\t this.column = charPos;\n\t\t if (lexerActionExecutor !== null && this.recog !== null) {\n\t\t\t lexerActionExecutor.execute(this.recog, input, startIndex);\n\t\t }\n\t }\n\n\tgetReachableTarget(trans, t) {\n\t\tif (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\treturn trans.target;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tcomputeStartState(input, p) {\n\t\tconst initialContext = PredictionContext.EMPTY;\n\t\tconst configs = new OrderedATNConfigSet();\n\t\tfor (let i = 0; i < p.transitions.length; i++) {\n\t\t\tconst target = p.transitions[i].target;\n\t\t\tconst cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);\n\t\t\tthis.closure(input, cfg, configs, false, false, false);\n\t\t}\n\t\treturn configs;\n\t}\n\n\t/**\n\t * Since the alternatives within any lexer decision are ordered by\n\t * preference, this method stops pursuing the closure as soon as an accept\n\t * state is reached. After the first accept state is reached by depth-first\n\t * search from {@code config}, all other (potentially reachable) states for\n\t * this rule would have a lower priority.\n\t *\n\t * @return {Boolean} {@code true} if an accept state is reached, otherwise\n\t * {@code false}.\n\t */\n\tclosure(input, config, configs,\n\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n\t\tlet cfg = null;\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n\t\t}\n\t\tif (config.state instanceof RuleStopState) {\n\t\t\tif (LexerATNSimulator.debug) {\n\t\t\t\tif (this.recog !== null) {\n\t\t\t\t\tconsole.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"closure at rule stop %s\\n\", config);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t\tif (config.context === null || config.context.isEmpty()) {\n\t\t\t\t\tconfigs.add(config);\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tconfigs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));\n\t\t\t\t\tcurrentAltReachedAcceptState = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (config.context !== null && !config.context.isEmpty()) {\n\t\t\t\tfor (let i = 0; i < config.context.length; i++) {\n\t\t\t\t\tif (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\t\tconst newContext = config.context.getParent(i); // \"pop\" return state\n\t\t\t\t\t\tconst returnState = this.atn.states[config.context.getReturnState(i)];\n\t\t\t\t\t\tcfg = new LexerATNConfig({ state:returnState, context:newContext }, config);\n\t\t\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg,\n\t\t\t\t\t\t\t\tconfigs, currentAltReachedAcceptState, speculative,\n\t\t\t\t\t\t\t\ttreatEofAsEpsilon);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn currentAltReachedAcceptState;\n\t\t}\n\t\t// optimization\n\t\tif (!config.state.epsilonOnlyTransitions) {\n\t\t\tif (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n\t\t\t\tconfigs.add(config);\n\t\t\t}\n\t\t}\n\t\tfor (let j = 0; j < config.state.transitions.length; j++) {\n\t\t\tconst trans = config.state.transitions[j];\n\t\t\tcfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n\t\t\tif (cfg !== null) {\n\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg, configs,\n\t\t\t\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n\t\t\t}\n\t\t}\n\t\treturn currentAltReachedAcceptState;\n\t}\n\n\t// side-effect: can alter configs.hasSemanticContext\n\tgetEpsilonTarget(input, config, trans,\n\t\t\tconfigs, speculative, treatEofAsEpsilon) {\n\t\tlet cfg = null;\n\t\tif (trans.serializationType === Transition.RULE) {\n\t\t\tconst newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n\t\t\tcfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);\n\t\t} else if (trans.serializationType === Transition.PRECEDENCE) {\n\t\t\tthrow \"Precedence predicates are not supported in lexers.\";\n\t\t} else if (trans.serializationType === Transition.PREDICATE) {\n\t\t\t// Track traversing semantic predicates. If we traverse,\n\t\t\t// we cannot add a DFA state for this \"reach\" computation\n\t\t\t// because the DFA would not test the predicate again in the\n\t\t\t// future. Rather than creating collections of semantic predicates\n\t\t\t// like v3 and testing them on prediction, v4 will test them on the\n\t\t\t// fly all the time using the ATN not the DFA. This is slower but\n\t\t\t// semantically it's not used that often. One of the key elements to\n\t\t\t// this predicate mechanism is not adding DFA states that see\n\t\t\t// predicates immediately afterwards in the ATN. For example,\n\n\t\t\t// a : ID {p1}? | ID {p2}? ;\n\n\t\t\t// should create the start state for rule 'a' (to save start state\n\t\t\t// competition), but should not create target of ID state. The\n\t\t\t// collection of ATN states the following ID references includes\n\t\t\t// states reached by traversing predicates. Since this is when we\n\t\t\t// test them, we cannot cash the DFA state target of ID.\n\n\t\t\tif (LexerATNSimulator.debug) {\n\t\t\t\tconsole.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n\t\t\t}\n\t\t\tconfigs.hasSemanticContext = true;\n\t\t\tif (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n\t\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t\t}\n\t\t} else if (trans.serializationType === Transition.ACTION) {\n\t\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t\t// execute actions anywhere in the start rule for a token.\n\t\t\t\t//\n\t\t\t\t// TODO: if the entry rule is invoked recursively, some\n\t\t\t\t// actions may be executed during the recursive call. The\n\t\t\t\t// problem can appear when hasEmptyPath() is true but\n\t\t\t\t// isEmpty() is false. In this case, the config needs to be\n\t\t\t\t// split into two contexts - one with just the empty path\n\t\t\t\t// and another with everything but the empty path.\n\t\t\t\t// Unfortunately, the current algorithm does not allow\n\t\t\t\t// getEpsilonTarget to return two configurations, so\n\t\t\t\t// additional modifications are needed before we can support\n\t\t\t\t// the split operation.\n\t\t\t\tconst lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n\t\t\t\t\t\tthis.atn.lexerActions[trans.actionIndex]);\n\t\t\t\tcfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);\n\t\t\t} else {\n\t\t\t\t// ignore actions in referenced rules\n\t\t\t\tcfg = new LexerATNConfig( { state:trans.target}, config);\n\t\t\t}\n\t\t} else if (trans.serializationType === Transition.EPSILON) {\n\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t} else if (trans.serializationType === Transition.ATOM ||\n\t\t\t\t\ttrans.serializationType === Transition.RANGE ||\n\t\t\t\t\ttrans.serializationType === Transition.SET) {\n\t\t\tif (treatEofAsEpsilon) {\n\t\t\t\tif (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\t\t\tcfg = new LexerATNConfig( { state:trans.target }, config);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cfg;\n\t}\n\n\t/**\n\t * Evaluate a predicate specified in the lexer.\n\t *\n\t *

If {@code speculative} is {@code true}, this method was called before\n\t * {@link //consume} for the matched character. This method should call\n\t * {@link //consume} before evaluating the predicate to ensure position\n\t * sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n\t * and {@link Lexer//getcolumn}, properly reflect the current\n\t * lexer state. This method should restore {@code input} and the simulator\n\t * to the original state before returning (i.e. undo the actions made by the\n\t * call to {@link //consume}.

\n\t *\n\t * @param input The input stream.\n\t * @param ruleIndex The rule containing the predicate.\n\t * @param predIndex The index of the predicate within the rule.\n\t * @param speculative {@code true} if the current index in {@code input} is\n\t * one character before the predicate's location.\n\t *\n\t * @return {@code true} if the specified predicate evaluates to\n\t * {@code true}.\n\t */\n\tevaluatePredicate(input, ruleIndex,\n\t\t\tpredIndex, speculative) {\n\t\t// assume true if no recognizer was provided\n\t\tif (this.recog === null) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!speculative) {\n\t\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t\t}\n\t\tconst savedcolumn = this.column;\n\t\tconst savedLine = this.line;\n\t\tconst index = input.index;\n\t\tconst marker = input.mark();\n\t\ttry {\n\t\t\tthis.consume(input);\n\t\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t\t} finally {\n\t\t\tthis.column = savedcolumn;\n\t\t\tthis.line = savedLine;\n\t\t\tinput.seek(index);\n\t\t\tinput.release(marker);\n\t\t}\n\t}\n\n\tcaptureSimState(settings, input, dfaState) {\n\t\tsettings.index = input.index;\n\t\tsettings.line = this.line;\n\t\tsettings.column = this.column;\n\t\tsettings.dfaState = dfaState;\n\t}\n\n\taddDFAEdge(from_, tk, to, cfgs) {\n\t\tif (to === undefined) {\n\t\t\tto = null;\n\t\t}\n\t\tif (cfgs === undefined) {\n\t\t\tcfgs = null;\n\t\t}\n\t\tif (to === null && cfgs !== null) {\n\t\t\t// leading to this call, ATNConfigSet.hasSemanticContext is used as a\n\t\t\t// marker indicating dynamic predicate evaluation makes this edge\n\t\t\t// dependent on the specific input sequence, so the static edge in the\n\t\t\t// DFA should be omitted. The target DFAState is still created since\n\t\t\t// execATN has the ability to resynchronize with the DFA state cache\n\t\t\t// following the predicate evaluation step.\n\t\t\t//\n\t\t\t// TJP notes: next time through the DFA, we see a pred again and eval.\n\t\t\t// If that gets us to a previously created (but dangling) DFA\n\t\t\t// state, we can continue in pure DFA mode from there.\n\t\t\t// /\n\t\t\tconst suppressEdge = cfgs.hasSemanticContext;\n\t\t\tcfgs.hasSemanticContext = false;\n\n\t\t\tto = this.addDFAState(cfgs);\n\n\t\t\tif (suppressEdge) {\n\t\t\t\treturn to;\n\t\t\t}\n\t\t}\n\t\t// add the edge\n\t\tif (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t\t// Only track edges within the DFA bounds\n\t\t\treturn to;\n\t\t}\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n\t\t}\n\t\tif (from_.edges === null) {\n\t\t\t// make room for tokens 1..n and -1 masquerading as index 0\n\t\t\tfrom_.edges = [];\n\t\t}\n\t\tfrom_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n\t\treturn to;\n\t}\n\n\t/**\n\t * Add a new DFA state if there isn't one with this set of\n\t * configurations already. This method also detects the first\n\t * configuration containing an ATN rule stop state. Later, when\n\t * traversing the DFA, we will know which rule to accept.\n\t */\n\taddDFAState(configs) {\n\t\tconst proposed = new DFAState(null, configs);\n\t\tlet firstConfigWithRuleStopState = null;\n\t\tfor (let i = 0; i < configs.items.length; i++) {\n\t\t\tconst cfg = configs.items[i];\n\t\t\tif (cfg.state instanceof RuleStopState) {\n\t\t\t\tfirstConfigWithRuleStopState = cfg;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (firstConfigWithRuleStopState !== null) {\n\t\t\tproposed.isAcceptState = true;\n\t\t\tproposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n\t\t\tproposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n\t\t}\n\t\tconst dfa = this.decisionToDFA[this.mode];\n\t\tconst existing = dfa.states.get(proposed);\n\t\tif (existing!==null) {\n\t\t\treturn existing;\n\t\t}\n\t\tconst newState = proposed;\n\t\tnewState.stateNumber = dfa.states.length;\n\t\tconfigs.setReadonly(true);\n\t\tnewState.configs = configs;\n\t\tdfa.states.add(newState);\n\t\treturn newState;\n\t}\n\n\tgetDFA(mode) {\n\t\treturn this.decisionToDFA[mode];\n\t}\n\n// Get the text matched so far for the current token.\n\tgetText(input) {\n\t\t// index is first lookahead char, don't include.\n\t\treturn input.getText(this.startIndex, input.index - 1);\n\t}\n\n\tconsume(input) {\n\t\tconst curChar = input.LA(1);\n\t\tif (curChar === \"\\n\".charCodeAt(0)) {\n\t\t\tthis.line += 1;\n\t\t\tthis.column = 0;\n\t\t} else {\n\t\t\tthis.column += 1;\n\t\t}\n\t\tinput.consume();\n\t}\n\n\tgetTokenName(tt) {\n\t\tif (tt === -1) {\n\t\t\treturn \"EOF\";\n\t\t} else {\n\t\t\treturn \"'\" + String.fromCharCode(tt) + \"'\";\n\t\t}\n\t}\n}\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n\nLexerATNSimulator.match_calls = 0;\n\nmodule.exports = LexerATNSimulator;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Map, BitSet, AltDict, hashStuff} = require('./../Utils');\nconst ATN = require('./ATN');\nconst {RuleStopState} = require('./ATNState');\nconst {ATNConfigSet} = require('./ATNConfigSet');\nconst {ATNConfig} = require('./ATNConfig');\nconst {SemanticContext} = require('./SemanticContext');\n\n/**\n * This enumeration defines the prediction modes available in ANTLR 4 along with\n * utility methods for analyzing configuration sets for conflicts and/or\n * ambiguities.\n */\nconst PredictionMode = {\n /**\n * The SLL(*) prediction mode. This prediction mode ignores the current\n * parser context when making predictions. This is the fastest prediction\n * mode, and provides correct results for many grammars. This prediction\n * mode is more powerful than the prediction mode provided by ANTLR 3, but\n * may result in syntax errors for grammar and input combinations which are\n * not SLL.\n *\n *

\n * When using this prediction mode, the parser will either return a correct\n * parse tree (i.e. the same parse tree that would be returned with the\n * {@link //LL} prediction mode), or it will report a syntax error. If a\n * syntax error is encountered when using the {@link //SLL} prediction mode,\n * it may be due to either an actual syntax error in the input or indicate\n * that the particular combination of grammar and input requires the more\n * powerful {@link //LL} prediction abilities to complete successfully.

\n *\n *

\n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

\n */\n SLL: 0,\n\n /**\n * The LL(*) prediction mode. This prediction mode allows the current parser\n * context to be used for resolving SLL conflicts that occur during\n * prediction. This is the fastest prediction mode that guarantees correct\n * parse results for all combinations of grammars with syntactically correct\n * inputs.\n *\n *

\n * When using this prediction mode, the parser will make correct decisions\n * for all syntactically-correct grammar and input combinations. However, in\n * cases where the grammar is truly ambiguous this prediction mode might not\n * report a precise answer for exactly which alternatives are\n * ambiguous.

\n *\n *

\n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

\n */\n LL: 1,\n\n /**\n *\n * The LL(*) prediction mode with exact ambiguity detection. In addition to\n * the correctness guarantees provided by the {@link //LL} prediction mode,\n * this prediction mode instructs the prediction algorithm to determine the\n * complete and exact set of ambiguous alternatives for every ambiguous\n * decision encountered while parsing.\n *\n *

\n * This prediction mode may be used for diagnosing ambiguities during\n * grammar development. Due to the performance overhead of calculating sets\n * of ambiguous alternatives, this prediction mode should be avoided when\n * the exact results are not necessary.

\n *\n *

\n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

\n */\n LL_EXACT_AMBIG_DETECTION: 2,\n\n /**\n *\n * Computes the SLL prediction termination condition.\n *\n *

\n * This method computes the SLL prediction termination condition for both of\n * the following cases.

\n *\n *
    \n *
  • The usual SLL+LL fallback upon SLL conflict
  • \n *
  • Pure SLL without LL fallback
  • \n *
\n *\n *

COMBINED SLL+LL PARSING

\n *\n *

When LL-fallback is enabled upon SLL conflict, correct predictions are\n * ensured regardless of how the termination condition is computed by this\n * method. Due to the substantially higher cost of LL prediction, the\n * prediction should only fall back to LL when the additional lookahead\n * cannot lead to a unique SLL prediction.

\n *\n *

Assuming combined SLL+LL parsing, an SLL configuration set with only\n * conflicting subsets should fall back to full LL, even if the\n * configuration sets don't resolve to the same alternative (e.g.\n * {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n * configuration, SLL could continue with the hopes that more lookahead will\n * resolve via one of those non-conflicting configurations.

\n *\n *

Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n * stops when it sees only conflicting configuration subsets. In contrast,\n * full LL keeps going when there is uncertainty.

\n *\n *

HEURISTIC

\n *\n *

As a heuristic, we stop prediction when we see any conflicting subset\n * unless we see a state that only has one alternative associated with it.\n * The single-alt-state thing lets prediction continue upon rules like\n * (otherwise, it would admit defeat too soon):

\n *\n *

{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}

\n *\n *

When the ATN simulation reaches the state before {@code ';'}, it has a\n * DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n * {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n * processing this node because alternative to has another way to continue,\n * via {@code [6|2|[]]}.

\n *\n *

It also let's us continue for this rule:

\n *\n *

{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}

\n *\n *

After matching input A, we reach the stop state for rule A, state 1.\n * State 8 is the state right before B. Clearly alternatives 1 and 2\n * conflict and no amount of further lookahead will separate the two.\n * However, alternative 3 will be able to continue and so we do not stop\n * working on this state. In the previous example, we're concerned with\n * states associated with the conflicting alternatives. Here alt 3 is not\n * associated with the conflicting configs, but since we can continue\n * looking for input reasonably, don't declare the state done.

\n *\n *

PURE SLL PARSING

\n *\n *

To handle pure SLL parsing, all we have to do is make sure that we\n * combine stack contexts for configurations that differ only by semantic\n * predicate. From there, we can do the usual SLL termination heuristic.

\n *\n *

PREDICATES IN SLL+LL PARSING

\n *\n *

SLL decisions don't evaluate predicates until after they reach DFA stop\n * states because they need to create the DFA cache that works in all\n * semantic situations. In contrast, full LL evaluates predicates collected\n * during start state computation so it can ignore predicates thereafter.\n * This means that SLL termination detection can totally ignore semantic\n * predicates.

\n *\n *

Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n * semantic predicate contexts so we might see two configurations like the\n * following.

\n *\n *

{@code (s, 1, x, {}), (s, 1, x', {p})}

\n *\n *

Before testing these configurations against others, we have to merge\n * {@code x} and {@code x'} (without modifying the existing configurations).\n * For example, we test {@code (x+x')==x''} when looking for conflicts in\n * the following configurations.

\n *\n *

{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}

\n *\n *

If the configuration set has predicates (as indicated by\n * {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n * the configurations to strip out all of the predicates so that a standard\n * {@link ATNConfigSet} will merge everything ignoring predicates.

\n */\n hasSLLConflictTerminatingPrediction: function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n const dup = new ATNConfigSet();\n for(let i=0;iCan we stop looking ahead during ATN simulation or is there some\n * uncertainty as to which alternative we will ultimately pick, after\n * consuming more input? Even if there are partial conflicts, we might know\n * that everything is going to resolve to the same minimum alternative. That\n * means we can stop since no more lookahead will change that fact. On the\n * other hand, there might be multiple conflicts that resolve to different\n * minimums. That means we need more look ahead to decide which of those\n * alternatives we should predict.

\n *\n *

The basic idea is to split the set of configurations {@code C}, into\n * conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n * non-conflicting configurations. Two configurations conflict if they have\n * identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n * but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n * and {@code (s, j, ctx, _)} for {@code i!=j}.

\n *\n *

Reduce these configuration subsets to the set of possible alternatives.\n * You can compute the alternative subsets in one pass as follows:

\n *\n *

{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n * {@code C} holding {@code s} and {@code ctx} fixed.

\n *\n *

Or in pseudo-code, for each configuration {@code c} in {@code C}:

\n *\n *
\n     * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n     * alt and not pred\n     * 
\n *\n *

The values in {@code map} are the set of {@code A_s,ctx} sets.

\n *\n *

If {@code |A_s,ctx|=1} then there is no conflict associated with\n * {@code s} and {@code ctx}.

\n *\n *

Reduce the subsets to singletons by choosing a minimum of each subset. If\n * the union of these alternative subsets is a singleton, then no amount of\n * more lookahead will help us. We will always pick that alternative. If,\n * however, there is more than one alternative, then we are uncertain which\n * alternative to predict and must continue looking for resolution. We may\n * or may not discover an ambiguity in the future, even if there are no\n * conflicting subsets this round.

\n *\n *

The biggest sin is to terminate early because it means we've made a\n * decision but were uncertain as to the eventual outcome. We haven't used\n * enough lookahead. On the other hand, announcing a conflict too late is no\n * big deal; you will still have the conflict. It's just inefficient. It\n * might even look until the end of file.

\n *\n *

No special consideration for semantic predicates is required because\n * predicates are evaluated on-the-fly for full LL prediction, ensuring that\n * no configuration contains a semantic context during the termination\n * check.

\n *\n *

CONFLICTING CONFIGS

\n *\n *

Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n * when {@code i!=j} but {@code x=x'}. Because we merge all\n * {@code (s, i, _)} configurations together, that means that there are at\n * most {@code n} configurations associated with state {@code s} for\n * {@code n} possible alternatives in the decision. The merged stacks\n * complicate the comparison of configuration contexts {@code x} and\n * {@code x'}. Sam checks to see if one is a subset of the other by calling\n * merge and checking to see if the merged result is either {@code x} or\n * {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n * is the superset, then {@code i} is the only possible prediction since the\n * others resolve to {@code min(i)} as well. However, if {@code x} is\n * associated with {@code j>i} then at least one stack configuration for\n * {@code j} is not in conflict with alternative {@code i}. The algorithm\n * should keep going, looking for more lookahead due to the uncertainty.

\n *\n *

For simplicity, I'm doing a equality check between {@code x} and\n * {@code x'} that lets the algorithm continue to consume lookahead longer\n * than necessary. The reason I like the equality is of course the\n * simplicity but also because that is the test you need to detect the\n * alternatives that are actually in conflict.

\n *\n *

CONTINUE/STOP RULE

\n *\n *

Continue if union of resolved alternative sets from non-conflicting and\n * conflicting alternative subsets has more than one alternative. We are\n * uncertain about which alternative to predict.

\n *\n *

The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n * alternatives are still in the running for the amount of input we've\n * consumed at this point. The conflicting sets let us to strip away\n * configurations that won't lead to more states because we resolve\n * conflicts to the configuration with a minimum alternate for the\n * conflicting set.

\n *\n *

CASES

\n *\n *
    \n *\n *
  • no conflicts and more than 1 alternative in set => continue
  • \n *\n *
  • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n * {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n * {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n * {@code {1,3}} => continue\n *
  • \n *\n *
  • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n * {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n * {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n * {@code {1}} => stop and predict 1
  • \n *\n *
  • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n * {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {1}} = {@code {1}} => stop and predict 1, can announce\n * ambiguity {@code {1,2}}
  • \n *\n *
  • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n * {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {2}} = {@code {1,2}} => continue
  • \n *\n *
  • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n * {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {3}} = {@code {1,3}} => continue
  • \n *\n *
\n *\n *

EXACT AMBIGUITY DETECTION

\n *\n *

If all states report the same conflicting set of alternatives, then we\n * know we have the exact ambiguity set.

\n *\n *

|A_i|>1 and\n * A_i = A_j for all i, j.

\n *\n *

In other words, we continue examining lookahead until all {@code A_i}\n * have more than one alternative and all {@code A_i} are the same. If\n * {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n * because the resolved set is {@code {1}}. To determine what the real\n * ambiguity is, we have to know whether the ambiguity is between one and\n * two or one and three so we keep going. We can only stop prediction when\n * we need exact ambiguity detection when the sets look like\n * {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...

\n */\n resolvesToJustOneViableAlt: function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n },\n\n /**\n * Determines if every alternative subset in {@code altsets} contains more\n * than one alternative.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if every {@link BitSet} in {@code altsets} has\n * {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n */\n allSubsetsConflict: function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n },\n /**\n * Determines if any single alternative subset in {@code altsets} contains\n * exactly one alternative.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if {@code altsets} contains a {@link BitSet} with\n * {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n */\n hasNonConflictingAltSet: function(altsets) {\n for(let i=0;i1) {\n return true;\n }\n }\n return false;\n },\n\n\n /**\n * Determines if every alternative subset in {@code altsets} is equivalent.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if every member of {@code altsets} is equal to the\n * others, otherwise {@code false}\n */\n allSubsetsEqual: function(altsets) {\n let first = null;\n for(let i=0;i\n * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n * alt and not pred\n * \n */\n getConflictingAltSubsets: function(configs) {\n const configToAlts = new Map();\n configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber === c2.state.stateNumber && c1.context.equals(c2.context);};\n configs.items.map(function(cfg) {\n let alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.put(cfg, alts);\n }\n alts.add(cfg.alt);\n });\n return configToAlts.getValues();\n },\n\n /**\n * Get a map from state to alt subset from a configuration set. For each\n * configuration {@code c} in {@code configs}:\n *\n *
\n     * map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n     * 
\n */\n getStateToAltMap: function(configs) {\n const m = new AltDict();\n configs.items.map(function(c) {\n let alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.put(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n },\n\n hasStateAssociatedWithOneAlt: function(configs) {\n const values = PredictionMode.getStateToAltMap(configs).values();\n for(let i=0;i= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tif (type === null) {\n\t\t\treturn this.children[i];\n\t\t} else {\n\t\t\tfor(let j=0; j= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tfor(let j=0; j\n * The basic complexity of the adaptive strategy makes it harder to understand.\n * We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n * requests go through the DFA first. If they reach a state without an edge for\n * the current symbol, the algorithm fails over to the ATN simulation to\n * complete the DFA path for the current input (until it finds a conflict state\n * or uniquely predicting state).

\n *\n *

\n * All of that is done without using the outer context because we want to create\n * a DFA that is not dependent upon the rule invocation stack when we do a\n * prediction. One DFA works in all contexts. We avoid using context not\n * necessarily because it's slower, although it can be, but because of the DFA\n * caching problem. The closure routine only considers the rule invocation stack\n * created during prediction beginning in the decision rule. For example, if\n * prediction occurs without invoking another rule's ATN, there are no context\n * stacks in the configurations. When lack of context leads to a conflict, we\n * don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n * strategy (versus full LL(*)).

\n *\n *

\n * When SLL yields a configuration set with conflict, we rewind the input and\n * retry the ATN simulation, this time using full outer context without adding\n * to the DFA. Configuration context stacks will be the full invocation stacks\n * from the start rule. If we get a conflict using full context, then we can\n * definitively say we have a true ambiguity for that input sequence. If we\n * don't get a conflict, it implies that the decision is sensitive to the outer\n * context. (It is not context-sensitive in the sense of context-sensitive\n * grammars.)

\n *\n *

\n * The next time we reach this DFA state with an SLL conflict, through DFA\n * simulation, we will again retry the ATN simulation using full context mode.\n * This is slow because we can't save the results and have to \"interpret\" the\n * ATN each time we get that input.

\n *\n *

\n * CACHING FULL CONTEXT PREDICTIONS

\n *\n *

\n * We could cache results from full context to predicted alternative easily and\n * that saves a lot of time but doesn't work in presence of predicates. The set\n * of visible predicates from the ATN start state changes depending on the\n * context, because closure can fall off the end of a rule. I tried to cache\n * tuples (stack context, semantic context, predicted alt) but it was slower\n * than interpreting and much more complicated. Also required a huge amount of\n * memory. The goal is not to create the world's fastest parser anyway. I'd like\n * to keep this algorithm simple. By launching multiple threads, we can improve\n * the speed of parsing across a large number of files.

\n *\n *

\n * There is no strict ordering between the amount of input used by SLL vs LL,\n * which makes it really hard to build a cache for full context. Let's say that\n * we have input A B C that leads to an SLL conflict with full context X. That\n * implies that using X we might only use A B but we could also use A B C D to\n * resolve conflict. Input A B C D could predict alternative 1 in one position\n * in the input and A B C E could predict alternative 2 in another position in\n * input. The conflicting SLL configurations could still be non-unique in the\n * full context prediction, which would lead us to requiring more input than the\n * original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n * input\tused during the previous prediction. That amounts to a cache that maps\n * X to a specific DFA for that context.

\n *\n *

\n * Something should be done for left-recursive expression predictions. They are\n * likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n * with full LL thing Sam does.

\n *\n *

\n * AVOIDING FULL CONTEXT PREDICTION

\n *\n *

\n * We avoid doing full context retry when the outer context is empty, we did not\n * dip into the outer context by falling off the end of the decision state rule,\n * or when we force SLL mode.

\n *\n *

\n * As an example of the not dip into outer context case, consider as super\n * constructor calls versus function calls. One grammar might look like\n * this:

\n *\n *
\n * ctorBody\n *   : '{' superCall? stat* '}'\n *   ;\n * 
\n *\n *

\n * Or, you might see something like

\n *\n *
\n * stat\n *   : superCall ';'\n *   | expression ';'\n *   | ...\n *   ;\n * 
\n *\n *

\n * In both cases I believe that no closure operations will dip into the outer\n * context. In the first case ctorBody in the worst case will stop at the '}'.\n * In the 2nd case it should stop at the ';'. Both cases should stay within the\n * entry rule and not dip into the outer context.

\n *\n *

\n * PREDICATES

\n *\n *

\n * Predicates are always evaluated if present in either SLL or LL both. SLL and\n * LL simulation deals with predicates differently. SLL collects predicates as\n * it performs closure operations like ANTLR v3 did. It delays predicate\n * evaluation until it reaches and accept state. This allows us to cache the SLL\n * ATN simulation whereas, if we had evaluated predicates on-the-fly during\n * closure, the DFA state configuration sets would be different and we couldn't\n * build up a suitable DFA.

\n *\n *

\n * When building a DFA accept state during ATN simulation, we evaluate any\n * predicates and return the sole semantically valid alternative. If there is\n * more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n * we throw an exception. Alternatives without predicates act like they have\n * true predicates. The simple way to think about it is to strip away all\n * alternatives with false predicates and choose the minimum alternative that\n * remains.

\n *\n *

\n * When we start in the DFA and reach an accept state that's predicated, we test\n * those and return the minimum semantically viable alternative. If no\n * alternatives are viable, we throw an exception.

\n *\n *

\n * During full LL ATN simulation, closure always evaluates predicates and\n * on-the-fly. This is crucial to reducing the configuration set size during\n * closure. It hits a landmine when parsing with the Java grammar, for example,\n * without this on-the-fly evaluation.

\n *\n *

\n * SHARING DFA

\n *\n *

\n * All instances of the same parser share the same decision DFAs through a\n * static field. Each instance gets its own ATN simulator but they share the\n * same {@link //decisionToDFA} field. They also share a\n * {@link PredictionContextCache} object that makes sure that all\n * {@link PredictionContext} objects are shared among the DFA states. This makes\n * a big size difference.

\n *\n *

\n * THREAD SAFETY

\n *\n *

\n * The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n * it adds a new DFA object to that array. {@link //addDFAEdge}\n * locks on the DFA for the current decision when setting the\n * {@link DFAState//edges} field. {@link //addDFAState} locks on\n * the DFA for the current decision when looking up a DFA state to see if it\n * already exists. We must make sure that all requests to add DFA states that\n * are equivalent result in the same shared DFA object. This is because lots of\n * threads will be trying to update the DFA at once. The\n * {@link //addDFAState} method also locks inside the DFA lock\n * but this time on the shared context cache when it rebuilds the\n * configurations' {@link PredictionContext} objects using cached\n * subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n * safe as long as we can guarantee that all threads referencing\n * {@code s.edge[t]} get the same physical target {@link DFAState}, or\n * {@code null}. Once into the DFA, the DFA simulation does not reference the\n * {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n * targets. The DFA simulator will either find {@link DFAState//edges} to be\n * {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n * {@code dfa.edges[t]} to be non-null. The\n * {@link //addDFAEdge} method could be racing to set the field\n * but in either case the DFA simulator works; if {@code null}, and requests ATN\n * simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n * way it will work because it's not doing a test and set operation.

\n *\n *

\n * Starting with SLL then failing to combined SLL/LL (Two-Stage\n * Parsing)

\n *\n *

\n * Sam pointed out that if SLL does not give a syntax error, then there is no\n * point in doing full LL, which is slower. We only have to try LL if we get a\n * syntax error. For maximum speed, Sam starts the parser set to pure SLL\n * mode with the {@link BailErrorStrategy}:

\n *\n *
\n * parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n * parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n * 
\n *\n *

\n * If it does not get a syntax error, then we're done. If it does get a syntax\n * error, we need to retry with the combined SLL/LL strategy.

\n *\n *

\n * The reason this works is as follows. If there are no SLL conflicts, then the\n * grammar is SLL (at least for that input set). If there is an SLL conflict,\n * the full LL analysis must yield a set of viable alternatives which is a\n * subset of the alternatives reported by SLL. If the LL set is a singleton,\n * then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n * set, the decision is SLL. If the LL set has size > 1, then that decision\n * is truly ambiguous on the current input. If the LL set is smaller, then the\n * SLL conflict resolution might choose an alternative that the full LL would\n * rule out as a possibility based upon better context information. If that's\n * the case, then the SLL parse will definitely get an error because the full LL\n * analysis says it's not viable. If SLL conflict resolution chooses an\n * alternative within the LL set, them both SLL and LL would choose the same\n * alternative because they both choose the minimum of multiple conflicting\n * alternatives.

\n *\n *

\n * Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n * a smaller LL set called s. If s is {@code {2, 3}}, then SLL\n * parsing will get an error because SLL will pursue alternative 1. If\n * s is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n * choose the same alternative because alternative one is the minimum of either\n * set. If s is {@code {2}} or {@code {3}} then SLL will get a syntax\n * error. If s is {@code {1}} then SLL will succeed.

\n *\n *

\n * Of course, if the input is invalid, then we will get an error for sure in\n * both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n * the input.

\n */\nclass ParserATNSimulator extends ATNSimulator {\n constructor(parser, atn, decisionToDFA, sharedContextCache) {\n super(atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n /**\n * Each prediction operation uses a cache for merge of prediction contexts.\n * Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n * isn't synchronized but we're ok since two threads shouldn't reuse same\n * parser/atnsim object because it can only handle one input at a time.\n * This maps graphs a and b to merged result c. (a,b)→c. We can avoid\n * the merge if we ever see a and b again. Note that (b,a)→c should\n * also be examined during cache lookup.\n */\n this.mergeCache = null;\n this.debug = false;\n this.debug_closure = false;\n this.debug_add = false;\n this.debug_list_atn_decisions = false;\n this.dfa_debug = false;\n this.retry_debug = false;\n }\n\n reset() {}\n\n adaptivePredict(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n const dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n const m = input.mark();\n const index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n let s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n const fullCtx = false;\n let s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n const alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n }\n\n /**\n * Performs ATN simulation to compute a predicted alternative based\n * upon the remaining input, but also updates the DFA cache to avoid\n * having to traverse the ATN again for the same input sequence.\n *\n * There are some key conditions we're looking for after computing a new\n * set of ATN configs (proposed DFA state):\n * if the set is empty, there is no viable alternative for current symbol\n * does the state uniquely predict an alternative?\n * does the state have a conflict that would prevent us from\n * putting it on the work list?\n *\n * We also have some key operations to do:\n * add an edge from previous DFA state to potentially new DFA state, D,\n * upon current symbol but only if adding to work list, which means in all\n * cases except no viable alternative (and possibly non-greedy decisions?)\n * collecting predicates and adding semantic context to DFA accept states\n * adding rule context to context-sensitive DFA accept states\n * consuming an input symbol\n * reporting a conflict\n * reporting an ambiguity\n * reporting a context sensitivity\n * reporting insufficient predicates\n *\n * cover these cases:\n * dead end\n * single alt\n * single alt + preds\n * conflict\n * conflict + preds\n *\n */\n execATN(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n let alt;\n let previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n let t = input.LA(1);\n while(true) { // while more work\n let D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n const e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n let conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n const conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n const fullCtx = true;\n const s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n const stopIndex = input.index;\n input.seek(startIndex);\n const alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n }\n\n /**\n * Get an existing target state for an edge in the DFA. If the target state\n * for the edge has not yet been computed or is otherwise not available,\n * this method returns {@code null}.\n *\n * @param previousD The current DFA state\n * @param t The next input symbol\n * @return The existing target DFA state for the given input symbol\n * {@code t}, or {@code null} if the target state for this edge is not\n * already cached\n */\n getExistingTargetState(previousD, t) {\n const edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n }\n\n /**\n * Compute a target state for an edge in the DFA, and attempt to add the\n * computed state and corresponding edge to the DFA.\n *\n * @param dfa The DFA\n * @param previousD The current DFA state\n * @param t The next input symbol\n *\n * @return The computed target DFA state for the given input symbol\n * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n * returns {@link //ERROR\n */\n computeTargetState(dfa, previousD, t) {\n const reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n let D = new DFAState(null, reach);\n\n const predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + Utils.arrayToString(altSubSets) +\n \", previous=\" + previousD.configs +\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n }\n\n predicateDFAState(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n const nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n const altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n const altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n }\n\n// comes back with reach.uniqueAlt set to a valid alt\n execATNWithFullContext(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n const fullCtx = true;\n let foundExactAmbig = false;\n let reach;\n let previous = s0;\n input.seek(startIndex);\n let t = input.LA(1);\n let predictedAlt = -1;\n while (true) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n const e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n const alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n }\n\n computeReachSet(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n const intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n let skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (let i=0; iWhen {@code lookToEndOfRule} is true, this method uses\n * {@link ATN//nextTokens} for each configuration in {@code configs} which is\n * not already in a rule stop state to see if a rule stop state is reachable\n * from the configuration via epsilon-only transitions.

\n *\n * @param configs the configuration set to update\n * @param lookToEndOfRule when true, this method checks for rule stop states\n * reachable by epsilon-only transitions from each configuration in\n * {@code configs}.\n *\n * @return {@code configs} if all configurations in {@code configs} are in a\n * rule stop state, otherwise return a new configuration set containing only\n * the configurations from {@code configs} which are in a rule stop state\n */\n removeAllConfigsNotInRuleStopState(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n const result = new ATNConfigSet(configs.fullCtx);\n for(let i=0; i\n *
  • Evaluate the precedence predicates for each configuration using\n * {@link SemanticContext//evalPrecedence}.
  • \n *
  • Remove all configurations which predict an alternative greater than\n * 1, for which another configuration that predicts alternative 1 is in the\n * same ATN state with the same prediction context. This transformation is\n * valid for the following reasons:\n *
      \n *
    • The closure block cannot contain any epsilon transitions which bypass\n * the body of the closure, so all states reachable via alternative 1 are\n * part of the precedence alternatives of the transformed left-recursive\n * rule.
    • \n *
    • The \"primary\" portion of a left recursive rule cannot contain an\n * epsilon transition, so the only way an alternative other than 1 can exist\n * in a state that is also reachable via alternative 1 is by nesting calls\n * to the left-recursive rule, with the outer calls not being at the\n * preferred precedence level.
    • \n *
    \n *
  • \n * \n *\n *

    \n * The prediction context must be considered by this filter to address\n * situations like the following.\n *

    \n * \n *
    \n     * grammar TA;\n     * prog: statement* EOF;\n     * statement: letterA | statement letterA 'b' ;\n     * letterA: 'a';\n     * 
    \n *
    \n *

    \n * If the above grammar, the ATN state immediately before the token\n * reference {@code 'a'} in {@code letterA} is reachable from the left edge\n * of both the primary and closure blocks of the left-recursive rule\n * {@code statement}. The prediction context associated with each of these\n * configurations distinguishes between them, and prevents the alternative\n * which stepped out to {@code prog} (and then back in to {@code statement}\n * from being eliminated by the filter.\n *

    \n *\n * @param configs The configuration set computed by\n * {@link //computeStartState} as the start state for the DFA.\n * @return The transformed configuration set representing the start state\n * for a precedence DFA at a particular precedence level (determined by\n * calling {@link Parser//getPrecedence})\n */\n applyPrecedenceFilter(configs) {\n let config;\n const statesFromAlt1 = [];\n const configSet = new ATNConfigSet(configs.fullCtx);\n for(let i=0; i1\n // (basically a graph subtraction algorithm).\n if (!config.precedenceFilterSuppressed) {\n const context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n }\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n }\n\n getReachableTarget(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n }\n\n getPredsForAmbigAlts(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n let altToPred = [];\n for(let i=0;i\n * The default implementation of this method uses the following\n * algorithm to identify an ATN configuration which successfully parsed the\n * decision entry rule. Choosing such an alternative ensures that the\n * {@link ParserRuleContext} returned by the calling rule will be complete\n * and valid, and the syntax error will be reported later at a more\n * localized location.

    \n *\n *
      \n *
    • If a syntactically valid path or paths reach the end of the decision rule and\n * they are semantically valid if predicated, return the min associated alt.
    • \n *
    • Else, if a semantically invalid but syntactically valid path exist\n * or paths exist, return the minimum associated alt.\n *
    • \n *
    • Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.
    • \n *
    \n *\n *

    \n * In some scenarios, the algorithm described above could predict an\n * alternative which will result in a {@link FailedPredicateException} in\n * the parser. Specifically, this could occur if the only configuration\n * capable of successfully parsing to the end of the decision rule is\n * blocked by a semantic predicate. By choosing this alternative within\n * {@link //adaptivePredict} instead of throwing a\n * {@link NoViableAltException}, the resulting\n * {@link FailedPredicateException} in the parser will identify the specific\n * predicate which is preventing the parser from successfully parsing the\n * decision rule, which helps developers identify and correct logic errors\n * in semantic predicates.\n *

    \n *\n * @param configs The ATN configurations which were valid immediately before\n * the {@link //ERROR} state was reached\n * @param outerContext The is the \\gamma_0 initial parser context from the paper\n * or the parser stack at the instant before prediction commences.\n *\n * @return The value to return from {@link //adaptivePredict}, or\n * {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n * identified and {@link //adaptivePredict} should report an error instead\n */\n getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs, outerContext) {\n const cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n const semValidConfigs = cfgs[0];\n const semInvalidConfigs = cfgs[1];\n let alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n }\n\n getAltThatFinishedDecisionEntryRule(configs) {\n const alts = [];\n for(let i=0;i0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n }\n\n /**\n * Walk the list of configurations and split them according to\n * those that have preds evaluating to true/false. If no pred, assume\n * true pred and include in succeeded set. Returns Pair of sets.\n *\n * Create a new set so as not to alter the incoming parameter.\n *\n * Assumption: the input stream has been restored to the starting point\n * prediction, which is where predicates need to evaluate.*/\n splitAccordingToSemanticValidity( configs, outerContext) {\n const succeeded = new ATNConfigSet(configs.fullCtx);\n const failed = new ATNConfigSet(configs.fullCtx);\n for(let i=0;i50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for (let i =0; i 0.\n if (this._dfa !== null && this._dfa.precedenceDfa) {\n if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n c.precedenceFilterSuppressed = true;\n }\n }\n\n c.reachesIntoOuterContext += 1;\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else {\n if (!t.isEpsilon && closureBusy.add(c)!==c){\n // avoid infinite recursion for EOF* and EOF+\n continue;\n }\n if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n }\n\n canDropLoopEntryEdgeInLeftRecursiveRule(config) {\n // return False\n const p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType !== ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType !== ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n const numCtxs = config.context.length;\n for(let i=0; i=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"\";\n }\n }\n\n getEpsilonTarget(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n return null;\n }\n }\n\n actionTransition(config, t) {\n if (this.debug) {\n const index = t.actionIndex === -1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n }\n\n precedenceTransition(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n let c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n const currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n }\n\n predTransition(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n let c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n const currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n }\n\n ruleTransition(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n const returnState = t.followState;\n const newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n }\n\n getConflictingAlts(configs) {\n const altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n }\n\n /**\n * Sam pointed out a problem with the previous definition, v3, of\n * ambiguous states. If we have another state associated with conflicting\n * alternatives, we should keep going. For example, the following grammar\n *\n * s : (ID | ID ID?) ';' ;\n *\n * When the ATN simulation reaches the state before ';', it has a DFA\n * state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n * 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n * because alternative to has another way to continue, via [6|2|[]].\n * The key is that we have a single state that has config's only associated\n * with a single alternative, 2, and crucially the state transitions\n * among the configurations are all non-epsilon transitions. That means\n * we don't consider any conflicts that include alternative 2. So, we\n * ignore the conflict between alts 1 and 2. We ignore a set of\n * conflicting alts when there is an intersection with an alternative\n * associated with a single alt state in the state→config-list map.\n *\n * It's also the case that we might have two conflicting configurations but\n * also a 3rd nonconflicting configuration for a different alternative:\n * [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n *\n * a : A | A | A B ;\n *\n * After matching input A, we reach the stop state for rule A, state 1.\n * State 8 is the state right before B. Clearly alternatives 1 and 2\n * conflict and no amount of further lookahead will separate the two.\n * However, alternative 3 will be able to continue and so we do not\n * stop working on this state. In the previous example, we're concerned\n * with states associated with the conflicting alternatives. Here alt\n * 3 is not associated with the conflicting configs, but since we can continue\n * looking for input reasonably, I don't declare the state done. We\n * ignore a set of conflicting alts when we have an alternative\n * that we still need to pursue\n */\n getConflictingAltsOrUniqueAlt(configs) {\n let conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n }\n\n getTokenName(t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n const name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n }\n\n getLookaheadName(input) {\n return this.getTokenName(input.LA(1));\n }\n\n /**\n * Used for debugging in adaptivePredict around execATN but I cut\n * it out for clarity now that alg. works well. We can leave this\n * \"dead\" code for a bit\n */\n dumpDeadEndConfigs(nvae) {\n console.log(\"dead end configs: \");\n const decs = nvae.getDeadEndConfigs();\n for(let i=0; i0) {\n const t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n const neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n }\n\n noViableAlt(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n }\n\n getUniqueAlt(configs) {\n let alt = ATN.INVALID_ALT_NUMBER;\n for(let i=0;iIf {@code to} is {@code null}, this method returns {@code null}.\n * Otherwise, this method returns the {@link DFAState} returned by calling\n * {@link //addDFAState} for the {@code to} state.

    \n *\n * @param dfa The DFA\n * @param from_ The source state for the edge\n * @param t The input symbol\n * @param to The target state for the edge\n *\n * @return If {@code to} is {@code null}, this method returns {@code null};\n * otherwise this method returns the result of calling {@link //addDFAState}\n * on {@code to}\n */\n addDFAEdge(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n const literalNames = this.parser===null ? null : this.parser.literalNames;\n const symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n }\n\n /**\n * Add state {@code D} to the DFA if it is not already present, and return\n * the actual instance stored in the DFA. If a state equivalent to {@code D}\n * is already in the DFA, the existing state is returned. Otherwise this\n * method returns {@code D} after adding it to the DFA.\n *\n *

    If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n * does not change the DFA.

    \n *\n * @param dfa The dfa\n * @param D The DFA state to add\n * @return The state stored in the DFA. This will be either the existing\n * state if {@code D} is already in the DFA, or {@code D} itself if the\n * state was not already present\n */\n addDFAState(dfa, D) {\n if (D === ATNSimulator.ERROR) {\n return D;\n }\n const existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n }\n\n reportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n }\n\n reportContextSensitivity(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n }\n\n // If context sensitive parsing, we know it's ambiguity not conflict//\n reportAmbiguity(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n }\n}\n\nmodule.exports = ParserATNSimulator;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.ATN = require('./ATN');\nexports.ATNDeserializer = require('./ATNDeserializer');\nexports.LexerATNSimulator = require('./LexerATNSimulator');\nexports.ParserATNSimulator = require('./ParserATNSimulator');\nexports.PredictionMode = require('./PredictionMode');\n", "/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {\n\t\t\t}\n\t\t\treturn result;\n\t\t}());\n\t\tconst codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tconst string = String(this);\n\t\t\tconst size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tlet index = position ? Number(position) : 0;\n\t\t\tif (index !== index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tconst first = string.charCodeAt(index);\n\t\t\tlet second;\n\t\t\tif ( // check if it\u2019s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * A DFA walker that knows how to dump them to serialized strings.\n */\nclass DFASerializer {\n constructor(dfa, literalNames, symbolicNames) {\n this.dfa = dfa;\n this.literalNames = literalNames || [];\n this.symbolicNames = symbolicNames || [];\n }\n\n toString() {\n if(this.dfa.s0 === null) {\n return null;\n }\n let buf = \"\";\n const states = this.dfa.sortedStates();\n for(let i=0; i\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n }\n\n getEdgeLabel(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n }\n\n getStateString(s) {\n const baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + s.predicates.toString();\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n }\n}\n\nclass LexerDFASerializer extends DFASerializer {\n constructor(dfa) {\n super(dfa, null);\n }\n\n getEdgeLabel(i) {\n return \"'\" + String.fromCharCode(i) + \"'\";\n }\n}\n\nmodule.exports = { DFASerializer , LexerDFASerializer };\n\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Set} = require(\"../Utils\");\nconst {DFAState} = require('./DFAState');\nconst {StarLoopEntryState} = require('../atn/ATNState');\nconst {ATNConfigSet} = require('./../atn/ATNConfigSet');\nconst {DFASerializer} = require('./DFASerializer');\nconst {LexerDFASerializer} = require('./DFASerializer');\n\nclass DFA {\n\tconstructor(atnStartState, decision) {\n\t\tif (decision === undefined) {\n\t\t\tdecision = 0;\n\t\t}\n\t\t/**\n\t\t * From which ATN state did we create this DFA?\n\t\t */\n\t\tthis.atnStartState = atnStartState;\n\t\tthis.decision = decision;\n\t\t/**\n\t\t * A set of all DFA states. Use {@link Map} so we can get old state back\n\t\t * ({@link Set} only allows you to see if it's there).\n\t\t */\n\t\tthis._states = new Set();\n\t\tthis.s0 = null;\n\t\t/**\n\t\t * {@code true} if this DFA is for a precedence decision; otherwise,\n\t\t * {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t\t * {@link //setPrecedenceDfa}\n\t\t */\n\t\tthis.precedenceDfa = false;\n\t\tif (atnStartState instanceof StarLoopEntryState)\n\t\t{\n\t\t\tif (atnStartState.isPrecedenceDecision) {\n\t\t\t\tthis.precedenceDfa = true;\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @return The start state corresponding to the specified precedence, or\n\t * {@code null} if no start state exists for the specified precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tgetPrecedenceStartState(precedence) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\t// s0.edges is never null for a precedence DFA\n\t\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.s0.edges[precedence] || null;\n\t}\n\n\t/**\n\t * Set the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @param startState The start state corresponding to the specified\n\t * precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tsetPrecedenceStartState(precedence, startState) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\tif (precedence < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * synchronization on s0 here is ok. when the DFA is turned into a\n\t\t * precedence DFA, s0 will be initialized once and not updated again\n\t\t * s0.edges is never null for a precedence DFA\n\t\t */\n\t\tthis.s0.edges[precedence] = startState;\n\t}\n\n\t/**\n\t * Sets whether this is a precedence DFA. If the specified value differs\n\t * from the current DFA configuration, the following actions are taken;\n\t * otherwise no changes are made to the current DFA.\n\t *\n\t *
      \n\t *
    • The {@link //states} map is cleared
    • \n\t *
    • If {@code precedenceDfa} is {@code false}, the initial state\n\t * {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n\t * {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n\t * store the start states for individual precedence values.
    • \n\t *
    • The {@link //precedenceDfa} field is updated
    • \n\t *
    \n\t *\n\t * @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n\t * {@code false}\n\t */\n\tsetPrecedenceDfa(precedenceDfa) {\n\t\tif (this.precedenceDfa!==precedenceDfa) {\n\t\t\tthis._states = new Set();\n\t\t\tif (precedenceDfa) {\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t} else {\n\t\t\t\tthis.s0 = null;\n\t\t\t}\n\t\t\tthis.precedenceDfa = precedenceDfa;\n\t\t}\n\t}\n\n\t/**\n\t * Return a list of all states in this DFA, ordered by state number.\n\t */\n\tsortedStates() {\n\t\tconst list = this._states.values();\n\t\treturn list.sort(function(a, b) {\n\t\t\treturn a.stateNumber - b.stateNumber;\n\t\t});\n\t}\n\n\ttoString(literalNames, symbolicNames) {\n\t\tliteralNames = literalNames || null;\n\t\tsymbolicNames = symbolicNames || null;\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new DFASerializer(this, literalNames, symbolicNames);\n\t\treturn serializer.toString();\n\t}\n\n\ttoLexerString() {\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new LexerDFASerializer(this);\n\t\treturn serializer.toString();\n\t}\n\n\tget states(){\n\t\treturn this._states;\n\t}\n}\n\n\nmodule.exports = DFA;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.DFA = require('./DFA');\nexports.DFASerializer = require('./DFASerializer').DFASerializer;\nexports.LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\nexports.PredPrediction = require('./DFAState').PredPrediction;\n", "/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tconst defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tconst stringFromCharCode = String.fromCharCode;\n\t\tconst floor = Math.floor;\n\t\tconst fromCodePoint = function(_) {\n\t\t\tconst MAX_SIZE = 0x4000;\n\t\t\tconst codeUnits = [];\n\t\t\tlet highSurrogate;\n\t\t\tlet lowSurrogate;\n\t\t\tlet index = -1;\n\t\t\tconst length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tlet result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tlet codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) !== codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 === length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst Tree = require('./Tree');\nconst Trees = require('./Trees');\nmodule.exports = {...Tree, Trees}\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {BitSet} = require('./../Utils');\nconst {ErrorListener} = require('./ErrorListener')\nconst {Interval} = require('./../IntervalSet')\n\n\n/**\n * This implementation of {@link ANTLRErrorListener} can be used to identify\n * certain potential correctness and performance problems in grammars. \"Reports\"\n * are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n * message.\n *\n *
      \n *
    • Ambiguities: These are cases where more than one path through the\n * grammar can match the input.
    • \n *
    • Weak context sensitivity: These are cases where full-context\n * prediction resolved an SLL conflict to a unique alternative which equaled the\n * minimum alternative of the SLL conflict.
    • \n *
    • Strong (forced) context sensitivity: These are cases where the\n * full-context prediction resolved an SLL conflict to a unique alternative,\n * and the minimum alternative of the SLL conflict was found to not be\n * a truly viable alternative. Two-stage parsing cannot be used for inputs where\n * this situation occurs.
    • \n *
    \n */\nclass DiagnosticErrorListener extends ErrorListener {\n\tconstructor(exactOnly) {\n\t\tsuper();\n\t\texactOnly = exactOnly || true;\n\t\t// whether all ambiguities or only exact ambiguities are reported.\n\t\tthis.exactOnly = exactOnly;\n\t}\n\n\treportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n\t\tif (this.exactOnly && !exact) {\n\t\t\treturn;\n\t\t}\n\t\tconst msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\t\tconst msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\t\tconst msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\tgetDecisionDescription(recognizer, dfa) {\n\t\tconst decision = dfa.decision\n\t\tconst ruleIndex = dfa.atnStartState.ruleIndex\n\n\t\tconst ruleNames = recognizer.ruleNames\n\t\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\tconst ruleName = ruleNames[ruleIndex] || null\n\t\tif (ruleName === null || ruleName.length === 0) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\treturn `${decision} (${ruleName})`;\n\t}\n\n\t/**\n\t * Computes the set of conflicting or ambiguous alternatives from a\n\t * configuration set, if that information was not already provided by the\n\t * parser.\n\t *\n\t * @param reportedAlts The set of conflicting or ambiguous alternatives, as\n\t * reported by the parser.\n\t * @param configs The conflicting or ambiguous configuration set.\n\t * @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n\t * returns the set of alternatives represented in {@code configs}.\n */\n\tgetConflictingAlts(reportedAlts, configs) {\n\t\tif (reportedAlts !== null) {\n\t\t\treturn reportedAlts;\n\t\t}\n\t\tconst result = new BitSet()\n\t\tfor (let i = 0; i < configs.items.length; i++) {\n\t\t\tresult.add(configs.items[i].alt);\n\t\t}\n\t\treturn `{${result.values().join(\", \")}}`;\n\t}\n}\n\nmodule.exports = DiagnosticErrorListener\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./../Token')\nconst {NoViableAltException, InputMismatchException, FailedPredicateException, ParseCancellationException} = require('./Errors')\nconst {ATNState} = require('./../atn/ATNState')\nconst {Interval, IntervalSet} = require('./../IntervalSet')\n\nclass ErrorStrategy {\n\n reset(recognizer) {\n }\n\n recoverInline(recognizer) {\n }\n\n recover(recognizer, e) {\n }\n\n sync(recognizer) {\n }\n\n inErrorRecoveryMode(recognizer) {\n }\n\n reportError(recognizer) {\n }\n}\n\n\n/**\n * This is the default implementation of {@link ANTLRErrorStrategy} used for\n * error reporting and recovery in ANTLR parsers.\n*/\nclass DefaultErrorStrategy extends ErrorStrategy {\n constructor() {\n super();\n /**\n * Indicates whether the error strategy is currently \"recovering from an\n * error\". This is used to suppress reporting multiple error messages while\n * attempting to recover from a detected syntax error.\n *\n * @see //inErrorRecoveryMode\n */\n this.errorRecoveryMode = false;\n\n /**\n * The index into the input stream where the last error occurred.\n * This is used to prevent infinite loops where an error is found\n * but no token is consumed during recovery...another error is found,\n * ad nauseum. This is a failsafe mechanism to guarantee that at least\n * one token/tree node is consumed for two errors.\n */\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n this.nextTokensContext = null;\n this.nextTokenState = 0;\n }\n\n /**\n *

    The default implementation simply calls {@link //endErrorCondition} to\n * ensure that the handler is not in error recovery mode.

    \n */\n reset(recognizer) {\n this.endErrorCondition(recognizer);\n }\n\n /**\n * This method is called to enter error recovery mode when a recognition\n * exception is reported.\n *\n * @param recognizer the parser instance\n */\n beginErrorCondition(recognizer) {\n this.errorRecoveryMode = true;\n }\n\n inErrorRecoveryMode(recognizer) {\n return this.errorRecoveryMode;\n }\n\n /**\n * This method is called to leave error recovery mode after recovering from\n * a recognition exception.\n * @param recognizer\n */\n endErrorCondition(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n }\n\n /**\n * {@inheritDoc}\n *

    The default implementation simply calls {@link //endErrorCondition}.

    \n */\n reportMatch(recognizer) {\n this.endErrorCondition(recognizer);\n }\n\n /**\n * {@inheritDoc}\n *\n *

    The default implementation returns immediately if the handler is already\n * in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n * and dispatches the reporting task based on the runtime type of {@code e}\n * according to the following table.

    \n *\n *
      \n *
    • {@link NoViableAltException}: Dispatches the call to\n * {@link //reportNoViableAlternative}
    • \n *
    • {@link InputMismatchException}: Dispatches the call to\n * {@link //reportInputMismatch}
    • \n *
    • {@link FailedPredicateException}: Dispatches the call to\n * {@link //reportFailedPredicate}
    • \n *
    • All other types: calls {@link Parser//notifyErrorListeners} to report\n * the exception
    • \n *
    \n */\n reportError(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n }\n\n /**\n *\n * {@inheritDoc}\n *\n *

    The default implementation resynchronizes the parser by consuming tokens\n * until we find one in the resynchronization set--loosely the set of tokens\n * that can follow the current rule.

    \n *\n */\n recover(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n // uh oh, another error at same token index and previously-visited\n // state in ATN; must be a case where LT(1) is in the recovery\n // token set so nothing got consumed. Consume a single token\n // at least to prevent an infinite loop; this is a failsafe.\n recognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n const followSet = this.getErrorRecoverySet(recognizer)\n this.consumeUntil(recognizer, followSet);\n }\n\n /**\n * The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n * that the current lookahead symbol is consistent with what were expecting\n * at this point in the ATN. You can call this anytime but ANTLR only\n * generates code to check before subrules/loops and each iteration.\n *\n *

    Implements Jim Idle's magic sync mechanism in closures and optional\n * subrules. E.g.,

    \n *\n *
    \n     * a : sync ( stuff sync )* ;\n     * sync : {consume to what can follow sync} ;\n     * 
    \n *\n * At the start of a sub rule upon error, {@link //sync} performs single\n * token deletion, if possible. If it can't do that, it bails on the current\n * rule and uses the default error recovery, which consumes until the\n * resynchronization set of the current rule.\n *\n *

    If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n * with an empty alternative), then the expected set includes what follows\n * the subrule.

    \n *\n *

    During loop iteration, it consumes until it sees a token that can start a\n * sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n * stay in the loop as long as possible.

    \n *\n *

    ORIGINS

    \n *\n *

    Previous versions of ANTLR did a poor job of their recovery within loops.\n * A single mismatch token or missing token would force the parser to bail\n * out of the entire rules surrounding the loop. So, for rule

    \n *\n *
    \n     * classDef : 'class' ID '{' member* '}'\n     * 
    \n *\n * input with an extra token between members would force the parser to\n * consume until it found the next class definition rather than the next\n * member definition of the current class.\n *\n *

    This functionality cost a little bit of effort because the parser has to\n * compare token set at the start of the loop and at each iteration. If for\n * some reason speed is suffering for you, you can turn off this\n * functionality by simply overriding this method as a blank { }.

    \n *\n */\n sync(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n const s = recognizer._interp.atn.states[recognizer.state];\n const la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n const nextTokens = recognizer.atn.nextTokens(s);\n if(nextTokens.contains(la)) {\n this.nextTokensContext = null;\n this.nextTokenState = ATNState.INVALID_STATE_NUMBER;\n return;\n } else if (nextTokens.contains(Token.EPSILON)) {\n if(this.nextTokensContext === null) {\n // It's possible the next token won't match information tracked\n // by sync is restricted for performance.\n this.nextTokensContext = recognizer._ctx;\n this.nextTokensState = recognizer._stateNumber;\n }\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n this.reportUnwantedToken(recognizer);\n const expecting = new IntervalSet()\n expecting.addSet(recognizer.getExpectedTokens());\n const whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer))\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n }\n\n /**\n * This is called by {@link //reportError} when the exception is a\n * {@link NoViableAltException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportNoViableAlternative(recognizer, e) {\n const tokens = recognizer.getTokenStream()\n let input\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"\";\n }\n const msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input)\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This is called by {@link //reportError} when the exception is an\n * {@link InputMismatchException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportInputMismatch(recognizer, e) {\n const msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames)\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This is called by {@link //reportError} when the exception is a\n * {@link FailedPredicateException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportFailedPredicate(recognizer, e) {\n const ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex]\n const msg = \"rule \" + ruleName + \" \" + e.message\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This method is called to report a syntax error which requires the removal\n * of a token from the input stream. At the time this method is called, the\n * erroneous symbol is current {@code LT(1)} symbol and has not yet been\n * removed from the input stream. When this method returns,\n * {@code recognizer} is in error recovery mode.\n *\n *

    This method is called when {@link //singleTokenDeletion} identifies\n * single-token deletion as a viable recovery strategy for a mismatched\n * input error.

    \n *\n *

    The default implementation simply returns if the handler is already in\n * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n * enter error recovery mode, followed by calling\n * {@link Parser//notifyErrorListeners}.

    \n *\n * @param recognizer the parser instance\n *\n */\n reportUnwantedToken(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n const t = recognizer.getCurrentToken()\n const tokenName = this.getTokenErrorDisplay(t)\n const expecting = this.getExpectedTokens(recognizer)\n const msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames)\n recognizer.notifyErrorListeners(msg, t, null);\n }\n\n /**\n * This method is called to report a syntax error which requires the\n * insertion of a missing token into the input stream. At the time this\n * method is called, the missing token has not yet been inserted. When this\n * method returns, {@code recognizer} is in error recovery mode.\n *\n *

    This method is called when {@link //singleTokenInsertion} identifies\n * single-token insertion as a viable recovery strategy for a mismatched\n * input error.

    \n *\n *

    The default implementation simply returns if the handler is already in\n * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n * enter error recovery mode, followed by calling\n * {@link Parser//notifyErrorListeners}.

    \n *\n * @param recognizer the parser instance\n */\n reportMissingToken(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n const t = recognizer.getCurrentToken()\n const expecting = this.getExpectedTokens(recognizer)\n const msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t)\n recognizer.notifyErrorListeners(msg, t, null);\n }\n\n /**\n *

    The default implementation attempts to recover from the mismatched input\n * by using single token insertion and deletion as described below. If the\n * recovery attempt fails, this method throws an\n * {@link InputMismatchException}.

    \n *\n *

    EXTRA TOKEN (single token deletion)

    \n *\n *

    {@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n * right token, however, then assume {@code LA(1)} is some extra spurious\n * token and delete it. Then consume and return the next token (which was\n * the {@code LA(2)} token) as the successful result of the match operation.

    \n *\n *

    This recovery strategy is implemented by {@link\n * //singleTokenDeletion}.

    \n *\n *

    MISSING TOKEN (single token insertion)

    \n *\n *

    If current token (at {@code LA(1)}) is consistent with what could come\n * after the expected {@code LA(1)} token, then assume the token is missing\n * and use the parser's {@link TokenFactory} to create it on the fly. The\n * \"insertion\" is performed by returning the created token as the successful\n * result of the match operation.

    \n *\n *

    This recovery strategy is implemented by {@link\n * //singleTokenInsertion}.

    \n *\n *

    EXAMPLE

    \n *\n *

    For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n * the parser returns from the nested call to {@code expr}, it will have\n * call chain:

    \n *\n *
    \n     * stat → expr → atom\n     * 
    \n *\n * and it will be trying to match the {@code ')'} at this point in the\n * derivation:\n *\n *
    \n     * => ID '=' '(' INT ')' ('+' atom)* ';'\n     * ^\n     * 
    \n *\n * The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n * call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n * is in the set of tokens that can follow the {@code ')'} token reference\n * in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n */\n recoverInline(recognizer) {\n // SINGLE TOKEN DELETION\n const matchedSymbol = this.singleTokenDeletion(recognizer)\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n }\n\n /**\n * This method implements the single-token insertion inline error recovery\n * strategy. It is called by {@link //recoverInline} if the single-token\n * deletion strategy fails to recover from the mismatched input. If this\n * method returns {@code true}, {@code recognizer} will be in error recovery\n * mode.\n *\n *

    This method determines whether or not single-token insertion is viable by\n * checking if the {@code LA(1)} input symbol could be successfully matched\n * if it were instead the {@code LA(2)} symbol. If this method returns\n * {@code true}, the caller is responsible for creating and inserting a\n * token with the correct type to produce this behavior.

    \n *\n * @param recognizer the parser instance\n * @return {@code true} if single-token insertion is a viable recovery\n * strategy for the current mismatched input, otherwise {@code false}\n */\n singleTokenInsertion(recognizer) {\n const currentSymbolType = recognizer.getTokenStream().LA(1)\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n const atn = recognizer._interp.atn\n const currentState = atn.states[recognizer.state]\n const next = currentState.transitions[0].target\n const expectingAtLL2 = atn.nextTokens(next, recognizer._ctx)\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * This method implements the single-token deletion inline error recovery\n * strategy. It is called by {@link //recoverInline} to attempt to recover\n * from mismatched input. If this method returns null, the parser and error\n * handler state will not have changed. If this method returns non-null,\n * {@code recognizer} will not be in error recovery mode since the\n * returned token was a successful match.\n *\n *

    If the single-token deletion is successful, this method calls\n * {@link //reportUnwantedToken} to report the error, followed by\n * {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n * before returning {@link //reportMatch} is called to signal a successful\n * match.

    \n *\n * @param recognizer the parser instance\n * @return the successfully matched {@link Token} instance if single-token\n * deletion successfully recovers from the mismatched input, otherwise\n * {@code null}\n */\n singleTokenDeletion(recognizer) {\n const nextTokenType = recognizer.getTokenStream().LA(2)\n const expecting = this.getExpectedTokens(recognizer)\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n const matchedSymbol = recognizer.getCurrentToken()\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n }\n\n /**\n * Conjure up a missing token during error recovery.\n *\n * The recognizer attempts to recover from single missing\n * symbols. But, actions might refer to that missing symbol.\n * For example, x=ID {f($x);}. The action clearly assumes\n * that there has been an identifier matched previously and that\n * $x points at that token. If that token is missing, but\n * the next token in the stream is what we want we assume that\n * this token is missing and we keep going. Because we\n * have to return some token to replace the missing token,\n * we have to conjure one up. This method gives the user control\n * over the tokens returned for missing tokens. Mostly,\n * you will want to create something special for identifier\n * tokens. For literals such as '{' and ',', the default\n * action in the parser or tree parser works. It simply creates\n * a CommonToken of the appropriate type. The text will be the token.\n * If you change what tokens must be created by the lexer,\n * override this method to create the appropriate tokens.\n *\n */\n getMissingSymbol(recognizer) {\n const currentSymbol = recognizer.getCurrentToken()\n const expecting = this.getExpectedTokens(recognizer)\n const expectedTokenType = expecting.first() // get any element\n let tokenText\n if (expectedTokenType===Token.EOF) {\n tokenText = \"\";\n } else {\n tokenText = \"\";\n }\n let current = currentSymbol\n const lookback = recognizer.getTokenStream().LT(-1)\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n }\n\n getExpectedTokens(recognizer) {\n return recognizer.getExpectedTokens();\n }\n\n /**\n * How should a token be displayed in an error message? The default\n * is to display just the text, but during development you might\n * want to have a lot of information spit out. Override in that case\n * to use t.toString() (which, for CommonToken, dumps everything about\n * the token). This is better than forcing you to override a method in\n * your token objects because you don't have to go modify your lexer\n * so that it creates a new Java type.\n */\n getTokenErrorDisplay(t) {\n if (t === null) {\n return \"\";\n }\n let s = t.text\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n }\n\n escapeWSAndQuote(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n }\n\n /**\n * Compute the error recovery set for the current rule. During\n * rule invocation, the parser pushes the set of tokens that can\n * follow that rule reference on the stack; this amounts to\n * computing FIRST of what follows the rule reference in the\n * enclosing rule. See LinearApproximator.FIRST().\n * This local follow set only includes tokens\n * from within the rule; i.e., the FIRST computation done by\n * ANTLR stops at the end of a rule.\n *\n * EXAMPLE\n *\n * When you find a \"no viable alt exception\", the input is not\n * consistent with any of the alternatives for rule r. The best\n * thing to do is to consume tokens until you see something that\n * can legally follow a call to r//or* any rule that called r.\n * You don't want the exact set of viable next tokens because the\n * input might just be missing a token--you might consume the\n * rest of the input looking for one of the missing tokens.\n *\n * Consider grammar:\n *\n * a : '[' b ']'\n * | '(' b ')'\n * ;\n * b : c '^' INT ;\n * c : ID\n * | INT\n * ;\n *\n * At each rule invocation, the set of tokens that could follow\n * that rule is pushed on a stack. Here are the various\n * context-sensitive follow sets:\n *\n * FOLLOW(b1_in_a) = FIRST(']') = ']'\n * FOLLOW(b2_in_a) = FIRST(')') = ')'\n * FOLLOW(c_in_b) = FIRST('^') = '^'\n *\n * Upon erroneous input \"[]\", the call chain is\n *\n * a -> b -> c\n *\n * and, hence, the follow context stack is:\n *\n * depth follow set start of rule execution\n * 0 a (from main())\n * 1 ']' b\n * 2 '^' c\n *\n * Notice that ')' is not included, because b would have to have\n * been called from a different context in rule a for ')' to be\n * included.\n *\n * For error recovery, we cannot consider FOLLOW(c)\n * (context-sensitive or otherwise). We need the combined set of\n * all context-sensitive FOLLOW sets--the set of all tokens that\n * could follow any reference in the call chain. We need to\n * resync to one of those tokens. Note that FOLLOW(c)='^' and if\n * we resync'd to that token, we'd consume until EOF. We need to\n * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n * In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n * not consume anything. After printing an error, rule c would\n * return normally. Rule b would not find the required '^' though.\n * At this point, it gets a mismatched token error and throws an\n * exception (since LA(1) is not in the viable following token\n * set). The rule exception handler tries to recover, but finds\n * the same recovery set and doesn't consume anything. Rule b\n * exits normally returning to rule a. Now it finds the ']' (and\n * with the successful match exits errorRecovery mode).\n *\n * So, you can see that the parser walks up the call chain looking\n * for the token that was a member of the recovery set.\n *\n * Errors are not generated in errorRecovery mode.\n *\n * ANTLR's error recovery mechanism is based upon original ideas:\n *\n * \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n *\n * and\n *\n * \"A note on error recovery in recursive descent parsers\":\n * http://portal.acm.org/citation.cfm?id=947902.947905\n *\n * Later, Josef Grosch had some good ideas:\n *\n * \"Efficient and Comfortable Error Recovery in Recursive Descent\n * Parsers\":\n * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n *\n * Like Grosch I implement context-sensitive FOLLOW sets that are combined\n * at run-time upon error to avoid overhead during parsing.\n */\n getErrorRecoverySet(recognizer) {\n const atn = recognizer._interp.atn\n let ctx = recognizer._ctx\n const recoverSet = new IntervalSet()\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n const invokingState = atn.states[ctx.invokingState]\n const rt = invokingState.transitions[0]\n const follow = atn.nextTokens(rt.followState)\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n }\n\n// Consume tokens until one matches the given token set.//\n consumeUntil(recognizer, set) {\n let ttype = recognizer.getTokenStream().LA(1)\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n }\n}\n\n\n/**\n * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n * by immediately canceling the parse operation with a\n * {@link ParseCancellationException}. The implementation ensures that the\n * {@link ParserRuleContext//exception} field is set for all parse tree nodes\n * that were not completed prior to encountering the error.\n *\n *

    \n * This error strategy is useful in the following scenarios.

    \n *\n *
      \n *
    • Two-stage parsing: This error strategy allows the first\n * stage of two-stage parsing to immediately terminate if an error is\n * encountered, and immediately fall back to the second stage. In addition to\n * avoiding wasted work by attempting to recover from errors here, the empty\n * implementation of {@link BailErrorStrategy//sync} improves the performance of\n * the first stage.
    • \n *
    • Silent validation: When syntax errors are not being\n * reported or logged, and the parse result is simply ignored if errors occur,\n * the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n * when the result will be ignored either way.
    • \n *
    \n *\n *

    \n * {@code myparser.setErrorHandler(new BailErrorStrategy());}

    \n *\n * @see Parser//setErrorHandler(ANTLRErrorStrategy)\n * */\nclass BailErrorStrategy extends DefaultErrorStrategy {\n constructor() {\n super();\n }\n\n /**\n * Instead of recovering from exception {@code e}, re-throw it wrapped\n * in a {@link ParseCancellationException} so it is not caught by the\n * rule function catches. Use {@link Exception//getCause()} to get the\n * original {@link RecognitionException}.\n */\n recover(recognizer, e) {\n let context = recognizer._ctx\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n }\n\n /**\n * Make sure we don't attempt to recover inline; if the parser\n * successfully recovers, it won't throw an exception.\n */\n recoverInline(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n }\n\n// Make sure we don't attempt to recover from problems in subrules.//\n sync(recognizer) {\n // pass\n }\n}\n\n\nmodule.exports = {BailErrorStrategy, DefaultErrorStrategy};\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nmodule.exports.RecognitionException = require('./Errors').RecognitionException;\nmodule.exports.NoViableAltException = require('./Errors').NoViableAltException;\nmodule.exports.LexerNoViableAltException = require('./Errors').LexerNoViableAltException;\nmodule.exports.InputMismatchException = require('./Errors').InputMismatchException;\nmodule.exports.FailedPredicateException = require('./Errors').FailedPredicateException;\nmodule.exports.DiagnosticErrorListener = require('./DiagnosticErrorListener');\nmodule.exports.BailErrorStrategy = require('./ErrorStrategy').BailErrorStrategy;\nmodule.exports.DefaultErrorStrategy = require('./ErrorStrategy').DefaultErrorStrategy;\nmodule.exports.ErrorListener = require('./ErrorListener').ErrorListener;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\nrequire('./polyfills/codepointat');\nrequire('./polyfills/fromcodepoint');\n\n/**\n * If decodeToUnicodeCodePoints is true, the input is treated\n * as a series of Unicode code points.\n *\n * Otherwise, the input is treated as a series of 16-bit UTF-16 code\n * units.\n */\nclass InputStream {\n\tconstructor(data, decodeToUnicodeCodePoints) {\n\t\tthis.name = \"\";\n\t\tthis.strdata = data;\n\t\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t\t// _loadString - Vacuum all input from a string and then treat it like a buffer.\n\t\tthis._index = 0;\n\t\tthis.data = [];\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tfor (let i = 0; i < this.strdata.length; ) {\n\t\t\t\tconst codePoint = this.strdata.codePointAt(i);\n\t\t\t\tthis.data.push(codePoint);\n\t\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < this.strdata.length; i++) {\n\t\t\t\tconst codeUnit = this.strdata.charCodeAt(i);\n\t\t\t\tthis.data.push(codeUnit);\n\t\t\t}\n\t\t}\n\t\tthis._size = this.data.length;\n\t}\n\n\t/**\n\t * Reset the stream so that it's in the same state it was\n\t * when the object was created *except* the data array is not\n\t * touched.\n\t */\n\treset() {\n\t\tthis._index = 0;\n\t}\n\n\tconsume() {\n\t\tif (this._index >= this._size) {\n\t\t\t// assert this.LA(1) == Token.EOF\n\t\t\tthrow (\"cannot consume EOF\");\n\t\t}\n\t\tthis._index += 1;\n\t}\n\n\tLA(offset) {\n\t\tif (offset === 0) {\n\t\t\treturn 0; // undefined\n\t\t}\n\t\tif (offset < 0) {\n\t\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t\t}\n\t\tconst pos = this._index + offset - 1;\n\t\tif (pos < 0 || pos >= this._size) { // invalid\n\t\t\treturn Token.EOF;\n\t\t}\n\t\treturn this.data[pos];\n\t}\n\n\tLT(offset) {\n\t\treturn this.LA(offset);\n\t}\n\n// mark/release do nothing; we have entire buffer\n\tmark() {\n\t\treturn -1;\n\t}\n\n\trelease(marker) {\n\t}\n\n\t/**\n\t * consume() ahead until p==_index; can't just set p=_index as we must\n\t * update line and column. If we seek backwards, just set p\n\t */\n\tseek(_index) {\n\t\tif (_index <= this._index) {\n\t\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t\t// ...)\n\t\t\treturn;\n\t\t}\n\t\t// seek forward\n\t\tthis._index = Math.min(_index, this._size);\n\t}\n\n\tgetText(start, stop) {\n\t\tif (stop >= this._size) {\n\t\t\tstop = this._size - 1;\n\t\t}\n\t\tif (start >= this._size) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\t\tlet result = \"\";\n\t\t\t\tfor (let i = start; i <= stop; i++) {\n\t\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn this.strdata;\n\t}\n\n\tget index(){\n\t\treturn this._index;\n\t}\n\n\tget size(){\n\t\treturn this._size;\n\t}\n}\n\n\nmodule.exports = InputStream;\n", "", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst InputStream = require('./InputStream');\nconst fs = require(\"fs\");\n\n/**\n * Utility functions to create InputStreams from various sources.\n *\n * All returned InputStreams support the full range of Unicode\n * up to U+10FFFF (the default behavior of InputStream only supports\n * code points up to U+FFFF).\n */\nconst CharStreams = {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n /**\n * Asynchronously creates an InputStream from a blob given the\n * encoding of the bytes in that blob (defaults to 'utf8' if\n * encoding is null).\n *\n * Invokes onLoad(result) on success, onError(error) on\n * failure.\n */\n fromBlob: function(blob, encoding, onLoad, onError) {\n const reader = new window.FileReader();\n reader.onload = function(e) {\n const is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n /**\n * Creates an InputStream from a Buffer given the\n * encoding of the bytes in that buffer (defaults to 'utf8' if\n * encoding is null).\n */\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n /** Asynchronously creates an InputStream from a file on disk given\n * the encoding of the bytes in that file (defaults to 'utf8' if\n * encoding is null).\n *\n * Invokes callback(error, result) on completion.\n */\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n let is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n /**\n * Synchronously creates an InputStream given a path to a file\n * on disk and the encoding of the bytes in that file (defaults to\n * 'utf8' if encoding is null).\n */\n fromPathSync: function(path, encoding) {\n const data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n\nmodule.exports = CharStreams;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst InputStream = require('./InputStream');\nconst fs = require(\"fs\");\n\n/**\n * This is an InputStream that is loaded from a file all at once\n * when you construct the object.\n */\nclass FileStream extends InputStream {\n\tconstructor(fileName, decodeToUnicodeCodePoints) {\n\t\tconst data = fs.readFileSync(fileName, \"utf8\");\n\t\tsuper(data, decodeToUnicodeCodePoints);\n\t\tthis.fileName = fileName;\n\t}\n}\n\nmodule.exports = FileStream\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\nconst Lexer = require('./Lexer');\nconst {Interval} = require('./IntervalSet');\n\n// this is just to keep meaningful parameter types to Parser\nclass TokenStream {}\n\n/**\n * This implementation of {@link TokenStream} loads tokens from a\n * {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n * access to any previous token by index.\n *\n *

    \n * This token stream ignores the value of {@link Token//getChannel}. If your\n * parser requires the token stream filter tokens to only those on a particular\n * channel, such as {@link Token//DEFAULT_CHANNEL} or\n * {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n * {@link CommonTokenStream}.

    \n */\nclass BufferedTokenStream extends TokenStream {\n\tconstructor(tokenSource) {\n\n\t\tsuper();\n\t\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\t\tthis.tokenSource = tokenSource;\n\t\t/**\n\t\t * A collection of all tokens fetched from the token source. The list is\n\t\t * considered a complete view of the input once {@link //fetchedEOF} is set\n\t\t * to {@code true}.\n\t\t */\n\t\tthis.tokens = [];\n\n\t\t/**\n\t\t * The index into {@link //tokens} of the current token (next token to\n\t\t * {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t\t * be\n\t\t * {@link //LT LT(1)}.\n\t\t *\n\t\t *

    This field is set to -1 when the stream is first constructed or when\n\t\t * {@link //setTokenSource} is called, indicating that the first token has\n\t\t * not yet been fetched from the token source. For additional information,\n\t\t * see the documentation of {@link IntStream} for a description of\n\t\t * Initializing Methods.

    \n\t\t */\n\t\tthis.index = -1;\n\n\t\t/**\n\t\t * Indicates whether the {@link Token//EOF} token has been fetched from\n\t\t * {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t\t * performance for the following cases:\n\t\t *\n\t\t *
      \n\t\t *
    • {@link //consume}: The lookahead check in {@link //consume} to\n\t\t * prevent\n\t\t * consuming the EOF symbol is optimized by checking the values of\n\t\t * {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t\t * //LA}.
    • \n\t\t *
    • {@link //fetch}: The check to prevent adding multiple EOF symbols\n\t\t * into\n\t\t * {@link //tokens} is trivial with this field.
    • \n\t\t *
        \n\t\t */\n\t\tthis.fetchedEOF = false;\n\t}\n\n\tmark() {\n\t\treturn 0;\n\t}\n\n\trelease(marker) {\n\t\t// no resources to release\n\t}\n\n\treset() {\n\t\tthis.seek(0);\n\t}\n\n\tseek(index) {\n\t\tthis.lazyInit();\n\t\tthis.index = this.adjustSeekIndex(index);\n\t}\n\n\tget(index) {\n\t\tthis.lazyInit();\n\t\treturn this.tokens[index];\n\t}\n\n\tconsume() {\n\t\tlet skipEofCheck = false;\n\t\tif (this.index >= 0) {\n\t\t\tif (this.fetchedEOF) {\n\t\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t\t// fetched token except the last.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t\t} else {\n\t\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t\t}\n\t\t} else {\n\t\t\t// not yet initialized\n\t\t\tskipEofCheck = false;\n\t\t}\n\t\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\t\tthrow \"cannot consume EOF\";\n\t\t}\n\t\tif (this.sync(this.index + 1)) {\n\t\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t\t}\n\t}\n\n\t/**\n\t * Make sure index {@code i} in tokens has a token.\n\t *\n\t * @return {Boolean} {@code true} if a token is located at index {@code i}, otherwise\n\t * {@code false}.\n\t * @see //get(int i)\n\t */\n\tsync(i) {\n\t\tconst n = i - this.tokens.length + 1; // how many more elements we need?\n\t\tif (n > 0) {\n\t\t\tconst fetched = this.fetch(n);\n\t\t\treturn fetched >= n;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Add {@code n} elements to buffer.\n\t *\n\t * @return {Number} The actual number of elements added to the buffer.\n\t */\n\tfetch(n) {\n\t\tif (this.fetchedEOF) {\n\t\t\treturn 0;\n\t\t}\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst t = this.tokenSource.nextToken();\n\t\t\tt.tokenIndex = this.tokens.length;\n\t\t\tthis.tokens.push(t);\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tthis.fetchedEOF = true;\n\t\t\t\treturn i + 1;\n\t\t\t}\n\t\t}\n\t\treturn n;\n\t}\n\n// Get all tokens from start..stop inclusively///\n\tgetTokens(start, stop, types) {\n\t\tif (types === undefined) {\n\t\t\ttypes = null;\n\t\t}\n\t\tif (start < 0 || stop < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.lazyInit();\n\t\tconst subset = [];\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tfor (let i = start; i < stop; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (types === null || types.contains(t.type)) {\n\t\t\t\tsubset.push(t);\n\t\t\t}\n\t\t}\n\t\treturn subset;\n\t}\n\n\tLA(i) {\n\t\treturn this.LT(i).type;\n\t}\n\n\tLB(k) {\n\t\tif (this.index - k < 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.tokens[this.index - k];\n\t}\n\n\tLT(k) {\n\t\tthis.lazyInit();\n\t\tif (k === 0) {\n\t\t\treturn null;\n\t\t}\n\t\tif (k < 0) {\n\t\t\treturn this.LB(-k);\n\t\t}\n\t\tconst i = this.index + k - 1;\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) { // return EOF token\n\t\t\t// EOF must be last token\n\t\t\treturn this.tokens[this.tokens.length - 1];\n\t\t}\n\t\treturn this.tokens[i];\n\t}\n\n\t/**\n\t * Allowed derived classes to modify the behavior of operations which change\n\t * the current stream position by adjusting the target token index of a seek\n\t * operation. The default implementation simply returns {@code i}. If an\n\t * exception is thrown in this method, the current stream index should not be\n\t * changed.\n\t *\n\t *

        For example, {@link CommonTokenStream} overrides this method to ensure\n\t * that\n\t * the seek target is always an on-channel token.

        \n\t *\n\t * @param {Number} i The target token index.\n\t * @return {Number} The adjusted target token index.\n\t */\n\tadjustSeekIndex(i) {\n\t\treturn i;\n\t}\n\n\tlazyInit() {\n\t\tif (this.index === -1) {\n\t\t\tthis.setup();\n\t\t}\n\t}\n\n\tsetup() {\n\t\tthis.sync(0);\n\t\tthis.index = this.adjustSeekIndex(0);\n\t}\n\n// Reset this token stream by setting its token source.///\n\tsetTokenSource(tokenSource) {\n\t\tthis.tokenSource = tokenSource;\n\t\tthis.tokens = [];\n\t\tthis.index = -1;\n\t\tthis.fetchedEOF = false;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the next token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and EOF.\n\t */\n\tnextTokenOnChannel(i, channel) {\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet token = this.tokens[i];\n\t\twhile (token.channel !== this.channel) {\n\t\t\tif (token.type === Token.EOF) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\ti += 1;\n\t\t\tthis.sync(i);\n\t\t\ttoken = this.tokens[i];\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the previous token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and 0.\n\t */\n\tpreviousTokenOnChannel(i, channel) {\n\t\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\t\ti -= 1;\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the right of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n\t * EOF. If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToRight(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tconst from_ = tokenIndex + 1;\n\t\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\t\tconst to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the left of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n\t * If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToLeft(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tif (prevOnChannel === tokenIndex - 1) {\n\t\t\treturn null;\n\t\t}\n\t\t// if none on channel to left, prevOnChannel=-1 then from=0\n\t\tconst from_ = prevOnChannel + 1;\n\t\tconst to = tokenIndex - 1;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\tfilterForChannel(left, right, channel) {\n\t\tconst hidden = [];\n\t\tfor (let i = left; i < right + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (channel === -1) {\n\t\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\t\thidden.push(t);\n\t\t\t\t}\n\t\t\t} else if (t.channel === channel) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t}\n\t\tif (hidden.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn hidden;\n\t}\n\n\tgetSourceName() {\n\t\treturn this.tokenSource.getSourceName();\n\t}\n\n// Get the text of all tokens in this buffer.///\n\tgetText(interval) {\n\t\tthis.lazyInit();\n\t\tthis.fill();\n\t\tif (interval === undefined || interval === null) {\n\t\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t\t}\n\t\tlet start = interval.start;\n\t\tif (start instanceof Token) {\n\t\t\tstart = start.tokenIndex;\n\t\t}\n\t\tlet stop = interval.stop;\n\t\tif (stop instanceof Token) {\n\t\t\tstop = stop.tokenIndex;\n\t\t}\n\t\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tlet s = \"\";\n\t\tfor (let i = start; i < stop + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ts = s + t.text;\n\t\t}\n\t\treturn s;\n\t}\n\n// Get all tokens from lexer until EOF///\n\tfill() {\n\t\tthis.lazyInit();\n\t\twhile (this.fetch(1000) === 1000) {\n\t\t\tcontinue;\n\t\t}\n\t}\n}\n\n\nmodule.exports = BufferedTokenStream;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nconst Token = require('./Token').Token;\nconst BufferedTokenStream = require('./BufferedTokenStream');\n\n/**\n * This class extends {@link BufferedTokenStream} with functionality to filter\n * token streams to tokens on a particular channel (tokens where\n * {@link Token//getChannel} returns a particular value).\n *\n *

        \n * This token stream provides access to all tokens by index or when calling\n * methods like {@link //getText}. The channel filtering is only used for code\n * accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n * {@link //LB}.

        \n *\n *

        \n * By default, tokens are placed on the default channel\n * ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n * {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n * call {@link Lexer//setChannel}.\n *

        \n *\n *

        \n * Note: lexer rules which use the {@code ->skip} lexer command or call\n * {@link Lexer//skip} do not produce tokens at all, so input text matched by\n * such a rule will not be available as part of the token stream, regardless of\n * channel.

        \n */\nclass CommonTokenStream extends BufferedTokenStream {\n constructor(lexer, channel) {\n super(lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n }\n\n adjustSeekIndex(i) {\n return this.nextTokenOnChannel(i, this.channel);\n }\n\n LB(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n let i = this.index;\n let n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n }\n\n LT(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n let i = this.index;\n let n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n }\n\n // Count EOF just once.\n getNumberOfOnChannelTokens() {\n let n = 0;\n this.fill();\n for (let i =0; i< this.tokens.length;i++) {\n const t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n }\n}\n\nmodule.exports = CommonTokenStream;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nconst {Token} = require('./Token');\nconst {ParseTreeListener, TerminalNode, ErrorNode} = require('./tree/Tree');\nconst Recognizer = require('./Recognizer');\nconst {DefaultErrorStrategy} = require('./error/ErrorStrategy');\nconst ATNDeserializer = require('./atn/ATNDeserializer');\nconst ATNDeserializationOptions = require('./atn/ATNDeserializationOptions');\nconst Lexer = require('./Lexer');\n\nclass TraceListener extends ParseTreeListener {\n\tconstructor(parser) {\n\t\tsuper();\n\t\tthis.parser = parser;\n\t}\n\n\tenterEveryRule(ctx) {\n\t\tconsole.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n\t}\n\n\tvisitTerminal(node) {\n\t\tconsole.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n\t}\n\n\texitEveryRule(ctx) {\n\t\tconsole.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n\t}\n}\n\nclass Parser extends Recognizer {\n\t/**\n\t * this is all the parsing support code essentially; most of it is error\n\t * recovery stuff.\n\t */\n\tconstructor(input) {\n\t\tsuper();\n\t\t// The input stream.\n\t\tthis._input = null;\n\t\t/**\n\t\t * The error handling strategy for the parser. The default value is a new\n\t\t * instance of {@link DefaultErrorStrategy}.\n\t\t */\n\t\tthis._errHandler = new DefaultErrorStrategy();\n\t\tthis._precedenceStack = [];\n\t\tthis._precedenceStack.push(0);\n\t\t/**\n\t\t * The {@link ParserRuleContext} object for the currently executing rule.\n\t\t * this is always non-null during the parsing process.\n\t\t */\n\t\tthis._ctx = null;\n\t\t/**\n\t\t * Specifies whether or not the parser should construct a parse tree during\n\t\t * the parsing process. The default value is {@code true}.\n\t\t */\n\t\tthis.buildParseTrees = true;\n\t\t/**\n\t\t * When {@link //setTrace}{@code (true)} is called, a reference to the\n\t\t * {@link TraceListener} is stored here so it can be easily removed in a\n\t\t * later call to {@link //setTrace}{@code (false)}. The listener itself is\n\t\t * implemented as a parser listener so this field is not directly used by\n\t\t * other parser methods.\n\t\t */\n\t\tthis._tracer = null;\n\t\t/**\n\t\t * The list of {@link ParseTreeListener} listeners registered to receive\n\t\t * events during the parse.\n\t\t */\n\t\tthis._parseListeners = null;\n\t\t/**\n\t\t * The number of syntax errors reported during parsing. this value is\n\t\t * incremented each time {@link //notifyErrorListeners} is called.\n\t\t */\n\t\tthis._syntaxErrors = 0;\n\t\tthis.setInputStream(input);\n\t}\n\n\t// reset the parser's state\n\treset() {\n\t\tif (this._input !== null) {\n\t\t\tthis._input.seek(0);\n\t\t}\n\t\tthis._errHandler.reset(this);\n\t\tthis._ctx = null;\n\t\tthis._syntaxErrors = 0;\n\t\tthis.setTrace(false);\n\t\tthis._precedenceStack = [];\n\t\tthis._precedenceStack.push(0);\n\t\tif (this._interp !== null) {\n\t\t\tthis._interp.reset();\n\t\t}\n\t}\n\n\t/**\n\t * Match current input symbol against {@code ttype}. If the symbol type\n\t * matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n\t * called to complete the match process.\n\t *\n\t *

        If the symbol type does not match,\n\t * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n\t * strategy to attempt recovery. If {@link //getBuildParseTree} is\n\t * {@code true} and the token index of the symbol returned by\n\t * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n\t * the parse tree by calling {@link ParserRuleContext//addErrorNode}.

        \n\t *\n\t * @param ttype the token type to match\n\t * @return the matched symbol\n\t * @throws RecognitionException if the current input symbol did not match\n\t * {@code ttype} and the error strategy could not recover from the\n\t * mismatched symbol\n\t */\n\tmatch(ttype) {\n\t\tlet t = this.getCurrentToken();\n\t\tif (t.type === ttype) {\n\t\t\tthis._errHandler.reportMatch(this);\n\t\t\tthis.consume();\n\t\t} else {\n\t\t\tt = this._errHandler.recoverInline(this);\n\t\t\tif (this.buildParseTrees && t.tokenIndex === -1) {\n\t\t\t\t// we must have conjured up a new token during single token\n\t\t\t\t// insertion\n\t\t\t\t// if it's not the current symbol\n\t\t\t\tthis._ctx.addErrorNode(t);\n\t\t\t}\n\t\t}\n\t\treturn t;\n\t}\n\n\t/**\n\t * Match current input symbol as a wildcard. If the symbol type matches\n\t * (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n\t * and {@link //consume} are called to complete the match process.\n\t *\n\t *

        If the symbol type does not match,\n\t * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n\t * strategy to attempt recovery. If {@link //getBuildParseTree} is\n\t * {@code true} and the token index of the symbol returned by\n\t * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n\t * the parse tree by calling {@link ParserRuleContext//addErrorNode}.

        \n\t *\n\t * @return the matched symbol\n\t * @throws RecognitionException if the current input symbol did not match\n\t * a wildcard and the error strategy could not recover from the mismatched\n\t * symbol\n\t */\n\tmatchWildcard() {\n\t\tlet t = this.getCurrentToken();\n\t\tif (t.type > 0) {\n\t\t\tthis._errHandler.reportMatch(this);\n\t\t\tthis.consume();\n\t\t} else {\n\t\t\tt = this._errHandler.recoverInline(this);\n\t\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\n\t\t\t\t// we must have conjured up a new token during single token\n\t\t\t\t// insertion\n\t\t\t\t// if it's not the current symbol\n\t\t\t\tthis._ctx.addErrorNode(t);\n\t\t\t}\n\t\t}\n\t\treturn t;\n\t}\n\n\tgetParseListeners() {\n\t\treturn this._parseListeners || [];\n\t}\n\n\t/**\n\t * Registers {@code listener} to receive events during the parsing process.\n\t *\n\t *

        To support output-preserving grammar transformations (including but not\n\t * limited to left-recursion removal, automated left-factoring, and\n\t * optimized code generation), calls to listener methods during the parse\n\t * may differ substantially from calls made by\n\t * {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n\t * particular, rule entry and exit events may occur in a different order\n\t * during the parse than after the parser. In addition, calls to certain\n\t * rule entry methods may be omitted.

        \n\t *\n\t *

        With the following specific exceptions, calls to listener events are\n\t * deterministic, i.e. for identical input the calls to listener\n\t * methods will be the same.

        \n\t *\n\t *
          \n\t *
        • Alterations to the grammar used to generate code may change the\n\t * behavior of the listener calls.
        • \n\t *
        • Alterations to the command line options passed to ANTLR 4 when\n\t * generating the parser may change the behavior of the listener calls.
        • \n\t *
        • Changing the version of the ANTLR Tool used to generate the parser\n\t * may change the behavior of the listener calls.
        • \n\t *
        \n\t *\n\t * @param listener the listener to add\n\t *\n\t * @throws NullPointerException if {@code} listener is {@code null}\n\t */\n\taddParseListener(listener) {\n\t\tif (listener === null) {\n\t\t\tthrow \"listener\";\n\t\t}\n\t\tif (this._parseListeners === null) {\n\t\t\tthis._parseListeners = [];\n\t\t}\n\t\tthis._parseListeners.push(listener);\n\t}\n\n\t/**\n\t * Remove {@code listener} from the list of parse listeners.\n\t *\n\t *

        If {@code listener} is {@code null} or has not been added as a parse\n\t * listener, this method does nothing.

        \n\t * @param listener the listener to remove\n\t */\n\tremoveParseListener(listener) {\n\t\tif (this._parseListeners !== null) {\n\t\t\tconst idx = this._parseListeners.indexOf(listener);\n\t\t\tif (idx >= 0) {\n\t\t\t\tthis._parseListeners.splice(idx, 1);\n\t\t\t}\n\t\t\tif (this._parseListeners.length === 0) {\n\t\t\t\tthis._parseListeners = null;\n\t\t\t}\n\t\t}\n\t}\n\n// Remove all parse listeners.\n\tremoveParseListeners() {\n\t\tthis._parseListeners = null;\n\t}\n\n// Notify any parse listeners of an enter rule event.\n\ttriggerEnterRuleEvent() {\n\t\tif (this._parseListeners !== null) {\n\t\t\tconst ctx = this._ctx;\n\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\tlistener.enterEveryRule(ctx);\n\t\t\t\tctx.enterRule(listener);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Notify any parse listeners of an exit rule event.\n\t * @see //addParseListener\n\t */\n\ttriggerExitRuleEvent() {\n\t\tif (this._parseListeners !== null) {\n\t\t\t// reverse order walk of listeners\n\t\t\tconst ctx = this._ctx;\n\t\t\tthis._parseListeners.slice(0).reverse().map(function(listener) {\n\t\t\t\tctx.exitRule(listener);\n\t\t\t\tlistener.exitEveryRule(ctx);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTokenFactory() {\n\t\treturn this._input.tokenSource._factory;\n\t}\n\n\t// Tell our token source and error strategy about a new way to create tokens.\n\tsetTokenFactory(factory) {\n\t\tthis._input.tokenSource._factory = factory;\n\t}\n\n\t/**\n\t * The ATN with bypass alternatives is expensive to create so we create it\n\t * lazily.\n\t *\n\t * @throws UnsupportedOperationException if the current parser does not\n\t * implement the {@link //getSerializedATN()} method.\n\t */\n\tgetATNWithBypassAlts() {\n\t\tconst serializedAtn = this.getSerializedATN();\n\t\tif (serializedAtn === null) {\n\t\t\tthrow \"The current parser does not support an ATN with bypass alternatives.\";\n\t\t}\n\t\tlet result = this.bypassAltsAtnCache[serializedAtn];\n\t\tif (result === null) {\n\t\t\tconst deserializationOptions = new ATNDeserializationOptions();\n\t\t\tdeserializationOptions.generateRuleBypassTransitions = true;\n\t\t\tresult = new ATNDeserializer(deserializationOptions)\n\t\t\t\t\t.deserialize(serializedAtn);\n\t\t\tthis.bypassAltsAtnCache[serializedAtn] = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * The preferred method of getting a tree pattern. For example, here's a\n\t * sample use:\n\t *\n\t *
        \n\t * ParseTree t = parser.expr();\n\t * ParseTreePattern p = parser.compileParseTreePattern(\"<ID>+0\",\n\t * MyParser.RULE_expr);\n\t * ParseTreeMatch m = p.match(t);\n\t * String id = m.get(\"ID\");\n\t * 
        \n\t */\n\tcompileParseTreePattern(pattern, patternRuleIndex, lexer) {\n\t\tlexer = lexer || null;\n\t\tif (lexer === null) {\n\t\t\tif (this.getTokenStream() !== null) {\n\t\t\t\tconst tokenSource = this.getTokenStream().tokenSource;\n\t\t\t\tif (tokenSource instanceof Lexer) {\n\t\t\t\t\tlexer = tokenSource;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (lexer === null) {\n\t\t\tthrow \"Parser can't discover a lexer to use\";\n\t\t}\n\t\tconst m = new ParseTreePatternMatcher(lexer, this);\n\t\treturn m.compile(pattern, patternRuleIndex);\n\t}\n\n\tgetInputStream() {\n\t\treturn this.getTokenStream();\n\t}\n\n\tsetInputStream(input) {\n\t\tthis.setTokenStream(input);\n\t}\n\n\tgetTokenStream() {\n\t\treturn this._input;\n\t}\n\n\t// Set the token stream and reset the parser.\n\tsetTokenStream(input) {\n\t\tthis._input = null;\n\t\tthis.reset();\n\t\tthis._input = input;\n\t}\n\n\t/**\n\t * Match needs to return the current input symbol, which gets put\n\t * into the label for the associated token ref; e.g., x=ID.\n\t */\n\tgetCurrentToken() {\n\t\treturn this._input.LT(1);\n\t}\n\n\tnotifyErrorListeners(msg, offendingToken, err) {\n\t\toffendingToken = offendingToken || null;\n\t\terr = err || null;\n\t\tif (offendingToken === null) {\n\t\t\toffendingToken = this.getCurrentToken();\n\t\t}\n\t\tthis._syntaxErrors += 1;\n\t\tconst line = offendingToken.line;\n\t\tconst column = offendingToken.column;\n\t\tconst listener = this.getErrorListenerDispatch();\n\t\tlistener.syntaxError(this, offendingToken, line, column, msg, err);\n\t}\n\n\t/**\n\t * Consume and return the {@linkplain //getCurrentToken current symbol}.\n\t *\n\t *

        E.g., given the following input with {@code A} being the current\n\t * lookahead symbol, this function moves the cursor to {@code B} and returns\n\t * {@code A}.

        \n\t *\n\t *
        \n\t * A B\n\t * ^\n\t * 
        \n\t *\n\t * If the parser is not in error recovery mode, the consumed symbol is added\n\t * to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n\t * {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n\t * If the parser is in error recovery mode, the consumed symbol is\n\t * added to the parse tree using\n\t * {@link ParserRuleContext//addErrorNode(Token)}, and\n\t * {@link ParseTreeListener//visitErrorNode} is called on any parse\n\t * listeners.\n\t */\n\tconsume() {\n\t\tconst o = this.getCurrentToken();\n\t\tif (o.type !== Token.EOF) {\n\t\t\tthis.getInputStream().consume();\n\t\t}\n\t\tconst hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n\t\tif (this.buildParseTrees || hasListener) {\n\t\t\tlet node;\n\t\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\n\t\t\t\tnode = this._ctx.addErrorNode(o);\n\t\t\t} else {\n\t\t\t\tnode = this._ctx.addTokenNode(o);\n\t\t\t}\n\t\t\tnode.invokingState = this.state;\n\t\t\tif (hasListener) {\n\t\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\t\tif (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n\t\t\t\t\t\tlistener.visitErrorNode(node);\n\t\t\t\t\t} else if (node instanceof TerminalNode) {\n\t\t\t\t\t\tlistener.visitTerminal(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn o;\n\t}\n\n\taddContextToParseTree() {\n\t\t// add current context to parent if we have a parent\n\t\tif (this._ctx.parentCtx !== null) {\n\t\t\tthis._ctx.parentCtx.addChild(this._ctx);\n\t\t}\n\t}\n\n\t/**\n\t * Always called by generated parsers upon entry to a rule. Access field\n\t * {@link //_ctx} get the current context.\n\t */\n\tenterRule(localctx, state, ruleIndex) {\n\t\tthis.state = state;\n\t\tthis._ctx = localctx;\n\t\tthis._ctx.start = this._input.LT(1);\n\t\tif (this.buildParseTrees) {\n\t\t\tthis.addContextToParseTree();\n\t\t}\n\t\tif (this._parseListeners !== null) {\n\t\t\tthis.triggerEnterRuleEvent();\n\t\t}\n\t}\n\n\texitRule() {\n\t\tthis._ctx.stop = this._input.LT(-1);\n\t\t// trigger event on _ctx, before it reverts to parent\n\t\tif (this._parseListeners !== null) {\n\t\t\tthis.triggerExitRuleEvent();\n\t\t}\n\t\tthis.state = this._ctx.invokingState;\n\t\tthis._ctx = this._ctx.parentCtx;\n\t}\n\n\tenterOuterAlt(localctx, altNum) {\n\t\tlocalctx.setAltNumber(altNum);\n\t\t// if we have new localctx, make sure we replace existing ctx\n\t\t// that is previous child of parse tree\n\t\tif (this.buildParseTrees && this._ctx !== localctx) {\n\t\t\tif (this._ctx.parentCtx !== null) {\n\t\t\t\tthis._ctx.parentCtx.removeLastChild();\n\t\t\t\tthis._ctx.parentCtx.addChild(localctx);\n\t\t\t}\n\t\t}\n\t\tthis._ctx = localctx;\n\t}\n\n\t/**\n\t * Get the precedence level for the top-most precedence rule.\n\t *\n\t * @return The precedence level for the top-most precedence rule, or -1 if\n\t * the parser context is not nested within a precedence rule.\n\t */\n\tgetPrecedence() {\n\t\tif (this._precedenceStack.length === 0) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\treturn this._precedenceStack[this._precedenceStack.length-1];\n\t\t}\n\t}\n\n\tenterRecursionRule(localctx, state, ruleIndex, precedence) {\n\t this.state = state;\n\t this._precedenceStack.push(precedence);\n\t this._ctx = localctx;\n\t this._ctx.start = this._input.LT(1);\n\t if (this._parseListeners !== null) {\n\t\t this.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t \t\t\t\t\t\t\t\t\t// left-recursive rules\n\t }\n }\n\n\t// Like {@link //enterRule} but for recursive rules.\n\tpushNewRecursionContext(localctx, state, ruleIndex) {\n\t\tconst previous = this._ctx;\n\t\tprevious.parentCtx = localctx;\n\t\tprevious.invokingState = state;\n\t\tprevious.stop = this._input.LT(-1);\n\n\t\tthis._ctx = localctx;\n\t\tthis._ctx.start = previous.start;\n\t\tif (this.buildParseTrees) {\n\t\t\tthis._ctx.addChild(previous);\n\t\t}\n\t\tif (this._parseListeners !== null) {\n\t\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t\t}\n\t}\n\n\tunrollRecursionContexts(parentCtx) {\n\t\tthis._precedenceStack.pop();\n\t\tthis._ctx.stop = this._input.LT(-1);\n\t\tconst retCtx = this._ctx; // save current ctx (return value)\n\t\t// unroll so _ctx is as it was before call to recursive method\n\t\tif (this._parseListeners !== null) {\n\t\t\twhile (this._ctx !== parentCtx) {\n\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\tthis._ctx = this._ctx.parentCtx;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._ctx = parentCtx;\n\t\t}\n\t\t// hook into tree\n\t\tretCtx.parentCtx = parentCtx;\n\t\tif (this.buildParseTrees && parentCtx !== null) {\n\t\t\t// add return ctx into invoking rule's tree\n\t\t\tparentCtx.addChild(retCtx);\n\t\t}\n\t}\n\n\tgetInvokingContext(ruleIndex) {\n\t\tlet ctx = this._ctx;\n\t\twhile (ctx !== null) {\n\t\t\tif (ctx.ruleIndex === ruleIndex) {\n\t\t\t\treturn ctx;\n\t\t\t}\n\t\t\tctx = ctx.parentCtx;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprecpred(localctx, precedence) {\n\t\treturn precedence >= this._precedenceStack[this._precedenceStack.length-1];\n\t}\n\n\tinContext(context) {\n\t\t// TODO: useful in parser?\n\t\treturn false;\n\t}\n\n\t/**\n\t * Checks whether or not {@code symbol} can follow the current state in the\n\t * ATN. The behavior of this method is equivalent to the following, but is\n\t * implemented such that the complete context-sensitive follow set does not\n\t * need to be explicitly constructed.\n\t *\n\t *
        \n\t * return getExpectedTokens().contains(symbol);\n\t * 
        \n\t *\n\t * @param symbol the symbol type to check\n\t * @return {@code true} if {@code symbol} can follow the current state in\n\t * the ATN, otherwise {@code false}.\n\t */\n\tisExpectedToken(symbol) {\n\t\tconst atn = this._interp.atn;\n\t\tlet ctx = this._ctx;\n\t\tconst s = atn.states[this.state];\n\t\tlet following = atn.nextTokens(s);\n\t\tif (following.contains(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!following.contains(Token.EPSILON)) {\n\t\t\treturn false;\n\t\t}\n\t\twhile (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n\t\t\tconst invokingState = atn.states[ctx.invokingState];\n\t\t\tconst rt = invokingState.transitions[0];\n\t\t\tfollowing = atn.nextTokens(rt.followState);\n\t\t\tif (following.contains(symbol)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tctx = ctx.parentCtx;\n\t\t}\n\t\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Computes the set of input symbols which could follow the current parser\n\t * state and context, as given by {@link //getState} and {@link //getContext},\n\t * respectively.\n\t *\n\t * @see ATN//getExpectedTokens(int, RuleContext)\n\t */\n\tgetExpectedTokens() {\n\t\treturn this._interp.atn.getExpectedTokens(this.state, this._ctx);\n\t}\n\n\tgetExpectedTokensWithinCurrentRule() {\n\t\tconst atn = this._interp.atn;\n\t\tconst s = atn.states[this.state];\n\t\treturn atn.nextTokens(s);\n\t}\n\n\t// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.\n\tgetRuleIndex(ruleName) {\n\t\tconst ruleIndex = this.getRuleIndexMap()[ruleName];\n\t\tif (ruleIndex !== null) {\n\t\t\treturn ruleIndex;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\t/**\n\t * Return List<String> of the rule names in your parser instance\n\t * leading up to a call to the current rule. You could override if\n\t * you want more details such as the file/line info of where\n\t * in the ATN a rule is invoked.\n\t *\n\t * this is very useful for error messages.\n\t */\n\tgetRuleInvocationStack(p) {\n\t\tp = p || null;\n\t\tif (p === null) {\n\t\t\tp = this._ctx;\n\t\t}\n\t\tconst stack = [];\n\t\twhile (p !== null) {\n\t\t\t// compute what follows who invoked us\n\t\t\tconst ruleIndex = p.ruleIndex;\n\t\t\tif (ruleIndex < 0) {\n\t\t\t\tstack.push(\"n/a\");\n\t\t\t} else {\n\t\t\t\tstack.push(this.ruleNames[ruleIndex]);\n\t\t\t}\n\t\t\tp = p.parentCtx;\n\t\t}\n\t\treturn stack;\n\t}\n\n\t// For debugging and other purposes.\n\tgetDFAStrings() {\n\t\treturn this._interp.decisionToDFA.toString();\n\t}\n\n\t// For debugging and other purposes.\n\tdumpDFA() {\n\t\tlet seenOne = false;\n\t\tfor (let i = 0; i < this._interp.decisionToDFA.length; i++) {\n\t\t\tconst dfa = this._interp.decisionToDFA[i];\n\t\t\tif (dfa.states.length > 0) {\n\t\t\t\tif (seenOne) {\n\t\t\t\t\tconsole.log();\n\t\t\t\t}\n\t\t\t\tthis.printer.println(\"Decision \" + dfa.decision + \":\");\n\t\t\t\tthis.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n\t\t\t\tseenOne = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t\t\"\t\t\tprinter = function() {\\r\\n\" +\n\t\t\"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n\t\t\"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n\t\t\"\t\t\t};\\r\\n\" +\n\t\t*/\n\tgetSourceName() {\n\t\treturn this._input.sourceName;\n\t}\n\n\t/**\n\t * During a parse is sometimes useful to listen in on the rule entry and exit\n\t * events as well as token matches. this is for quick and dirty debugging.\n\t */\n\tsetTrace(trace) {\n\t\tif (!trace) {\n\t\t\tthis.removeParseListener(this._tracer);\n\t\t\tthis._tracer = null;\n\t\t} else {\n\t\t\tif (this._tracer !== null) {\n\t\t\t\tthis.removeParseListener(this._tracer);\n\t\t\t}\n\t\t\tthis._tracer = new TraceListener(this);\n\t\t\tthis.addParseListener(this._tracer);\n\t\t}\n\t}\n}\n\n/**\n * this field maps from the serialized ATN string to the deserialized {@link\n * ATN} with\n * bypass alternatives.\n *\n * @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n */\nParser.bypassAltsAtnCache = {};\n\nmodule.exports = Parser;\n", "/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexports.atn = require('./atn/index');\nexports.codepointat = require('./polyfills/codepointat');\nexports.dfa = require('./dfa/index');\nexports.fromcodepoint = require('./polyfills/fromcodepoint');\nexports.tree = require('./tree/index');\nexports.error = require('./error/index');\nexports.Token = require('./Token').Token;\nexports.CharStreams = require('./CharStreams');\nexports.CommonToken = require('./Token').CommonToken;\nexports.InputStream = require('./InputStream');\nexports.FileStream = require('./FileStream');\nexports.CommonTokenStream = require('./CommonTokenStream');\nexports.Lexer = require('./Lexer');\nexports.Parser = require('./Parser');\nvar pc = require('./PredictionContext');\nexports.PredictionContextCache = pc.PredictionContextCache;\nexports.ParserRuleContext = require('./ParserRuleContext');\nexports.Interval = require('./IntervalSet').Interval;\nexports.IntervalSet = require('./IntervalSet').IntervalSet;\nexports.Utils = require('./Utils');\nexports.LL1Analyzer = require('./LL1Analyzer').LL1Analyzer;\n", "// This is an indirect file to import the tokens string\n// It needs to be a js file so that tsc doesn't complain\n\nif (typeof BROWSER !== \"undefined\") {\n module.exports = require('./antlr/Solidity.tokens')\n} else {\n module.exports = require('fs')\n .readFileSync(require('path').join(__dirname, './antlr/Solidity.tokens'))\n .toString()\n}\n", "export * from \"./parser\";\n\nexport type { ParseOptions } from \"./types\";\n", "import { ANTLRInputStream, CommonTokenStream } from 'antlr4ts'\n\nimport { SolidityLexer } from './antlr/SolidityLexer'\nimport { SolidityParser } from './antlr/SolidityParser'\nimport { ASTNode, astNodeTypes, ASTNodeTypeString, ASTVisitor, SourceUnit } from './ast-types'\nimport { ASTBuilder } from './ASTBuilder'\nimport ErrorListener from './ErrorListener'\nimport { buildTokenList } from './tokens'\nimport { ParseOptions, Token, TokenizeOptions } from './types'\n\ninterface ParserErrorItem {\n message: string\n line: number\n column: number\n}\n\ntype ParseResult = SourceUnit & {\n errors?: any[]\n tokens?: Token[]\n}\n\nexport class ParserError extends Error {\n public errors: ParserErrorItem[]\n\n constructor(args: { errors: ParserErrorItem[] }) {\n super()\n const { message, line, column } = args.errors[0]\n this.message = `${message} (${line}:${column})`\n this.errors = args.errors\n\n if (Error.captureStackTrace !== undefined) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = new Error().stack\n }\n }\n}\n\nexport function tokenize(input: string, options: TokenizeOptions = {}): any {\n const inputStream = new ANTLRInputStream(input)\n const lexer = new SolidityLexer(inputStream)\n\n return buildTokenList(lexer.getAllTokens(), options)\n}\n\nexport function parse(\n input: string,\n options: ParseOptions = {}\n): ParseResult {\n const inputStream = new ANTLRInputStream(input)\n const lexer = new SolidityLexer(inputStream)\n const tokenStream = new CommonTokenStream(lexer)\n const parser = new SolidityParser(tokenStream)\n\n const listener = new ErrorListener()\n lexer.removeErrorListeners()\n lexer.addErrorListener(listener)\n\n parser.removeErrorListeners()\n parser.addErrorListener(listener)\n parser.buildParseTree = true\n\n const sourceUnit = parser.sourceUnit()\n\n const astBuilder = new ASTBuilder(options)\n\n astBuilder.visit(sourceUnit)\n\n const ast: ParseResult | null = astBuilder.result as any\n\n if (ast === null) {\n throw new Error('ast should never be null')\n }\n\n let tokenList: Token[] = []\n if (options.tokens === true) {\n tokenList = buildTokenList(tokenStream.getTokens(), options)\n }\n\n if (options.tolerant !== true && listener.hasErrors()) {\n throw new ParserError({ errors: listener.getErrors() })\n }\n if (options.tolerant === true && listener.hasErrors()) {\n ast.errors = listener.getErrors()\n }\n if (options.tokens === true) {\n ast.tokens = tokenList\n }\n\n return ast\n}\n\nfunction _isASTNode(node: unknown): node is ASTNode {\n if (typeof node !== 'object' || node === null) {\n return false\n }\n\n const nodeAsAny: any = node\n\n if (Object.prototype.hasOwnProperty.call(nodeAsAny, 'type') && typeof nodeAsAny.type === \"string\") {\n return astNodeTypes.includes(nodeAsAny.type)\n }\n\n return false;\n}\n\nexport function visit(node: unknown, visitor: ASTVisitor, nodeParent?: ASTNode): void {\n if (Array.isArray(node)) {\n node.forEach((child) => visit(child, visitor, nodeParent))\n }\n\n if (!_isASTNode(node)) return\n\n let cont = true\n\n if (visitor[node.type] !== undefined) {\n // TODO can we avoid this `as any`\n cont = visitor[node.type]!(node as any, nodeParent)\n }\n\n if (cont === false) return\n\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n // TODO can we avoid this `as any`\n visit((node as any)[prop], visitor, node)\n }\n }\n\n const selector = (node.type + ':exit') as `${ASTNodeTypeString}:exit`\n if (visitor[selector] !== undefined) {\n // TODO can we avoid this `as any`\n visitor[selector]!(node as any, nodeParent)\n }\n}\n", "// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT\n\n\nimport { ATN } from \"antlr4ts/atn/ATN\";\nimport { ATNDeserializer } from \"antlr4ts/atn/ATNDeserializer\";\nimport { CharStream } from \"antlr4ts/CharStream\";\nimport { Lexer } from \"antlr4ts/Lexer\";\nimport { LexerATNSimulator } from \"antlr4ts/atn/LexerATNSimulator\";\nimport { NotNull } from \"antlr4ts/Decorators\";\nimport { Override } from \"antlr4ts/Decorators\";\nimport { RuleContext } from \"antlr4ts/RuleContext\";\nimport { Vocabulary } from \"antlr4ts/Vocabulary\";\nimport { VocabularyImpl } from \"antlr4ts/VocabularyImpl\";\n\nimport * as Utils from \"antlr4ts/misc/Utils\";\n\n\nexport class SolidityLexer extends Lexer {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly T__11 = 12;\n\tpublic static readonly T__12 = 13;\n\tpublic static readonly T__13 = 14;\n\tpublic static readonly T__14 = 15;\n\tpublic static readonly T__15 = 16;\n\tpublic static readonly T__16 = 17;\n\tpublic static readonly T__17 = 18;\n\tpublic static readonly T__18 = 19;\n\tpublic static readonly T__19 = 20;\n\tpublic static readonly T__20 = 21;\n\tpublic static readonly T__21 = 22;\n\tpublic static readonly T__22 = 23;\n\tpublic static readonly T__23 = 24;\n\tpublic static readonly T__24 = 25;\n\tpublic static readonly T__25 = 26;\n\tpublic static readonly T__26 = 27;\n\tpublic static readonly T__27 = 28;\n\tpublic static readonly T__28 = 29;\n\tpublic static readonly T__29 = 30;\n\tpublic static readonly T__30 = 31;\n\tpublic static readonly T__31 = 32;\n\tpublic static readonly T__32 = 33;\n\tpublic static readonly T__33 = 34;\n\tpublic static readonly T__34 = 35;\n\tpublic static readonly T__35 = 36;\n\tpublic static readonly T__36 = 37;\n\tpublic static readonly T__37 = 38;\n\tpublic static readonly T__38 = 39;\n\tpublic static readonly T__39 = 40;\n\tpublic static readonly T__40 = 41;\n\tpublic static readonly T__41 = 42;\n\tpublic static readonly T__42 = 43;\n\tpublic static readonly T__43 = 44;\n\tpublic static readonly T__44 = 45;\n\tpublic static readonly T__45 = 46;\n\tpublic static readonly T__46 = 47;\n\tpublic static readonly T__47 = 48;\n\tpublic static readonly T__48 = 49;\n\tpublic static readonly T__49 = 50;\n\tpublic static readonly T__50 = 51;\n\tpublic static readonly T__51 = 52;\n\tpublic static readonly T__52 = 53;\n\tpublic static readonly T__53 = 54;\n\tpublic static readonly T__54 = 55;\n\tpublic static readonly T__55 = 56;\n\tpublic static readonly T__56 = 57;\n\tpublic static readonly T__57 = 58;\n\tpublic static readonly T__58 = 59;\n\tpublic static readonly T__59 = 60;\n\tpublic static readonly T__60 = 61;\n\tpublic static readonly T__61 = 62;\n\tpublic static readonly T__62 = 63;\n\tpublic static readonly T__63 = 64;\n\tpublic static readonly T__64 = 65;\n\tpublic static readonly T__65 = 66;\n\tpublic static readonly T__66 = 67;\n\tpublic static readonly T__67 = 68;\n\tpublic static readonly T__68 = 69;\n\tpublic static readonly T__69 = 70;\n\tpublic static readonly T__70 = 71;\n\tpublic static readonly T__71 = 72;\n\tpublic static readonly T__72 = 73;\n\tpublic static readonly T__73 = 74;\n\tpublic static readonly T__74 = 75;\n\tpublic static readonly T__75 = 76;\n\tpublic static readonly T__76 = 77;\n\tpublic static readonly T__77 = 78;\n\tpublic static readonly T__78 = 79;\n\tpublic static readonly T__79 = 80;\n\tpublic static readonly T__80 = 81;\n\tpublic static readonly T__81 = 82;\n\tpublic static readonly T__82 = 83;\n\tpublic static readonly T__83 = 84;\n\tpublic static readonly T__84 = 85;\n\tpublic static readonly T__85 = 86;\n\tpublic static readonly T__86 = 87;\n\tpublic static readonly T__87 = 88;\n\tpublic static readonly T__88 = 89;\n\tpublic static readonly T__89 = 90;\n\tpublic static readonly T__90 = 91;\n\tpublic static readonly T__91 = 92;\n\tpublic static readonly T__92 = 93;\n\tpublic static readonly T__93 = 94;\n\tpublic static readonly T__94 = 95;\n\tpublic static readonly T__95 = 96;\n\tpublic static readonly T__96 = 97;\n\tpublic static readonly Int = 98;\n\tpublic static readonly Uint = 99;\n\tpublic static readonly Byte = 100;\n\tpublic static readonly Fixed = 101;\n\tpublic static readonly Ufixed = 102;\n\tpublic static readonly BooleanLiteral = 103;\n\tpublic static readonly DecimalNumber = 104;\n\tpublic static readonly HexNumber = 105;\n\tpublic static readonly NumberUnit = 106;\n\tpublic static readonly HexLiteralFragment = 107;\n\tpublic static readonly ReservedKeyword = 108;\n\tpublic static readonly AnonymousKeyword = 109;\n\tpublic static readonly BreakKeyword = 110;\n\tpublic static readonly ConstantKeyword = 111;\n\tpublic static readonly ImmutableKeyword = 112;\n\tpublic static readonly ContinueKeyword = 113;\n\tpublic static readonly LeaveKeyword = 114;\n\tpublic static readonly ExternalKeyword = 115;\n\tpublic static readonly IndexedKeyword = 116;\n\tpublic static readonly InternalKeyword = 117;\n\tpublic static readonly PayableKeyword = 118;\n\tpublic static readonly PrivateKeyword = 119;\n\tpublic static readonly PublicKeyword = 120;\n\tpublic static readonly VirtualKeyword = 121;\n\tpublic static readonly PureKeyword = 122;\n\tpublic static readonly TypeKeyword = 123;\n\tpublic static readonly ViewKeyword = 124;\n\tpublic static readonly GlobalKeyword = 125;\n\tpublic static readonly ConstructorKeyword = 126;\n\tpublic static readonly FallbackKeyword = 127;\n\tpublic static readonly ReceiveKeyword = 128;\n\tpublic static readonly Identifier = 129;\n\tpublic static readonly StringLiteralFragment = 130;\n\tpublic static readonly VersionLiteral = 131;\n\tpublic static readonly WS = 132;\n\tpublic static readonly COMMENT = 133;\n\tpublic static readonly LINE_COMMENT = 134;\n\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly channelNames: string[] = [\n\t\t\"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\",\n\t];\n\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly modeNames: string[] = [\n\t\t\"DEFAULT_MODE\",\n\t];\n\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"T__0\", \"T__1\", \"T__2\", \"T__3\", \"T__4\", \"T__5\", \"T__6\", \"T__7\", \"T__8\", \n\t\t\"T__9\", \"T__10\", \"T__11\", \"T__12\", \"T__13\", \"T__14\", \"T__15\", \"T__16\", \n\t\t\"T__17\", \"T__18\", \"T__19\", \"T__20\", \"T__21\", \"T__22\", \"T__23\", \"T__24\", \n\t\t\"T__25\", \"T__26\", \"T__27\", \"T__28\", \"T__29\", \"T__30\", \"T__31\", \"T__32\", \n\t\t\"T__33\", \"T__34\", \"T__35\", \"T__36\", \"T__37\", \"T__38\", \"T__39\", \"T__40\", \n\t\t\"T__41\", \"T__42\", \"T__43\", \"T__44\", \"T__45\", \"T__46\", \"T__47\", \"T__48\", \n\t\t\"T__49\", \"T__50\", \"T__51\", \"T__52\", \"T__53\", \"T__54\", \"T__55\", \"T__56\", \n\t\t\"T__57\", \"T__58\", \"T__59\", \"T__60\", \"T__61\", \"T__62\", \"T__63\", \"T__64\", \n\t\t\"T__65\", \"T__66\", \"T__67\", \"T__68\", \"T__69\", \"T__70\", \"T__71\", \"T__72\", \n\t\t\"T__73\", \"T__74\", \"T__75\", \"T__76\", \"T__77\", \"T__78\", \"T__79\", \"T__80\", \n\t\t\"T__81\", \"T__82\", \"T__83\", \"T__84\", \"T__85\", \"T__86\", \"T__87\", \"T__88\", \n\t\t\"T__89\", \"T__90\", \"T__91\", \"T__92\", \"T__93\", \"T__94\", \"T__95\", \"T__96\", \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"DecimalDigits\", \"HexNumber\", \"HexDigits\", \"NumberUnit\", \"HexLiteralFragment\", \n\t\t\"HexPair\", \"HexCharacter\", \"ReservedKeyword\", \"AnonymousKeyword\", \"BreakKeyword\", \n\t\t\"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \"LeaveKeyword\", \n\t\t\"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \"PayableKeyword\", \n\t\t\"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \"PureKeyword\", \"TypeKeyword\", \n\t\t\"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \"FallbackKeyword\", \n\t\t\"ReceiveKeyword\", \"Identifier\", \"IdentifierStart\", \"IdentifierPart\", \"StringLiteralFragment\", \n\t\t\"DoubleQuotedStringCharacter\", \"SingleQuotedStringCharacter\", \"VersionLiteral\", \n\t\t\"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\n\tprivate static readonly _LITERAL_NAMES: Array = [\n\t\tundefined, \"'pragma'\", \"';'\", \"'*'\", \"'||'\", \"'^'\", \"'~'\", \"'>='\", \"'>'\", \n\t\t\"'<'\", \"'<='\", \"'='\", \"'as'\", \"'import'\", \"'from'\", \"'{'\", \"','\", \"'}'\", \n\t\t\"'abstract'\", \"'contract'\", \"'interface'\", \"'library'\", \"'is'\", \"'('\", \n\t\t\"')'\", \"'error'\", \"'using'\", \"'for'\", \"'struct'\", \"'modifier'\", \"'function'\", \n\t\t\"'returns'\", \"'event'\", \"'enum'\", \"'['\", \"']'\", \"'address'\", \"'.'\", \"'mapping'\", \n\t\t\"'=>'\", \"'memory'\", \"'storage'\", \"'calldata'\", \"'if'\", \"'else'\", \"'try'\", \n\t\t\"'catch'\", \"'while'\", \"'unchecked'\", \"'assembly'\", \"'do'\", \"'return'\", \n\t\t\"'throw'\", \"'emit'\", \"'revert'\", \"'var'\", \"'bool'\", \"'string'\", \"'byte'\", \n\t\t\"'++'\", \"'--'\", \"'new'\", \"':'\", \"'+'\", \"'-'\", \"'after'\", \"'delete'\", \"'!'\", \n\t\t\"'**'\", \"'/'\", \"'%'\", \"'<<'\", \"'>>'\", \"'&'\", \"'|'\", \"'=='\", \"'!='\", \"'&&'\", \n\t\t\"'?'\", \"'|='\", \"'^='\", \"'&='\", \"'<<='\", \"'>>='\", \"'+='\", \"'-='\", \"'*='\", \n\t\t\"'/='\", \"'%='\", \"'let'\", \"':='\", \"'=:'\", \"'switch'\", \"'case'\", \"'default'\", \n\t\t\"'->'\", \"'callback'\", \"'override'\", undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"'anonymous'\", \"'break'\", \"'constant'\", \"'immutable'\", \"'continue'\", \"'leave'\", \n\t\t\"'external'\", \"'indexed'\", \"'internal'\", \"'payable'\", \"'private'\", \"'public'\", \n\t\t\"'virtual'\", \"'pure'\", \"'type'\", \"'view'\", \"'global'\", \"'constructor'\", \n\t\t\"'fallback'\", \"'receive'\",\n\t];\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"HexNumber\", \"NumberUnit\", \"HexLiteralFragment\", \"ReservedKeyword\", \"AnonymousKeyword\", \n\t\t\"BreakKeyword\", \"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \n\t\t\"LeaveKeyword\", \"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \n\t\t\"PayableKeyword\", \"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \n\t\t\"PureKeyword\", \"TypeKeyword\", \"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \n\t\t\"FallbackKeyword\", \"ReceiveKeyword\", \"Identifier\", \"StringLiteralFragment\", \n\t\t\"VersionLiteral\", \"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityLexer._LITERAL_NAMES, SolidityLexer._SYMBOLIC_NAMES, []);\n\n\t// @Override\n\t// @NotNull\n\tpublic get vocabulary(): Vocabulary {\n\t\treturn SolidityLexer.VOCABULARY;\n\t}\n\t// tslint:enable:no-trailing-whitespace\n\n\n\tconstructor(input: CharStream) {\n\t\tsuper(input);\n\t\tthis._interp = new LexerATNSimulator(SolidityLexer._ATN, this);\n\t}\n\n\t// @Override\n\tpublic get grammarFileName(): string { return \"Solidity.g4\"; }\n\n\t// @Override\n\tpublic get ruleNames(): string[] { return SolidityLexer.ruleNames; }\n\n\t// @Override\n\tpublic get serializedATN(): string { return SolidityLexer._serializedATN; }\n\n\t// @Override\n\tpublic get channelNames(): string[] { return SolidityLexer.channelNames; }\n\n\t// @Override\n\tpublic get modeNames(): string[] { return SolidityLexer.modeNames; }\n\n\tprivate static readonly _serializedATNSegments: number = 4;\n\tprivate static readonly _serializedATNSegment0: string =\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x02\\x88\\u0757\\b\\x01\" +\n\t\t\"\\x04\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\" +\n\t\t\"\\x04\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x04\\n\\t\\n\\x04\\v\\t\\v\\x04\\f\\t\\f\\x04\\r\" +\n\t\t\"\\t\\r\\x04\\x0E\\t\\x0E\\x04\\x0F\\t\\x0F\\x04\\x10\\t\\x10\\x04\\x11\\t\\x11\\x04\\x12\\t\" +\n\t\t\"\\x12\\x04\\x13\\t\\x13\\x04\\x14\\t\\x14\\x04\\x15\\t\\x15\\x04\\x16\\t\\x16\\x04\\x17\\t\" +\n\t\t\"\\x17\\x04\\x18\\t\\x18\\x04\\x19\\t\\x19\\x04\\x1A\\t\\x1A\\x04\\x1B\\t\\x1B\\x04\\x1C\\t\" +\n\t\t\"\\x1C\\x04\\x1D\\t\\x1D\\x04\\x1E\\t\\x1E\\x04\\x1F\\t\\x1F\\x04 \\t \\x04!\\t!\\x04\\\"\\t\" +\n\t\t\"\\\"\\x04#\\t#\\x04$\\t$\\x04%\\t%\\x04&\\t&\\x04\\'\\t\\'\\x04(\\t(\\x04)\\t)\\x04*\\t*\\x04\" +\n\t\t\"+\\t+\\x04,\\t,\\x04-\\t-\\x04.\\t.\\x04/\\t/\\x040\\t0\\x041\\t1\\x042\\t2\\x043\\t3\\x04\" +\n\t\t\"4\\t4\\x045\\t5\\x046\\t6\\x047\\t7\\x048\\t8\\x049\\t9\\x04:\\t:\\x04;\\t;\\x04<\\t<\\x04\" +\n\t\t\"=\\t=\\x04>\\t>\\x04?\\t?\\x04@\\t@\\x04A\\tA\\x04B\\tB\\x04C\\tC\\x04D\\tD\\x04E\\tE\\x04\" +\n\t\t\"F\\tF\\x04G\\tG\\x04H\\tH\\x04I\\tI\\x04J\\tJ\\x04K\\tK\\x04L\\tL\\x04M\\tM\\x04N\\tN\\x04\" +\n\t\t\"O\\tO\\x04P\\tP\\x04Q\\tQ\\x04R\\tR\\x04S\\tS\\x04T\\tT\\x04U\\tU\\x04V\\tV\\x04W\\tW\\x04\" +\n\t\t\"X\\tX\\x04Y\\tY\\x04Z\\tZ\\x04[\\t[\\x04\\\\\\t\\\\\\x04]\\t]\\x04^\\t^\\x04_\\t_\\x04`\\t\" +\n\t\t\"`\\x04a\\ta\\x04b\\tb\\x04c\\tc\\x04d\\td\\x04e\\te\\x04f\\tf\\x04g\\tg\\x04h\\th\\x04\" +\n\t\t\"i\\ti\\x04j\\tj\\x04k\\tk\\x04l\\tl\\x04m\\tm\\x04n\\tn\\x04o\\to\\x04p\\tp\\x04q\\tq\\x04\" +\n\t\t\"r\\tr\\x04s\\ts\\x04t\\tt\\x04u\\tu\\x04v\\tv\\x04w\\tw\\x04x\\tx\\x04y\\ty\\x04z\\tz\\x04\" +\n\t\t\"{\\t{\\x04|\\t|\\x04}\\t}\\x04~\\t~\\x04\\x7F\\t\\x7F\\x04\\x80\\t\\x80\\x04\\x81\\t\\x81\" +\n\t\t\"\\x04\\x82\\t\\x82\\x04\\x83\\t\\x83\\x04\\x84\\t\\x84\\x04\\x85\\t\\x85\\x04\\x86\\t\\x86\" +\n\t\t\"\\x04\\x87\\t\\x87\\x04\\x88\\t\\x88\\x04\\x89\\t\\x89\\x04\\x8A\\t\\x8A\\x04\\x8B\\t\\x8B\" +\n\t\t\"\\x04\\x8C\\t\\x8C\\x04\\x8D\\t\\x8D\\x04\\x8E\\t\\x8E\\x04\\x8F\\t\\x8F\\x03\\x02\\x03\\x02\" +\n\t\t\"\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x04\\x03\\x04\" +\n\t\t\"\\x03\\x05\\x03\\x05\\x03\\x05\\x03\\x06\\x03\\x06\\x03\\x07\\x03\\x07\\x03\\b\\x03\\b\\x03\" +\n\t\t\"\\b\\x03\\t\\x03\\t\\x03\\n\\x03\\n\\x03\\v\\x03\\v\\x03\\v\\x03\\f\\x03\\f\\x03\\r\\x03\\r\\x03\" +\n\t\t\"\\r\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0F\\x03\" +\n\t\t\"\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x10\\x03\\x10\\x03\\x11\\x03\\x11\\x03\\x12\\x03\" +\n\t\t\"\\x12\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\" +\n\t\t\"\\x13\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\" +\n\t\t\"\\x14\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\" +\n\t\t\"\\x15\\x03\\x15\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\" +\n\t\t\"\\x16\\x03\\x17\\x03\\x17\\x03\\x17\\x03\\x18\\x03\\x18\\x03\\x19\\x03\\x19\\x03\\x1A\\x03\" +\n\t\t\"\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\" +\n\t\t\"\\x1B\\x03\\x1B\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1D\\x03\\x1D\\x03\\x1D\\x03\" +\n\t\t\"\\x1D\\x03\\x1D\\x03\\x1D\\x03\\x1D\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\" +\n\t\t\"\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\" +\n\t\t\"\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03\" +\n\t\t\"!\\x03!\\x03!\\x03!\\x03!\\x03!\\x03\\\"\\x03\\\"\\x03\\\"\\x03\\\"\\x03\\\"\\x03#\\x03#\\x03\" +\n\t\t\"$\\x03$\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03&\\x03&\\x03\\'\\x03\\'\\x03\" +\n\t\t\"\\'\\x03\\'\\x03\\'\\x03\\'\\x03\\'\\x03\\'\\x03(\\x03(\\x03(\\x03)\\x03)\\x03)\\x03)\\x03\" +\n\t\t\")\\x03)\\x03)\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03+\\x03+\\x03+\\x03\" +\n\t\t\"+\\x03+\\x03+\\x03+\\x03+\\x03+\\x03,\\x03,\\x03,\\x03-\\x03-\\x03-\\x03-\\x03-\\x03\" +\n\t\t\".\\x03.\\x03.\\x03.\\x03/\\x03/\\x03/\\x03/\\x03/\\x03/\\x030\\x030\\x030\\x030\\x03\" +\n\t\t\"0\\x030\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x032\\x032\\x03\" +\n\t\t\"2\\x032\\x032\\x032\\x032\\x032\\x032\\x033\\x033\\x033\\x034\\x034\\x034\\x034\\x03\" +\n\t\t\"4\\x034\\x034\\x035\\x035\\x035\\x035\\x035\\x035\\x036\\x036\\x036\\x036\\x036\\x03\" +\n\t\t\"7\\x037\\x037\\x037\\x037\\x037\\x037\\x038\\x038\\x038\\x038\\x039\\x039\\x039\\x03\" +\n\t\t\"9\\x039\\x03:\\x03:\\x03:\\x03:\\x03:\\x03:\\x03:\\x03;\\x03;\\x03;\\x03;\\x03;\\x03\" +\n\t\t\"<\\x03<\\x03<\\x03=\\x03=\\x03=\\x03>\\x03>\\x03>\\x03>\\x03?\\x03?\\x03@\\x03@\\x03\" +\n\t\t\"A\\x03A\\x03B\\x03B\\x03B\\x03B\\x03B\\x03B\\x03C\\x03C\\x03C\\x03C\\x03C\\x03C\\x03\" +\n\t\t\"C\\x03D\\x03D\\x03E\\x03E\\x03E\\x03F\\x03F\\x03G\\x03G\\x03H\\x03H\\x03H\\x03I\\x03\" +\n\t\t\"I\\x03I\\x03J\\x03J\\x03K\\x03K\\x03L\\x03L\\x03L\\x03M\\x03M\\x03M\\x03N\\x03N\\x03\" +\n\t\t\"N\\x03O\\x03O\\x03P\\x03P\\x03P\\x03Q\\x03Q\\x03Q\\x03R\\x03R\\x03R\\x03S\\x03S\\x03\" +\n\t\t\"S\\x03S\\x03T\\x03T\\x03T\\x03T\\x03U\\x03U\\x03U\\x03V\\x03V\\x03V\\x03W\\x03W\\x03\" +\n\t\t\"W\\x03X\\x03X\\x03X\\x03Y\\x03Y\\x03Y\\x03Z\\x03Z\\x03Z\\x03Z\\x03[\\x03[\\x03[\\x03\" +\n\t\t\"\\\\\\x03\\\\\\x03\\\\\\x03]\\x03]\\x03]\\x03]\\x03]\\x03]\\x03]\\x03^\\x03^\\x03^\\x03^\" +\n\t\t\"\\x03^\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03`\\x03`\\x03`\\x03a\\x03\" +\n\t\t\"a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03b\\x03b\\x03b\\x03b\\x03b\\x03b\\x03\" +\n\t\t\"b\\x03b\\x03b\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x05c\\u038B\\nc\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x05d\\u0464\\nd\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x05e\\u0542\\ne\\x03f\\x03\" +\n\t\t\"f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x06f\\u0550\\nf\\rf\\x0E\" +\n\t\t\"f\\u0551\\x03f\\x03f\\x06f\\u0556\\nf\\rf\\x0Ef\\u0557\\x05f\\u055A\\nf\\x03g\\x03g\" +\n\t\t\"\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x06g\\u056A\" +\n\t\t\"\\ng\\rg\\x0Eg\\u056B\\x03g\\x03g\\x06g\\u0570\\ng\\rg\\x0Eg\\u0571\\x05g\\u0574\\ng\" +\n\t\t\"\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x05h\\u057F\\nh\\x03i\\x03i\" +\n\t\t\"\\x05i\\u0583\\ni\\x03i\\x03i\\x05i\\u0587\\ni\\x03i\\x03i\\x05i\\u058B\\ni\\x03j\\x03\" +\n\t\t\"j\\x05j\\u058F\\nj\\x03j\\x07j\\u0592\\nj\\fj\\x0Ej\\u0595\\vj\\x03k\\x03k\\x03k\\x03\" +\n\t\t\"k\\x03l\\x03l\\x05l\\u059D\\nl\\x03l\\x07l\\u05A0\\nl\\fl\\x0El\\u05A3\\vl\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x05m\\u05DD\" +\n\t\t\"\\nm\\x03n\\x03n\\x03n\\x03n\\x03n\\x03n\\x05n\\u05E5\\nn\\x03n\\x03n\\x03n\\x05n\\u05EA\" +\n\t\t\"\\nn\\x03n\\x05n\\u05ED\\nn\\x03o\\x03o\\x03o\\x03p\\x03p\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x05\" +\n\t\t\"q\\u064C\\nq\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03s\\x03\" +\n\t\t\"s\\x03s\\x03s\\x03s\\x03s\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03\" +\n\t\t\"u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03v\\x03v\\x03v\\x03v\\x03\" +\n\t\t\"v\\x03v\\x03v\\x03v\\x03v\\x03w\\x03w\\x03w\\x03w\\x03w\\x03w\\x03x\\x03x\\x03x\\x03\" +\n\t\t\"x\\x03x\\x03x\\x03x\\x03x\\x03x\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03\" +\n\t\t\"z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03{\\x03{\\x03{\\x03{\\x03{\\x03\" +\n\t\t\"{\\x03{\\x03{\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03}\\x03}\\x03}\\x03\" +\n\t\t\"}\\x03}\\x03}\\x03}\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03\\x7F\\x03\\x7F\" +\n\t\t\"\\x03\\x7F\\x03\\x7F\\x03\\x7F\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x81\" +\n\t\t\"\\x03\\x81\\x03\\x81\\x03\\x81\\x03\\x81\\x03\\x82\\x03\\x82\\x03\\x82\\x03\\x82\\x03\\x82\" +\n\t\t\"\\x03\\x82\\x03\\x82\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\" +\n\t\t\"\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\" +\n\t\t\"\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x85\" +\n\t\t\"\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x86\\x03\\x86\\x07\\x86\\u06EE\\n\\x86\\f\" +\n\t\t\"\\x86\\x0E\\x86\\u06F1\\v\\x86\\x03\\x87\\x03\\x87\\x03\\x88\\x03\\x88\\x03\\x89\\x03\\x89\" +\n\t\t\"\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x05\\x89\\u06FE\\n\\x89\\x03\\x89\\x03\" +\n\t\t\"\\x89\\x07\\x89\\u0702\\n\\x89\\f\\x89\\x0E\\x89\\u0705\\v\\x89\\x03\\x89\\x03\\x89\\x03\" +\n\t\t\"\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x05\\x89\\u070F\\n\\x89\\x03\\x89\" +\n\t\t\"\\x03\\x89\\x07\\x89\\u0713\\n\\x89\\f\\x89\\x0E\\x89\\u0716\\v\\x89\\x03\\x89\\x05\\x89\" +\n\t\t\"\\u0719\\n\\x89\\x03\\x8A\\x03\\x8A\\x03\\x8A\\x05\\x8A\\u071E\\n\\x8A\\x03\\x8B\\x03\\x8B\" +\n\t\t\"\\x03\\x8B\\x05\\x8B\\u0723\\n\\x8B\\x03\\x8C\\x06\\x8C\\u0726\\n\\x8C\\r\\x8C\\x0E\\x8C\" +\n\t\t\"\\u0727\\x03\\x8C\\x03\\x8C\\x06\\x8C\\u072C\\n\\x8C\\r\\x8C\\x0E\\x8C\\u072D\\x03\\x8C\" +\n\t\t\"\\x03\\x8C\\x06\\x8C\\u0732\\n\\x8C\\r\\x8C\\x0E\\x8C\\u0733\\x05\\x8C\\u0736\\n\\x8C\\x03\" +\n\t\t\"\\x8D\\x06\\x8D\\u0739\\n\\x8D\\r\\x8D\\x0E\\x8D\\u073A\\x03\\x8D\\x03\\x8D\\x03\\x8E\\x03\" +\n\t\t\"\\x8E\\x03\\x8E\\x03\\x8E\\x07\\x8E\\u0743\\n\\x8E\\f\\x8E\\x0E\\x8E\\u0746\\v\\x8E\\x03\" +\n\t\t\"\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8F\\x03\\x8F\\x03\\x8F\\x03\\x8F\\x07\" +\n\t\t\"\\x8F\\u0751\\n\\x8F\\f\\x8F\\x0E\\x8F\\u0754\\v\\x8F\\x03\\x8F\\x03\\x8F\\x03\\u0744\\x02\" +\n\t\t\"\\x02\\x90\\x03\\x02\\x03\\x05\\x02\\x04\\x07\\x02\\x05\\t\\x02\\x06\\v\\x02\\x07\\r\\x02\" +\n\t\t\"\\b\\x0F\\x02\\t\\x11\\x02\\n\\x13\\x02\\v\\x15\\x02\\f\\x17\\x02\\r\\x19\\x02\\x0E\\x1B\\x02\" +\n\t\t\"\\x0F\\x1D\\x02\\x10\\x1F\\x02\\x11!\\x02\\x12#\\x02\\x13%\\x02\\x14\\'\\x02\\x15)\\x02\" +\n\t\t\"\\x16+\\x02\\x17-\\x02\\x18/\\x02\\x191\\x02\\x1A3\\x02\\x1B5\\x02\\x1C7\\x02\\x1D9\\x02\" +\n\t\t\"\\x1E;\\x02\\x1F=\\x02 ?\\x02!A\\x02\\\"C\\x02#E\\x02$G\\x02%I\\x02&K\\x02\\'M\\x02(\" +\n\t\t\"O\\x02)Q\\x02*S\\x02+U\\x02,W\\x02-Y\\x02.[\\x02/]\\x020_\\x021a\\x022c\\x023e\\x02\" +\n\t\t\"4g\\x025i\\x026k\\x027m\\x028o\\x029q\\x02:s\\x02;u\\x02{\\x02?}\\x02\" +\n\t\t\"@\\x7F\\x02A\\x81\\x02B\\x83\\x02C\\x85\\x02D\\x87\\x02E\\x89\\x02F\\x8B\\x02G\\x8D\\x02\" +\n\t\t\"H\\x8F\\x02I\\x91\\x02J\\x93\\x02K\\x95\\x02L\\x97\\x02M\\x99\\x02N\\x9B\\x02O\\x9D\\x02\" +\n\t\t\"P\\x9F\\x02Q\\xA1\\x02R\\xA3\\x02S\\xA5\\x02T\\xA7\\x02U\\xA9\\x02V\\xAB\\x02W\\xAD\\x02\" +\n\t\t\"X\\xAF\\x02Y\\xB1\\x02Z\\xB3\\x02[\\xB5\\x02\\\\\\xB7\\x02]\\xB9\\x02^\\xBB\\x02_\\xBD\" +\n\t\t\"\\x02`\\xBF\\x02a\\xC1\\x02b\\xC3\\x02c\\xC5\\x02d\\xC7\\x02e\\xC9\\x02f\\xCB\\x02g\\xCD\" +\n\t\t\"\\x02h\\xCF\\x02i\\xD1\\x02j\\xD3\\x02\\x02\\xD5\\x02k\\xD7\\x02\\x02\\xD9\\x02l\\xDB\" +\n\t\t\"\\x02m\\xDD\\x02\\x02\\xDF\\x02\\x02\\xE1\\x02n\\xE3\\x02o\\xE5\\x02p\\xE7\\x02q\\xE9\" +\n\t\t\"\\x02r\\xEB\\x02s\\xED\\x02t\\xEF\\x02u\\xF1\\x02v\\xF3\\x02w\\xF5\\x02x\\xF7\\x02y\\xF9\" +\n\t\t\"\\x02z\\xFB\\x02{\\xFD\\x02|\\xFF\\x02}\\u0101\\x02~\\u0103\\x02\\x7F\\u0105\\x02\\x80\" +\n\t\t\"\\u0107\\x02\\x81\\u0109\\x02\\x82\\u010B\\x02\\x83\\u010D\\x02\\x02\\u010F\\x02\\x02\" +\n\t\t\"\\u0111\\x02\\x84\\u0113\\x02\\x02\\u0115\\x02\\x02\\u0117\\x02\\x85\\u0119\\x02\\x86\" +\n\t\t\"\\u011B\\x02\\x87\\u011D\\x02\\x88\\x03\\x02\\f\\x03\\x022;\\x04\\x02GGgg\\x04\\x02Z\" +\n\t\t\"Zzz\\x05\\x022;CHch\\x06\\x02&&C\\\\aac|\\x07\\x02&&2;C\\\\aac|\\x06\\x02\\f\\f\\x0F\" +\n\t\t\"\\x0F$$^^\\x06\\x02\\f\\f\\x0F\\x0F))^^\\x05\\x02\\v\\f\\x0E\\x0F\\\"\\\"\\x04\\x02\\f\\f\\x0F\" +\n\t\t\"\\x0F\\x02\\u07E8\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x05\\x03\\x02\\x02\\x02\\x02\\x07\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x02\\t\\x03\\x02\\x02\\x02\\x02\\v\\x03\\x02\\x02\\x02\\x02\\r\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x0F\\x03\\x02\\x02\\x02\\x02\\x11\\x03\\x02\\x02\\x02\\x02\\x13\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x15\\x03\\x02\\x02\\x02\\x02\\x17\\x03\\x02\\x02\\x02\\x02\\x19\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x1B\\x03\\x02\\x02\\x02\\x02\\x1D\\x03\\x02\\x02\\x02\\x02\\x1F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02!\\x03\\x02\\x02\\x02\\x02#\\x03\\x02\\x02\\x02\\x02%\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02\\'\\x03\\x02\\x02\\x02\\x02)\\x03\\x02\\x02\\x02\\x02+\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"-\\x03\\x02\\x02\\x02\\x02/\\x03\\x02\\x02\\x02\\x021\\x03\\x02\\x02\\x02\\x023\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x025\\x03\\x02\\x02\\x02\\x027\\x03\\x02\\x02\\x02\\x029\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02;\\x03\\x02\\x02\\x02\\x02=\\x03\\x02\\x02\\x02\\x02?\\x03\\x02\\x02\\x02\\x02A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02C\\x03\\x02\\x02\\x02\\x02E\\x03\\x02\\x02\\x02\\x02G\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02I\\x03\\x02\\x02\\x02\\x02K\\x03\\x02\\x02\\x02\\x02M\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"O\\x03\\x02\\x02\\x02\\x02Q\\x03\\x02\\x02\\x02\\x02S\\x03\\x02\\x02\\x02\\x02U\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02W\\x03\\x02\\x02\\x02\\x02Y\\x03\\x02\\x02\\x02\\x02[\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02]\\x03\\x02\\x02\\x02\\x02_\\x03\\x02\\x02\\x02\\x02a\\x03\\x02\\x02\\x02\\x02c\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02e\\x03\\x02\\x02\\x02\\x02g\\x03\\x02\\x02\\x02\\x02i\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02k\\x03\\x02\\x02\\x02\\x02m\\x03\\x02\\x02\\x02\\x02o\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"q\\x03\\x02\\x02\\x02\\x02s\\x03\\x02\\x02\\x02\\x02u\\x03\\x02\\x02\\x02\\x02w\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02y\\x03\\x02\\x02\\x02\\x02{\\x03\\x02\\x02\\x02\\x02}\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x7F\\x03\\x02\\x02\\x02\\x02\\x81\\x03\\x02\\x02\\x02\\x02\\x83\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x85\\x03\\x02\\x02\\x02\\x02\\x87\\x03\\x02\\x02\\x02\\x02\\x89\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x8B\\x03\\x02\\x02\\x02\\x02\\x8D\\x03\\x02\\x02\\x02\\x02\\x8F\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x91\\x03\\x02\\x02\\x02\\x02\\x93\\x03\\x02\\x02\\x02\\x02\\x95\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x97\\x03\\x02\\x02\\x02\\x02\\x99\\x03\\x02\\x02\\x02\\x02\\x9B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x9D\\x03\\x02\\x02\\x02\\x02\\x9F\\x03\\x02\\x02\\x02\\x02\\xA1\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xA3\\x03\\x02\\x02\\x02\\x02\\xA5\\x03\\x02\\x02\\x02\\x02\\xA7\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xA9\\x03\\x02\\x02\\x02\\x02\\xAB\\x03\\x02\\x02\\x02\\x02\\xAD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xAF\\x03\\x02\\x02\\x02\\x02\\xB1\\x03\\x02\\x02\\x02\\x02\\xB3\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xB5\\x03\\x02\\x02\\x02\\x02\\xB7\\x03\\x02\\x02\\x02\\x02\\xB9\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xBB\\x03\\x02\\x02\\x02\\x02\\xBD\\x03\\x02\\x02\\x02\\x02\\xBF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xC1\\x03\\x02\\x02\\x02\\x02\\xC3\\x03\\x02\\x02\\x02\\x02\\xC5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xC7\\x03\\x02\\x02\\x02\\x02\\xC9\\x03\\x02\\x02\\x02\\x02\\xCB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xCD\\x03\\x02\\x02\\x02\\x02\\xCF\\x03\\x02\\x02\\x02\\x02\\xD1\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xD5\\x03\\x02\\x02\\x02\\x02\\xD9\\x03\\x02\\x02\\x02\\x02\\xDB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xE1\\x03\\x02\\x02\\x02\\x02\\xE3\\x03\\x02\\x02\\x02\\x02\\xE5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xE7\\x03\\x02\\x02\\x02\";\n\tprivate static readonly _serializedATNSegment1: string =\n\t\t\"\\x02\\xE9\\x03\\x02\\x02\\x02\\x02\\xEB\\x03\\x02\\x02\\x02\\x02\\xED\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xEF\\x03\\x02\\x02\\x02\\x02\\xF1\\x03\\x02\\x02\\x02\\x02\\xF3\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xF5\\x03\\x02\\x02\\x02\\x02\\xF7\\x03\\x02\\x02\\x02\\x02\\xF9\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xFB\\x03\\x02\\x02\\x02\\x02\\xFD\\x03\\x02\\x02\\x02\\x02\\xFF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\u0101\\x03\\x02\\x02\\x02\\x02\\u0103\\x03\\x02\\x02\\x02\\x02\\u0105\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02\\u0107\\x03\\x02\\x02\\x02\\x02\\u0109\\x03\\x02\\x02\\x02\\x02\\u010B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x02\\u0111\\x03\\x02\\x02\\x02\\x02\\u0117\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"\\u0119\\x03\\x02\\x02\\x02\\x02\\u011B\\x03\\x02\\x02\\x02\\x02\\u011D\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x03\\u011F\\x03\\x02\\x02\\x02\\x05\\u0126\\x03\\x02\\x02\\x02\\x07\\u0128\\x03\" +\n\t\t\"\\x02\\x02\\x02\\t\\u012A\\x03\\x02\\x02\\x02\\v\\u012D\\x03\\x02\\x02\\x02\\r\\u012F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x0F\\u0131\\x03\\x02\\x02\\x02\\x11\\u0134\\x03\\x02\\x02\\x02\\x13\\u0136\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x15\\u0138\\x03\\x02\\x02\\x02\\x17\\u013B\\x03\\x02\\x02\\x02\\x19\" +\n\t\t\"\\u013D\\x03\\x02\\x02\\x02\\x1B\\u0140\\x03\\x02\\x02\\x02\\x1D\\u0147\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x1F\\u014C\\x03\\x02\\x02\\x02!\\u014E\\x03\\x02\\x02\\x02#\\u0150\\x03\\x02\\x02\" +\n\t\t\"\\x02%\\u0152\\x03\\x02\\x02\\x02\\'\\u015B\\x03\\x02\\x02\\x02)\\u0164\\x03\\x02\\x02\" +\n\t\t\"\\x02+\\u016E\\x03\\x02\\x02\\x02-\\u0176\\x03\\x02\\x02\\x02/\\u0179\\x03\\x02\\x02\" +\n\t\t\"\\x021\\u017B\\x03\\x02\\x02\\x023\\u017D\\x03\\x02\\x02\\x025\\u0183\\x03\\x02\\x02\" +\n\t\t\"\\x027\\u0189\\x03\\x02\\x02\\x029\\u018D\\x03\\x02\\x02\\x02;\\u0194\\x03\\x02\\x02\" +\n\t\t\"\\x02=\\u019D\\x03\\x02\\x02\\x02?\\u01A6\\x03\\x02\\x02\\x02A\\u01AE\\x03\\x02\\x02\" +\n\t\t\"\\x02C\\u01B4\\x03\\x02\\x02\\x02E\\u01B9\\x03\\x02\\x02\\x02G\\u01BB\\x03\\x02\\x02\" +\n\t\t\"\\x02I\\u01BD\\x03\\x02\\x02\\x02K\\u01C5\\x03\\x02\\x02\\x02M\\u01C7\\x03\\x02\\x02\" +\n\t\t\"\\x02O\\u01CF\\x03\\x02\\x02\\x02Q\\u01D2\\x03\\x02\\x02\\x02S\\u01D9\\x03\\x02\\x02\" +\n\t\t\"\\x02U\\u01E1\\x03\\x02\\x02\\x02W\\u01EA\\x03\\x02\\x02\\x02Y\\u01ED\\x03\\x02\\x02\" +\n\t\t\"\\x02[\\u01F2\\x03\\x02\\x02\\x02]\\u01F6\\x03\\x02\\x02\\x02_\\u01FC\\x03\\x02\\x02\" +\n\t\t\"\\x02a\\u0202\\x03\\x02\\x02\\x02c\\u020C\\x03\\x02\\x02\\x02e\\u0215\\x03\\x02\\x02\" +\n\t\t\"\\x02g\\u0218\\x03\\x02\\x02\\x02i\\u021F\\x03\\x02\\x02\\x02k\\u0225\\x03\\x02\\x02\" +\n\t\t\"\\x02m\\u022A\\x03\\x02\\x02\\x02o\\u0231\\x03\\x02\\x02\\x02q\\u0235\\x03\\x02\\x02\" +\n\t\t\"\\x02s\\u023A\\x03\\x02\\x02\\x02u\\u0241\\x03\\x02\\x02\\x02w\\u0246\\x03\\x02\\x02\" +\n\t\t\"\\x02y\\u0249\\x03\\x02\\x02\\x02{\\u024C\\x03\\x02\\x02\\x02}\\u0250\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x7F\\u0252\\x03\\x02\\x02\\x02\\x81\\u0254\\x03\\x02\\x02\\x02\\x83\\u0256\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x85\\u025C\\x03\\x02\\x02\\x02\\x87\\u0263\\x03\\x02\\x02\\x02\\x89\\u0265\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x8B\\u0268\\x03\\x02\\x02\\x02\\x8D\\u026A\\x03\\x02\\x02\\x02\\x8F\" +\n\t\t\"\\u026C\\x03\\x02\\x02\\x02\\x91\\u026F\\x03\\x02\\x02\\x02\\x93\\u0272\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x95\\u0274\\x03\\x02\\x02\\x02\\x97\\u0276\\x03\\x02\\x02\\x02\\x99\\u0279\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x9B\\u027C\\x03\\x02\\x02\\x02\\x9D\\u027F\\x03\\x02\\x02\\x02\\x9F\\u0281\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xA1\\u0284\\x03\\x02\\x02\\x02\\xA3\\u0287\\x03\\x02\\x02\\x02\\xA5\" +\n\t\t\"\\u028A\\x03\\x02\\x02\\x02\\xA7\\u028E\\x03\\x02\\x02\\x02\\xA9\\u0292\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xAB\\u0295\\x03\\x02\\x02\\x02\\xAD\\u0298\\x03\\x02\\x02\\x02\\xAF\\u029B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xB1\\u029E\\x03\\x02\\x02\\x02\\xB3\\u02A1\\x03\\x02\\x02\\x02\\xB5\\u02A5\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xB7\\u02A8\\x03\\x02\\x02\\x02\\xB9\\u02AB\\x03\\x02\\x02\\x02\\xBB\" +\n\t\t\"\\u02B2\\x03\\x02\\x02\\x02\\xBD\\u02B7\\x03\\x02\\x02\\x02\\xBF\\u02BF\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xC1\\u02C2\\x03\\x02\\x02\\x02\\xC3\\u02CB\\x03\\x02\\x02\\x02\\xC5\\u038A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xC7\\u0463\\x03\\x02\\x02\\x02\\xC9\\u0541\\x03\\x02\\x02\\x02\\xCB\\u0559\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xCD\\u0573\\x03\\x02\\x02\\x02\\xCF\\u057E\\x03\\x02\\x02\\x02\\xD1\" +\n\t\t\"\\u0586\\x03\\x02\\x02\\x02\\xD3\\u058C\\x03\\x02\\x02\\x02\\xD5\\u0596\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xD7\\u059A\\x03\\x02\\x02\\x02\\xD9\\u05DC\\x03\\x02\\x02\\x02\\xDB\\u05DE\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xDD\\u05EE\\x03\\x02\\x02\\x02\\xDF\\u05F1\\x03\\x02\\x02\\x02\\xE1\\u064B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xE3\\u064D\\x03\\x02\\x02\\x02\\xE5\\u0657\\x03\\x02\\x02\\x02\\xE7\" +\n\t\t\"\\u065D\\x03\\x02\\x02\\x02\\xE9\\u0666\\x03\\x02\\x02\\x02\\xEB\\u0670\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xED\\u0679\\x03\\x02\\x02\\x02\\xEF\\u067F\\x03\\x02\\x02\\x02\\xF1\\u0688\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xF3\\u0690\\x03\\x02\\x02\\x02\\xF5\\u0699\\x03\\x02\\x02\\x02\\xF7\\u06A1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF9\\u06A9\\x03\\x02\\x02\\x02\\xFB\\u06B0\\x03\\x02\\x02\\x02\\xFD\" +\n\t\t\"\\u06B8\\x03\\x02\\x02\\x02\\xFF\\u06BD\\x03\\x02\\x02\\x02\\u0101\\u06C2\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0103\\u06C7\\x03\\x02\\x02\\x02\\u0105\\u06CE\\x03\\x02\\x02\\x02\\u0107\\u06DA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0109\\u06E3\\x03\\x02\\x02\\x02\\u010B\\u06EB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u010D\\u06F2\\x03\\x02\\x02\\x02\\u010F\\u06F4\\x03\\x02\\x02\\x02\\u0111\\u0718\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0113\\u071D\\x03\\x02\\x02\\x02\\u0115\\u0722\\x03\\x02\\x02\\x02\\u0117\" +\n\t\t\"\\u0725\\x03\\x02\\x02\\x02\\u0119\\u0738\\x03\\x02\\x02\\x02\\u011B\\u073E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u011D\\u074C\\x03\\x02\\x02\\x02\\u011F\\u0120\\x07r\\x02\\x02\\u0120\\u0121\" +\n\t\t\"\\x07t\\x02\\x02\\u0121\\u0122\\x07c\\x02\\x02\\u0122\\u0123\\x07i\\x02\\x02\\u0123\" +\n\t\t\"\\u0124\\x07o\\x02\\x02\\u0124\\u0125\\x07c\\x02\\x02\\u0125\\x04\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0126\\u0127\\x07=\\x02\\x02\\u0127\\x06\\x03\\x02\\x02\\x02\\u0128\\u0129\\x07,\\x02\" +\n\t\t\"\\x02\\u0129\\b\\x03\\x02\\x02\\x02\\u012A\\u012B\\x07~\\x02\\x02\\u012B\\u012C\\x07\" +\n\t\t\"~\\x02\\x02\\u012C\\n\\x03\\x02\\x02\\x02\\u012D\\u012E\\x07`\\x02\\x02\\u012E\\f\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u012F\\u0130\\x07\\x80\\x02\\x02\\u0130\\x0E\\x03\\x02\\x02\\x02\\u0131\" +\n\t\t\"\\u0132\\x07@\\x02\\x02\\u0132\\u0133\\x07?\\x02\\x02\\u0133\\x10\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0134\\u0135\\x07@\\x02\\x02\\u0135\\x12\\x03\\x02\\x02\\x02\\u0136\\u0137\\x07>\\x02\" +\n\t\t\"\\x02\\u0137\\x14\\x03\\x02\\x02\\x02\\u0138\\u0139\\x07>\\x02\\x02\\u0139\\u013A\\x07\" +\n\t\t\"?\\x02\\x02\\u013A\\x16\\x03\\x02\\x02\\x02\\u013B\\u013C\\x07?\\x02\\x02\\u013C\\x18\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u013D\\u013E\\x07c\\x02\\x02\\u013E\\u013F\\x07u\\x02\\x02\\u013F\" +\n\t\t\"\\x1A\\x03\\x02\\x02\\x02\\u0140\\u0141\\x07k\\x02\\x02\\u0141\\u0142\\x07o\\x02\\x02\" +\n\t\t\"\\u0142\\u0143\\x07r\\x02\\x02\\u0143\\u0144\\x07q\\x02\\x02\\u0144\\u0145\\x07t\\x02\" +\n\t\t\"\\x02\\u0145\\u0146\\x07v\\x02\\x02\\u0146\\x1C\\x03\\x02\\x02\\x02\\u0147\\u0148\\x07\" +\n\t\t\"h\\x02\\x02\\u0148\\u0149\\x07t\\x02\\x02\\u0149\\u014A\\x07q\\x02\\x02\\u014A\\u014B\" +\n\t\t\"\\x07o\\x02\\x02\\u014B\\x1E\\x03\\x02\\x02\\x02\\u014C\\u014D\\x07}\\x02\\x02\\u014D\" +\n\t\t\" \\x03\\x02\\x02\\x02\\u014E\\u014F\\x07.\\x02\\x02\\u014F\\\"\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u0151\\x07\\x7F\\x02\\x02\\u0151$\\x03\\x02\\x02\\x02\\u0152\\u0153\\x07c\\x02\\x02\" +\n\t\t\"\\u0153\\u0154\\x07d\\x02\\x02\\u0154\\u0155\\x07u\\x02\\x02\\u0155\\u0156\\x07v\\x02\" +\n\t\t\"\\x02\\u0156\\u0157\\x07t\\x02\\x02\\u0157\\u0158\\x07c\\x02\\x02\\u0158\\u0159\\x07\" +\n\t\t\"e\\x02\\x02\\u0159\\u015A\\x07v\\x02\\x02\\u015A&\\x03\\x02\\x02\\x02\\u015B\\u015C\" +\n\t\t\"\\x07e\\x02\\x02\\u015C\\u015D\\x07q\\x02\\x02\\u015D\\u015E\\x07p\\x02\\x02\\u015E\" +\n\t\t\"\\u015F\\x07v\\x02\\x02\\u015F\\u0160\\x07t\\x02\\x02\\u0160\\u0161\\x07c\\x02\\x02\" +\n\t\t\"\\u0161\\u0162\\x07e\\x02\\x02\\u0162\\u0163\\x07v\\x02\\x02\\u0163(\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0164\\u0165\\x07k\\x02\\x02\\u0165\\u0166\\x07p\\x02\\x02\\u0166\\u0167\\x07\" +\n\t\t\"v\\x02\\x02\\u0167\\u0168\\x07g\\x02\\x02\\u0168\\u0169\\x07t\\x02\\x02\\u0169\\u016A\" +\n\t\t\"\\x07h\\x02\\x02\\u016A\\u016B\\x07c\\x02\\x02\\u016B\\u016C\\x07e\\x02\\x02\\u016C\" +\n\t\t\"\\u016D\\x07g\\x02\\x02\\u016D*\\x03\\x02\\x02\\x02\\u016E\\u016F\\x07n\\x02\\x02\\u016F\" +\n\t\t\"\\u0170\\x07k\\x02\\x02\\u0170\\u0171\\x07d\\x02\\x02\\u0171\\u0172\\x07t\\x02\\x02\" +\n\t\t\"\\u0172\\u0173\\x07c\\x02\\x02\\u0173\\u0174\\x07t\\x02\\x02\\u0174\\u0175\\x07{\\x02\" +\n\t\t\"\\x02\\u0175,\\x03\\x02\\x02\\x02\\u0176\\u0177\\x07k\\x02\\x02\\u0177\\u0178\\x07u\" +\n\t\t\"\\x02\\x02\\u0178.\\x03\\x02\\x02\\x02\\u0179\\u017A\\x07*\\x02\\x02\\u017A0\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u017B\\u017C\\x07+\\x02\\x02\\u017C2\\x03\\x02\\x02\\x02\\u017D\\u017E\\x07\" +\n\t\t\"g\\x02\\x02\\u017E\\u017F\\x07t\\x02\\x02\\u017F\\u0180\\x07t\\x02\\x02\\u0180\\u0181\" +\n\t\t\"\\x07q\\x02\\x02\\u0181\\u0182\\x07t\\x02\\x02\\u01824\\x03\\x02\\x02\\x02\\u0183\\u0184\" +\n\t\t\"\\x07w\\x02\\x02\\u0184\\u0185\\x07u\\x02\\x02\\u0185\\u0186\\x07k\\x02\\x02\\u0186\" +\n\t\t\"\\u0187\\x07p\\x02\\x02\\u0187\\u0188\\x07i\\x02\\x02\\u01886\\x03\\x02\\x02\\x02\\u0189\" +\n\t\t\"\\u018A\\x07h\\x02\\x02\\u018A\\u018B\\x07q\\x02\\x02\\u018B\\u018C\\x07t\\x02\\x02\" +\n\t\t\"\\u018C8\\x03\\x02\\x02\\x02\\u018D\\u018E\\x07u\\x02\\x02\\u018E\\u018F\\x07v\\x02\" +\n\t\t\"\\x02\\u018F\\u0190\\x07t\\x02\\x02\\u0190\\u0191\\x07w\\x02\\x02\\u0191\\u0192\\x07\" +\n\t\t\"e\\x02\\x02\\u0192\\u0193\\x07v\\x02\\x02\\u0193:\\x03\\x02\\x02\\x02\\u0194\\u0195\" +\n\t\t\"\\x07o\\x02\\x02\\u0195\\u0196\\x07q\\x02\\x02\\u0196\\u0197\\x07f\\x02\\x02\\u0197\" +\n\t\t\"\\u0198\\x07k\\x02\\x02\\u0198\\u0199\\x07h\\x02\\x02\\u0199\\u019A\\x07k\\x02\\x02\" +\n\t\t\"\\u019A\\u019B\\x07g\\x02\\x02\\u019B\\u019C\\x07t\\x02\\x02\\u019C<\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u019D\\u019E\\x07h\\x02\\x02\\u019E\\u019F\\x07w\\x02\\x02\\u019F\\u01A0\\x07\" +\n\t\t\"p\\x02\\x02\\u01A0\\u01A1\\x07e\\x02\\x02\\u01A1\\u01A2\\x07v\\x02\\x02\\u01A2\\u01A3\" +\n\t\t\"\\x07k\\x02\\x02\\u01A3\\u01A4\\x07q\\x02\\x02\\u01A4\\u01A5\\x07p\\x02\\x02\\u01A5\" +\n\t\t\">\\x03\\x02\\x02\\x02\\u01A6\\u01A7\\x07t\\x02\\x02\\u01A7\\u01A8\\x07g\\x02\\x02\\u01A8\" +\n\t\t\"\\u01A9\\x07v\\x02\\x02\\u01A9\\u01AA\\x07w\\x02\\x02\\u01AA\\u01AB\\x07t\\x02\\x02\" +\n\t\t\"\\u01AB\\u01AC\\x07p\\x02\\x02\\u01AC\\u01AD\\x07u\\x02\\x02\\u01AD@\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01AE\\u01AF\\x07g\\x02\\x02\\u01AF\\u01B0\\x07x\\x02\\x02\\u01B0\\u01B1\\x07\" +\n\t\t\"g\\x02\\x02\\u01B1\\u01B2\\x07p\\x02\\x02\\u01B2\\u01B3\\x07v\\x02\\x02\\u01B3B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01B4\\u01B5\\x07g\\x02\\x02\\u01B5\\u01B6\\x07p\\x02\\x02\\u01B6\\u01B7\" +\n\t\t\"\\x07w\\x02\\x02\\u01B7\\u01B8\\x07o\\x02\\x02\\u01B8D\\x03\\x02\\x02\\x02\\u01B9\\u01BA\" +\n\t\t\"\\x07]\\x02\\x02\\u01BAF\\x03\\x02\\x02\\x02\\u01BB\\u01BC\\x07_\\x02\\x02\\u01BCH\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01BD\\u01BE\\x07c\\x02\\x02\\u01BE\\u01BF\\x07f\\x02\\x02\\u01BF\\u01C0\" +\n\t\t\"\\x07f\\x02\\x02\\u01C0\\u01C1\\x07t\\x02\\x02\\u01C1\\u01C2\\x07g\\x02\\x02\\u01C2\" +\n\t\t\"\\u01C3\\x07u\\x02\\x02\\u01C3\\u01C4\\x07u\\x02\\x02\\u01C4J\\x03\\x02\\x02\\x02\\u01C5\" +\n\t\t\"\\u01C6\\x070\\x02\\x02\\u01C6L\\x03\\x02\\x02\\x02\\u01C7\\u01C8\\x07o\\x02\\x02\\u01C8\" +\n\t\t\"\\u01C9\\x07c\\x02\\x02\\u01C9\\u01CA\\x07r\\x02\\x02\\u01CA\\u01CB\\x07r\\x02\\x02\" +\n\t\t\"\\u01CB\\u01CC\\x07k\\x02\\x02\\u01CC\\u01CD\\x07p\\x02\\x02\\u01CD\\u01CE\\x07i\\x02\" +\n\t\t\"\\x02\\u01CEN\\x03\\x02\\x02\\x02\\u01CF\\u01D0\\x07?\\x02\\x02\\u01D0\\u01D1\\x07@\" +\n\t\t\"\\x02\\x02\\u01D1P\\x03\\x02\\x02\\x02\\u01D2\\u01D3\\x07o\\x02\\x02\\u01D3\\u01D4\\x07\" +\n\t\t\"g\\x02\\x02\\u01D4\\u01D5\\x07o\\x02\\x02\\u01D5\\u01D6\\x07q\\x02\\x02\\u01D6\\u01D7\" +\n\t\t\"\\x07t\\x02\\x02\\u01D7\\u01D8\\x07{\\x02\\x02\\u01D8R\\x03\\x02\\x02\\x02\\u01D9\\u01DA\" +\n\t\t\"\\x07u\\x02\\x02\\u01DA\\u01DB\\x07v\\x02\\x02\\u01DB\\u01DC\\x07q\\x02\\x02\\u01DC\" +\n\t\t\"\\u01DD\\x07t\\x02\\x02\\u01DD\\u01DE\\x07c\\x02\\x02\\u01DE\\u01DF\\x07i\\x02\\x02\" +\n\t\t\"\\u01DF\\u01E0\\x07g\\x02\\x02\\u01E0T\\x03\\x02\\x02\\x02\\u01E1\\u01E2\\x07e\\x02\" +\n\t\t\"\\x02\\u01E2\\u01E3\\x07c\\x02\\x02\\u01E3\\u01E4\\x07n\\x02\\x02\\u01E4\\u01E5\\x07\" +\n\t\t\"n\\x02\\x02\\u01E5\\u01E6\\x07f\\x02\\x02\\u01E6\\u01E7\\x07c\\x02\\x02\\u01E7\\u01E8\" +\n\t\t\"\\x07v\\x02\\x02\\u01E8\\u01E9\\x07c\\x02\\x02\\u01E9V\\x03\\x02\\x02\\x02\\u01EA\\u01EB\" +\n\t\t\"\\x07k\\x02\\x02\\u01EB\\u01EC\\x07h\\x02\\x02\\u01ECX\\x03\\x02\\x02\\x02\\u01ED\\u01EE\" +\n\t\t\"\\x07g\\x02\\x02\\u01EE\\u01EF\\x07n\\x02\\x02\\u01EF\\u01F0\\x07u\\x02\\x02\\u01F0\" +\n\t\t\"\\u01F1\\x07g\\x02\\x02\\u01F1Z\\x03\\x02\\x02\\x02\\u01F2\\u01F3\\x07v\\x02\\x02\\u01F3\" +\n\t\t\"\\u01F4\\x07t\\x02\\x02\\u01F4\\u01F5\\x07{\\x02\\x02\\u01F5\\\\\\x03\\x02\\x02\\x02\\u01F6\" +\n\t\t\"\\u01F7\\x07e\\x02\\x02\\u01F7\\u01F8\\x07c\\x02\\x02\\u01F8\\u01F9\\x07v\\x02\\x02\" +\n\t\t\"\\u01F9\\u01FA\\x07e\\x02\\x02\\u01FA\\u01FB\\x07j\\x02\\x02\\u01FB^\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01FC\\u01FD\\x07y\\x02\\x02\\u01FD\\u01FE\\x07j\\x02\\x02\\u01FE\\u01FF\\x07\" +\n\t\t\"k\\x02\\x02\\u01FF\\u0200\\x07n\\x02\\x02\\u0200\\u0201\\x07g\\x02\\x02\\u0201`\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0202\\u0203\\x07w\\x02\\x02\\u0203\\u0204\\x07p\\x02\\x02\\u0204\\u0205\" +\n\t\t\"\\x07e\\x02\\x02\\u0205\\u0206\\x07j\\x02\\x02\\u0206\\u0207\\x07g\\x02\\x02\\u0207\" +\n\t\t\"\\u0208\\x07e\\x02\\x02\\u0208\\u0209\\x07m\\x02\\x02\\u0209\\u020A\\x07g\\x02\\x02\" +\n\t\t\"\\u020A\\u020B\\x07f\\x02\\x02\\u020Bb\\x03\\x02\\x02\\x02\\u020C\\u020D\\x07c\\x02\" +\n\t\t\"\\x02\\u020D\\u020E\\x07u\\x02\\x02\\u020E\\u020F\\x07u\\x02\\x02\\u020F\\u0210\\x07\" +\n\t\t\"g\\x02\\x02\\u0210\\u0211\\x07o\\x02\\x02\\u0211\\u0212\\x07d\\x02\\x02\\u0212\\u0213\" +\n\t\t\"\\x07n\\x02\\x02\\u0213\\u0214\\x07{\\x02\\x02\\u0214d\\x03\\x02\\x02\\x02\\u0215\\u0216\" +\n\t\t\"\\x07f\\x02\\x02\\u0216\\u0217\\x07q\\x02\\x02\\u0217f\\x03\\x02\\x02\\x02\\u0218\\u0219\" +\n\t\t\"\\x07t\\x02\\x02\\u0219\\u021A\\x07g\\x02\\x02\\u021A\\u021B\\x07v\\x02\\x02\\u021B\" +\n\t\t\"\\u021C\\x07w\\x02\\x02\\u021C\\u021D\\x07t\\x02\\x02\\u021D\\u021E\\x07p\\x02\\x02\" +\n\t\t\"\\u021Eh\\x03\\x02\\x02\\x02\\u021F\\u0220\\x07v\\x02\\x02\\u0220\\u0221\\x07j\\x02\" +\n\t\t\"\\x02\\u0221\\u0222\\x07t\\x02\\x02\\u0222\\u0223\\x07q\\x02\\x02\\u0223\\u0224\\x07\" +\n\t\t\"y\\x02\\x02\\u0224j\\x03\\x02\\x02\\x02\\u0225\\u0226\\x07g\\x02\\x02\\u0226\\u0227\" +\n\t\t\"\\x07o\\x02\\x02\\u0227\\u0228\\x07k\\x02\\x02\\u0228\\u0229\\x07v\\x02\\x02\\u0229\" +\n\t\t\"l\\x03\\x02\\x02\\x02\\u022A\\u022B\\x07t\\x02\\x02\\u022B\\u022C\\x07g\\x02\\x02\\u022C\" +\n\t\t\"\\u022D\\x07x\\x02\\x02\\u022D\\u022E\\x07g\\x02\\x02\\u022E\\u022F\\x07t\\x02\\x02\" +\n\t\t\"\\u022F\\u0230\\x07v\\x02\\x02\\u0230n\\x03\\x02\\x02\\x02\\u0231\\u0232\\x07x\\x02\" +\n\t\t\"\\x02\\u0232\\u0233\\x07c\\x02\\x02\\u0233\\u0234\\x07t\\x02\\x02\\u0234p\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0235\\u0236\\x07d\\x02\\x02\\u0236\\u0237\\x07q\\x02\\x02\\u0237\\u0238\" +\n\t\t\"\\x07q\\x02\\x02\\u0238\\u0239\\x07n\\x02\\x02\\u0239r\\x03\\x02\\x02\\x02\\u023A\\u023B\" +\n\t\t\"\\x07u\\x02\\x02\\u023B\\u023C\\x07v\\x02\\x02\\u023C\\u023D\\x07t\\x02\\x02\\u023D\" +\n\t\t\"\\u023E\\x07k\\x02\\x02\\u023E\\u023F\\x07p\\x02\\x02\\u023F\\u0240\\x07i\\x02\\x02\" +\n\t\t\"\\u0240t\\x03\\x02\\x02\\x02\\u0241\\u0242\\x07d\\x02\\x02\\u0242\\u0243\\x07{\\x02\" +\n\t\t\"\\x02\\u0243\\u0244\\x07v\\x02\\x02\\u0244\\u0245\\x07g\\x02\\x02\\u0245v\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0246\\u0247\\x07-\\x02\\x02\\u0247\\u0248\\x07-\\x02\\x02\\u0248x\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0249\\u024A\\x07/\\x02\\x02\\u024A\\u024B\\x07/\\x02\\x02\\u024Bz\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u024C\\u024D\\x07p\\x02\\x02\\u024D\\u024E\\x07g\\x02\\x02\\u024E\" +\n\t\t\"\\u024F\\x07y\\x02\\x02\\u024F|\\x03\\x02\\x02\\x02\\u0250\\u0251\\x07<\\x02\\x02\\u0251\" +\n\t\t\"~\\x03\\x02\\x02\\x02\\u0252\\u0253\\x07-\\x02\\x02\\u0253\\x80\\x03\\x02\\x02\\x02\\u0254\" +\n\t\t\"\\u0255\\x07/\\x02\\x02\\u0255\\x82\\x03\\x02\\x02\\x02\\u0256\\u0257\\x07c\\x02\\x02\" +\n\t\t\"\\u0257\\u0258\\x07h\\x02\\x02\\u0258\\u0259\\x07v\\x02\\x02\\u0259\\u025A\\x07g\\x02\" +\n\t\t\"\\x02\\u025A\\u025B\\x07t\\x02\\x02\\u025B\\x84\\x03\\x02\\x02\\x02\\u025C\\u025D\\x07\" +\n\t\t\"f\\x02\\x02\\u025D\\u025E\\x07g\\x02\\x02\\u025E\\u025F\\x07n\\x02\\x02\\u025F\\u0260\" +\n\t\t\"\\x07g\\x02\\x02\\u0260\\u0261\\x07v\\x02\\x02\\u0261\\u0262\\x07g\\x02\\x02\\u0262\" +\n\t\t\"\\x86\\x03\\x02\\x02\\x02\\u0263\\u0264\\x07#\\x02\\x02\\u0264\\x88\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0265\\u0266\\x07,\\x02\\x02\\u0266\\u0267\\x07,\\x02\\x02\\u0267\\x8A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0268\\u0269\\x071\\x02\\x02\\u0269\\x8C\\x03\\x02\\x02\\x02\\u026A\\u026B\\x07\" +\n\t\t\"\\'\\x02\\x02\\u026B\\x8E\\x03\\x02\\x02\\x02\\u026C\\u026D\\x07>\\x02\\x02\\u026D\\u026E\" +\n\t\t\"\\x07>\\x02\\x02\\u026E\\x90\\x03\\x02\\x02\\x02\\u026F\\u0270\\x07@\\x02\\x02\\u0270\" +\n\t\t\"\\u0271\\x07@\\x02\\x02\\u0271\\x92\\x03\\x02\\x02\\x02\\u0272\\u0273\\x07(\\x02\\x02\" +\n\t\t\"\\u0273\\x94\\x03\\x02\\x02\\x02\\u0274\\u0275\\x07~\\x02\\x02\\u0275\\x96\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0276\\u0277\\x07?\\x02\\x02\\u0277\\u0278\\x07?\\x02\\x02\\u0278\\x98\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0279\\u027A\\x07#\\x02\\x02\\u027A\\u027B\\x07?\\x02\\x02\\u027B\\x9A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u027C\\u027D\\x07(\\x02\\x02\\u027D\\u027E\\x07(\\x02\\x02\\u027E\" +\n\t\t\"\\x9C\\x03\\x02\\x02\\x02\\u027F\\u0280\\x07A\\x02\\x02\\u0280\\x9E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0281\\u0282\\x07~\\x02\\x02\\u0282\\u0283\\x07?\\x02\\x02\\u0283\\xA0\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0284\\u0285\\x07`\\x02\\x02\\u0285\\u0286\\x07?\\x02\\x02\\u0286\\xA2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0287\\u0288\\x07(\\x02\\x02\\u0288\\u0289\\x07?\\x02\\x02\\u0289\\xA4\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u028A\\u028B\\x07>\\x02\\x02\\u028B\\u028C\\x07>\\x02\\x02\\u028C\\u028D\" +\n\t\t\"\\x07?\\x02\\x02\\u028D\\xA6\\x03\\x02\\x02\\x02\\u028E\\u028F\\x07@\\x02\\x02\\u028F\" +\n\t\t\"\\u0290\\x07@\\x02\\x02\\u0290\\u0291\\x07?\\x02\\x02\\u0291\\xA8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0292\\u0293\\x07-\\x02\\x02\\u0293\\u0294\\x07?\\x02\\x02\\u0294\\xAA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0295\\u0296\\x07/\\x02\\x02\\u0296\\u0297\\x07?\\x02\\x02\\u0297\\xAC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0298\\u0299\\x07,\\x02\\x02\\u0299\\u029A\\x07?\\x02\\x02\\u029A\\xAE\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u029B\\u029C\\x071\\x02\\x02\\u029C\\u029D\\x07?\\x02\\x02\\u029D\\xB0\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u029E\\u029F\\x07\\'\\x02\\x02\\u029F\\u02A0\\x07?\\x02\\x02\\u02A0\" +\n\t\t\"\\xB2\\x03\\x02\\x02\\x02\\u02A1\\u02A2\\x07n\\x02\\x02\\u02A2\\u02A3\\x07g\\x02\\x02\" +\n\t\t\"\\u02A3\\u02A4\\x07v\\x02\\x02\\u02A4\\xB4\\x03\\x02\\x02\\x02\\u02A5\\u02A6\\x07<\\x02\" +\n\t\t\"\\x02\\u02A6\\u02A7\\x07?\\x02\\x02\\u02A7\\xB6\\x03\\x02\\x02\\x02\\u02A8\\u02A9\\x07\" +\n\t\t\"?\\x02\\x02\\u02A9\\u02AA\\x07<\\x02\\x02\\u02AA\\xB8\\x03\\x02\\x02\\x02\\u02AB\\u02AC\" +\n\t\t\"\\x07u\\x02\\x02\\u02AC\\u02AD\\x07y\\x02\\x02\\u02AD\\u02AE\\x07k\\x02\\x02\\u02AE\" +\n\t\t\"\\u02AF\\x07v\\x02\\x02\\u02AF\\u02B0\\x07e\\x02\\x02\\u02B0\\u02B1\\x07j\\x02\\x02\" +\n\t\t\"\\u02B1\\xBA\\x03\\x02\\x02\\x02\\u02B2\\u02B3\\x07e\\x02\\x02\\u02B3\\u02B4\\x07c\\x02\" +\n\t\t\"\\x02\\u02B4\\u02B5\\x07u\\x02\\x02\\u02B5\\u02B6\\x07g\\x02\\x02\\u02B6\\xBC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02B7\\u02B8\\x07f\\x02\\x02\\u02B8\\u02B9\\x07g\\x02\\x02\\u02B9\\u02BA\" +\n\t\t\"\\x07h\\x02\\x02\\u02BA\\u02BB\\x07c\\x02\\x02\\u02BB\\u02BC\\x07w\\x02\\x02\\u02BC\" +\n\t\t\"\\u02BD\\x07n\\x02\\x02\\u02BD\\u02BE\\x07v\\x02\\x02\\u02BE\\xBE\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02BF\\u02C0\\x07/\\x02\\x02\\u02C0\\u02C1\\x07@\\x02\\x02\\u02C1\\xC0\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02C2\\u02C3\\x07e\\x02\\x02\\u02C3\\u02C4\\x07c\\x02\\x02\\u02C4\\u02C5\\x07\" +\n\t\t\"n\\x02\\x02\\u02C5\\u02C6\\x07n\\x02\\x02\\u02C6\\u02C7\\x07d\\x02\\x02\\u02C7\\u02C8\" +\n\t\t\"\\x07c\\x02\\x02\\u02C8\\u02C9\\x07e\\x02\\x02\\u02C9\\u02CA\\x07m\\x02\\x02\\u02CA\" +\n\t\t\"\\xC2\\x03\\x02\\x02\\x02\\u02CB\\u02CC\\x07q\\x02\\x02\\u02CC\\u02CD\\x07x\\x02\\x02\" +\n\t\t\"\\u02CD\\u02CE\\x07g\\x02\\x02\\u02CE\\u02CF\\x07t\\x02\\x02\\u02CF\\u02D0\\x07t\\x02\" +\n\t\t\"\\x02\\u02D0\\u02D1\\x07k\\x02\\x02\\u02D1\\u02D2\\x07f\\x02\\x02\\u02D2\\u02D3\\x07\" +\n\t\t\"g\\x02\\x02\\u02D3\\xC4\\x03\\x02\\x02\\x02\\u02D4\\u02D5\\x07k\\x02\\x02\\u02D5\\u02D6\" +\n\t\t\"\\x07p\\x02\\x02\\u02D6\\u038B\\x07v\\x02\\x02\\u02D7\\u02D8\\x07k\\x02\\x02\\u02D8\" +\n\t\t\"\\u02D9\\x07p\\x02\\x02\\u02D9\\u02DA\\x07v\\x02\\x02\\u02DA\\u038B\\x07:\\x02\\x02\" +\n\t\t\"\\u02DB\\u02DC\\x07k\\x02\\x02\\u02DC\\u02DD\\x07p\\x02\\x02\\u02DD\\u02DE\\x07v\\x02\" +\n\t\t\"\\x02\\u02DE\\u02DF\\x073\\x02\\x02\\u02DF\\u038B\\x078\\x02\\x02\\u02E0\\u02E1\\x07\" +\n\t\t\"k\\x02\\x02\\u02E1\\u02E2\\x07p\\x02\\x02\\u02E2\\u02E3\\x07v\\x02\\x02\\u02E3\\u02E4\" +\n\t\t\"\\x074\\x02\\x02\\u02E4\\u038B\\x076\\x02\\x02\\u02E5\\u02E6\\x07k\\x02\\x02\\u02E6\" +\n\t\t\"\\u02E7\\x07p\\x02\\x02\\u02E7\\u02E8\\x07v\\x02\\x02\\u02E8\\u02E9\\x075\\x02\\x02\" +\n\t\t\"\\u02E9\\u038B\\x074\\x02\\x02\\u02EA\\u02EB\\x07k\\x02\\x02\\u02EB\\u02EC\\x07p\\x02\" +\n\t\t\"\\x02\\u02EC\\u02ED\\x07v\\x02\\x02\\u02ED\\u02EE\\x076\\x02\\x02\\u02EE\\u038B\\x07\" +\n\t\t\"2\\x02\\x02\\u02EF\\u02F0\\x07k\\x02\\x02\\u02F0\\u02F1\\x07p\\x02\\x02\\u02F1\\u02F2\" +\n\t\t\"\\x07v\\x02\\x02\\u02F2\\u02F3\\x076\\x02\\x02\\u02F3\\u038B\\x07:\\x02\\x02\\u02F4\" +\n\t\t\"\\u02F5\\x07k\\x02\\x02\\u02F5\\u02F6\\x07p\\x02\\x02\\u02F6\\u02F7\\x07v\\x02\\x02\" +\n\t\t\"\\u02F7\\u02F8\\x077\\x02\\x02\\u02F8\\u038B\\x078\\x02\\x02\\u02F9\\u02FA\\x07k\\x02\" +\n\t\t\"\\x02\\u02FA\\u02FB\\x07p\\x02\\x02\\u02FB\\u02FC\\x07v\\x02\\x02\\u02FC\\u02FD\\x07\" +\n\t\t\"8\\x02\\x02\\u02FD\\u038B\\x076\\x02\\x02\\u02FE\\u02FF\\x07k\\x02\\x02\\u02FF\\u0300\" +\n\t\t\"\\x07p\\x02\\x02\\u0300\\u0301\\x07v\\x02\\x02\\u0301\\u0302\\x079\\x02\\x02\\u0302\" +\n\t\t\"\\u038B\\x074\\x02\\x02\\u0303\\u0304\\x07k\\x02\\x02\\u0304\\u0305\\x07p\\x02\\x02\" +\n\t\t\"\\u0305\\u0306\\x07v\\x02\\x02\\u0306\\u0307\\x07:\\x02\\x02\\u0307\\u038B\\x072\\x02\" +\n\t\t\"\\x02\\u0308\\u0309\\x07k\\x02\\x02\\u0309\\u030A\\x07p\\x02\\x02\\u030A\\u030B\\x07\" +\n\t\t\"v\\x02\\x02\\u030B\\u030C\\x07:\\x02\\x02\\u030C\\u038B\\x07:\\x02\\x02\\u030D\\u030E\" +\n\t\t\"\\x07k\\x02\\x02\\u030E\\u030F\\x07p\\x02\\x02\\u030F\\u0310\\x07v\\x02\\x02\\u0310\" +\n\t\t\"\\u0311\\x07;\\x02\\x02\\u0311\\u038B\\x078\\x02\\x02\\u0312\\u0313\\x07k\\x02\\x02\" +\n\t\t\"\\u0313\\u0314\\x07p\\x02\\x02\\u0314\\u0315\\x07v\\x02\\x02\\u0315\\u0316\\x073\\x02\" +\n\t\t\"\\x02\\u0316\\u0317\\x072\\x02\\x02\\u0317\\u038B\\x076\\x02\\x02\\u0318\\u0319\\x07\" +\n\t\t\"k\\x02\\x02\\u0319\\u031A\\x07p\\x02\\x02\\u031A\\u031B\\x07v\\x02\\x02\\u031B\\u031C\" +\n\t\t\"\\x073\\x02\\x02\\u031C\\u031D\\x073\\x02\\x02\\u031D\\u038B\\x074\\x02\\x02\\u031E\" +\n\t\t\"\\u031F\\x07k\\x02\\x02\\u031F\\u0320\\x07p\\x02\\x02\\u0320\\u0321\\x07v\\x02\\x02\" +\n\t\t\"\\u0321\\u0322\\x073\\x02\\x02\\u0322\\u0323\\x074\\x02\\x02\\u0323\\u038B\\x072\\x02\" +\n\t\t\"\\x02\\u0324\\u0325\\x07k\\x02\\x02\\u0325\\u0326\\x07p\\x02\\x02\\u0326\\u0327\\x07\" +\n\t\t\"v\\x02\\x02\\u0327\\u0328\\x073\\x02\\x02\\u0328\\u0329\\x074\\x02\\x02\\u0329\\u038B\" +\n\t\t\"\\x07:\\x02\\x02\\u032A\\u032B\\x07k\\x02\\x02\\u032B\\u032C\\x07p\\x02\\x02\\u032C\" +\n\t\t\"\\u032D\\x07v\\x02\\x02\\u032D\\u032E\\x073\\x02\\x02\\u032E\\u032F\\x075\\x02\\x02\" +\n\t\t\"\\u032F\\u038B\\x078\\x02\\x02\\u0330\\u0331\\x07k\\x02\\x02\\u0331\\u0332\\x07p\\x02\" +\n\t\t\"\\x02\\u0332\\u0333\\x07v\\x02\\x02\\u0333\\u0334\\x073\\x02\\x02\\u0334\\u0335\\x07\" +\n\t\t\"6\\x02\\x02\\u0335\\u038B\\x076\\x02\\x02\\u0336\\u0337\\x07k\\x02\\x02\\u0337\\u0338\" +\n\t\t\"\\x07p\\x02\\x02\\u0338\\u0339\\x07v\\x02\\x02\\u0339\\u033A\\x073\\x02\\x02\\u033A\" +\n\t\t\"\\u033B\\x077\\x02\\x02\\u033B\\u038B\\x074\\x02\\x02\\u033C\\u033D\\x07k\\x02\\x02\" +\n\t\t\"\\u033D\\u033E\\x07p\\x02\\x02\\u033E\\u033F\\x07v\\x02\\x02\\u033F\\u0340\\x073\\x02\" +\n\t\t\"\\x02\\u0340\\u0341\\x078\\x02\\x02\\u0341\\u038B\\x072\\x02\\x02\\u0342\\u0343\\x07\" +\n\t\t\"k\\x02\\x02\\u0343\\u0344\\x07p\\x02\\x02\\u0344\\u0345\\x07v\\x02\\x02\\u0345\\u0346\" +\n\t\t\"\\x073\\x02\\x02\\u0346\\u0347\\x078\\x02\\x02\\u0347\\u038B\\x07:\\x02\\x02\\u0348\" +\n\t\t\"\\u0349\\x07k\\x02\\x02\\u0349\\u034A\\x07p\\x02\\x02\\u034A\\u034B\\x07v\\x02\\x02\" +\n\t\t\"\\u034B\\u034C\\x073\\x02\\x02\\u034C\\u034D\\x079\\x02\\x02\\u034D\\u038B\\x078\\x02\" +\n\t\t\"\\x02\\u034E\\u034F\\x07k\\x02\\x02\\u034F\\u0350\\x07p\\x02\\x02\\u0350\\u0351\\x07\" +\n\t\t\"v\\x02\\x02\\u0351\\u0352\\x073\\x02\\x02\\u0352\\u0353\\x07:\\x02\\x02\\u0353\\u038B\" +\n\t\t\"\\x076\\x02\\x02\\u0354\\u0355\\x07k\\x02\\x02\\u0355\\u0356\\x07p\\x02\\x02\\u0356\" +\n\t\t\"\\u0357\\x07v\\x02\\x02\\u0357\\u0358\\x073\\x02\\x02\\u0358\\u0359\\x07;\\x02\\x02\" +\n\t\t\"\\u0359\\u038B\\x074\\x02\\x02\\u035A\\u035B\\x07k\\x02\\x02\\u035B\\u035C\\x07p\\x02\" +\n\t\t\"\\x02\\u035C\\u035D\\x07v\\x02\\x02\\u035D\\u035E\\x074\\x02\\x02\\u035E\\u035F\\x07\" +\n\t\t\"2\\x02\\x02\\u035F\\u038B\\x072\\x02\\x02\\u0360\\u0361\\x07k\\x02\\x02\\u0361\\u0362\" +\n\t\t\"\\x07p\\x02\\x02\\u0362\\u0363\\x07v\\x02\\x02\\u0363\\u0364\\x074\\x02\\x02\\u0364\" +\n\t\t\"\\u0365\\x072\\x02\\x02\\u0365\\u038B\\x07:\\x02\\x02\\u0366\\u0367\\x07k\\x02\\x02\" +\n\t\t\"\\u0367\\u0368\\x07p\\x02\\x02\\u0368\\u0369\\x07v\\x02\\x02\\u0369\\u036A\\x074\\x02\" +\n\t\t\"\\x02\\u036A\\u036B\\x073\\x02\\x02\\u036B\\u038B\\x078\\x02\\x02\\u036C\\u036D\\x07\" +\n\t\t\"k\\x02\\x02\\u036D\\u036E\\x07p\\x02\\x02\\u036E\\u036F\\x07v\\x02\\x02\\u036F\\u0370\" +\n\t\t\"\\x074\\x02\\x02\\u0370\\u0371\\x074\\x02\\x02\\u0371\\u038B\\x076\\x02\\x02\\u0372\" +\n\t\t\"\\u0373\\x07k\\x02\\x02\\u0373\\u0374\\x07p\\x02\\x02\\u0374\\u0375\\x07v\\x02\\x02\" +\n\t\t\"\\u0375\\u0376\\x074\\x02\\x02\\u0376\\u0377\\x075\\x02\\x02\\u0377\\u038B\\x074\\x02\" +\n\t\t\"\\x02\\u0378\\u0379\\x07k\\x02\\x02\\u0379\\u037A\\x07p\\x02\\x02\\u037A\\u037B\\x07\" +\n\t\t\"v\\x02\\x02\\u037B\\u037C\\x074\\x02\\x02\\u037C\\u037D\\x076\\x02\\x02\\u037D\\u038B\" +\n\t\t\"\\x072\\x02\\x02\\u037E\\u037F\\x07k\\x02\\x02\\u037F\\u0380\\x07p\\x02\\x02\\u0380\" +\n\t\t\"\\u0381\\x07v\\x02\\x02\\u0381\\u0382\\x074\\x02\\x02\\u0382\\u0383\\x076\\x02\\x02\" +\n\t\t\"\\u0383\\u038B\\x07:\\x02\\x02\\u0384\\u0385\\x07k\\x02\\x02\\u0385\\u0386\\x07p\\x02\" +\n\t\t\"\\x02\\u0386\\u0387\\x07v\\x02\\x02\\u0387\\u0388\\x074\\x02\\x02\\u0388\\u0389\\x07\" +\n\t\t\"7\\x02\\x02\\u0389\\u038B\\x078\\x02\\x02\\u038A\\u02D4\\x03\\x02\\x02\\x02\\u038A\\u02D7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u038A\\u02DB\\x03\\x02\\x02\\x02\\u038A\\u02E0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u038A\\u02E5\\x03\\x02\\x02\\x02\\u038A\\u02EA\\x03\\x02\\x02\\x02\\u038A\\u02EF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u038A\\u02F4\\x03\\x02\\x02\\x02\\u038A\\u02F9\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u02FE\\x03\\x02\\x02\\x02\\u038A\\u0303\\x03\\x02\\x02\\x02\\u038A\\u0308\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u030D\\x03\\x02\\x02\\x02\\u038A\\u0312\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0318\\x03\\x02\\x02\\x02\\u038A\\u031E\\x03\\x02\\x02\\x02\\u038A\\u0324\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u032A\\x03\\x02\\x02\\x02\\u038A\\u0330\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0336\\x03\\x02\\x02\\x02\\u038A\\u033C\\x03\\x02\\x02\\x02\\u038A\\u0342\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0348\\x03\\x02\\x02\\x02\\u038A\\u034E\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0354\\x03\\x02\\x02\\x02\\u038A\\u035A\\x03\\x02\\x02\\x02\\u038A\\u0360\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0366\\x03\\x02\\x02\\x02\\u038A\\u036C\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0372\\x03\\x02\\x02\\x02\\u038A\\u0378\\x03\\x02\\x02\\x02\\u038A\\u037E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0384\\x03\\x02\\x02\\x02\\u038B\\xC6\\x03\\x02\\x02\\x02\\u038C\\u038D\" +\n\t\t\"\\x07w\\x02\\x02\\u038D\\u038E\\x07k\\x02\\x02\\u038E\\u038F\\x07p\\x02\\x02\\u038F\" +\n\t\t\"\\u0464\\x07v\\x02\\x02\\u0390\\u0391\\x07w\\x02\\x02\\u0391\\u0392\\x07k\\x02\\x02\" +\n\t\t\"\\u0392\\u0393\\x07p\\x02\\x02\\u0393\\u0394\\x07v\\x02\\x02\\u0394\\u0464\\x07:\\x02\" +\n\t\t\"\\x02\\u0395\\u0396\\x07w\\x02\\x02\\u0396\\u0397\\x07k\\x02\\x02\\u0397\\u0398\\x07\" +\n\t\t\"p\\x02\\x02\\u0398\\u0399\\x07v\\x02\\x02\\u0399\\u039A\\x073\\x02\\x02\\u039A\\u0464\" +\n\t\t\"\\x078\\x02\\x02\\u039B\\u039C\";\n\tprivate static readonly _serializedATNSegment2: string =\n\t\t\"\\x07w\\x02\\x02\\u039C\\u039D\\x07k\\x02\\x02\\u039D\\u039E\\x07p\\x02\\x02\\u039E\" +\n\t\t\"\\u039F\\x07v\\x02\\x02\\u039F\\u03A0\\x074\\x02\\x02\\u03A0\\u0464\\x076\\x02\\x02\" +\n\t\t\"\\u03A1\\u03A2\\x07w\\x02\\x02\\u03A2\\u03A3\\x07k\\x02\\x02\\u03A3\\u03A4\\x07p\\x02\" +\n\t\t\"\\x02\\u03A4\\u03A5\\x07v\\x02\\x02\\u03A5\\u03A6\\x075\\x02\\x02\\u03A6\\u0464\\x07\" +\n\t\t\"4\\x02\\x02\\u03A7\\u03A8\\x07w\\x02\\x02\\u03A8\\u03A9\\x07k\\x02\\x02\\u03A9\\u03AA\" +\n\t\t\"\\x07p\\x02\\x02\\u03AA\\u03AB\\x07v\\x02\\x02\\u03AB\\u03AC\\x076\\x02\\x02\\u03AC\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u03AD\\u03AE\\x07w\\x02\\x02\\u03AE\\u03AF\\x07k\\x02\\x02\" +\n\t\t\"\\u03AF\\u03B0\\x07p\\x02\\x02\\u03B0\\u03B1\\x07v\\x02\\x02\\u03B1\\u03B2\\x076\\x02\" +\n\t\t\"\\x02\\u03B2\\u0464\\x07:\\x02\\x02\\u03B3\\u03B4\\x07w\\x02\\x02\\u03B4\\u03B5\\x07\" +\n\t\t\"k\\x02\\x02\\u03B5\\u03B6\\x07p\\x02\\x02\\u03B6\\u03B7\\x07v\\x02\\x02\\u03B7\\u03B8\" +\n\t\t\"\\x077\\x02\\x02\\u03B8\\u0464\\x078\\x02\\x02\\u03B9\\u03BA\\x07w\\x02\\x02\\u03BA\" +\n\t\t\"\\u03BB\\x07k\\x02\\x02\\u03BB\\u03BC\\x07p\\x02\\x02\\u03BC\\u03BD\\x07v\\x02\\x02\" +\n\t\t\"\\u03BD\\u03BE\\x078\\x02\\x02\\u03BE\\u0464\\x076\\x02\\x02\\u03BF\\u03C0\\x07w\\x02\" +\n\t\t\"\\x02\\u03C0\\u03C1\\x07k\\x02\\x02\\u03C1\\u03C2\\x07p\\x02\\x02\\u03C2\\u03C3\\x07\" +\n\t\t\"v\\x02\\x02\\u03C3\\u03C4\\x079\\x02\\x02\\u03C4\\u0464\\x074\\x02\\x02\\u03C5\\u03C6\" +\n\t\t\"\\x07w\\x02\\x02\\u03C6\\u03C7\\x07k\\x02\\x02\\u03C7\\u03C8\\x07p\\x02\\x02\\u03C8\" +\n\t\t\"\\u03C9\\x07v\\x02\\x02\\u03C9\\u03CA\\x07:\\x02\\x02\\u03CA\\u0464\\x072\\x02\\x02\" +\n\t\t\"\\u03CB\\u03CC\\x07w\\x02\\x02\\u03CC\\u03CD\\x07k\\x02\\x02\\u03CD\\u03CE\\x07p\\x02\" +\n\t\t\"\\x02\\u03CE\\u03CF\\x07v\\x02\\x02\\u03CF\\u03D0\\x07:\\x02\\x02\\u03D0\\u0464\\x07\" +\n\t\t\":\\x02\\x02\\u03D1\\u03D2\\x07w\\x02\\x02\\u03D2\\u03D3\\x07k\\x02\\x02\\u03D3\\u03D4\" +\n\t\t\"\\x07p\\x02\\x02\\u03D4\\u03D5\\x07v\\x02\\x02\\u03D5\\u03D6\\x07;\\x02\\x02\\u03D6\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u03D7\\u03D8\\x07w\\x02\\x02\\u03D8\\u03D9\\x07k\\x02\\x02\" +\n\t\t\"\\u03D9\\u03DA\\x07p\\x02\\x02\\u03DA\\u03DB\\x07v\\x02\\x02\\u03DB\\u03DC\\x073\\x02\" +\n\t\t\"\\x02\\u03DC\\u03DD\\x072\\x02\\x02\\u03DD\\u0464\\x076\\x02\\x02\\u03DE\\u03DF\\x07\" +\n\t\t\"w\\x02\\x02\\u03DF\\u03E0\\x07k\\x02\\x02\\u03E0\\u03E1\\x07p\\x02\\x02\\u03E1\\u03E2\" +\n\t\t\"\\x07v\\x02\\x02\\u03E2\\u03E3\\x073\\x02\\x02\\u03E3\\u03E4\\x073\\x02\\x02\\u03E4\" +\n\t\t\"\\u0464\\x074\\x02\\x02\\u03E5\\u03E6\\x07w\\x02\\x02\\u03E6\\u03E7\\x07k\\x02\\x02\" +\n\t\t\"\\u03E7\\u03E8\\x07p\\x02\\x02\\u03E8\\u03E9\\x07v\\x02\\x02\\u03E9\\u03EA\\x073\\x02\" +\n\t\t\"\\x02\\u03EA\\u03EB\\x074\\x02\\x02\\u03EB\\u0464\\x072\\x02\\x02\\u03EC\\u03ED\\x07\" +\n\t\t\"w\\x02\\x02\\u03ED\\u03EE\\x07k\\x02\\x02\\u03EE\\u03EF\\x07p\\x02\\x02\\u03EF\\u03F0\" +\n\t\t\"\\x07v\\x02\\x02\\u03F0\\u03F1\\x073\\x02\\x02\\u03F1\\u03F2\\x074\\x02\\x02\\u03F2\" +\n\t\t\"\\u0464\\x07:\\x02\\x02\\u03F3\\u03F4\\x07w\\x02\\x02\\u03F4\\u03F5\\x07k\\x02\\x02\" +\n\t\t\"\\u03F5\\u03F6\\x07p\\x02\\x02\\u03F6\\u03F7\\x07v\\x02\\x02\\u03F7\\u03F8\\x073\\x02\" +\n\t\t\"\\x02\\u03F8\\u03F9\\x075\\x02\\x02\\u03F9\\u0464\\x078\\x02\\x02\\u03FA\\u03FB\\x07\" +\n\t\t\"w\\x02\\x02\\u03FB\\u03FC\\x07k\\x02\\x02\\u03FC\\u03FD\\x07p\\x02\\x02\\u03FD\\u03FE\" +\n\t\t\"\\x07v\\x02\\x02\\u03FE\\u03FF\\x073\\x02\\x02\\u03FF\\u0400\\x076\\x02\\x02\\u0400\" +\n\t\t\"\\u0464\\x076\\x02\\x02\\u0401\\u0402\\x07w\\x02\\x02\\u0402\\u0403\\x07k\\x02\\x02\" +\n\t\t\"\\u0403\\u0404\\x07p\\x02\\x02\\u0404\\u0405\\x07v\\x02\\x02\\u0405\\u0406\\x073\\x02\" +\n\t\t\"\\x02\\u0406\\u0407\\x077\\x02\\x02\\u0407\\u0464\\x074\\x02\\x02\\u0408\\u0409\\x07\" +\n\t\t\"w\\x02\\x02\\u0409\\u040A\\x07k\\x02\\x02\\u040A\\u040B\\x07p\\x02\\x02\\u040B\\u040C\" +\n\t\t\"\\x07v\\x02\\x02\\u040C\\u040D\\x073\\x02\\x02\\u040D\\u040E\\x078\\x02\\x02\\u040E\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u040F\\u0410\\x07w\\x02\\x02\\u0410\\u0411\\x07k\\x02\\x02\" +\n\t\t\"\\u0411\\u0412\\x07p\\x02\\x02\\u0412\\u0413\\x07v\\x02\\x02\\u0413\\u0414\\x073\\x02\" +\n\t\t\"\\x02\\u0414\\u0415\\x078\\x02\\x02\\u0415\\u0464\\x07:\\x02\\x02\\u0416\\u0417\\x07\" +\n\t\t\"w\\x02\\x02\\u0417\\u0418\\x07k\\x02\\x02\\u0418\\u0419\\x07p\\x02\\x02\\u0419\\u041A\" +\n\t\t\"\\x07v\\x02\\x02\\u041A\\u041B\\x073\\x02\\x02\\u041B\\u041C\\x079\\x02\\x02\\u041C\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u041D\\u041E\\x07w\\x02\\x02\\u041E\\u041F\\x07k\\x02\\x02\" +\n\t\t\"\\u041F\\u0420\\x07p\\x02\\x02\\u0420\\u0421\\x07v\\x02\\x02\\u0421\\u0422\\x073\\x02\" +\n\t\t\"\\x02\\u0422\\u0423\\x07:\\x02\\x02\\u0423\\u0464\\x076\\x02\\x02\\u0424\\u0425\\x07\" +\n\t\t\"w\\x02\\x02\\u0425\\u0426\\x07k\\x02\\x02\\u0426\\u0427\\x07p\\x02\\x02\\u0427\\u0428\" +\n\t\t\"\\x07v\\x02\\x02\\u0428\\u0429\\x073\\x02\\x02\\u0429\\u042A\\x07;\\x02\\x02\\u042A\" +\n\t\t\"\\u0464\\x074\\x02\\x02\\u042B\\u042C\\x07w\\x02\\x02\\u042C\\u042D\\x07k\\x02\\x02\" +\n\t\t\"\\u042D\\u042E\\x07p\\x02\\x02\\u042E\\u042F\\x07v\\x02\\x02\\u042F\\u0430\\x074\\x02\" +\n\t\t\"\\x02\\u0430\\u0431\\x072\\x02\\x02\\u0431\\u0464\\x072\\x02\\x02\\u0432\\u0433\\x07\" +\n\t\t\"w\\x02\\x02\\u0433\\u0434\\x07k\\x02\\x02\\u0434\\u0435\\x07p\\x02\\x02\\u0435\\u0436\" +\n\t\t\"\\x07v\\x02\\x02\\u0436\\u0437\\x074\\x02\\x02\\u0437\\u0438\\x072\\x02\\x02\\u0438\" +\n\t\t\"\\u0464\\x07:\\x02\\x02\\u0439\\u043A\\x07w\\x02\\x02\\u043A\\u043B\\x07k\\x02\\x02\" +\n\t\t\"\\u043B\\u043C\\x07p\\x02\\x02\\u043C\\u043D\\x07v\\x02\\x02\\u043D\\u043E\\x074\\x02\" +\n\t\t\"\\x02\\u043E\\u043F\\x073\\x02\\x02\\u043F\\u0464\\x078\\x02\\x02\\u0440\\u0441\\x07\" +\n\t\t\"w\\x02\\x02\\u0441\\u0442\\x07k\\x02\\x02\\u0442\\u0443\\x07p\\x02\\x02\\u0443\\u0444\" +\n\t\t\"\\x07v\\x02\\x02\\u0444\\u0445\\x074\\x02\\x02\\u0445\\u0446\\x074\\x02\\x02\\u0446\" +\n\t\t\"\\u0464\\x076\\x02\\x02\\u0447\\u0448\\x07w\\x02\\x02\\u0448\\u0449\\x07k\\x02\\x02\" +\n\t\t\"\\u0449\\u044A\\x07p\\x02\\x02\\u044A\\u044B\\x07v\\x02\\x02\\u044B\\u044C\\x074\\x02\" +\n\t\t\"\\x02\\u044C\\u044D\\x075\\x02\\x02\\u044D\\u0464\\x074\\x02\\x02\\u044E\\u044F\\x07\" +\n\t\t\"w\\x02\\x02\\u044F\\u0450\\x07k\\x02\\x02\\u0450\\u0451\\x07p\\x02\\x02\\u0451\\u0452\" +\n\t\t\"\\x07v\\x02\\x02\\u0452\\u0453\\x074\\x02\\x02\\u0453\\u0454\\x076\\x02\\x02\\u0454\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u0455\\u0456\\x07w\\x02\\x02\\u0456\\u0457\\x07k\\x02\\x02\" +\n\t\t\"\\u0457\\u0458\\x07p\\x02\\x02\\u0458\\u0459\\x07v\\x02\\x02\\u0459\\u045A\\x074\\x02\" +\n\t\t\"\\x02\\u045A\\u045B\\x076\\x02\\x02\\u045B\\u0464\\x07:\\x02\\x02\\u045C\\u045D\\x07\" +\n\t\t\"w\\x02\\x02\\u045D\\u045E\\x07k\\x02\\x02\\u045E\\u045F\\x07p\\x02\\x02\\u045F\\u0460\" +\n\t\t\"\\x07v\\x02\\x02\\u0460\\u0461\\x074\\x02\\x02\\u0461\\u0462\\x077\\x02\\x02\\u0462\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u0463\\u038C\\x03\\x02\\x02\\x02\\u0463\\u0390\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0463\\u0395\\x03\\x02\\x02\\x02\\u0463\\u039B\\x03\\x02\\x02\\x02\\u0463\\u03A1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0463\\u03A7\\x03\\x02\\x02\\x02\\u0463\\u03AD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0463\\u03B3\\x03\\x02\\x02\\x02\\u0463\\u03B9\\x03\\x02\\x02\\x02\\u0463\\u03BF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0463\\u03C5\\x03\\x02\\x02\\x02\\u0463\\u03CB\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u03D1\\x03\\x02\\x02\\x02\\u0463\\u03D7\\x03\\x02\\x02\\x02\\u0463\\u03DE\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u03E5\\x03\\x02\\x02\\x02\\u0463\\u03EC\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u03F3\\x03\\x02\\x02\\x02\\u0463\\u03FA\\x03\\x02\\x02\\x02\\u0463\\u0401\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u0408\\x03\\x02\\x02\\x02\\u0463\\u040F\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u0416\\x03\\x02\\x02\\x02\\u0463\\u041D\\x03\\x02\\x02\\x02\\u0463\\u0424\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u042B\\x03\\x02\\x02\\x02\\u0463\\u0432\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u0439\\x03\\x02\\x02\\x02\\u0463\\u0440\\x03\\x02\\x02\\x02\\u0463\\u0447\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u044E\\x03\\x02\\x02\\x02\\u0463\\u0455\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u045C\\x03\\x02\\x02\\x02\\u0464\\xC8\\x03\\x02\\x02\\x02\\u0465\\u0466\\x07d\\x02\" +\n\t\t\"\\x02\\u0466\\u0467\\x07{\\x02\\x02\\u0467\\u0468\\x07v\\x02\\x02\\u0468\\u0469\\x07\" +\n\t\t\"g\\x02\\x02\\u0469\\u0542\\x07u\\x02\\x02\\u046A\\u046B\\x07d\\x02\\x02\\u046B\\u046C\" +\n\t\t\"\\x07{\\x02\\x02\\u046C\\u046D\\x07v\\x02\\x02\\u046D\\u046E\\x07g\\x02\\x02\\u046E\" +\n\t\t\"\\u046F\\x07u\\x02\\x02\\u046F\\u0542\\x073\\x02\\x02\\u0470\\u0471\\x07d\\x02\\x02\" +\n\t\t\"\\u0471\\u0472\\x07{\\x02\\x02\\u0472\\u0473\\x07v\\x02\\x02\\u0473\\u0474\\x07g\\x02\" +\n\t\t\"\\x02\\u0474\\u0475\\x07u\\x02\\x02\\u0475\\u0542\\x074\\x02\\x02\\u0476\\u0477\\x07\" +\n\t\t\"d\\x02\\x02\\u0477\\u0478\\x07{\\x02\\x02\\u0478\\u0479\\x07v\\x02\\x02\\u0479\\u047A\" +\n\t\t\"\\x07g\\x02\\x02\\u047A\\u047B\\x07u\\x02\\x02\\u047B\\u0542\\x075\\x02\\x02\\u047C\" +\n\t\t\"\\u047D\\x07d\\x02\\x02\\u047D\\u047E\\x07{\\x02\\x02\\u047E\\u047F\\x07v\\x02\\x02\" +\n\t\t\"\\u047F\\u0480\\x07g\\x02\\x02\\u0480\\u0481\\x07u\\x02\\x02\\u0481\\u0542\\x076\\x02\" +\n\t\t\"\\x02\\u0482\\u0483\\x07d\\x02\\x02\\u0483\\u0484\\x07{\\x02\\x02\\u0484\\u0485\\x07\" +\n\t\t\"v\\x02\\x02\\u0485\\u0486\\x07g\\x02\\x02\\u0486\\u0487\\x07u\\x02\\x02\\u0487\\u0542\" +\n\t\t\"\\x077\\x02\\x02\\u0488\\u0489\\x07d\\x02\\x02\\u0489\\u048A\\x07{\\x02\\x02\\u048A\" +\n\t\t\"\\u048B\\x07v\\x02\\x02\\u048B\\u048C\\x07g\\x02\\x02\\u048C\\u048D\\x07u\\x02\\x02\" +\n\t\t\"\\u048D\\u0542\\x078\\x02\\x02\\u048E\\u048F\\x07d\\x02\\x02\\u048F\\u0490\\x07{\\x02\" +\n\t\t\"\\x02\\u0490\\u0491\\x07v\\x02\\x02\\u0491\\u0492\\x07g\\x02\\x02\\u0492\\u0493\\x07\" +\n\t\t\"u\\x02\\x02\\u0493\\u0542\\x079\\x02\\x02\\u0494\\u0495\\x07d\\x02\\x02\\u0495\\u0496\" +\n\t\t\"\\x07{\\x02\\x02\\u0496\\u0497\\x07v\\x02\\x02\\u0497\\u0498\\x07g\\x02\\x02\\u0498\" +\n\t\t\"\\u0499\\x07u\\x02\\x02\\u0499\\u0542\\x07:\\x02\\x02\\u049A\\u049B\\x07d\\x02\\x02\" +\n\t\t\"\\u049B\\u049C\\x07{\\x02\\x02\\u049C\\u049D\\x07v\\x02\\x02\\u049D\\u049E\\x07g\\x02\" +\n\t\t\"\\x02\\u049E\\u049F\\x07u\\x02\\x02\\u049F\\u0542\\x07;\\x02\\x02\\u04A0\\u04A1\\x07\" +\n\t\t\"d\\x02\\x02\\u04A1\\u04A2\\x07{\\x02\\x02\\u04A2\\u04A3\\x07v\\x02\\x02\\u04A3\\u04A4\" +\n\t\t\"\\x07g\\x02\\x02\\u04A4\\u04A5\\x07u\\x02\\x02\\u04A5\\u04A6\\x073\\x02\\x02\\u04A6\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u04A7\\u04A8\\x07d\\x02\\x02\\u04A8\\u04A9\\x07{\\x02\\x02\" +\n\t\t\"\\u04A9\\u04AA\\x07v\\x02\\x02\\u04AA\\u04AB\\x07g\\x02\\x02\\u04AB\\u04AC\\x07u\\x02\" +\n\t\t\"\\x02\\u04AC\\u04AD\\x073\\x02\\x02\\u04AD\\u0542\\x073\\x02\\x02\\u04AE\\u04AF\\x07\" +\n\t\t\"d\\x02\\x02\\u04AF\\u04B0\\x07{\\x02\\x02\\u04B0\\u04B1\\x07v\\x02\\x02\\u04B1\\u04B2\" +\n\t\t\"\\x07g\\x02\\x02\\u04B2\\u04B3\\x07u\\x02\\x02\\u04B3\\u04B4\\x073\\x02\\x02\\u04B4\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u04B5\\u04B6\\x07d\\x02\\x02\\u04B6\\u04B7\\x07{\\x02\\x02\" +\n\t\t\"\\u04B7\\u04B8\\x07v\\x02\\x02\\u04B8\\u04B9\\x07g\\x02\\x02\\u04B9\\u04BA\\x07u\\x02\" +\n\t\t\"\\x02\\u04BA\\u04BB\\x073\\x02\\x02\\u04BB\\u0542\\x075\\x02\\x02\\u04BC\\u04BD\\x07\" +\n\t\t\"d\\x02\\x02\\u04BD\\u04BE\\x07{\\x02\\x02\\u04BE\\u04BF\\x07v\\x02\\x02\\u04BF\\u04C0\" +\n\t\t\"\\x07g\\x02\\x02\\u04C0\\u04C1\\x07u\\x02\\x02\\u04C1\\u04C2\\x073\\x02\\x02\\u04C2\" +\n\t\t\"\\u0542\\x076\\x02\\x02\\u04C3\\u04C4\\x07d\\x02\\x02\\u04C4\\u04C5\\x07{\\x02\\x02\" +\n\t\t\"\\u04C5\\u04C6\\x07v\\x02\\x02\\u04C6\\u04C7\\x07g\\x02\\x02\\u04C7\\u04C8\\x07u\\x02\" +\n\t\t\"\\x02\\u04C8\\u04C9\\x073\\x02\\x02\\u04C9\\u0542\\x077\\x02\\x02\\u04CA\\u04CB\\x07\" +\n\t\t\"d\\x02\\x02\\u04CB\\u04CC\\x07{\\x02\\x02\\u04CC\\u04CD\\x07v\\x02\\x02\\u04CD\\u04CE\" +\n\t\t\"\\x07g\\x02\\x02\\u04CE\\u04CF\\x07u\\x02\\x02\\u04CF\\u04D0\\x073\\x02\\x02\\u04D0\" +\n\t\t\"\\u0542\\x078\\x02\\x02\\u04D1\\u04D2\\x07d\\x02\\x02\\u04D2\\u04D3\\x07{\\x02\\x02\" +\n\t\t\"\\u04D3\\u04D4\\x07v\\x02\\x02\\u04D4\\u04D5\\x07g\\x02\\x02\\u04D5\\u04D6\\x07u\\x02\" +\n\t\t\"\\x02\\u04D6\\u04D7\\x073\\x02\\x02\\u04D7\\u0542\\x079\\x02\\x02\\u04D8\\u04D9\\x07\" +\n\t\t\"d\\x02\\x02\\u04D9\\u04DA\\x07{\\x02\\x02\\u04DA\\u04DB\\x07v\\x02\\x02\\u04DB\\u04DC\" +\n\t\t\"\\x07g\\x02\\x02\\u04DC\\u04DD\\x07u\\x02\\x02\\u04DD\\u04DE\\x073\\x02\\x02\\u04DE\" +\n\t\t\"\\u0542\\x07:\\x02\\x02\\u04DF\\u04E0\\x07d\\x02\\x02\\u04E0\\u04E1\\x07{\\x02\\x02\" +\n\t\t\"\\u04E1\\u04E2\\x07v\\x02\\x02\\u04E2\\u04E3\\x07g\\x02\\x02\\u04E3\\u04E4\\x07u\\x02\" +\n\t\t\"\\x02\\u04E4\\u04E5\\x073\\x02\\x02\\u04E5\\u0542\\x07;\\x02\\x02\\u04E6\\u04E7\\x07\" +\n\t\t\"d\\x02\\x02\\u04E7\\u04E8\\x07{\\x02\\x02\\u04E8\\u04E9\\x07v\\x02\\x02\\u04E9\\u04EA\" +\n\t\t\"\\x07g\\x02\\x02\\u04EA\\u04EB\\x07u\\x02\\x02\\u04EB\\u04EC\\x074\\x02\\x02\\u04EC\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u04ED\\u04EE\\x07d\\x02\\x02\\u04EE\\u04EF\\x07{\\x02\\x02\" +\n\t\t\"\\u04EF\\u04F0\\x07v\\x02\\x02\\u04F0\\u04F1\\x07g\\x02\\x02\\u04F1\\u04F2\\x07u\\x02\" +\n\t\t\"\\x02\\u04F2\\u04F3\\x074\\x02\\x02\\u04F3\\u0542\\x073\\x02\\x02\\u04F4\\u04F5\\x07\" +\n\t\t\"d\\x02\\x02\\u04F5\\u04F6\\x07{\\x02\\x02\\u04F6\\u04F7\\x07v\\x02\\x02\\u04F7\\u04F8\" +\n\t\t\"\\x07g\\x02\\x02\\u04F8\\u04F9\\x07u\\x02\\x02\\u04F9\\u04FA\\x074\\x02\\x02\\u04FA\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u04FB\\u04FC\\x07d\\x02\\x02\\u04FC\\u04FD\\x07{\\x02\\x02\" +\n\t\t\"\\u04FD\\u04FE\\x07v\\x02\\x02\\u04FE\\u04FF\\x07g\\x02\\x02\\u04FF\\u0500\\x07u\\x02\" +\n\t\t\"\\x02\\u0500\\u0501\\x074\\x02\\x02\\u0501\\u0542\\x075\\x02\\x02\\u0502\\u0503\\x07\" +\n\t\t\"d\\x02\\x02\\u0503\\u0504\\x07{\\x02\\x02\\u0504\\u0505\\x07v\\x02\\x02\\u0505\\u0506\" +\n\t\t\"\\x07g\\x02\\x02\\u0506\\u0507\\x07u\\x02\\x02\\u0507\\u0508\\x074\\x02\\x02\\u0508\" +\n\t\t\"\\u0542\\x076\\x02\\x02\\u0509\\u050A\\x07d\\x02\\x02\\u050A\\u050B\\x07{\\x02\\x02\" +\n\t\t\"\\u050B\\u050C\\x07v\\x02\\x02\\u050C\\u050D\\x07g\\x02\\x02\\u050D\\u050E\\x07u\\x02\" +\n\t\t\"\\x02\\u050E\\u050F\\x074\\x02\\x02\\u050F\\u0542\\x077\\x02\\x02\\u0510\\u0511\\x07\" +\n\t\t\"d\\x02\\x02\\u0511\\u0512\\x07{\\x02\\x02\\u0512\\u0513\\x07v\\x02\\x02\\u0513\\u0514\" +\n\t\t\"\\x07g\\x02\\x02\\u0514\\u0515\\x07u\\x02\\x02\\u0515\\u0516\\x074\\x02\\x02\\u0516\" +\n\t\t\"\\u0542\\x078\\x02\\x02\\u0517\\u0518\\x07d\\x02\\x02\\u0518\\u0519\\x07{\\x02\\x02\" +\n\t\t\"\\u0519\\u051A\\x07v\\x02\\x02\\u051A\\u051B\\x07g\\x02\\x02\\u051B\\u051C\\x07u\\x02\" +\n\t\t\"\\x02\\u051C\\u051D\\x074\\x02\\x02\\u051D\\u0542\\x079\\x02\\x02\\u051E\\u051F\\x07\" +\n\t\t\"d\\x02\\x02\\u051F\\u0520\\x07{\\x02\\x02\\u0520\\u0521\\x07v\\x02\\x02\\u0521\\u0522\" +\n\t\t\"\\x07g\\x02\\x02\\u0522\\u0523\\x07u\\x02\\x02\\u0523\\u0524\\x074\\x02\\x02\\u0524\" +\n\t\t\"\\u0542\\x07:\\x02\\x02\\u0525\\u0526\\x07d\\x02\\x02\\u0526\\u0527\\x07{\\x02\\x02\" +\n\t\t\"\\u0527\\u0528\\x07v\\x02\\x02\\u0528\\u0529\\x07g\\x02\\x02\\u0529\\u052A\\x07u\\x02\" +\n\t\t\"\\x02\\u052A\\u052B\\x074\\x02\\x02\\u052B\\u0542\\x07;\\x02\\x02\\u052C\\u052D\\x07\" +\n\t\t\"d\\x02\\x02\\u052D\\u052E\\x07{\\x02\\x02\\u052E\\u052F\\x07v\\x02\\x02\\u052F\\u0530\" +\n\t\t\"\\x07g\\x02\\x02\\u0530\\u0531\\x07u\\x02\\x02\\u0531\\u0532\\x075\\x02\\x02\\u0532\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u0533\\u0534\\x07d\\x02\\x02\\u0534\\u0535\\x07{\\x02\\x02\" +\n\t\t\"\\u0535\\u0536\\x07v\\x02\\x02\\u0536\\u0537\\x07g\\x02\\x02\\u0537\\u0538\\x07u\\x02\" +\n\t\t\"\\x02\\u0538\\u0539\\x075\\x02\\x02\\u0539\\u0542\\x073\\x02\\x02\\u053A\\u053B\\x07\" +\n\t\t\"d\\x02\\x02\\u053B\\u053C\\x07{\\x02\\x02\\u053C\\u053D\\x07v\\x02\\x02\\u053D\\u053E\" +\n\t\t\"\\x07g\\x02\\x02\\u053E\\u053F\\x07u\\x02\\x02\\u053F\\u0540\\x075\\x02\\x02\\u0540\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u0541\\u0465\\x03\\x02\\x02\\x02\\u0541\\u046A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0541\\u0470\\x03\\x02\\x02\\x02\\u0541\\u0476\\x03\\x02\\x02\\x02\\u0541\\u047C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0541\\u0482\\x03\\x02\\x02\\x02\\u0541\\u0488\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0541\\u048E\\x03\\x02\\x02\\x02\\u0541\\u0494\\x03\\x02\\x02\\x02\\u0541\\u049A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0541\\u04A0\\x03\\x02\\x02\\x02\\u0541\\u04A7\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04AE\\x03\\x02\\x02\\x02\\u0541\\u04B5\\x03\\x02\\x02\\x02\\u0541\\u04BC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u04C3\\x03\\x02\\x02\\x02\\u0541\\u04CA\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04D1\\x03\\x02\\x02\\x02\\u0541\\u04D8\\x03\\x02\\x02\\x02\\u0541\\u04DF\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u04E6\\x03\\x02\\x02\\x02\\u0541\\u04ED\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04F4\\x03\\x02\\x02\\x02\\u0541\\u04FB\\x03\\x02\\x02\\x02\\u0541\\u0502\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u0509\\x03\\x02\\x02\\x02\\u0541\\u0510\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u0517\\x03\\x02\\x02\\x02\\u0541\\u051E\\x03\\x02\\x02\\x02\\u0541\\u0525\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u052C\\x03\\x02\\x02\\x02\\u0541\\u0533\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u053A\\x03\\x02\\x02\\x02\\u0542\\xCA\\x03\\x02\\x02\\x02\\u0543\\u0544\\x07h\\x02\" +\n\t\t\"\\x02\\u0544\\u0545\\x07k\\x02\\x02\\u0545\\u0546\\x07z\\x02\\x02\\u0546\\u0547\\x07\" +\n\t\t\"g\\x02\\x02\\u0547\\u055A\\x07f\\x02\\x02\\u0548\\u0549\\x07h\\x02\\x02\\u0549\\u054A\" +\n\t\t\"\\x07k\\x02\\x02\\u054A\\u054B\\x07z\\x02\\x02\\u054B\\u054C\\x07g\\x02\\x02\\u054C\" +\n\t\t\"\\u054D\\x07f\\x02\\x02\\u054D\\u054F\\x03\\x02\\x02\\x02\\u054E\\u0550\\t\\x02\\x02\" +\n\t\t\"\\x02\\u054F\\u054E\\x03\\x02\\x02\\x02\\u0550\\u0551\\x03\\x02\\x02\\x02\\u0551\\u054F\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0551\\u0552\\x03\\x02\\x02\\x02\\u0552\\u0553\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0553\\u0555\\x07z\\x02\\x02\\u0554\\u0556\\t\\x02\\x02\\x02\\u0555\\u0554\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0556\\u0557\\x03\\x02\\x02\\x02\\u0557\\u0555\\x03\\x02\\x02\\x02\\u0557\" +\n\t\t\"\\u0558\\x03\\x02\\x02\\x02\\u0558\\u055A\\x03\\x02\\x02\\x02\\u0559\\u0543\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0559\\u0548\\x03\\x02\\x02\\x02\\u055A\\xCC\\x03\\x02\\x02\\x02\\u055B\\u055C\" +\n\t\t\"\\x07w\\x02\\x02\\u055C\\u055D\\x07h\\x02\\x02\\u055D\\u055E\\x07k\\x02\\x02\\u055E\" +\n\t\t\"\\u055F\\x07z\\x02\\x02\\u055F\\u0560\\x07g\\x02\\x02\\u0560\\u0574\\x07f\\x02\\x02\" +\n\t\t\"\\u0561\\u0562\\x07w\\x02\\x02\\u0562\\u0563\\x07h\\x02\\x02\\u0563\\u0564\\x07k\\x02\" +\n\t\t\"\\x02\\u0564\\u0565\\x07z\\x02\\x02\\u0565\\u0566\\x07g\\x02\\x02\\u0566\\u0567\\x07\" +\n\t\t\"f\\x02\\x02\\u0567\\u0569\\x03\\x02\\x02\\x02\\u0568\\u056A\\t\\x02\\x02\\x02\\u0569\" +\n\t\t\"\\u0568\\x03\\x02\\x02\\x02\\u056A\\u056B\\x03\\x02\\x02\\x02\\u056B\\u0569\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u056B\\u056C\\x03\\x02\\x02\\x02\\u056C\\u056D\\x03\\x02\\x02\\x02\\u056D\" +\n\t\t\"\\u056F\\x07z\\x02\\x02\\u056E\\u0570\\t\\x02\\x02\\x02\\u056F\\u056E\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0570\\u0571\\x03\\x02\\x02\\x02\\u0571\\u056F\\x03\\x02\\x02\\x02\\u0571\\u0572\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0572\\u0574\\x03\\x02\\x02\\x02\\u0573\\u055B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0573\\u0561\\x03\\x02\\x02\\x02\\u0574\\xCE\\x03\\x02\\x02\\x02\\u0575\\u0576\\x07\" +\n\t\t\"v\\x02\\x02\\u0576\\u0577\\x07t\\x02\\x02\\u0577\\u0578\\x07w\\x02\\x02\\u0578\\u057F\" +\n\t\t\"\\x07g\\x02\\x02\\u0579\\u057A\\x07h\\x02\\x02\\u057A\\u057B\\x07c\\x02\\x02\\u057B\" +\n\t\t\"\\u057C\\x07n\\x02\\x02\\u057C\\u057D\\x07u\\x02\\x02\\u057D\\u057F\\x07g\\x02\\x02\" +\n\t\t\"\\u057E\\u0575\\x03\\x02\\x02\\x02\\u057E\\u0579\\x03\\x02\\x02\\x02\\u057F\\xD0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0580\\u0587\\x05\\xD3j\\x02\\u0581\\u0583\\x05\\xD3j\\x02\\u0582\\u0581\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0582\\u0583\\x03\\x02\\x02\\x02\\u0583\\u0584\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0584\\u0585\\x070\\x02\\x02\\u0585\\u0587\\x05\\xD3j\\x02\\u0586\\u0580\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0586\\u0582\\x03\\x02\\x02\\x02\\u0587\\u058A\\x03\\x02\\x02\\x02\\u0588\" +\n\t\t\"\\u0589\\t\\x03\\x02\\x02\\u0589\\u058B\\x05\\xD3j\\x02\\u058A\\u0588\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u058A\\u058B\\x03\\x02\\x02\\x02\\u058B\\xD2\\x03\\x02\\x02\\x02\\u058C\\u0593\" +\n\t\t\"\\t\\x02\\x02\\x02\\u058D\\u058F\\x07a\\x02\\x02\\u058E\\u058D\\x03\\x02\\x02\\x02\\u058E\" +\n\t\t\"\\u058F\\x03\\x02\\x02\\x02\\u058F\\u0590\\x03\\x02\\x02\\x02\\u0590\\u0592\\t\\x02\\x02\" +\n\t\t\"\\x02\\u0591\\u058E\\x03\\x02\\x02\\x02\\u0592\\u0595\\x03\\x02\\x02\\x02\\u0593\\u0591\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0593\\u0594\\x03\\x02\\x02\\x02\\u0594\\xD4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0595\\u0593\\x03\\x02\\x02\\x02\\u0596\\u0597\\x072\\x02\\x02\\u0597\\u0598\\t\\x04\" +\n\t\t\"\\x02\\x02\\u0598\\u0599\\x05\\xD7l\\x02\\u0599\\xD6\\x03\\x02\\x02\\x02\\u059A\\u05A1\" +\n\t\t\"\\x05\\xDFp\\x02\\u059B\\u059D\\x07a\\x02\\x02\\u059C\\u059B\\x03\\x02\\x02\\x02\\u059C\" +\n\t\t\"\\u059D\\x03\\x02\\x02\\x02\\u059D\\u059E\\x03\\x02\\x02\\x02\\u059E\\u05A0\\x05\\xDF\" +\n\t\t\"p\\x02\\u059F\\u059C\\x03\\x02\\x02\\x02\\u05A0\\u05A3\\x03\\x02\\x02\\x02\\u05A1\\u059F\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05A1\\u05A2\\x03\\x02\\x02\\x02\\u05A2\\xD8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05A3\\u05A1\\x03\\x02\\x02\\x02\\u05A4\\u05A5\\x07y\\x02\\x02\\u05A5\\u05A6\\x07\" +\n\t\t\"g\\x02\\x02\\u05A6\\u05DD\\x07k\\x02\\x02\\u05A7\\u05A8\\x07i\\x02\\x02\\u05A8\\u05A9\" +\n\t\t\"\\x07y\\x02\\x02\\u05A9\\u05AA\\x07g\\x02\\x02\\u05AA\\u05DD\\x07k\\x02\\x02\\u05AB\" +\n\t\t\"\\u05AC\\x07u\\x02\\x02\\u05AC\\u05AD\\x07|\\x02\\x02\\u05AD\\u05AE\\x07c\\x02\\x02\" +\n\t\t\"\\u05AE\\u05AF\\x07d\\x02\\x02\\u05AF\\u05DD\\x07q\\x02\\x02\\u05B0\\u05B1\\x07h\\x02\" +\n\t\t\"\\x02\\u05B1\\u05B2\\x07k\\x02\\x02\\u05B2\\u05B3\\x07p\\x02\\x02\\u05B3\\u05B4\\x07\" +\n\t\t\"p\\x02\\x02\\u05B4\\u05B5\\x07g\\x02\\x02\\u05B5\\u05DD\\x07{\\x02\\x02\\u05B6\\u05B7\" +\n\t\t\"\\x07g\\x02\\x02\\u05B7\\u05B8\\x07v\\x02\\x02\\u05B8\\u05B9\\x07j\\x02\\x02\\u05B9\" +\n\t\t\"\\u05BA\\x07g\\x02\\x02\\u05BA\\u05DD\\x07t\\x02\\x02\\u05BB\\u05BC\\x07u\\x02\\x02\" +\n\t\t\"\\u05BC\\u05BD\\x07g\\x02\\x02\\u05BD\\u05BE\\x07e\\x02\\x02\\u05BE\\u05BF\\x07q\\x02\" +\n\t\t\"\\x02\\u05BF\\u05C0\\x07p\\x02\\x02\\u05C0\\u05C1\\x07f\\x02\\x02\\u05C1\\u05DD\\x07\" +\n\t\t\"u\\x02\\x02\\u05C2\\u05C3\\x07o\\x02\\x02\\u05C3\\u05C4\\x07k\\x02\\x02\\u05C4\\u05C5\" +\n\t\t\"\\x07p\\x02\\x02\\u05C5\\u05C6\\x07w\\x02\\x02\\u05C6\\u05C7\\x07v\\x02\\x02\\u05C7\" +\n\t\t\"\\u05C8\\x07g\\x02\\x02\\u05C8\\u05DD\\x07u\\x02\\x02\\u05C9\\u05CA\\x07j\\x02\\x02\" +\n\t\t\"\\u05CA\\u05CB\\x07q\\x02\\x02\\u05CB\\u05CC\\x07w\\x02\\x02\\u05CC\\u05CD\\x07t\\x02\" +\n\t\t\"\\x02\\u05CD\\u05DD\\x07u\\x02\\x02\\u05CE\\u05CF\\x07f\\x02\\x02\\u05CF\\u05D0\\x07\" +\n\t\t\"c\\x02\\x02\\u05D0\\u05D1\\x07{\\x02\\x02\\u05D1\\u05DD\\x07u\\x02\\x02\\u05D2\\u05D3\" +\n\t\t\"\\x07y\\x02\\x02\\u05D3\\u05D4\\x07g\\x02\\x02\\u05D4\\u05D5\\x07g\\x02\\x02\\u05D5\" +\n\t\t\"\\u05D6\\x07m\\x02\\x02\\u05D6\\u05DD\\x07u\\x02\\x02\\u05D7\\u05D8\\x07{\\x02\\x02\" +\n\t\t\"\\u05D8\\u05D9\\x07g\\x02\\x02\\u05D9\\u05DA\\x07c\\x02\\x02\\u05DA\\u05DB\\x07t\\x02\" +\n\t\t\"\\x02\\u05DB\\u05DD\\x07u\\x02\\x02\\u05DC\\u05A4\\x03\\x02\\x02\\x02\\u05DC\\u05A7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05DC\\u05AB\\x03\\x02\\x02\\x02\\u05DC\\u05B0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05DC\\u05B6\\x03\\x02\\x02\\x02\\u05DC\\u05BB\\x03\\x02\\x02\\x02\\u05DC\\u05C2\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u05DC\\u05C9\\x03\\x02\\x02\\x02\\u05DC\\u05CE\\x03\\x02\\x02\\x02\\u05DC\" +\n\t\t\"\\u05D2\\x03\\x02\\x02\\x02\\u05DC\\u05D7\\x03\\x02\\x02\\x02\\u05DD\\xDA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u05DE\\u05DF\\x07j\\x02\\x02\\u05DF\\u05E0\\x07g\\x02\\x02\\u05E0\\u05E1\\x07\" +\n\t\t\"z\\x02\\x02\\u05E1\\u05EC\\x03\\x02\\x02\\x02\\u05E2\\u05E4\\x07$\\x02\\x02\\u05E3\\u05E5\" +\n\t\t\"\\x05\\xD7l\\x02\\u05E4\\u05E3\\x03\\x02\\x02\\x02\\u05E4\\u05E5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05E5\\u05E6\\x03\\x02\\x02\\x02\\u05E6\\u05ED\\x07$\\x02\\x02\\u05E7\\u05E9\\x07\" +\n\t\t\")\\x02\\x02\\u05E8\\u05EA\\x05\\xD7l\\x02\\u05E9\\u05E8\\x03\\x02\\x02\\x02\\u05E9\\u05EA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05EA\\u05EB\\x03\\x02\\x02\\x02\\u05EB\\u05ED\\x07)\\x02\\x02\" +\n\t\t\"\\u05EC\\u05E2\\x03\\x02\\x02\\x02\\u05EC\\u05E7\\x03\\x02\\x02\\x02\\u05ED\\xDC\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u05EE\\u05EF\\x05\\xDFp\\x02\\u05EF\\u05F0\\x05\\xDFp\\x02\\u05F0\\xDE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05F1\\u05F2\\t\\x05\\x02\\x02\\u05F2\\xE0\\x03\\x02\\x02\\x02\\u05F3\" +\n\t\t\"\\u05F4\\x07c\\x02\\x02\\u05F4\\u05F5\\x07d\\x02\\x02\\u05F5\\u05F6\\x07u\\x02\\x02\" +\n\t\t\"\\u05F6\\u05F7\\x07v\\x02\\x02\\u05F7\\u05F8\\x07t\\x02\\x02\\u05F8\\u05F9\\x07c\\x02\" +\n\t\t\"\\x02\\u05F9\\u05FA\\x07e\\x02\\x02\\u05FA\\u064C\\x07v\\x02\\x02\\u05FB\\u05FC\\x07\" +\n\t\t\"c\\x02\\x02\\u05FC\\u05FD\\x07h\\x02\\x02\\u05FD\\u05FE\\x07v\\x02\\x02\\u05FE\\u05FF\" +\n\t\t\"\\x07g\\x02\\x02\\u05FF\\u064C\\x07t\\x02\\x02\\u0600\\u0601\\x07e\\x02\\x02\\u0601\" +\n\t\t\"\\u0602\\x07c\\x02\\x02\\u0602\\u0603\\x07u\\x02\\x02\\u0603\\u064C\\x07g\\x02\\x02\" +\n\t\t\"\\u0604\\u0605\\x07e\\x02\\x02\\u0605\\u0606\\x07c\\x02\\x02\\u0606\\u0607\\x07v\\x02\" +\n\t\t\"\\x02\\u0607\\u0608\\x07e\\x02\\x02\\u0608\\u064C\\x07j\\x02\\x02\\u0609\\u060A\\x07\" +\n\t\t\"f\\x02\\x02\\u060A\\u060B\\x07g\\x02\\x02\\u060B\\u060C\\x07h\\x02\\x02\\u060C\\u060D\" +\n\t\t\"\\x07c\\x02\\x02\\u060D\\u060E\\x07w\\x02\\x02\\u060E\\u060F\\x07n\\x02\\x02\\u060F\" +\n\t\t\"\\u064C\\x07v\\x02\\x02\\u0610\\u0611\\x07h\\x02\\x02\\u0611\\u0612\\x07k\\x02\\x02\" +\n\t\t\"\\u0612\\u0613\\x07p\\x02\\x02\\u0613\\u0614\\x07c\\x02\\x02\\u0614\\u064C\\x07n\\x02\" +\n\t\t\"\\x02\\u0615\\u0616\\x07k\\x02\\x02\\u0616\\u064C\\x07p\\x02\\x02\\u0617\\u0618\\x07\" +\n\t\t\"k\\x02\\x02\\u0618\\u0619\\x07p\\x02\\x02\\u0619\\u061A\\x07n\\x02\\x02\\u061A\\u061B\" +\n\t\t\"\\x07k\\x02\\x02\\u061B\\u061C\\x07p\\x02\\x02\\u061C\\u064C\\x07g\\x02\\x02\\u061D\" +\n\t\t\"\\u061E\\x07n\\x02\\x02\\u061E\\u061F\\x07g\\x02\\x02\\u061F\\u064C\\x07v\\x02\\x02\" +\n\t\t\"\\u0620\\u0621\\x07o\\x02\\x02\\u0621\\u0622\\x07c\\x02\\x02\\u0622\\u0623\\x07v\\x02\" +\n\t\t\"\\x02\\u0623\\u0624\\x07e\\x02\\x02\\u0624\\u064C\\x07j\\x02\\x02\\u0625\\u0626\\x07\" +\n\t\t\"p\\x02\\x02\\u0626\\u0627\\x07w\\x02\\x02\\u0627\\u0628\\x07n\\x02\\x02\\u0628\\u064C\" +\n\t\t\"\\x07n\\x02\\x02\\u0629\\u062A\\x07q\\x02\\x02\\u062A\\u064C\\x07h\\x02\\x02\\u062B\" +\n\t\t\"\\u062C\\x07t\\x02\\x02\\u062C\\u062D\\x07g\\x02\\x02\\u062D\\u062E\\x07n\\x02\\x02\" +\n\t\t\"\\u062E\\u062F\\x07q\\x02\\x02\\u062F\\u0630\\x07e\\x02\\x02\\u0630\\u0631\\x07c\\x02\" +\n\t\t\"\\x02\\u0631\\u0632\\x07v\\x02\\x02\\u0632\\u0633\\x07c\\x02\\x02\\u0633\\u0634\\x07\" +\n\t\t\"d\\x02\\x02\\u0634\\u0635\\x07n\\x02\\x02\\u0635\\u064C\\x07g\\x02\\x02\\u0636\\u0637\" +\n\t\t\"\\x07u\\x02\\x02\\u0637\\u0638\\x07v\\x02\\x02\\u0638\\u0639\\x07c\\x02\\x02\\u0639\" +\n\t\t\"\\u063A\\x07v\\x02\\x02\\u063A\\u063B\\x07k\\x02\\x02\\u063B\\u064C\\x07e\\x02\\x02\" +\n\t\t\"\\u063C\\u063D\\x07u\\x02\\x02\\u063D\\u063E\\x07y\\x02\\x02\\u063E\\u063F\\x07k\\x02\" +\n\t\t\"\\x02\\u063F\\u0640\\x07v\\x02\\x02\\u0640\\u0641\\x07e\\x02\\x02\\u0641\\u064C\\x07\" +\n\t\t\"j\\x02\\x02\\u0642\\u0643\\x07v\\x02\\x02\\u0643\\u0644\\x07t\\x02\\x02\\u0644\\u064C\" +\n\t\t\"\\x07{\\x02\\x02\\u0645\\u0646\\x07v\\x02\\x02\\u0646\\u0647\\x07{\\x02\\x02\\u0647\" +\n\t\t\"\\u0648\\x07r\\x02\\x02\\u0648\\u0649\\x07g\\x02\\x02\\u0649\\u064A\\x07q\\x02\\x02\" +\n\t\t\"\\u064A\\u064C\\x07h\\x02\\x02\\u064B\\u05F3\\x03\\x02\\x02\\x02\\u064B\\u05FB\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u064B\\u0600\\x03\\x02\\x02\\x02\\u064B\\u0604\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u0609\\x03\\x02\\x02\\x02\\u064B\\u0610\\x03\\x02\\x02\\x02\\u064B\\u0615\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064B\\u0617\\x03\\x02\\x02\\x02\\u064B\\u061D\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u0620\\x03\\x02\\x02\\x02\\u064B\\u0625\\x03\\x02\\x02\\x02\\u064B\\u0629\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064B\\u062B\\x03\\x02\\x02\\x02\\u064B\\u0636\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u063C\\x03\\x02\\x02\\x02\\u064B\\u0642\\x03\\x02\\x02\\x02\\u064B\\u0645\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064C\\xE2\\x03\\x02\\x02\\x02\\u064D\\u064E\\x07c\\x02\\x02\\u064E\\u064F\" +\n\t\t\"\\x07p\\x02\\x02\\u064F\\u0650\\x07q\\x02\\x02\\u0650\\u0651\\x07p\\x02\\x02\\u0651\" +\n\t\t\"\\u0652\\x07{\\x02\\x02\\u0652\\u0653\\x07o\\x02\\x02\\u0653\\u0654\\x07q\\x02\\x02\" +\n\t\t\"\\u0654\\u0655\\x07w\\x02\\x02\\u0655\\u0656\\x07u\\x02\\x02\\u0656\\xE4\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0657\\u0658\\x07d\\x02\\x02\\u0658\\u0659\\x07t\\x02\\x02\\u0659\\u065A\\x07\" +\n\t\t\"g\\x02\\x02\\u065A\\u065B\\x07c\\x02\\x02\\u065B\\u065C\\x07m\\x02\\x02\\u065C\\xE6\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u065D\\u065E\\x07e\\x02\\x02\\u065E\\u065F\\x07q\\x02\\x02\\u065F\" +\n\t\t\"\\u0660\\x07p\\x02\\x02\\u0660\\u0661\\x07u\\x02\\x02\\u0661\\u0662\\x07v\\x02\\x02\" +\n\t\t\"\\u0662\\u0663\\x07c\\x02\\x02\\u0663\\u0664\\x07p\\x02\\x02\\u0664\\u0665\\x07v\\x02\" +\n\t\t\"\\x02\\u0665\\xE8\\x03\\x02\\x02\\x02\\u0666\\u0667\\x07k\\x02\\x02\\u0667\\u0668\\x07\" +\n\t\t\"o\\x02\\x02\\u0668\\u0669\\x07o\\x02\\x02\\u0669\\u066A\\x07w\\x02\\x02\\u066A\\u066B\" +\n\t\t\"\\x07v\\x02\\x02\\u066B\\u066C\\x07c\\x02\\x02\\u066C\\u066D\\x07d\\x02\\x02\\u066D\" +\n\t\t\"\\u066E\\x07n\\x02\\x02\\u066E\\u066F\\x07g\\x02\\x02\\u066F\\xEA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0670\\u0671\\x07e\\x02\\x02\\u0671\\u0672\\x07q\";\n\tprivate static readonly _serializedATNSegment3: string =\n\t\t\"\\x02\\x02\\u0672\\u0673\\x07p\\x02\\x02\\u0673\\u0674\\x07v\\x02\\x02\\u0674\\u0675\" +\n\t\t\"\\x07k\\x02\\x02\\u0675\\u0676\\x07p\\x02\\x02\\u0676\\u0677\\x07w\\x02\\x02\\u0677\" +\n\t\t\"\\u0678\\x07g\\x02\\x02\\u0678\\xEC\\x03\\x02\\x02\\x02\\u0679\\u067A\\x07n\\x02\\x02\" +\n\t\t\"\\u067A\\u067B\\x07g\\x02\\x02\\u067B\\u067C\\x07c\\x02\\x02\\u067C\\u067D\\x07x\\x02\" +\n\t\t\"\\x02\\u067D\\u067E\\x07g\\x02\\x02\\u067E\\xEE\\x03\\x02\\x02\\x02\\u067F\\u0680\\x07\" +\n\t\t\"g\\x02\\x02\\u0680\\u0681\\x07z\\x02\\x02\\u0681\\u0682\\x07v\\x02\\x02\\u0682\\u0683\" +\n\t\t\"\\x07g\\x02\\x02\\u0683\\u0684\\x07t\\x02\\x02\\u0684\\u0685\\x07p\\x02\\x02\\u0685\" +\n\t\t\"\\u0686\\x07c\\x02\\x02\\u0686\\u0687\\x07n\\x02\\x02\\u0687\\xF0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0688\\u0689\\x07k\\x02\\x02\\u0689\\u068A\\x07p\\x02\\x02\\u068A\\u068B\\x07f\\x02\" +\n\t\t\"\\x02\\u068B\\u068C\\x07g\\x02\\x02\\u068C\\u068D\\x07z\\x02\\x02\\u068D\\u068E\\x07\" +\n\t\t\"g\\x02\\x02\\u068E\\u068F\\x07f\\x02\\x02\\u068F\\xF2\\x03\\x02\\x02\\x02\\u0690\\u0691\" +\n\t\t\"\\x07k\\x02\\x02\\u0691\\u0692\\x07p\\x02\\x02\\u0692\\u0693\\x07v\\x02\\x02\\u0693\" +\n\t\t\"\\u0694\\x07g\\x02\\x02\\u0694\\u0695\\x07t\\x02\\x02\\u0695\\u0696\\x07p\\x02\\x02\" +\n\t\t\"\\u0696\\u0697\\x07c\\x02\\x02\\u0697\\u0698\\x07n\\x02\\x02\\u0698\\xF4\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0699\\u069A\\x07r\\x02\\x02\\u069A\\u069B\\x07c\\x02\\x02\\u069B\\u069C\\x07\" +\n\t\t\"{\\x02\\x02\\u069C\\u069D\\x07c\\x02\\x02\\u069D\\u069E\\x07d\\x02\\x02\\u069E\\u069F\" +\n\t\t\"\\x07n\\x02\\x02\\u069F\\u06A0\\x07g\\x02\\x02\\u06A0\\xF6\\x03\\x02\\x02\\x02\\u06A1\" +\n\t\t\"\\u06A2\\x07r\\x02\\x02\\u06A2\\u06A3\\x07t\\x02\\x02\\u06A3\\u06A4\\x07k\\x02\\x02\" +\n\t\t\"\\u06A4\\u06A5\\x07x\\x02\\x02\\u06A5\\u06A6\\x07c\\x02\\x02\\u06A6\\u06A7\\x07v\\x02\" +\n\t\t\"\\x02\\u06A7\\u06A8\\x07g\\x02\\x02\\u06A8\\xF8\\x03\\x02\\x02\\x02\\u06A9\\u06AA\\x07\" +\n\t\t\"r\\x02\\x02\\u06AA\\u06AB\\x07w\\x02\\x02\\u06AB\\u06AC\\x07d\\x02\\x02\\u06AC\\u06AD\" +\n\t\t\"\\x07n\\x02\\x02\\u06AD\\u06AE\\x07k\\x02\\x02\\u06AE\\u06AF\\x07e\\x02\\x02\\u06AF\" +\n\t\t\"\\xFA\\x03\\x02\\x02\\x02\\u06B0\\u06B1\\x07x\\x02\\x02\\u06B1\\u06B2\\x07k\\x02\\x02\" +\n\t\t\"\\u06B2\\u06B3\\x07t\\x02\\x02\\u06B3\\u06B4\\x07v\\x02\\x02\\u06B4\\u06B5\\x07w\\x02\" +\n\t\t\"\\x02\\u06B5\\u06B6\\x07c\\x02\\x02\\u06B6\\u06B7\\x07n\\x02\\x02\\u06B7\\xFC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06B8\\u06B9\\x07r\\x02\\x02\\u06B9\\u06BA\\x07w\\x02\\x02\\u06BA\\u06BB\" +\n\t\t\"\\x07t\\x02\\x02\\u06BB\\u06BC\\x07g\\x02\\x02\\u06BC\\xFE\\x03\\x02\\x02\\x02\\u06BD\" +\n\t\t\"\\u06BE\\x07v\\x02\\x02\\u06BE\\u06BF\\x07{\\x02\\x02\\u06BF\\u06C0\\x07r\\x02\\x02\" +\n\t\t\"\\u06C0\\u06C1\\x07g\\x02\\x02\\u06C1\\u0100\\x03\\x02\\x02\\x02\\u06C2\\u06C3\\x07\" +\n\t\t\"x\\x02\\x02\\u06C3\\u06C4\\x07k\\x02\\x02\\u06C4\\u06C5\\x07g\\x02\\x02\\u06C5\\u06C6\" +\n\t\t\"\\x07y\\x02\\x02\\u06C6\\u0102\\x03\\x02\\x02\\x02\\u06C7\\u06C8\\x07i\\x02\\x02\\u06C8\" +\n\t\t\"\\u06C9\\x07n\\x02\\x02\\u06C9\\u06CA\\x07q\\x02\\x02\\u06CA\\u06CB\\x07d\\x02\\x02\" +\n\t\t\"\\u06CB\\u06CC\\x07c\\x02\\x02\\u06CC\\u06CD\\x07n\\x02\\x02\\u06CD\\u0104\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06CE\\u06CF\\x07e\\x02\\x02\\u06CF\\u06D0\\x07q\\x02\\x02\\u06D0\\u06D1\" +\n\t\t\"\\x07p\\x02\\x02\\u06D1\\u06D2\\x07u\\x02\\x02\\u06D2\\u06D3\\x07v\\x02\\x02\\u06D3\" +\n\t\t\"\\u06D4\\x07t\\x02\\x02\\u06D4\\u06D5\\x07w\\x02\\x02\\u06D5\\u06D6\\x07e\\x02\\x02\" +\n\t\t\"\\u06D6\\u06D7\\x07v\\x02\\x02\\u06D7\\u06D8\\x07q\\x02\\x02\\u06D8\\u06D9\\x07t\\x02\" +\n\t\t\"\\x02\\u06D9\\u0106\\x03\\x02\\x02\\x02\\u06DA\\u06DB\\x07h\\x02\\x02\\u06DB\\u06DC\" +\n\t\t\"\\x07c\\x02\\x02\\u06DC\\u06DD\\x07n\\x02\\x02\\u06DD\\u06DE\\x07n\\x02\\x02\\u06DE\" +\n\t\t\"\\u06DF\\x07d\\x02\\x02\\u06DF\\u06E0\\x07c\\x02\\x02\\u06E0\\u06E1\\x07e\\x02\\x02\" +\n\t\t\"\\u06E1\\u06E2\\x07m\\x02\\x02\\u06E2\\u0108\\x03\\x02\\x02\\x02\\u06E3\\u06E4\\x07\" +\n\t\t\"t\\x02\\x02\\u06E4\\u06E5\\x07g\\x02\\x02\\u06E5\\u06E6\\x07e\\x02\\x02\\u06E6\\u06E7\" +\n\t\t\"\\x07g\\x02\\x02\\u06E7\\u06E8\\x07k\\x02\\x02\\u06E8\\u06E9\\x07x\\x02\\x02\\u06E9\" +\n\t\t\"\\u06EA\\x07g\\x02\\x02\\u06EA\\u010A\\x03\\x02\\x02\\x02\\u06EB\\u06EF\\x05\\u010D\" +\n\t\t\"\\x87\\x02\\u06EC\\u06EE\\x05\\u010F\\x88\\x02\\u06ED\\u06EC\\x03\\x02\\x02\\x02\\u06EE\" +\n\t\t\"\\u06F1\\x03\\x02\\x02\\x02\\u06EF\\u06ED\\x03\\x02\\x02\\x02\\u06EF\\u06F0\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06F0\\u010C\\x03\\x02\\x02\\x02\\u06F1\\u06EF\\x03\\x02\\x02\\x02\\u06F2\" +\n\t\t\"\\u06F3\\t\\x06\\x02\\x02\\u06F3\\u010E\\x03\\x02\\x02\\x02\\u06F4\\u06F5\\t\\x07\\x02\" +\n\t\t\"\\x02\\u06F5\\u0110\\x03\\x02\\x02\\x02\\u06F6\\u06F7\\x07w\\x02\\x02\\u06F7\\u06F8\" +\n\t\t\"\\x07p\\x02\\x02\\u06F8\\u06F9\\x07k\\x02\\x02\\u06F9\\u06FA\\x07e\\x02\\x02\\u06FA\" +\n\t\t\"\\u06FB\\x07q\\x02\\x02\\u06FB\\u06FC\\x07f\\x02\\x02\\u06FC\\u06FE\\x07g\\x02\\x02\" +\n\t\t\"\\u06FD\\u06F6\\x03\\x02\\x02\\x02\\u06FD\\u06FE\\x03\\x02\\x02\\x02\\u06FE\\u06FF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u06FF\\u0703\\x07$\\x02\\x02\\u0700\\u0702\\x05\\u0113\\x8A\\x02\\u0701\" +\n\t\t\"\\u0700\\x03\\x02\\x02\\x02\\u0702\\u0705\\x03\\x02\\x02\\x02\\u0703\\u0701\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0703\\u0704\\x03\\x02\\x02\\x02\\u0704\\u0706\\x03\\x02\\x02\\x02\\u0705\" +\n\t\t\"\\u0703\\x03\\x02\\x02\\x02\\u0706\\u0719\\x07$\\x02\\x02\\u0707\\u0708\\x07w\\x02\\x02\" +\n\t\t\"\\u0708\\u0709\\x07p\\x02\\x02\\u0709\\u070A\\x07k\\x02\\x02\\u070A\\u070B\\x07e\\x02\" +\n\t\t\"\\x02\\u070B\\u070C\\x07q\\x02\\x02\\u070C\\u070D\\x07f\\x02\\x02\\u070D\\u070F\\x07\" +\n\t\t\"g\\x02\\x02\\u070E\\u0707\\x03\\x02\\x02\\x02\\u070E\\u070F\\x03\\x02\\x02\\x02\\u070F\" +\n\t\t\"\\u0710\\x03\\x02\\x02\\x02\\u0710\\u0714\\x07)\\x02\\x02\\u0711\\u0713\\x05\\u0115\" +\n\t\t\"\\x8B\\x02\\u0712\\u0711\\x03\\x02\\x02\\x02\\u0713\\u0716\\x03\\x02\\x02\\x02\\u0714\" +\n\t\t\"\\u0712\\x03\\x02\\x02\\x02\\u0714\\u0715\\x03\\x02\\x02\\x02\\u0715\\u0717\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0716\\u0714\\x03\\x02\\x02\\x02\\u0717\\u0719\\x07)\\x02\\x02\\u0718\\u06FD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0718\\u070E\\x03\\x02\\x02\\x02\\u0719\\u0112\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u071A\\u071E\\n\\b\\x02\\x02\\u071B\\u071C\\x07^\\x02\\x02\\u071C\\u071E\\v\\x02\\x02\" +\n\t\t\"\\x02\\u071D\\u071A\\x03\\x02\\x02\\x02\\u071D\\u071B\\x03\\x02\\x02\\x02\\u071E\\u0114\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u071F\\u0723\\n\\t\\x02\\x02\\u0720\\u0721\\x07^\\x02\\x02\\u0721\" +\n\t\t\"\\u0723\\v\\x02\\x02\\x02\\u0722\\u071F\\x03\\x02\\x02\\x02\\u0722\\u0720\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0723\\u0116\\x03\\x02\\x02\\x02\\u0724\\u0726\\t\\x02\\x02\\x02\\u0725\\u0724\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0726\\u0727\\x03\\x02\\x02\\x02\\u0727\\u0725\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0727\\u0728\\x03\\x02\\x02\\x02\\u0728\\u0729\\x03\\x02\\x02\\x02\\u0729\\u072B\\x07\" +\n\t\t\"0\\x02\\x02\\u072A\\u072C\\t\\x02\\x02\\x02\\u072B\\u072A\\x03\\x02\\x02\\x02\\u072C\" +\n\t\t\"\\u072D\\x03\\x02\\x02\\x02\\u072D\\u072B\\x03\\x02\\x02\\x02\\u072D\\u072E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u072E\\u0735\\x03\\x02\\x02\\x02\\u072F\\u0731\\x070\\x02\\x02\\u0730\\u0732\" +\n\t\t\"\\t\\x02\\x02\\x02\\u0731\\u0730\\x03\\x02\\x02\\x02\\u0732\\u0733\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0733\\u0731\\x03\\x02\\x02\\x02\\u0733\\u0734\\x03\\x02\\x02\\x02\\u0734\\u0736\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0735\\u072F\\x03\\x02\\x02\\x02\\u0735\\u0736\\x03\\x02\\x02\\x02\\u0736\" +\n\t\t\"\\u0118\\x03\\x02\\x02\\x02\\u0737\\u0739\\t\\n\\x02\\x02\\u0738\\u0737\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0739\\u073A\\x03\\x02\\x02\\x02\\u073A\\u0738\\x03\\x02\\x02\\x02\\u073A\\u073B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u073B\\u073C\\x03\\x02\\x02\\x02\\u073C\\u073D\\b\\x8D\\x02\\x02\" +\n\t\t\"\\u073D\\u011A\\x03\\x02\\x02\\x02\\u073E\\u073F\\x071\\x02\\x02\\u073F\\u0740\\x07\" +\n\t\t\",\\x02\\x02\\u0740\\u0744\\x03\\x02\\x02\\x02\\u0741\\u0743\\v\\x02\\x02\\x02\\u0742\" +\n\t\t\"\\u0741\\x03\\x02\\x02\\x02\\u0743\\u0746\\x03\\x02\\x02\\x02\\u0744\\u0745\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0744\\u0742\\x03\\x02\\x02\\x02\\u0745\\u0747\\x03\\x02\\x02\\x02\\u0746\" +\n\t\t\"\\u0744\\x03\\x02\\x02\\x02\\u0747\\u0748\\x07,\\x02\\x02\\u0748\\u0749\\x071\\x02\\x02\" +\n\t\t\"\\u0749\\u074A\\x03\\x02\\x02\\x02\\u074A\\u074B\\b\\x8E\\x03\\x02\\u074B\\u011C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u074C\\u074D\\x071\\x02\\x02\\u074D\\u074E\\x071\\x02\\x02\\u074E\\u0752\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u074F\\u0751\\n\\v\\x02\\x02\\u0750\\u074F\\x03\\x02\\x02\\x02\\u0751\" +\n\t\t\"\\u0754\\x03\\x02\\x02\\x02\\u0752\\u0750\\x03\\x02\\x02\\x02\\u0752\\u0753\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0753\\u0755\\x03\\x02\\x02\\x02\\u0754\\u0752\\x03\\x02\\x02\\x02\\u0755\" +\n\t\t\"\\u0756\\b\\x8F\\x03\\x02\\u0756\\u011E\\x03\\x02\\x02\\x02(\\x02\\u038A\\u0463\\u0541\" +\n\t\t\"\\u0551\\u0557\\u0559\\u056B\\u0571\\u0573\\u057E\\u0582\\u0586\\u058A\\u058E\\u0593\" +\n\t\t\"\\u059C\\u05A1\\u05DC\\u05E4\\u05E9\\u05EC\\u064B\\u06EF\\u06FD\\u0703\\u070E\\u0714\" +\n\t\t\"\\u0718\\u071D\\u0722\\u0727\\u072D\\u0733\\u0735\\u073A\\u0744\\u0752\\x04\\b\\x02\" +\n\t\t\"\\x02\\x02\\x03\\x02\";\n\tpublic static readonly _serializedATN: string = Utils.join(\n\t\t[\n\t\t\tSolidityLexer._serializedATNSegment0,\n\t\t\tSolidityLexer._serializedATNSegment1,\n\t\t\tSolidityLexer._serializedATNSegment2,\n\t\t\tSolidityLexer._serializedATNSegment3,\n\t\t],\n\t\t\"\",\n\t);\n\tpublic static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!SolidityLexer.__ATN) {\n\t\t\tSolidityLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityLexer._serializedATN));\n\t\t}\n\n\t\treturn SolidityLexer.__ATN;\n\t}\n\n}\n\n", "// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT\n\n\nimport { ATN } from \"antlr4ts/atn/ATN\";\nimport { ATNDeserializer } from \"antlr4ts/atn/ATNDeserializer\";\nimport { FailedPredicateException } from \"antlr4ts/FailedPredicateException\";\nimport { NotNull } from \"antlr4ts/Decorators\";\nimport { NoViableAltException } from \"antlr4ts/NoViableAltException\";\nimport { Override } from \"antlr4ts/Decorators\";\nimport { Parser } from \"antlr4ts/Parser\";\nimport { ParserRuleContext } from \"antlr4ts/ParserRuleContext\";\nimport { ParserATNSimulator } from \"antlr4ts/atn/ParserATNSimulator\";\nimport { ParseTreeListener } from \"antlr4ts/tree/ParseTreeListener\";\nimport { ParseTreeVisitor } from \"antlr4ts/tree/ParseTreeVisitor\";\nimport { RecognitionException } from \"antlr4ts/RecognitionException\";\nimport { RuleContext } from \"antlr4ts/RuleContext\";\n//import { RuleVersion } from \"antlr4ts/RuleVersion\";\nimport { TerminalNode } from \"antlr4ts/tree/TerminalNode\";\nimport { Token } from \"antlr4ts/Token\";\nimport { TokenStream } from \"antlr4ts/TokenStream\";\nimport { Vocabulary } from \"antlr4ts/Vocabulary\";\nimport { VocabularyImpl } from \"antlr4ts/VocabularyImpl\";\n\nimport * as Utils from \"antlr4ts/misc/Utils\";\n\nimport { SolidityListener } from \"./SolidityListener\";\nimport { SolidityVisitor } from \"./SolidityVisitor\";\n\n\nexport class SolidityParser extends Parser {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly T__11 = 12;\n\tpublic static readonly T__12 = 13;\n\tpublic static readonly T__13 = 14;\n\tpublic static readonly T__14 = 15;\n\tpublic static readonly T__15 = 16;\n\tpublic static readonly T__16 = 17;\n\tpublic static readonly T__17 = 18;\n\tpublic static readonly T__18 = 19;\n\tpublic static readonly T__19 = 20;\n\tpublic static readonly T__20 = 21;\n\tpublic static readonly T__21 = 22;\n\tpublic static readonly T__22 = 23;\n\tpublic static readonly T__23 = 24;\n\tpublic static readonly T__24 = 25;\n\tpublic static readonly T__25 = 26;\n\tpublic static readonly T__26 = 27;\n\tpublic static readonly T__27 = 28;\n\tpublic static readonly T__28 = 29;\n\tpublic static readonly T__29 = 30;\n\tpublic static readonly T__30 = 31;\n\tpublic static readonly T__31 = 32;\n\tpublic static readonly T__32 = 33;\n\tpublic static readonly T__33 = 34;\n\tpublic static readonly T__34 = 35;\n\tpublic static readonly T__35 = 36;\n\tpublic static readonly T__36 = 37;\n\tpublic static readonly T__37 = 38;\n\tpublic static readonly T__38 = 39;\n\tpublic static readonly T__39 = 40;\n\tpublic static readonly T__40 = 41;\n\tpublic static readonly T__41 = 42;\n\tpublic static readonly T__42 = 43;\n\tpublic static readonly T__43 = 44;\n\tpublic static readonly T__44 = 45;\n\tpublic static readonly T__45 = 46;\n\tpublic static readonly T__46 = 47;\n\tpublic static readonly T__47 = 48;\n\tpublic static readonly T__48 = 49;\n\tpublic static readonly T__49 = 50;\n\tpublic static readonly T__50 = 51;\n\tpublic static readonly T__51 = 52;\n\tpublic static readonly T__52 = 53;\n\tpublic static readonly T__53 = 54;\n\tpublic static readonly T__54 = 55;\n\tpublic static readonly T__55 = 56;\n\tpublic static readonly T__56 = 57;\n\tpublic static readonly T__57 = 58;\n\tpublic static readonly T__58 = 59;\n\tpublic static readonly T__59 = 60;\n\tpublic static readonly T__60 = 61;\n\tpublic static readonly T__61 = 62;\n\tpublic static readonly T__62 = 63;\n\tpublic static readonly T__63 = 64;\n\tpublic static readonly T__64 = 65;\n\tpublic static readonly T__65 = 66;\n\tpublic static readonly T__66 = 67;\n\tpublic static readonly T__67 = 68;\n\tpublic static readonly T__68 = 69;\n\tpublic static readonly T__69 = 70;\n\tpublic static readonly T__70 = 71;\n\tpublic static readonly T__71 = 72;\n\tpublic static readonly T__72 = 73;\n\tpublic static readonly T__73 = 74;\n\tpublic static readonly T__74 = 75;\n\tpublic static readonly T__75 = 76;\n\tpublic static readonly T__76 = 77;\n\tpublic static readonly T__77 = 78;\n\tpublic static readonly T__78 = 79;\n\tpublic static readonly T__79 = 80;\n\tpublic static readonly T__80 = 81;\n\tpublic static readonly T__81 = 82;\n\tpublic static readonly T__82 = 83;\n\tpublic static readonly T__83 = 84;\n\tpublic static readonly T__84 = 85;\n\tpublic static readonly T__85 = 86;\n\tpublic static readonly T__86 = 87;\n\tpublic static readonly T__87 = 88;\n\tpublic static readonly T__88 = 89;\n\tpublic static readonly T__89 = 90;\n\tpublic static readonly T__90 = 91;\n\tpublic static readonly T__91 = 92;\n\tpublic static readonly T__92 = 93;\n\tpublic static readonly T__93 = 94;\n\tpublic static readonly T__94 = 95;\n\tpublic static readonly T__95 = 96;\n\tpublic static readonly T__96 = 97;\n\tpublic static readonly Int = 98;\n\tpublic static readonly Uint = 99;\n\tpublic static readonly Byte = 100;\n\tpublic static readonly Fixed = 101;\n\tpublic static readonly Ufixed = 102;\n\tpublic static readonly BooleanLiteral = 103;\n\tpublic static readonly DecimalNumber = 104;\n\tpublic static readonly HexNumber = 105;\n\tpublic static readonly NumberUnit = 106;\n\tpublic static readonly HexLiteralFragment = 107;\n\tpublic static readonly ReservedKeyword = 108;\n\tpublic static readonly AnonymousKeyword = 109;\n\tpublic static readonly BreakKeyword = 110;\n\tpublic static readonly ConstantKeyword = 111;\n\tpublic static readonly ImmutableKeyword = 112;\n\tpublic static readonly ContinueKeyword = 113;\n\tpublic static readonly LeaveKeyword = 114;\n\tpublic static readonly ExternalKeyword = 115;\n\tpublic static readonly IndexedKeyword = 116;\n\tpublic static readonly InternalKeyword = 117;\n\tpublic static readonly PayableKeyword = 118;\n\tpublic static readonly PrivateKeyword = 119;\n\tpublic static readonly PublicKeyword = 120;\n\tpublic static readonly VirtualKeyword = 121;\n\tpublic static readonly PureKeyword = 122;\n\tpublic static readonly TypeKeyword = 123;\n\tpublic static readonly ViewKeyword = 124;\n\tpublic static readonly GlobalKeyword = 125;\n\tpublic static readonly ConstructorKeyword = 126;\n\tpublic static readonly FallbackKeyword = 127;\n\tpublic static readonly ReceiveKeyword = 128;\n\tpublic static readonly Identifier = 129;\n\tpublic static readonly StringLiteralFragment = 130;\n\tpublic static readonly VersionLiteral = 131;\n\tpublic static readonly WS = 132;\n\tpublic static readonly COMMENT = 133;\n\tpublic static readonly LINE_COMMENT = 134;\n\tpublic static readonly RULE_sourceUnit = 0;\n\tpublic static readonly RULE_pragmaDirective = 1;\n\tpublic static readonly RULE_pragmaName = 2;\n\tpublic static readonly RULE_pragmaValue = 3;\n\tpublic static readonly RULE_version = 4;\n\tpublic static readonly RULE_versionOperator = 5;\n\tpublic static readonly RULE_versionConstraint = 6;\n\tpublic static readonly RULE_importDeclaration = 7;\n\tpublic static readonly RULE_importDirective = 8;\n\tpublic static readonly RULE_importPath = 9;\n\tpublic static readonly RULE_contractDefinition = 10;\n\tpublic static readonly RULE_inheritanceSpecifier = 11;\n\tpublic static readonly RULE_contractPart = 12;\n\tpublic static readonly RULE_stateVariableDeclaration = 13;\n\tpublic static readonly RULE_fileLevelConstant = 14;\n\tpublic static readonly RULE_customErrorDefinition = 15;\n\tpublic static readonly RULE_typeDefinition = 16;\n\tpublic static readonly RULE_usingForDeclaration = 17;\n\tpublic static readonly RULE_usingForObject = 18;\n\tpublic static readonly RULE_structDefinition = 19;\n\tpublic static readonly RULE_modifierDefinition = 20;\n\tpublic static readonly RULE_modifierInvocation = 21;\n\tpublic static readonly RULE_functionDefinition = 22;\n\tpublic static readonly RULE_functionDescriptor = 23;\n\tpublic static readonly RULE_returnParameters = 24;\n\tpublic static readonly RULE_modifierList = 25;\n\tpublic static readonly RULE_eventDefinition = 26;\n\tpublic static readonly RULE_enumValue = 27;\n\tpublic static readonly RULE_enumDefinition = 28;\n\tpublic static readonly RULE_parameterList = 29;\n\tpublic static readonly RULE_parameter = 30;\n\tpublic static readonly RULE_eventParameterList = 31;\n\tpublic static readonly RULE_eventParameter = 32;\n\tpublic static readonly RULE_functionTypeParameterList = 33;\n\tpublic static readonly RULE_functionTypeParameter = 34;\n\tpublic static readonly RULE_variableDeclaration = 35;\n\tpublic static readonly RULE_typeName = 36;\n\tpublic static readonly RULE_userDefinedTypeName = 37;\n\tpublic static readonly RULE_mappingKey = 38;\n\tpublic static readonly RULE_mapping = 39;\n\tpublic static readonly RULE_functionTypeName = 40;\n\tpublic static readonly RULE_storageLocation = 41;\n\tpublic static readonly RULE_stateMutability = 42;\n\tpublic static readonly RULE_block = 43;\n\tpublic static readonly RULE_statement = 44;\n\tpublic static readonly RULE_expressionStatement = 45;\n\tpublic static readonly RULE_ifStatement = 46;\n\tpublic static readonly RULE_tryStatement = 47;\n\tpublic static readonly RULE_catchClause = 48;\n\tpublic static readonly RULE_whileStatement = 49;\n\tpublic static readonly RULE_simpleStatement = 50;\n\tpublic static readonly RULE_uncheckedStatement = 51;\n\tpublic static readonly RULE_forStatement = 52;\n\tpublic static readonly RULE_inlineAssemblyStatement = 53;\n\tpublic static readonly RULE_inlineAssemblyStatementFlag = 54;\n\tpublic static readonly RULE_doWhileStatement = 55;\n\tpublic static readonly RULE_continueStatement = 56;\n\tpublic static readonly RULE_breakStatement = 57;\n\tpublic static readonly RULE_returnStatement = 58;\n\tpublic static readonly RULE_throwStatement = 59;\n\tpublic static readonly RULE_emitStatement = 60;\n\tpublic static readonly RULE_revertStatement = 61;\n\tpublic static readonly RULE_variableDeclarationStatement = 62;\n\tpublic static readonly RULE_variableDeclarationList = 63;\n\tpublic static readonly RULE_identifierList = 64;\n\tpublic static readonly RULE_elementaryTypeName = 65;\n\tpublic static readonly RULE_expression = 66;\n\tpublic static readonly RULE_primaryExpression = 67;\n\tpublic static readonly RULE_expressionList = 68;\n\tpublic static readonly RULE_nameValueList = 69;\n\tpublic static readonly RULE_nameValue = 70;\n\tpublic static readonly RULE_functionCallArguments = 71;\n\tpublic static readonly RULE_functionCall = 72;\n\tpublic static readonly RULE_assemblyBlock = 73;\n\tpublic static readonly RULE_assemblyItem = 74;\n\tpublic static readonly RULE_assemblyExpression = 75;\n\tpublic static readonly RULE_assemblyMember = 76;\n\tpublic static readonly RULE_assemblyCall = 77;\n\tpublic static readonly RULE_assemblyLocalDefinition = 78;\n\tpublic static readonly RULE_assemblyAssignment = 79;\n\tpublic static readonly RULE_assemblyIdentifierOrList = 80;\n\tpublic static readonly RULE_assemblyIdentifierList = 81;\n\tpublic static readonly RULE_assemblyStackAssignment = 82;\n\tpublic static readonly RULE_labelDefinition = 83;\n\tpublic static readonly RULE_assemblySwitch = 84;\n\tpublic static readonly RULE_assemblyCase = 85;\n\tpublic static readonly RULE_assemblyFunctionDefinition = 86;\n\tpublic static readonly RULE_assemblyFunctionReturns = 87;\n\tpublic static readonly RULE_assemblyFor = 88;\n\tpublic static readonly RULE_assemblyIf = 89;\n\tpublic static readonly RULE_assemblyLiteral = 90;\n\tpublic static readonly RULE_subAssembly = 91;\n\tpublic static readonly RULE_tupleExpression = 92;\n\tpublic static readonly RULE_numberLiteral = 93;\n\tpublic static readonly RULE_identifier = 94;\n\tpublic static readonly RULE_hexLiteral = 95;\n\tpublic static readonly RULE_overrideSpecifier = 96;\n\tpublic static readonly RULE_stringLiteral = 97;\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"sourceUnit\", \"pragmaDirective\", \"pragmaName\", \"pragmaValue\", \"version\", \n\t\t\"versionOperator\", \"versionConstraint\", \"importDeclaration\", \"importDirective\", \n\t\t\"importPath\", \"contractDefinition\", \"inheritanceSpecifier\", \"contractPart\", \n\t\t\"stateVariableDeclaration\", \"fileLevelConstant\", \"customErrorDefinition\", \n\t\t\"typeDefinition\", \"usingForDeclaration\", \"usingForObject\", \"structDefinition\", \n\t\t\"modifierDefinition\", \"modifierInvocation\", \"functionDefinition\", \"functionDescriptor\", \n\t\t\"returnParameters\", \"modifierList\", \"eventDefinition\", \"enumValue\", \"enumDefinition\", \n\t\t\"parameterList\", \"parameter\", \"eventParameterList\", \"eventParameter\", \n\t\t\"functionTypeParameterList\", \"functionTypeParameter\", \"variableDeclaration\", \n\t\t\"typeName\", \"userDefinedTypeName\", \"mappingKey\", \"mapping\", \"functionTypeName\", \n\t\t\"storageLocation\", \"stateMutability\", \"block\", \"statement\", \"expressionStatement\", \n\t\t\"ifStatement\", \"tryStatement\", \"catchClause\", \"whileStatement\", \"simpleStatement\", \n\t\t\"uncheckedStatement\", \"forStatement\", \"inlineAssemblyStatement\", \"inlineAssemblyStatementFlag\", \n\t\t\"doWhileStatement\", \"continueStatement\", \"breakStatement\", \"returnStatement\", \n\t\t\"throwStatement\", \"emitStatement\", \"revertStatement\", \"variableDeclarationStatement\", \n\t\t\"variableDeclarationList\", \"identifierList\", \"elementaryTypeName\", \"expression\", \n\t\t\"primaryExpression\", \"expressionList\", \"nameValueList\", \"nameValue\", \"functionCallArguments\", \n\t\t\"functionCall\", \"assemblyBlock\", \"assemblyItem\", \"assemblyExpression\", \n\t\t\"assemblyMember\", \"assemblyCall\", \"assemblyLocalDefinition\", \"assemblyAssignment\", \n\t\t\"assemblyIdentifierOrList\", \"assemblyIdentifierList\", \"assemblyStackAssignment\", \n\t\t\"labelDefinition\", \"assemblySwitch\", \"assemblyCase\", \"assemblyFunctionDefinition\", \n\t\t\"assemblyFunctionReturns\", \"assemblyFor\", \"assemblyIf\", \"assemblyLiteral\", \n\t\t\"subAssembly\", \"tupleExpression\", \"numberLiteral\", \"identifier\", \"hexLiteral\", \n\t\t\"overrideSpecifier\", \"stringLiteral\",\n\t];\n\n\tprivate static readonly _LITERAL_NAMES: Array = [\n\t\tundefined, \"'pragma'\", \"';'\", \"'*'\", \"'||'\", \"'^'\", \"'~'\", \"'>='\", \"'>'\", \n\t\t\"'<'\", \"'<='\", \"'='\", \"'as'\", \"'import'\", \"'from'\", \"'{'\", \"','\", \"'}'\", \n\t\t\"'abstract'\", \"'contract'\", \"'interface'\", \"'library'\", \"'is'\", \"'('\", \n\t\t\"')'\", \"'error'\", \"'using'\", \"'for'\", \"'struct'\", \"'modifier'\", \"'function'\", \n\t\t\"'returns'\", \"'event'\", \"'enum'\", \"'['\", \"']'\", \"'address'\", \"'.'\", \"'mapping'\", \n\t\t\"'=>'\", \"'memory'\", \"'storage'\", \"'calldata'\", \"'if'\", \"'else'\", \"'try'\", \n\t\t\"'catch'\", \"'while'\", \"'unchecked'\", \"'assembly'\", \"'do'\", \"'return'\", \n\t\t\"'throw'\", \"'emit'\", \"'revert'\", \"'var'\", \"'bool'\", \"'string'\", \"'byte'\", \n\t\t\"'++'\", \"'--'\", \"'new'\", \"':'\", \"'+'\", \"'-'\", \"'after'\", \"'delete'\", \"'!'\", \n\t\t\"'**'\", \"'/'\", \"'%'\", \"'<<'\", \"'>>'\", \"'&'\", \"'|'\", \"'=='\", \"'!='\", \"'&&'\", \n\t\t\"'?'\", \"'|='\", \"'^='\", \"'&='\", \"'<<='\", \"'>>='\", \"'+='\", \"'-='\", \"'*='\", \n\t\t\"'/='\", \"'%='\", \"'let'\", \"':='\", \"'=:'\", \"'switch'\", \"'case'\", \"'default'\", \n\t\t\"'->'\", \"'callback'\", \"'override'\", undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"'anonymous'\", \"'break'\", \"'constant'\", \"'immutable'\", \"'continue'\", \"'leave'\", \n\t\t\"'external'\", \"'indexed'\", \"'internal'\", \"'payable'\", \"'private'\", \"'public'\", \n\t\t\"'virtual'\", \"'pure'\", \"'type'\", \"'view'\", \"'global'\", \"'constructor'\", \n\t\t\"'fallback'\", \"'receive'\",\n\t];\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"HexNumber\", \"NumberUnit\", \"HexLiteralFragment\", \"ReservedKeyword\", \"AnonymousKeyword\", \n\t\t\"BreakKeyword\", \"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \n\t\t\"LeaveKeyword\", \"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \n\t\t\"PayableKeyword\", \"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \n\t\t\"PureKeyword\", \"TypeKeyword\", \"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \n\t\t\"FallbackKeyword\", \"ReceiveKeyword\", \"Identifier\", \"StringLiteralFragment\", \n\t\t\"VersionLiteral\", \"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityParser._LITERAL_NAMES, SolidityParser._SYMBOLIC_NAMES, []);\n\n\t// @Override\n\t// @NotNull\n\tpublic get vocabulary(): Vocabulary {\n\t\treturn SolidityParser.VOCABULARY;\n\t}\n\t// tslint:enable:no-trailing-whitespace\n\n\t// @Override\n\tpublic get grammarFileName(): string { return \"Solidity.g4\"; }\n\n\t// @Override\n\tpublic get ruleNames(): string[] { return SolidityParser.ruleNames; }\n\n\t// @Override\n\tpublic get serializedATN(): string { return SolidityParser._serializedATN; }\n\n\tprotected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {\n\t\treturn new FailedPredicateException(this, predicate, message);\n\t}\n\n\tconstructor(input: TokenStream) {\n\t\tsuper(input);\n\t\tthis._interp = new ParserATNSimulator(SolidityParser._ATN, this);\n\t}\n\t// @RuleVersion(0)\n\tpublic sourceUnit(): SourceUnitContext {\n\t\tlet _localctx: SourceUnitContext = new SourceUnitContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 0, SolidityParser.RULE_sourceUnit);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 208;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__0) | (1 << SolidityParser.T__12) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__17) | (1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25) | (1 << SolidityParser.T__27) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (SolidityParser.T__32 - 33)) | (1 << (SolidityParser.T__35 - 33)) | (1 << (SolidityParser.T__37 - 33)) | (1 << (SolidityParser.T__41 - 33)) | (1 << (SolidityParser.T__53 - 33)) | (1 << (SolidityParser.T__54 - 33)) | (1 << (SolidityParser.T__55 - 33)) | (1 << (SolidityParser.T__56 - 33)) | (1 << (SolidityParser.T__57 - 33)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)) | (1 << (SolidityParser.FallbackKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 206;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 0, this._ctx) ) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 196;\n\t\t\t\t\tthis.pragmaDirective();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 197;\n\t\t\t\t\tthis.importDirective();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 198;\n\t\t\t\t\tthis.contractDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 199;\n\t\t\t\t\tthis.enumDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 5:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 200;\n\t\t\t\t\tthis.structDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 6:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 201;\n\t\t\t\t\tthis.functionDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 7:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 202;\n\t\t\t\t\tthis.fileLevelConstant();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 8:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 203;\n\t\t\t\t\tthis.customErrorDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 9:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 204;\n\t\t\t\t\tthis.typeDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 10:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 205;\n\t\t\t\t\tthis.usingForDeclaration();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 210;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 211;\n\t\t\tthis.match(SolidityParser.EOF);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaDirective(): PragmaDirectiveContext {\n\t\tlet _localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 2, SolidityParser.RULE_pragmaDirective);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 213;\n\t\t\tthis.match(SolidityParser.T__0);\n\t\t\tthis.state = 214;\n\t\t\tthis.pragmaName();\n\t\t\tthis.state = 215;\n\t\t\tthis.pragmaValue();\n\t\t\tthis.state = 216;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaName(): PragmaNameContext {\n\t\tlet _localctx: PragmaNameContext = new PragmaNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 4, SolidityParser.RULE_pragmaName);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 218;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaValue(): PragmaValueContext {\n\t\tlet _localctx: PragmaValueContext = new PragmaValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 6, SolidityParser.RULE_pragmaValue);\n\t\ttry {\n\t\t\tthis.state = 223;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 220;\n\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 221;\n\t\t\t\tthis.version();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 222;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic version(): VersionContext {\n\t\tlet _localctx: VersionContext = new VersionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 8, SolidityParser.RULE_version);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 225;\n\t\t\tthis.versionConstraint();\n\t\t\tthis.state = 232;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__3) | (1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0) || _la === SolidityParser.DecimalNumber || _la === SolidityParser.VersionLiteral) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 227;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__3) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 226;\n\t\t\t\t\tthis.match(SolidityParser.T__3);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 229;\n\t\t\t\tthis.versionConstraint();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 234;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic versionOperator(): VersionOperatorContext {\n\t\tlet _localctx: VersionOperatorContext = new VersionOperatorContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 10, SolidityParser.RULE_versionOperator);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 235;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic versionConstraint(): VersionConstraintContext {\n\t\tlet _localctx: VersionConstraintContext = new VersionConstraintContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 12, SolidityParser.RULE_versionConstraint);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 245;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 238;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 237;\n\t\t\t\t\tthis.versionOperator();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 240;\n\t\t\t\tthis.match(SolidityParser.VersionLiteral);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 242;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 241;\n\t\t\t\t\tthis.versionOperator();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 244;\n\t\t\t\tthis.match(SolidityParser.DecimalNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importDeclaration(): ImportDeclarationContext {\n\t\tlet _localctx: ImportDeclarationContext = new ImportDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 14, SolidityParser.RULE_importDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 247;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 250;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t{\n\t\t\t\tthis.state = 248;\n\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\tthis.state = 249;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importDirective(): ImportDirectiveContext {\n\t\tlet _localctx: ImportDirectiveContext = new ImportDirectiveContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 16, SolidityParser.RULE_importDirective);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 288;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 252;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 253;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 256;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 254;\n\t\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\t\tthis.state = 255;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 258;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 260;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 263;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.T__2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 261;\n\t\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__13:\n\t\t\t\tcase SolidityParser.T__24:\n\t\t\t\tcase SolidityParser.T__41:\n\t\t\t\tcase SolidityParser.T__53:\n\t\t\t\tcase SolidityParser.T__95:\n\t\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 262;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 267;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 265;\n\t\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\t\tthis.state = 266;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 269;\n\t\t\t\tthis.match(SolidityParser.T__13);\n\t\t\t\tthis.state = 270;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 271;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 273;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 274;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 275;\n\t\t\t\tthis.importDeclaration();\n\t\t\t\tthis.state = 280;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 276;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 277;\n\t\t\t\t\tthis.importDeclaration();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 282;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 283;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\tthis.state = 284;\n\t\t\t\tthis.match(SolidityParser.T__13);\n\t\t\t\tthis.state = 285;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 286;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importPath(): ImportPathContext {\n\t\tlet _localctx: ImportPathContext = new ImportPathContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 18, SolidityParser.RULE_importPath);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 290;\n\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic contractDefinition(): ContractDefinitionContext {\n\t\tlet _localctx: ContractDefinitionContext = new ContractDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 20, SolidityParser.RULE_contractDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 293;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__17) {\n\t\t\t\t{\n\t\t\t\tthis.state = 292;\n\t\t\t\tthis.match(SolidityParser.T__17);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 295;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\tthis.state = 296;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 306;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__21) {\n\t\t\t\t{\n\t\t\t\tthis.state = 297;\n\t\t\t\tthis.match(SolidityParser.T__21);\n\t\t\t\tthis.state = 298;\n\t\t\t\tthis.inheritanceSpecifier();\n\t\t\t\tthis.state = 303;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 299;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 300;\n\t\t\t\t\tthis.inheritanceSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 305;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 308;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 312;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25) | (1 << SolidityParser.T__27) | (1 << SolidityParser.T__28) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (SolidityParser.T__31 - 32)) | (1 << (SolidityParser.T__32 - 32)) | (1 << (SolidityParser.T__35 - 32)) | (1 << (SolidityParser.T__37 - 32)) | (1 << (SolidityParser.T__41 - 32)) | (1 << (SolidityParser.T__53 - 32)) | (1 << (SolidityParser.T__54 - 32)) | (1 << (SolidityParser.T__55 - 32)) | (1 << (SolidityParser.T__56 - 32)) | (1 << (SolidityParser.T__57 - 32)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)) | (1 << (SolidityParser.FallbackKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 309;\n\t\t\t\tthis.contractPart();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 314;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 315;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inheritanceSpecifier(): InheritanceSpecifierContext {\n\t\tlet _localctx: InheritanceSpecifierContext = new InheritanceSpecifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 22, SolidityParser.RULE_inheritanceSpecifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 317;\n\t\t\tthis.userDefinedTypeName();\n\t\t\tthis.state = 323;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 318;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 320;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 319;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 322;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic contractPart(): ContractPartContext {\n\t\tlet _localctx: ContractPartContext = new ContractPartContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 24, SolidityParser.RULE_contractPart);\n\t\ttry {\n\t\t\tthis.state = 334;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 325;\n\t\t\t\tthis.stateVariableDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 326;\n\t\t\t\tthis.usingForDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 327;\n\t\t\t\tthis.structDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 328;\n\t\t\t\tthis.modifierDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 329;\n\t\t\t\tthis.functionDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 330;\n\t\t\t\tthis.eventDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 331;\n\t\t\t\tthis.enumDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 332;\n\t\t\t\tthis.customErrorDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 333;\n\t\t\t\tthis.typeDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stateVariableDeclaration(): StateVariableDeclarationContext {\n\t\tlet _localctx: StateVariableDeclarationContext = new StateVariableDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 26, SolidityParser.RULE_stateVariableDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 336;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 345;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (SolidityParser.T__96 - 97)) | (1 << (SolidityParser.ConstantKeyword - 97)) | (1 << (SolidityParser.ImmutableKeyword - 97)) | (1 << (SolidityParser.InternalKeyword - 97)) | (1 << (SolidityParser.PrivateKeyword - 97)) | (1 << (SolidityParser.PublicKeyword - 97)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 343;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.PublicKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 337;\n\t\t\t\t\tthis.match(SolidityParser.PublicKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.InternalKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 338;\n\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.PrivateKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 339;\n\t\t\t\t\tthis.match(SolidityParser.PrivateKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.ConstantKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 340;\n\t\t\t\t\tthis.match(SolidityParser.ConstantKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.ImmutableKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 341;\n\t\t\t\t\tthis.match(SolidityParser.ImmutableKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__96:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 342;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 347;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 348;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 351;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__10) {\n\t\t\t\t{\n\t\t\t\tthis.state = 349;\n\t\t\t\tthis.match(SolidityParser.T__10);\n\t\t\t\tthis.state = 350;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 353;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic fileLevelConstant(): FileLevelConstantContext {\n\t\tlet _localctx: FileLevelConstantContext = new FileLevelConstantContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 28, SolidityParser.RULE_fileLevelConstant);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 355;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 356;\n\t\t\tthis.match(SolidityParser.ConstantKeyword);\n\t\t\tthis.state = 357;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 358;\n\t\t\tthis.match(SolidityParser.T__10);\n\t\t\tthis.state = 359;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 360;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext {\n\t\tlet _localctx: CustomErrorDefinitionContext = new CustomErrorDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 30, SolidityParser.RULE_customErrorDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 362;\n\t\t\tthis.match(SolidityParser.T__24);\n\t\t\tthis.state = 363;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 364;\n\t\t\tthis.parameterList();\n\t\t\tthis.state = 365;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic typeDefinition(): TypeDefinitionContext {\n\t\tlet _localctx: TypeDefinitionContext = new TypeDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 32, SolidityParser.RULE_typeDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 367;\n\t\t\tthis.match(SolidityParser.TypeKeyword);\n\t\t\tthis.state = 368;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 369;\n\t\t\tthis.match(SolidityParser.T__21);\n\t\t\tthis.state = 370;\n\t\t\tthis.elementaryTypeName();\n\t\t\tthis.state = 371;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic usingForDeclaration(): UsingForDeclarationContext {\n\t\tlet _localctx: UsingForDeclarationContext = new UsingForDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 34, SolidityParser.RULE_usingForDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 373;\n\t\t\tthis.match(SolidityParser.T__25);\n\t\t\tthis.state = 374;\n\t\t\tthis.usingForObject();\n\t\t\tthis.state = 375;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 378;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__2:\n\t\t\t\t{\n\t\t\t\tthis.state = 376;\n\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t{\n\t\t\t\tthis.state = 377;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 381;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.GlobalKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 380;\n\t\t\t\tthis.match(SolidityParser.GlobalKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 383;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic usingForObject(): UsingForObjectContext {\n\t\tlet _localctx: UsingForObjectContext = new UsingForObjectContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 36, SolidityParser.RULE_usingForObject);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 397;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 385;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 386;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 387;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\tthis.state = 392;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 388;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 389;\n\t\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 394;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 395;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic structDefinition(): StructDefinitionContext {\n\t\tlet _localctx: StructDefinitionContext = new StructDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 38, SolidityParser.RULE_structDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 399;\n\t\t\tthis.match(SolidityParser.T__27);\n\t\t\tthis.state = 400;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 401;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 412;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 402;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\tthis.state = 403;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\tthis.state = 409;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 404;\n\t\t\t\t\tthis.variableDeclaration();\n\t\t\t\t\tthis.state = 405;\n\t\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 411;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 414;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierDefinition(): ModifierDefinitionContext {\n\t\tlet _localctx: ModifierDefinitionContext = new ModifierDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 40, SolidityParser.RULE_modifierDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 416;\n\t\t\tthis.match(SolidityParser.T__28);\n\t\t\tthis.state = 417;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 419;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 418;\n\t\t\t\tthis.parameterList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 425;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__96 || _la === SolidityParser.VirtualKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 423;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.VirtualKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 421;\n\t\t\t\t\tthis.match(SolidityParser.VirtualKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__96:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 422;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 427;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 430;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 428;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 429;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierInvocation(): ModifierInvocationContext {\n\t\tlet _localctx: ModifierInvocationContext = new ModifierInvocationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 42, SolidityParser.RULE_modifierInvocation);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 432;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 438;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 433;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 435;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 434;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 437;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionDefinition(): FunctionDefinitionContext {\n\t\tlet _localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 44, SolidityParser.RULE_functionDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 440;\n\t\t\tthis.functionDescriptor();\n\t\t\tthis.state = 441;\n\t\t\tthis.parameterList();\n\t\t\tthis.state = 442;\n\t\t\tthis.modifierList();\n\t\t\tthis.state = 444;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__30) {\n\t\t\t\t{\n\t\t\t\tthis.state = 443;\n\t\t\t\tthis.returnParameters();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 448;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 446;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 447;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionDescriptor(): FunctionDescriptorContext {\n\t\tlet _localctx: FunctionDescriptorContext = new FunctionDescriptorContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 46, SolidityParser.RULE_functionDescriptor);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 457;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__29:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 450;\n\t\t\t\tthis.match(SolidityParser.T__29);\n\t\t\t\tthis.state = 452;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 451;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 454;\n\t\t\t\tthis.match(SolidityParser.ConstructorKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.FallbackKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 455;\n\t\t\t\tthis.match(SolidityParser.FallbackKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 456;\n\t\t\t\tthis.match(SolidityParser.ReceiveKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic returnParameters(): ReturnParametersContext {\n\t\tlet _localctx: ReturnParametersContext = new ReturnParametersContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 48, SolidityParser.RULE_returnParameters);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 459;\n\t\t\tthis.match(SolidityParser.T__30);\n\t\t\tthis.state = 460;\n\t\t\tthis.parameterList();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierList(): ModifierListContext {\n\t\tlet _localctx: ModifierListContext = new ModifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 50, SolidityParser.RULE_modifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 472;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.T__96 - 96)) | (1 << (SolidityParser.ConstantKeyword - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.ExternalKeyword - 96)) | (1 << (SolidityParser.InternalKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.PrivateKeyword - 96)) | (1 << (SolidityParser.PublicKeyword - 96)) | (1 << (SolidityParser.VirtualKeyword - 96)) | (1 << (SolidityParser.PureKeyword - 96)) | (1 << (SolidityParser.ViewKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 470;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 462;\n\t\t\t\t\tthis.match(SolidityParser.ExternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 463;\n\t\t\t\t\tthis.match(SolidityParser.PublicKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 464;\n\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 465;\n\t\t\t\t\tthis.match(SolidityParser.PrivateKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 5:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 466;\n\t\t\t\t\tthis.match(SolidityParser.VirtualKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 6:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 467;\n\t\t\t\t\tthis.stateMutability();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 7:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 468;\n\t\t\t\t\tthis.modifierInvocation();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 8:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 469;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 474;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventDefinition(): EventDefinitionContext {\n\t\tlet _localctx: EventDefinitionContext = new EventDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 52, SolidityParser.RULE_eventDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 475;\n\t\t\tthis.match(SolidityParser.T__31);\n\t\t\tthis.state = 476;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 477;\n\t\t\tthis.eventParameterList();\n\t\t\tthis.state = 479;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.AnonymousKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 478;\n\t\t\t\tthis.match(SolidityParser.AnonymousKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 481;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic enumValue(): EnumValueContext {\n\t\tlet _localctx: EnumValueContext = new EnumValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 54, SolidityParser.RULE_enumValue);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 483;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic enumDefinition(): EnumDefinitionContext {\n\t\tlet _localctx: EnumDefinitionContext = new EnumDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 56, SolidityParser.RULE_enumDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 485;\n\t\t\tthis.match(SolidityParser.T__32);\n\t\t\tthis.state = 486;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 487;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 489;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 488;\n\t\t\t\tthis.enumValue();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 495;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 491;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 492;\n\t\t\t\tthis.enumValue();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 497;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 498;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic parameterList(): ParameterListContext {\n\t\tlet _localctx: ParameterListContext = new ParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 58, SolidityParser.RULE_parameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 500;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 509;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 501;\n\t\t\t\tthis.parameter();\n\t\t\t\tthis.state = 506;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 502;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 503;\n\t\t\t\t\tthis.parameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 508;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 511;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic parameter(): ParameterContext {\n\t\tlet _localctx: ParameterContext = new ParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 60, SolidityParser.RULE_parameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 513;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 515;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 47, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 514;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 518;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 517;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventParameterList(): EventParameterListContext {\n\t\tlet _localctx: EventParameterListContext = new EventParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 62, SolidityParser.RULE_eventParameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 520;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 529;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 521;\n\t\t\t\tthis.eventParameter();\n\t\t\t\tthis.state = 526;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 522;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 523;\n\t\t\t\t\tthis.eventParameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 528;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 531;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventParameter(): EventParameterContext {\n\t\tlet _localctx: EventParameterContext = new EventParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 64, SolidityParser.RULE_eventParameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 533;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 535;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.IndexedKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 534;\n\t\t\t\tthis.match(SolidityParser.IndexedKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 538;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 537;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeParameterList(): FunctionTypeParameterListContext {\n\t\tlet _localctx: FunctionTypeParameterListContext = new FunctionTypeParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 66, SolidityParser.RULE_functionTypeParameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 540;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 549;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 541;\n\t\t\t\tthis.functionTypeParameter();\n\t\t\t\tthis.state = 546;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 542;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 543;\n\t\t\t\t\tthis.functionTypeParameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 548;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 551;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeParameter(): FunctionTypeParameterContext {\n\t\tlet _localctx: FunctionTypeParameterContext = new FunctionTypeParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 68, SolidityParser.RULE_functionTypeParameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 553;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 555;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (SolidityParser.T__39 - 40)) | (1 << (SolidityParser.T__40 - 40)) | (1 << (SolidityParser.T__41 - 40)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 554;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclaration(): VariableDeclarationContext {\n\t\tlet _localctx: VariableDeclarationContext = new VariableDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 70, SolidityParser.RULE_variableDeclaration);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 557;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 559;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 56, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 558;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 561;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic typeName(): TypeNameContext;\n\tpublic typeName(_p: number): TypeNameContext;\n\t// @RuleVersion(0)\n\tpublic typeName(_p?: number): TypeNameContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet _localctx: TypeNameContext = new TypeNameContext(this._ctx, _parentState);\n\t\tlet _prevctx: TypeNameContext = _localctx;\n\t\tlet _startState: number = 72;\n\t\tthis.enterRecursionRule(_localctx, 72, SolidityParser.RULE_typeName, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 570;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 57, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 564;\n\t\t\t\tthis.elementaryTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 565;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 566;\n\t\t\t\tthis.mapping();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\t{\n\t\t\t\tthis.state = 567;\n\t\t\t\tthis.functionTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tthis.state = 568;\n\t\t\t\tthis.match(SolidityParser.T__35);\n\t\t\t\tthis.state = 569;\n\t\t\t\tthis.match(SolidityParser.PayableKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._ctx._stop = this._input.tryLT(-1);\n\t\t\tthis.state = 580;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = _localctx;\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t_localctx = new TypeNameContext(_parentctx, _parentState);\n\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_typeName);\n\t\t\t\t\tthis.state = 572;\n\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 573;\n\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\tthis.state = 575;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 574;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.state = 577;\n\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 582;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext {\n\t\tlet _localctx: UserDefinedTypeNameContext = new UserDefinedTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 74, SolidityParser.RULE_userDefinedTypeName);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 583;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 588;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 584;\n\t\t\t\t\tthis.match(SolidityParser.T__36);\n\t\t\t\t\tthis.state = 585;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 590;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic mappingKey(): MappingKeyContext {\n\t\tlet _localctx: MappingKeyContext = new MappingKeyContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 76, SolidityParser.RULE_mappingKey);\n\t\ttry {\n\t\t\tthis.state = 593;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 591;\n\t\t\t\tthis.elementaryTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 592;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic mapping(): MappingContext {\n\t\tlet _localctx: MappingContext = new MappingContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 78, SolidityParser.RULE_mapping);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 595;\n\t\t\tthis.match(SolidityParser.T__37);\n\t\t\tthis.state = 596;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 597;\n\t\t\tthis.mappingKey();\n\t\t\tthis.state = 598;\n\t\t\tthis.match(SolidityParser.T__38);\n\t\t\tthis.state = 599;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 600;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeName(): FunctionTypeNameContext {\n\t\tlet _localctx: FunctionTypeNameContext = new FunctionTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 80, SolidityParser.RULE_functionTypeName);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 602;\n\t\t\tthis.match(SolidityParser.T__29);\n\t\t\tthis.state = 603;\n\t\t\tthis.functionTypeParameterList();\n\t\t\tthis.state = 609;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 63, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 607;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\t\tcase SolidityParser.InternalKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 604;\n\t\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SolidityParser.ExternalKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 605;\n\t\t\t\t\t\tthis.match(SolidityParser.ExternalKeyword);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SolidityParser.ConstantKeyword:\n\t\t\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\t\t\tcase SolidityParser.PureKeyword:\n\t\t\t\t\tcase SolidityParser.ViewKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 606;\n\t\t\t\t\t\tthis.stateMutability();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 611;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 63, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 614;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 64, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 612;\n\t\t\t\tthis.match(SolidityParser.T__30);\n\t\t\t\tthis.state = 613;\n\t\t\t\tthis.functionTypeParameterList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic storageLocation(): StorageLocationContext {\n\t\tlet _localctx: StorageLocationContext = new StorageLocationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 82, SolidityParser.RULE_storageLocation);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 616;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (SolidityParser.T__39 - 40)) | (1 << (SolidityParser.T__40 - 40)) | (1 << (SolidityParser.T__41 - 40)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stateMutability(): StateMutabilityContext {\n\t\tlet _localctx: StateMutabilityContext = new StateMutabilityContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 84, SolidityParser.RULE_stateMutability);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 618;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & ((1 << (SolidityParser.ConstantKeyword - 111)) | (1 << (SolidityParser.PayableKeyword - 111)) | (1 << (SolidityParser.PureKeyword - 111)) | (1 << (SolidityParser.ViewKeyword - 111)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic block(): BlockContext {\n\t\tlet _localctx: BlockContext = new BlockContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 86, SolidityParser.RULE_block);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 620;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 624;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__14 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__26 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__42 - 38)) | (1 << (SolidityParser.T__44 - 38)) | (1 << (SolidityParser.T__46 - 38)) | (1 << (SolidityParser.T__47 - 38)) | (1 << (SolidityParser.T__48 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__50 - 38)) | (1 << (SolidityParser.T__51 - 38)) | (1 << (SolidityParser.T__52 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.BreakKeyword - 96)) | (1 << (SolidityParser.ContinueKeyword - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 621;\n\t\t\t\tthis.statement();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 626;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 627;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic statement(): StatementContext {\n\t\tlet _localctx: StatementContext = new StatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 88, SolidityParser.RULE_statement);\n\t\ttry {\n\t\t\tthis.state = 644;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 629;\n\t\t\t\tthis.ifStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 630;\n\t\t\t\tthis.tryStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 631;\n\t\t\t\tthis.whileStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 632;\n\t\t\t\tthis.forStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 633;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 634;\n\t\t\t\tthis.inlineAssemblyStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 635;\n\t\t\t\tthis.doWhileStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 636;\n\t\t\t\tthis.continueStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 637;\n\t\t\t\tthis.breakStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 10:\n\t\t\t\tthis.enterOuterAlt(_localctx, 10);\n\t\t\t\t{\n\t\t\t\tthis.state = 638;\n\t\t\t\tthis.returnStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 11:\n\t\t\t\tthis.enterOuterAlt(_localctx, 11);\n\t\t\t\t{\n\t\t\t\tthis.state = 639;\n\t\t\t\tthis.throwStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 12:\n\t\t\t\tthis.enterOuterAlt(_localctx, 12);\n\t\t\t\t{\n\t\t\t\tthis.state = 640;\n\t\t\t\tthis.emitStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 13:\n\t\t\t\tthis.enterOuterAlt(_localctx, 13);\n\t\t\t\t{\n\t\t\t\tthis.state = 641;\n\t\t\t\tthis.simpleStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 14);\n\t\t\t\t{\n\t\t\t\tthis.state = 642;\n\t\t\t\tthis.uncheckedStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 15:\n\t\t\t\tthis.enterOuterAlt(_localctx, 15);\n\t\t\t\t{\n\t\t\t\tthis.state = 643;\n\t\t\t\tthis.revertStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic expressionStatement(): ExpressionStatementContext {\n\t\tlet _localctx: ExpressionStatementContext = new ExpressionStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 90, SolidityParser.RULE_expressionStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 646;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 647;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic ifStatement(): IfStatementContext {\n\t\tlet _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 92, SolidityParser.RULE_ifStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 649;\n\t\t\tthis.match(SolidityParser.T__42);\n\t\t\tthis.state = 650;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 651;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 652;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 653;\n\t\t\tthis.statement();\n\t\t\tthis.state = 656;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 654;\n\t\t\t\tthis.match(SolidityParser.T__43);\n\t\t\t\tthis.state = 655;\n\t\t\t\tthis.statement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic tryStatement(): TryStatementContext {\n\t\tlet _localctx: TryStatementContext = new TryStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 94, SolidityParser.RULE_tryStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 658;\n\t\t\tthis.match(SolidityParser.T__44);\n\t\t\tthis.state = 659;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 661;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__30) {\n\t\t\t\t{\n\t\t\t\tthis.state = 660;\n\t\t\t\tthis.returnParameters();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 663;\n\t\t\tthis.block();\n\t\t\tthis.state = 665;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tdo {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 664;\n\t\t\t\tthis.catchClause();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 667;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t} while (_la === SolidityParser.T__45);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic catchClause(): CatchClauseContext {\n\t\tlet _localctx: CatchClauseContext = new CatchClauseContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 96, SolidityParser.RULE_catchClause);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 669;\n\t\t\tthis.match(SolidityParser.T__45);\n\t\t\tthis.state = 674;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24))) !== 0) || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 671;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 670;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 673;\n\t\t\t\tthis.parameterList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 676;\n\t\t\tthis.block();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic whileStatement(): WhileStatementContext {\n\t\tlet _localctx: WhileStatementContext = new WhileStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 98, SolidityParser.RULE_whileStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 678;\n\t\t\tthis.match(SolidityParser.T__46);\n\t\t\tthis.state = 679;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 680;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 681;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 682;\n\t\t\tthis.statement();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic simpleStatement(): SimpleStatementContext {\n\t\tlet _localctx: SimpleStatementContext = new SimpleStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 100, SolidityParser.RULE_simpleStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 686;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 72, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 684;\n\t\t\t\tthis.variableDeclarationStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 685;\n\t\t\t\tthis.expressionStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic uncheckedStatement(): UncheckedStatementContext {\n\t\tlet _localctx: UncheckedStatementContext = new UncheckedStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 102, SolidityParser.RULE_uncheckedStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 688;\n\t\t\tthis.match(SolidityParser.T__47);\n\t\t\tthis.state = 689;\n\t\t\tthis.block();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic forStatement(): ForStatementContext {\n\t\tlet _localctx: ForStatementContext = new ForStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 104, SolidityParser.RULE_forStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 691;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 692;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 695;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 693;\n\t\t\t\tthis.simpleStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 694;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 699;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 697;\n\t\t\t\tthis.expressionStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 698;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 702;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 701;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 704;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 705;\n\t\t\tthis.statement();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inlineAssemblyStatement(): InlineAssemblyStatementContext {\n\t\tlet _localctx: InlineAssemblyStatementContext = new InlineAssemblyStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 106, SolidityParser.RULE_inlineAssemblyStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 707;\n\t\t\tthis.match(SolidityParser.T__48);\n\t\t\tthis.state = 709;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.StringLiteralFragment) {\n\t\t\t\t{\n\t\t\t\tthis.state = 708;\n\t\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 715;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 711;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 712;\n\t\t\t\tthis.inlineAssemblyStatementFlag();\n\t\t\t\tthis.state = 713;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 717;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext {\n\t\tlet _localctx: InlineAssemblyStatementFlagContext = new InlineAssemblyStatementFlagContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 108, SolidityParser.RULE_inlineAssemblyStatementFlag);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 719;\n\t\t\tthis.stringLiteral();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic doWhileStatement(): DoWhileStatementContext {\n\t\tlet _localctx: DoWhileStatementContext = new DoWhileStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 110, SolidityParser.RULE_doWhileStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 721;\n\t\t\tthis.match(SolidityParser.T__49);\n\t\t\tthis.state = 722;\n\t\t\tthis.statement();\n\t\t\tthis.state = 723;\n\t\t\tthis.match(SolidityParser.T__46);\n\t\t\tthis.state = 724;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 725;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 726;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 727;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic continueStatement(): ContinueStatementContext {\n\t\tlet _localctx: ContinueStatementContext = new ContinueStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 112, SolidityParser.RULE_continueStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 729;\n\t\t\tthis.match(SolidityParser.ContinueKeyword);\n\t\t\tthis.state = 730;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic breakStatement(): BreakStatementContext {\n\t\tlet _localctx: BreakStatementContext = new BreakStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 114, SolidityParser.RULE_breakStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 732;\n\t\t\tthis.match(SolidityParser.BreakKeyword);\n\t\t\tthis.state = 733;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic returnStatement(): ReturnStatementContext {\n\t\tlet _localctx: ReturnStatementContext = new ReturnStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 116, SolidityParser.RULE_returnStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 735;\n\t\t\tthis.match(SolidityParser.T__50);\n\t\t\tthis.state = 737;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 736;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 739;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic throwStatement(): ThrowStatementContext {\n\t\tlet _localctx: ThrowStatementContext = new ThrowStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 118, SolidityParser.RULE_throwStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 741;\n\t\t\tthis.match(SolidityParser.T__51);\n\t\t\tthis.state = 742;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic emitStatement(): EmitStatementContext {\n\t\tlet _localctx: EmitStatementContext = new EmitStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 120, SolidityParser.RULE_emitStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 744;\n\t\t\tthis.match(SolidityParser.T__52);\n\t\t\tthis.state = 745;\n\t\t\tthis.functionCall();\n\t\t\tthis.state = 746;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic revertStatement(): RevertStatementContext {\n\t\tlet _localctx: RevertStatementContext = new RevertStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 122, SolidityParser.RULE_revertStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 748;\n\t\t\tthis.match(SolidityParser.T__53);\n\t\t\tthis.state = 749;\n\t\t\tthis.functionCall();\n\t\t\tthis.state = 750;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclarationStatement(): VariableDeclarationStatementContext {\n\t\tlet _localctx: VariableDeclarationStatementContext = new VariableDeclarationStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 124, SolidityParser.RULE_variableDeclarationStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 759;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 79, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 752;\n\t\t\t\tthis.match(SolidityParser.T__54);\n\t\t\t\tthis.state = 753;\n\t\t\t\tthis.identifierList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 754;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 755;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 756;\n\t\t\t\tthis.variableDeclarationList();\n\t\t\t\tthis.state = 757;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 763;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__10) {\n\t\t\t\t{\n\t\t\t\tthis.state = 761;\n\t\t\t\tthis.match(SolidityParser.T__10);\n\t\t\t\tthis.state = 762;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 765;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclarationList(): VariableDeclarationListContext {\n\t\tlet _localctx: VariableDeclarationListContext = new VariableDeclarationListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 126, SolidityParser.RULE_variableDeclarationList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 768;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 767;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 776;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 770;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 772;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 771;\n\t\t\t\t\tthis.variableDeclaration();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 778;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic identifierList(): IdentifierListContext {\n\t\tlet _localctx: IdentifierListContext = new IdentifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 128, SolidityParser.RULE_identifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 779;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 786;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 781;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 780;\n\t\t\t\t\t\tthis.identifier();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.state = 783;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 788;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 790;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 789;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 792;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic elementaryTypeName(): ElementaryTypeNameContext {\n\t\tlet _localctx: ElementaryTypeNameContext = new ElementaryTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 130, SolidityParser.RULE_elementaryTypeName);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 794;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (SolidityParser.Int - 98)) | (1 << (SolidityParser.Uint - 98)) | (1 << (SolidityParser.Byte - 98)) | (1 << (SolidityParser.Fixed - 98)) | (1 << (SolidityParser.Ufixed - 98)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic expression(): ExpressionContext;\n\tpublic expression(_p: number): ExpressionContext;\n\t// @RuleVersion(0)\n\tpublic expression(_p?: number): ExpressionContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet _localctx: ExpressionContext = new ExpressionContext(this._ctx, _parentState);\n\t\tlet _prevctx: ExpressionContext = _localctx;\n\t\tlet _startState: number = 132;\n\t\tthis.enterRecursionRule(_localctx, 132, SolidityParser.RULE_expression, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 814;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 87, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 797;\n\t\t\t\tthis.match(SolidityParser.T__60);\n\t\t\t\tthis.state = 798;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 799;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 800;\n\t\t\t\tthis.expression(0);\n\t\t\t\tthis.state = 801;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 803;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__58 || _la === SolidityParser.T__59)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 804;\n\t\t\t\tthis.expression(19);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\t{\n\t\t\t\tthis.state = 805;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__62 || _la === SolidityParser.T__63)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 806;\n\t\t\t\tthis.expression(18);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tthis.state = 807;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__64 || _la === SolidityParser.T__65)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 808;\n\t\t\t\tthis.expression(17);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\t{\n\t\t\t\tthis.state = 809;\n\t\t\t\tthis.match(SolidityParser.T__66);\n\t\t\t\tthis.state = 810;\n\t\t\t\tthis.expression(16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\t{\n\t\t\t\tthis.state = 811;\n\t\t\t\tthis.match(SolidityParser.T__5);\n\t\t\t\tthis.state = 812;\n\t\t\t\tthis.expression(15);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\t{\n\t\t\t\tthis.state = 813;\n\t\t\t\tthis.primaryExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._ctx._stop = this._input.tryLT(-1);\n\t\t\tthis.state = 890;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = _localctx;\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 888;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 90, this._ctx) ) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 816;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 14))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 14)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 817;\n\t\t\t\t\t\tthis.match(SolidityParser.T__67);\n\t\t\t\t\t\tthis.state = 818;\n\t\t\t\t\t\tthis.expression(15);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 819;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 13))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 13)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 820;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__2 || _la === SolidityParser.T__68 || _la === SolidityParser.T__69)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 821;\n\t\t\t\t\t\tthis.expression(14);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 822;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 12))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 12)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 823;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__62 || _la === SolidityParser.T__63)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 824;\n\t\t\t\t\t\tthis.expression(13);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 825;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 11))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 11)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 826;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__70 || _la === SolidityParser.T__71)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 827;\n\t\t\t\t\t\tthis.expression(12);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 828;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 10))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 10)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 829;\n\t\t\t\t\t\tthis.match(SolidityParser.T__72);\n\t\t\t\t\t\tthis.state = 830;\n\t\t\t\t\t\tthis.expression(11);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 831;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 9))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 9)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 832;\n\t\t\t\t\t\tthis.match(SolidityParser.T__4);\n\t\t\t\t\t\tthis.state = 833;\n\t\t\t\t\t\tthis.expression(10);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 834;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 8))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 8)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 835;\n\t\t\t\t\t\tthis.match(SolidityParser.T__73);\n\t\t\t\t\t\tthis.state = 836;\n\t\t\t\t\t\tthis.expression(9);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 837;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 7))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 7)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 838;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9))) !== 0))) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 839;\n\t\t\t\t\t\tthis.expression(8);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 840;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 6))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 6)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 841;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__74 || _la === SolidityParser.T__75)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 842;\n\t\t\t\t\t\tthis.expression(7);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 843;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 5))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 5)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 844;\n\t\t\t\t\t\tthis.match(SolidityParser.T__76);\n\t\t\t\t\t\tthis.state = 845;\n\t\t\t\t\t\tthis.expression(6);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 11:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 846;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 4))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 4)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 847;\n\t\t\t\t\t\tthis.match(SolidityParser.T__3);\n\t\t\t\t\t\tthis.state = 848;\n\t\t\t\t\t\tthis.expression(5);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 849;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 850;\n\t\t\t\t\t\tthis.match(SolidityParser.T__77);\n\t\t\t\t\t\tthis.state = 851;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\tthis.state = 852;\n\t\t\t\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t\t\t\tthis.state = 853;\n\t\t\t\t\t\tthis.expression(4);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 855;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 2))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 2)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 856;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__10 || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & ((1 << (SolidityParser.T__78 - 79)) | (1 << (SolidityParser.T__79 - 79)) | (1 << (SolidityParser.T__80 - 79)) | (1 << (SolidityParser.T__81 - 79)) | (1 << (SolidityParser.T__82 - 79)) | (1 << (SolidityParser.T__83 - 79)) | (1 << (SolidityParser.T__84 - 79)) | (1 << (SolidityParser.T__85 - 79)) | (1 << (SolidityParser.T__86 - 79)) | (1 << (SolidityParser.T__87 - 79)))) !== 0))) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 857;\n\t\t\t\t\t\tthis.expression(3);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 14:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 858;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 27))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 27)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 859;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__58 || _la === SolidityParser.T__59)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 15:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 860;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 25))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 25)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 861;\n\t\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\t\tthis.state = 862;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\tthis.state = 863;\n\t\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 865;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 24))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 24)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 866;\n\t\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\t\tthis.state = 868;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.state = 867;\n\t\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.state = 870;\n\t\t\t\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t\t\t\tthis.state = 872;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.state = 871;\n\t\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.state = 874;\n\t\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 17:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 875;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 23))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 23)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 876;\n\t\t\t\t\t\tthis.match(SolidityParser.T__36);\n\t\t\t\t\t\tthis.state = 877;\n\t\t\t\t\t\tthis.identifier();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 18:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 878;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 22))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 22)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 879;\n\t\t\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\t\t\tthis.state = 880;\n\t\t\t\t\t\tthis.nameValueList();\n\t\t\t\t\t\tthis.state = 881;\n\t\t\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 19:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 883;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 21))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 21)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 884;\n\t\t\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\t\t\tthis.state = 885;\n\t\t\t\t\t\tthis.functionCallArguments();\n\t\t\t\t\t\tthis.state = 886;\n\t\t\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 892;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic primaryExpression(): PrimaryExpressionContext {\n\t\tlet _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 134, SolidityParser.RULE_primaryExpression);\n\t\ttry {\n\t\t\tthis.state = 902;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 92, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 893;\n\t\t\t\tthis.match(SolidityParser.BooleanLiteral);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 894;\n\t\t\t\tthis.numberLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 895;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 896;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 897;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 898;\n\t\t\t\tthis.match(SolidityParser.TypeKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 899;\n\t\t\t\tthis.match(SolidityParser.PayableKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 900;\n\t\t\t\tthis.tupleExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 901;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic expressionList(): ExpressionListContext {\n\t\tlet _localctx: ExpressionListContext = new ExpressionListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 136, SolidityParser.RULE_expressionList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 904;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 909;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 905;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 906;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 911;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nameValueList(): NameValueListContext {\n\t\tlet _localctx: NameValueListContext = new NameValueListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 138, SolidityParser.RULE_nameValueList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 912;\n\t\t\tthis.nameValue();\n\t\t\tthis.state = 917;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 913;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 914;\n\t\t\t\t\tthis.nameValue();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 919;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 921;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\tthis.state = 920;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nameValue(): NameValueContext {\n\t\tlet _localctx: NameValueContext = new NameValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 140, SolidityParser.RULE_nameValue);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 923;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 924;\n\t\t\tthis.match(SolidityParser.T__61);\n\t\t\tthis.state = 925;\n\t\t\tthis.expression(0);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCallArguments(): FunctionCallArgumentsContext {\n\t\tlet _localctx: FunctionCallArgumentsContext = new FunctionCallArgumentsContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 142, SolidityParser.RULE_functionCallArguments);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 935;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 927;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 929;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 928;\n\t\t\t\t\tthis.nameValueList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 931;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__23:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 933;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 932;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCall(): FunctionCallContext {\n\t\tlet _localctx: FunctionCallContext = new FunctionCallContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 144, SolidityParser.RULE_functionCall);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 937;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 938;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 939;\n\t\t\tthis.functionCallArguments();\n\t\t\tthis.state = 940;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\tlet _localctx: AssemblyBlockContext = new AssemblyBlockContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 146, SolidityParser.RULE_assemblyBlock);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 942;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 946;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__14) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__26) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__42 - 36)) | (1 << (SolidityParser.T__48 - 36)) | (1 << (SolidityParser.T__50 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 89)) & ~0x1F) === 0 && ((1 << (_la - 89)) & ((1 << (SolidityParser.T__88 - 89)) | (1 << (SolidityParser.T__91 - 89)) | (1 << (SolidityParser.T__95 - 89)) | (1 << (SolidityParser.DecimalNumber - 89)) | (1 << (SolidityParser.HexNumber - 89)) | (1 << (SolidityParser.HexLiteralFragment - 89)) | (1 << (SolidityParser.BreakKeyword - 89)) | (1 << (SolidityParser.ContinueKeyword - 89)) | (1 << (SolidityParser.LeaveKeyword - 89)) | (1 << (SolidityParser.PayableKeyword - 89)))) !== 0) || ((((_la - 126)) & ~0x1F) === 0 && ((1 << (_la - 126)) & ((1 << (SolidityParser.ConstructorKeyword - 126)) | (1 << (SolidityParser.ReceiveKeyword - 126)) | (1 << (SolidityParser.Identifier - 126)) | (1 << (SolidityParser.StringLiteralFragment - 126)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 943;\n\t\t\t\tthis.assemblyItem();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 948;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 949;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyItem(): AssemblyItemContext {\n\t\tlet _localctx: AssemblyItemContext = new AssemblyItemContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 148, SolidityParser.RULE_assemblyItem);\n\t\ttry {\n\t\t\tthis.state = 969;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 100, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 951;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 952;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 953;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 954;\n\t\t\t\tthis.assemblyLocalDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 955;\n\t\t\t\tthis.assemblyAssignment();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 956;\n\t\t\t\tthis.assemblyStackAssignment();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 957;\n\t\t\t\tthis.labelDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 958;\n\t\t\t\tthis.assemblySwitch();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 959;\n\t\t\t\tthis.assemblyFunctionDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 10:\n\t\t\t\tthis.enterOuterAlt(_localctx, 10);\n\t\t\t\t{\n\t\t\t\tthis.state = 960;\n\t\t\t\tthis.assemblyFor();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 11:\n\t\t\t\tthis.enterOuterAlt(_localctx, 11);\n\t\t\t\t{\n\t\t\t\tthis.state = 961;\n\t\t\t\tthis.assemblyIf();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 12:\n\t\t\t\tthis.enterOuterAlt(_localctx, 12);\n\t\t\t\t{\n\t\t\t\tthis.state = 962;\n\t\t\t\tthis.match(SolidityParser.BreakKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 13:\n\t\t\t\tthis.enterOuterAlt(_localctx, 13);\n\t\t\t\t{\n\t\t\t\tthis.state = 963;\n\t\t\t\tthis.match(SolidityParser.ContinueKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 14);\n\t\t\t\t{\n\t\t\t\tthis.state = 964;\n\t\t\t\tthis.match(SolidityParser.LeaveKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 15:\n\t\t\t\tthis.enterOuterAlt(_localctx, 15);\n\t\t\t\t{\n\t\t\t\tthis.state = 965;\n\t\t\t\tthis.subAssembly();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 16:\n\t\t\t\tthis.enterOuterAlt(_localctx, 16);\n\t\t\t\t{\n\t\t\t\tthis.state = 966;\n\t\t\t\tthis.numberLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 17:\n\t\t\t\tthis.enterOuterAlt(_localctx, 17);\n\t\t\t\t{\n\t\t\t\tthis.state = 967;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 18:\n\t\t\t\tthis.enterOuterAlt(_localctx, 18);\n\t\t\t\t{\n\t\t\t\tthis.state = 968;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\tlet _localctx: AssemblyExpressionContext = new AssemblyExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 150, SolidityParser.RULE_assemblyExpression);\n\t\ttry {\n\t\t\tthis.state = 974;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 101, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 971;\n\t\t\t\tthis.assemblyCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 972;\n\t\t\t\tthis.assemblyLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 973;\n\t\t\t\tthis.assemblyMember();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyMember(): AssemblyMemberContext {\n\t\tlet _localctx: AssemblyMemberContext = new AssemblyMemberContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 152, SolidityParser.RULE_assemblyMember);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 976;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 977;\n\t\t\tthis.match(SolidityParser.T__36);\n\t\t\tthis.state = 978;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyCall(): AssemblyCallContext {\n\t\tlet _localctx: AssemblyCallContext = new AssemblyCallContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 154, SolidityParser.RULE_assemblyCall);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 984;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__50:\n\t\t\t\t{\n\t\t\t\tthis.state = 980;\n\t\t\t\tthis.match(SolidityParser.T__50);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__35:\n\t\t\t\t{\n\t\t\t\tthis.state = 981;\n\t\t\t\tthis.match(SolidityParser.T__35);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__57:\n\t\t\t\t{\n\t\t\t\tthis.state = 982;\n\t\t\t\tthis.match(SolidityParser.T__57);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t{\n\t\t\t\tthis.state = 983;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 998;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 986;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 988;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__50 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 987;\n\t\t\t\t\tthis.assemblyExpression();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 994;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 990;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 991;\n\t\t\t\t\tthis.assemblyExpression();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 996;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 997;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyLocalDefinition(): AssemblyLocalDefinitionContext {\n\t\tlet _localctx: AssemblyLocalDefinitionContext = new AssemblyLocalDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 156, SolidityParser.RULE_assemblyLocalDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1000;\n\t\t\tthis.match(SolidityParser.T__88);\n\t\t\tthis.state = 1001;\n\t\t\tthis.assemblyIdentifierOrList();\n\t\t\tthis.state = 1004;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__89) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1002;\n\t\t\t\tthis.match(SolidityParser.T__89);\n\t\t\t\tthis.state = 1003;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyAssignment(): AssemblyAssignmentContext {\n\t\tlet _localctx: AssemblyAssignmentContext = new AssemblyAssignmentContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 158, SolidityParser.RULE_assemblyAssignment);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1006;\n\t\t\tthis.assemblyIdentifierOrList();\n\t\t\tthis.state = 1007;\n\t\t\tthis.match(SolidityParser.T__89);\n\t\t\tthis.state = 1008;\n\t\t\tthis.assemblyExpression();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\tlet _localctx: AssemblyIdentifierOrListContext = new AssemblyIdentifierOrListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 160, SolidityParser.RULE_assemblyIdentifierOrList);\n\t\ttry {\n\t\t\tthis.state = 1016;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 107, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1010;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1011;\n\t\t\t\tthis.assemblyMember();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 1012;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 1013;\n\t\t\t\tthis.assemblyIdentifierList();\n\t\t\t\tthis.state = 1014;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext {\n\t\tlet _localctx: AssemblyIdentifierListContext = new AssemblyIdentifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 162, SolidityParser.RULE_assemblyIdentifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1018;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1023;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 1019;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 1020;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1025;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyStackAssignment(): AssemblyStackAssignmentContext {\n\t\tlet _localctx: AssemblyStackAssignmentContext = new AssemblyStackAssignmentContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 164, SolidityParser.RULE_assemblyStackAssignment);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1026;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1027;\n\t\t\tthis.match(SolidityParser.T__90);\n\t\t\tthis.state = 1028;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic labelDefinition(): LabelDefinitionContext {\n\t\tlet _localctx: LabelDefinitionContext = new LabelDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 166, SolidityParser.RULE_labelDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1030;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1031;\n\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblySwitch(): AssemblySwitchContext {\n\t\tlet _localctx: AssemblySwitchContext = new AssemblySwitchContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 168, SolidityParser.RULE_assemblySwitch);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1033;\n\t\t\tthis.match(SolidityParser.T__91);\n\t\t\tthis.state = 1034;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1038;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__92 || _la === SolidityParser.T__93) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 1035;\n\t\t\t\tthis.assemblyCase();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1040;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyCase(): AssemblyCaseContext {\n\t\tlet _localctx: AssemblyCaseContext = new AssemblyCaseContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 170, SolidityParser.RULE_assemblyCase);\n\t\ttry {\n\t\t\tthis.state = 1047;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__92:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1041;\n\t\t\t\tthis.match(SolidityParser.T__92);\n\t\t\t\tthis.state = 1042;\n\t\t\t\tthis.assemblyLiteral();\n\t\t\t\tthis.state = 1043;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__93:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1045;\n\t\t\t\tthis.match(SolidityParser.T__93);\n\t\t\t\tthis.state = 1046;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext {\n\t\tlet _localctx: AssemblyFunctionDefinitionContext = new AssemblyFunctionDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 172, SolidityParser.RULE_assemblyFunctionDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1049;\n\t\t\tthis.match(SolidityParser.T__29);\n\t\t\tthis.state = 1050;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1051;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 1053;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1052;\n\t\t\t\tthis.assemblyIdentifierList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 1055;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 1057;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__94) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1056;\n\t\t\t\tthis.assemblyFunctionReturns();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 1059;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFunctionReturns(): AssemblyFunctionReturnsContext {\n\t\tlet _localctx: AssemblyFunctionReturnsContext = new AssemblyFunctionReturnsContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 174, SolidityParser.RULE_assemblyFunctionReturns);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\t{\n\t\t\tthis.state = 1061;\n\t\t\tthis.match(SolidityParser.T__94);\n\t\t\tthis.state = 1062;\n\t\t\tthis.assemblyIdentifierList();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFor(): AssemblyForContext {\n\t\tlet _localctx: AssemblyForContext = new AssemblyForContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 176, SolidityParser.RULE_assemblyFor);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1064;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 1067;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 1065;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__50:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 1066;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 1069;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1072;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 1070;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__50:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 1071;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 1074;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIf(): AssemblyIfContext {\n\t\tlet _localctx: AssemblyIfContext = new AssemblyIfContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 178, SolidityParser.RULE_assemblyIf);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1076;\n\t\t\tthis.match(SolidityParser.T__42);\n\t\t\tthis.state = 1077;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1078;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyLiteral(): AssemblyLiteralContext {\n\t\tlet _localctx: AssemblyLiteralContext = new AssemblyLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 180, SolidityParser.RULE_assemblyLiteral);\n\t\ttry {\n\t\t\tthis.state = 1084;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1080;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1081;\n\t\t\t\tthis.match(SolidityParser.DecimalNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 1082;\n\t\t\t\tthis.match(SolidityParser.HexNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 1083;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic subAssembly(): SubAssemblyContext {\n\t\tlet _localctx: SubAssemblyContext = new SubAssemblyContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 182, SolidityParser.RULE_subAssembly);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1086;\n\t\t\tthis.match(SolidityParser.T__48);\n\t\t\tthis.state = 1087;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1088;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic tupleExpression(): TupleExpressionContext {\n\t\tlet _localctx: TupleExpressionContext = new TupleExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 184, SolidityParser.RULE_tupleExpression);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 1116;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__22:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1090;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\t{\n\t\t\t\tthis.state = 1092;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1091;\n\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 1100;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1094;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 1096;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 1095;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 1102;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1103;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__33:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1104;\n\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\tthis.state = 1113;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1105;\n\t\t\t\t\tthis.expression(0);\n\t\t\t\t\tthis.state = 1110;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 1106;\n\t\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\t\tthis.state = 1107;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 1112;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 1115;\n\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic numberLiteral(): NumberLiteralContext {\n\t\tlet _localctx: NumberLiteralContext = new NumberLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 186, SolidityParser.RULE_numberLiteral);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1118;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(_la === SolidityParser.DecimalNumber || _la === SolidityParser.HexNumber)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\tthis.state = 1120;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 122, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 1119;\n\t\t\t\tthis.match(SolidityParser.NumberUnit);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic identifier(): IdentifierContext {\n\t\tlet _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 188, SolidityParser.RULE_identifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1122;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic hexLiteral(): HexLiteralContext {\n\t\tlet _localctx: HexLiteralContext = new HexLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 190, SolidityParser.RULE_hexLiteral);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1125;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = 1;\n\t\t\tdo {\n\t\t\t\tswitch (_alt) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1124;\n\t\t\t\t\tthis.match(SolidityParser.HexLiteralFragment);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 1127;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 123, this._ctx);\n\t\t\t} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic overrideSpecifier(): OverrideSpecifierContext {\n\t\tlet _localctx: OverrideSpecifierContext = new OverrideSpecifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 192, SolidityParser.RULE_overrideSpecifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1129;\n\t\t\tthis.match(SolidityParser.T__96);\n\t\t\tthis.state = 1141;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1130;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 1131;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\tthis.state = 1136;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1132;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 1133;\n\t\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 1138;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 1139;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stringLiteral(): StringLiteralContext {\n\t\tlet _localctx: StringLiteralContext = new StringLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 194, SolidityParser.RULE_stringLiteral);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1144;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = 1;\n\t\t\tdo {\n\t\t\t\tswitch (_alt) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1143;\n\t\t\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 1146;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 126, this._ctx);\n\t\t\t} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {\n\t\tswitch (ruleIndex) {\n\t\tcase 36:\n\t\t\treturn this.typeName_sempred(_localctx as TypeNameContext, predIndex);\n\n\t\tcase 66:\n\t\t\treturn this.expression_sempred(_localctx as ExpressionContext, predIndex);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate typeName_sempred(_localctx: TypeNameContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 0:\n\t\t\treturn this.precpred(this._ctx, 3);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate expression_sempred(_localctx: ExpressionContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 1:\n\t\t\treturn this.precpred(this._ctx, 14);\n\n\t\tcase 2:\n\t\t\treturn this.precpred(this._ctx, 13);\n\n\t\tcase 3:\n\t\t\treturn this.precpred(this._ctx, 12);\n\n\t\tcase 4:\n\t\t\treturn this.precpred(this._ctx, 11);\n\n\t\tcase 5:\n\t\t\treturn this.precpred(this._ctx, 10);\n\n\t\tcase 6:\n\t\t\treturn this.precpred(this._ctx, 9);\n\n\t\tcase 7:\n\t\t\treturn this.precpred(this._ctx, 8);\n\n\t\tcase 8:\n\t\t\treturn this.precpred(this._ctx, 7);\n\n\t\tcase 9:\n\t\t\treturn this.precpred(this._ctx, 6);\n\n\t\tcase 10:\n\t\t\treturn this.precpred(this._ctx, 5);\n\n\t\tcase 11:\n\t\t\treturn this.precpred(this._ctx, 4);\n\n\t\tcase 12:\n\t\t\treturn this.precpred(this._ctx, 3);\n\n\t\tcase 13:\n\t\t\treturn this.precpred(this._ctx, 2);\n\n\t\tcase 14:\n\t\t\treturn this.precpred(this._ctx, 27);\n\n\t\tcase 15:\n\t\t\treturn this.precpred(this._ctx, 25);\n\n\t\tcase 16:\n\t\t\treturn this.precpred(this._ctx, 24);\n\n\t\tcase 17:\n\t\t\treturn this.precpred(this._ctx, 23);\n\n\t\tcase 18:\n\t\t\treturn this.precpred(this._ctx, 22);\n\n\t\tcase 19:\n\t\t\treturn this.precpred(this._ctx, 21);\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate static readonly _serializedATNSegments: number = 3;\n\tprivate static readonly _serializedATNSegment0: string =\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x03\\x88\\u047F\\x04\" +\n\t\t\"\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\\x04\" +\n\t\t\"\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x04\\n\\t\\n\\x04\\v\\t\\v\\x04\\f\\t\\f\\x04\\r\\t\\r\" +\n\t\t\"\\x04\\x0E\\t\\x0E\\x04\\x0F\\t\\x0F\\x04\\x10\\t\\x10\\x04\\x11\\t\\x11\\x04\\x12\\t\\x12\" +\n\t\t\"\\x04\\x13\\t\\x13\\x04\\x14\\t\\x14\\x04\\x15\\t\\x15\\x04\\x16\\t\\x16\\x04\\x17\\t\\x17\" +\n\t\t\"\\x04\\x18\\t\\x18\\x04\\x19\\t\\x19\\x04\\x1A\\t\\x1A\\x04\\x1B\\t\\x1B\\x04\\x1C\\t\\x1C\" +\n\t\t\"\\x04\\x1D\\t\\x1D\\x04\\x1E\\t\\x1E\\x04\\x1F\\t\\x1F\\x04 \\t \\x04!\\t!\\x04\\\"\\t\\\"\\x04\" +\n\t\t\"#\\t#\\x04$\\t$\\x04%\\t%\\x04&\\t&\\x04\\'\\t\\'\\x04(\\t(\\x04)\\t)\\x04*\\t*\\x04+\\t\" +\n\t\t\"+\\x04,\\t,\\x04-\\t-\\x04.\\t.\\x04/\\t/\\x040\\t0\\x041\\t1\\x042\\t2\\x043\\t3\\x04\" +\n\t\t\"4\\t4\\x045\\t5\\x046\\t6\\x047\\t7\\x048\\t8\\x049\\t9\\x04:\\t:\\x04;\\t;\\x04<\\t<\\x04\" +\n\t\t\"=\\t=\\x04>\\t>\\x04?\\t?\\x04@\\t@\\x04A\\tA\\x04B\\tB\\x04C\\tC\\x04D\\tD\\x04E\\tE\\x04\" +\n\t\t\"F\\tF\\x04G\\tG\\x04H\\tH\\x04I\\tI\\x04J\\tJ\\x04K\\tK\\x04L\\tL\\x04M\\tM\\x04N\\tN\\x04\" +\n\t\t\"O\\tO\\x04P\\tP\\x04Q\\tQ\\x04R\\tR\\x04S\\tS\\x04T\\tT\\x04U\\tU\\x04V\\tV\\x04W\\tW\\x04\" +\n\t\t\"X\\tX\\x04Y\\tY\\x04Z\\tZ\\x04[\\t[\\x04\\\\\\t\\\\\\x04]\\t]\\x04^\\t^\\x04_\\t_\\x04`\\t\" +\n\t\t\"`\\x04a\\ta\\x04b\\tb\\x04c\\tc\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\" +\n\t\t\"\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x07\\x02\\xD1\\n\\x02\\f\\x02\\x0E\\x02\\xD4\" +\n\t\t\"\\v\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x04\" +\n\t\t\"\\x03\\x04\\x03\\x05\\x03\\x05\\x03\\x05\\x05\\x05\\xE2\\n\\x05\\x03\\x06\\x03\\x06\\x05\" +\n\t\t\"\\x06\\xE6\\n\\x06\\x03\\x06\\x07\\x06\\xE9\\n\\x06\\f\\x06\\x0E\\x06\\xEC\\v\\x06\\x03\\x07\" +\n\t\t\"\\x03\\x07\\x03\\b\\x05\\b\\xF1\\n\\b\\x03\\b\\x03\\b\\x05\\b\\xF5\\n\\b\\x03\\b\\x05\\b\\xF8\" +\n\t\t\"\\n\\b\\x03\\t\\x03\\t\\x03\\t\\x05\\t\\xFD\\n\\t\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u0103\" +\n\t\t\"\\n\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u010A\\n\\n\\x03\\n\\x03\\n\\x05\\n\\u010E\" +\n\t\t\"\\n\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x07\\n\\u0119\" +\n\t\t\"\\n\\n\\f\\n\\x0E\\n\\u011C\\v\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u0123\\n\\n\" +\n\t\t\"\\x03\\v\\x03\\v\\x03\\f\\x05\\f\\u0128\\n\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\" +\n\t\t\"\\x07\\f\\u0130\\n\\f\\f\\f\\x0E\\f\\u0133\\v\\f\\x05\\f\\u0135\\n\\f\\x03\\f\\x03\\f\\x07\\f\" +\n\t\t\"\\u0139\\n\\f\\f\\f\\x0E\\f\\u013C\\v\\f\\x03\\f\\x03\\f\\x03\\r\\x03\\r\\x03\\r\\x05\\r\\u0143\" +\n\t\t\"\\n\\r\\x03\\r\\x05\\r\\u0146\\n\\r\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\" +\n\t\t\"\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x05\\x0E\\u0151\\n\\x0E\\x03\\x0F\\x03\\x0F\\x03\\x0F\" +\n\t\t\"\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x07\\x0F\\u015A\\n\\x0F\\f\\x0F\\x0E\\x0F\\u015D\" +\n\t\t\"\\v\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x05\\x0F\\u0162\\n\\x0F\\x03\\x0F\\x03\\x0F\\x03\" +\n\t\t\"\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x11\\x03\\x11\\x03\" +\n\t\t\"\\x11\\x03\\x11\\x03\\x11\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\" +\n\t\t\"\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x05\\x13\\u017D\\n\\x13\\x03\\x13\\x05\\x13\" +\n\t\t\"\\u0180\\n\\x13\\x03\\x13\\x03\\x13\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x07\" +\n\t\t\"\\x14\\u0189\\n\\x14\\f\\x14\\x0E\\x14\\u018C\\v\\x14\\x03\\x14\\x03\\x14\\x05\\x14\\u0190\" +\n\t\t\"\\n\\x14\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\" +\n\t\t\"\\x07\\x15\\u019A\\n\\x15\\f\\x15\\x0E\\x15\\u019D\\v\\x15\\x05\\x15\\u019F\\n\\x15\\x03\" +\n\t\t\"\\x15\\x03\\x15\\x03\\x16\\x03\\x16\\x03\\x16\\x05\\x16\\u01A6\\n\\x16\\x03\\x16\\x03\\x16\" +\n\t\t\"\\x07\\x16\\u01AA\\n\\x16\\f\\x16\\x0E\\x16\\u01AD\\v\\x16\\x03\\x16\\x03\\x16\\x05\\x16\" +\n\t\t\"\\u01B1\\n\\x16\\x03\\x17\\x03\\x17\\x03\\x17\\x05\\x17\\u01B6\\n\\x17\\x03\\x17\\x05\\x17\" +\n\t\t\"\\u01B9\\n\\x17\\x03\\x18\\x03\\x18\\x03\\x18\\x03\\x18\\x05\\x18\\u01BF\\n\\x18\\x03\\x18\" +\n\t\t\"\\x03\\x18\\x05\\x18\\u01C3\\n\\x18\\x03\\x19\\x03\\x19\\x05\\x19\\u01C7\\n\\x19\\x03\\x19\" +\n\t\t\"\\x03\\x19\\x03\\x19\\x05\\x19\\u01CC\\n\\x19\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1B\\x03\" +\n\t\t\"\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x07\\x1B\\u01D9\\n\\x1B\" +\n\t\t\"\\f\\x1B\\x0E\\x1B\\u01DC\\v\\x1B\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x05\\x1C\\u01E2\" +\n\t\t\"\\n\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1D\\x03\\x1D\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\" +\n\t\t\"\\x05\\x1E\\u01EC\\n\\x1E\\x03\\x1E\\x03\\x1E\\x07\\x1E\\u01F0\\n\\x1E\\f\\x1E\\x0E\\x1E\" +\n\t\t\"\\u01F3\\v\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x07\\x1F\\u01FB\" +\n\t\t\"\\n\\x1F\\f\\x1F\\x0E\\x1F\\u01FE\\v\\x1F\\x05\\x1F\\u0200\\n\\x1F\\x03\\x1F\\x03\\x1F\\x03\" +\n\t\t\" \\x03 \\x05 \\u0206\\n \\x03 \\x05 \\u0209\\n \\x03!\\x03!\\x03!\\x03!\\x07!\\u020F\" +\n\t\t\"\\n!\\f!\\x0E!\\u0212\\v!\\x05!\\u0214\\n!\\x03!\\x03!\\x03\\\"\\x03\\\"\\x05\\\"\\u021A\\n\" +\n\t\t\"\\\"\\x03\\\"\\x05\\\"\\u021D\\n\\\"\\x03#\\x03#\\x03#\\x03#\\x07#\\u0223\\n#\\f#\\x0E#\\u0226\" +\n\t\t\"\\v#\\x05#\\u0228\\n#\\x03#\\x03#\\x03$\\x03$\\x05$\\u022E\\n$\\x03%\\x03%\\x05%\\u0232\" +\n\t\t\"\\n%\\x03%\\x03%\\x03&\\x03&\\x03&\\x03&\\x03&\\x03&\\x03&\\x05&\\u023D\\n&\\x03&\\x03\" +\n\t\t\"&\\x03&\\x05&\\u0242\\n&\\x03&\\x07&\\u0245\\n&\\f&\\x0E&\\u0248\\v&\\x03\\'\\x03\\'\\x03\" +\n\t\t\"\\'\\x07\\'\\u024D\\n\\'\\f\\'\\x0E\\'\\u0250\\v\\'\\x03(\\x03(\\x05(\\u0254\\n(\\x03)\\x03\" +\n\t\t\")\\x03)\\x03)\\x03)\\x03)\\x03)\\x03*\\x03*\\x03*\\x03*\\x03*\\x07*\\u0262\\n*\\f*\\x0E\" +\n\t\t\"*\\u0265\\v*\\x03*\\x03*\\x05*\\u0269\\n*\\x03+\\x03+\\x03,\\x03,\\x03-\\x03-\\x07-\" +\n\t\t\"\\u0271\\n-\\f-\\x0E-\\u0274\\v-\\x03-\\x03-\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03\" +\n\t\t\".\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x05.\\u0287\\n.\\x03/\\x03/\\x03\" +\n\t\t\"/\\x030\\x030\\x030\\x030\\x030\\x030\\x030\\x050\\u0293\\n0\\x031\\x031\\x031\\x05\" +\n\t\t\"1\\u0298\\n1\\x031\\x031\\x061\\u029C\\n1\\r1\\x0E1\\u029D\\x032\\x032\\x052\\u02A2\" +\n\t\t\"\\n2\\x032\\x052\\u02A5\\n2\\x032\\x032\\x033\\x033\\x033\\x033\\x033\\x033\\x034\\x03\" +\n\t\t\"4\\x054\\u02B1\\n4\\x035\\x035\\x035\\x036\\x036\\x036\\x036\\x056\\u02BA\\n6\\x036\" +\n\t\t\"\\x036\\x056\\u02BE\\n6\\x036\\x056\\u02C1\\n6\\x036\\x036\\x036\\x037\\x037\\x057\\u02C8\" +\n\t\t\"\\n7\\x037\\x037\\x037\\x037\\x057\\u02CE\\n7\\x037\\x037\\x038\\x038\\x039\\x039\\x03\" +\n\t\t\"9\\x039\\x039\\x039\\x039\\x039\\x03:\\x03:\\x03:\\x03;\\x03;\\x03;\\x03<\\x03<\\x05\" +\n\t\t\"<\\u02E4\\n<\\x03<\\x03<\\x03=\\x03=\\x03=\\x03>\\x03>\\x03>\\x03>\\x03?\\x03?\\x03\" +\n\t\t\"?\\x03?\\x03@\\x03@\\x03@\\x03@\\x03@\\x03@\\x03@\\x05@\\u02FA\\n@\\x03@\\x03@\\x05\" +\n\t\t\"@\\u02FE\\n@\\x03@\\x03@\\x03A\\x05A\\u0303\\nA\\x03A\\x03A\\x05A\\u0307\\nA\\x07A\\u0309\" +\n\t\t\"\\nA\\fA\\x0EA\\u030C\\vA\\x03B\\x03B\\x05B\\u0310\\nB\\x03B\\x07B\\u0313\\nB\\fB\\x0E\" +\n\t\t\"B\\u0316\\vB\\x03B\\x05B\\u0319\\nB\\x03B\\x03B\\x03C\\x03C\\x03D\\x03D\\x03D\\x03D\" +\n\t\t\"\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x05D\\u0331\\nD\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x05\" +\n\t\t\"D\\u0367\\nD\\x03D\\x03D\\x05D\\u036B\\nD\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\" +\n\t\t\"\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x07D\\u037B\\nD\\fD\\x0ED\\u037E\\vD\\x03\" +\n\t\t\"E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x05E\\u0389\\nE\\x03F\\x03F\\x03\" +\n\t\t\"F\\x07F\\u038E\\nF\\fF\\x0EF\\u0391\\vF\\x03G\\x03G\\x03G\\x07G\\u0396\\nG\\fG\\x0EG\" +\n\t\t\"\\u0399\\vG\\x03G\\x05G\\u039C\\nG\\x03H\\x03H\\x03H\\x03H\\x03I\\x03I\\x05I\\u03A4\" +\n\t\t\"\\nI\\x03I\\x03I\\x05I\\u03A8\\nI\\x05I\\u03AA\\nI\\x03J\\x03J\\x03J\\x03J\\x03J\\x03\" +\n\t\t\"K\\x03K\\x07K\\u03B3\\nK\\fK\\x0EK\\u03B6\\vK\\x03K\\x03K\\x03L\\x03L\\x03L\\x03L\\x03\" +\n\t\t\"L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x05\" +\n\t\t\"L\\u03CC\\nL\\x03M\\x03M\\x03M\\x05M\\u03D1\\nM\\x03N\\x03N\\x03N\\x03N\\x03O\\x03O\" +\n\t\t\"\\x03O\\x03O\\x05O\\u03DB\\nO\\x03O\\x03O\\x05O\\u03DF\\nO\\x03O\\x03O\\x07O\\u03E3\" +\n\t\t\"\\nO\\fO\\x0EO\\u03E6\\vO\\x03O\\x05O\\u03E9\\nO\\x03P\\x03P\\x03P\\x03P\\x05P\\u03EF\" +\n\t\t\"\\nP\\x03Q\\x03Q\\x03Q\\x03Q\\x03R\\x03R\\x03R\\x03R\\x03R\\x03R\\x05R\\u03FB\\nR\\x03\" +\n\t\t\"S\\x03S\\x03S\\x07S\\u0400\\nS\\fS\\x0ES\\u0403\\vS\\x03T\\x03T\\x03T\\x03T\\x03U\\x03\" +\n\t\t\"U\\x03U\\x03V\\x03V\\x03V\\x07V\\u040F\\nV\\fV\\x0EV\\u0412\\vV\\x03W\\x03W\\x03W\\x03\" +\n\t\t\"W\\x03W\\x03W\\x05W\\u041A\\nW\\x03X\\x03X\\x03X\\x03X\\x05X\\u0420\\nX\\x03X\\x03X\" +\n\t\t\"\\x05X\\u0424\\nX\\x03X\\x03X\\x03Y\\x03Y\\x03Y\\x03Z\\x03Z\\x03Z\\x05Z\\u042E\\nZ\\x03\" +\n\t\t\"Z\\x03Z\\x03Z\\x05Z\\u0433\\nZ\\x03Z\\x03Z\\x03[\\x03[\\x03[\\x03[\\x03\\\\\\x03\\\\\\x03\" +\n\t\t\"\\\\\\x03\\\\\\x05\\\\\\u043F\\n\\\\\\x03]\\x03]\\x03]\\x03]\\x03^\\x03^\\x05^\\u0447\\n^\\x03\" +\n\t\t\"^\\x03^\\x05^\\u044B\\n^\\x07^\\u044D\\n^\\f^\\x0E^\\u0450\\v^\\x03^\\x03^\\x03^\\x03\" +\n\t\t\"^\\x03^\\x07^\\u0457\\n^\\f^\\x0E^\\u045A\\v^\\x05^\\u045C\\n^\\x03^\\x05^\\u045F\\n\" +\n\t\t\"^\\x03_\\x03_\\x05_\\u0463\\n_\\x03`\\x03`\\x03a\\x06a\\u0468\\na\\ra\\x0Ea\\u0469\\x03\" +\n\t\t\"b\\x03b\\x03b\\x03b\\x03b\\x07b\\u0471\\nb\\fb\\x0Eb\\u0474\\vb\\x03b\\x03b\\x05b\\u0478\" +\n\t\t\"\\nb\\x03c\\x06c\\u047B\\nc\\rc\\x0Ec\\u047C\\x03c\\x02\\x02\\x04J\\x86d\\x02\\x02\\x04\" +\n\t\t\"\\x02\\x06\\x02\\b\\x02\\n\\x02\\f\\x02\\x0E\\x02\\x10\\x02\\x12\\x02\\x14\\x02\\x16\\x02\" +\n\t\t\"\\x18\\x02\\x1A\\x02\\x1C\\x02\\x1E\\x02 \\x02\\\"\\x02$\\x02&\\x02(\\x02*\\x02,\\x02.\" +\n\t\t\"\\x020\\x022\\x024\\x026\\x028\\x02:\\x02<\\x02>\\x02@\\x02B\\x02D\\x02F\\x02H\\x02\" +\n\t\t\"J\\x02L\\x02N\\x02P\\x02R\\x02T\\x02V\\x02X\\x02Z\\x02\\\\\\x02^\\x02`\\x02b\\x02d\\x02\" +\n\t\t\"f\\x02h\\x02j\\x02l\\x02n\\x02p\\x02r\\x02t\\x02v\\x02x\\x02z\\x02|\\x02~\\x02\\x80\" +\n\t\t\"\\x02\\x82\\x02\\x84\\x02\\x86\\x02\\x88\\x02\\x8A\\x02\\x8C\\x02\\x8E\\x02\\x90\\x02\\x92\" +\n\t\t\"\\x02\\x94\\x02\\x96\\x02\\x98\\x02\\x9A\\x02\\x9C\\x02\\x9E\\x02\\xA0\\x02\\xA2\\x02\\xA4\" +\n\t\t\"\\x02\\xA6\\x02\\xA8\\x02\\xAA\\x02\\xAC\\x02\\xAE\\x02\\xB0\\x02\\xB2\\x02\\xB4\\x02\\xB6\" +\n\t\t\"\\x02\\xB8\\x02\\xBA\\x02\\xBC\\x02\\xBE\\x02\\xC0\\x02\\xC2\\x02\\xC4\\x02\\x02\\x11\\x03\" +\n\t\t\"\\x02\\x07\\r\\x03\\x02\\x15\\x17\\x03\\x02*,\\x06\\x02qqxx||~~\\x05\\x02&&9\\x03\\x02AB\\x03\\x02CD\\x04\\x02\\x05\\x05GH\\x03\\x02IJ\\x03\\x02\\t\\f\\x03\" +\n\t\t\"\\x02MN\\x04\\x02\\r\\rQZ\\x03\\x02jk\\v\\x02\\x10\\x10\\x1B\\x1B,,88bbttxx\\x80\\x80\" +\n\t\t\"\\x82\\x83\\x02\\u04FE\\x02\\xD2\\x03\\x02\\x02\\x02\\x04\\xD7\\x03\\x02\\x02\\x02\\x06\" +\n\t\t\"\\xDC\\x03\\x02\\x02\\x02\\b\\xE1\\x03\\x02\\x02\\x02\\n\\xE3\\x03\\x02\\x02\\x02\\f\\xED\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x0E\\xF7\\x03\\x02\\x02\\x02\\x10\\xF9\\x03\\x02\\x02\\x02\\x12\\u0122\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x14\\u0124\\x03\\x02\\x02\\x02\\x16\\u0127\\x03\\x02\\x02\\x02\\x18\" +\n\t\t\"\\u013F\\x03\\x02\\x02\\x02\\x1A\\u0150\\x03\\x02\\x02\\x02\\x1C\\u0152\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x1E\\u0165\\x03\\x02\\x02\\x02 \\u016C\\x03\\x02\\x02\\x02\\\"\\u0171\\x03\\x02\" +\n\t\t\"\\x02\\x02$\\u0177\\x03\\x02\\x02\\x02&\\u018F\\x03\\x02\\x02\\x02(\\u0191\\x03\\x02\" +\n\t\t\"\\x02\\x02*\\u01A2\\x03\\x02\\x02\\x02,\\u01B2\\x03\\x02\\x02\\x02.\\u01BA\\x03\\x02\" +\n\t\t\"\\x02\\x020\\u01CB\\x03\\x02\\x02\\x022\\u01CD\\x03\\x02\\x02\\x024\\u01DA\\x03\\x02\" +\n\t\t\"\\x02\\x026\\u01DD\\x03\\x02\\x02\\x028\\u01E5\\x03\\x02\\x02\\x02:\\u01E7\\x03\\x02\" +\n\t\t\"\\x02\\x02<\\u01F6\\x03\\x02\\x02\\x02>\\u0203\\x03\\x02\\x02\\x02@\\u020A\\x03\\x02\" +\n\t\t\"\\x02\\x02B\\u0217\\x03\\x02\\x02\\x02D\\u021E\\x03\\x02\\x02\\x02F\\u022B\\x03\\x02\" +\n\t\t\"\\x02\\x02H\\u022F\\x03\\x02\\x02\\x02J\\u023C\\x03\\x02\\x02\\x02L\\u0249\\x03\\x02\" +\n\t\t\"\\x02\\x02N\\u0253\\x03\\x02\\x02\\x02P\\u0255\\x03\\x02\\x02\\x02R\\u025C\\x03\\x02\" +\n\t\t\"\\x02\\x02T\\u026A\\x03\\x02\\x02\\x02V\\u026C\\x03\\x02\\x02\\x02X\\u026E\\x03\\x02\" +\n\t\t\"\\x02\\x02Z\\u0286\\x03\\x02\\x02\\x02\\\\\\u0288\\x03\\x02\\x02\\x02^\\u028B\\x03\\x02\" +\n\t\t\"\\x02\\x02`\\u0294\\x03\\x02\\x02\\x02b\\u029F\\x03\\x02\\x02\\x02d\\u02A8\\x03\\x02\" +\n\t\t\"\\x02\\x02f\\u02B0\\x03\\x02\\x02\\x02h\\u02B2\\x03\\x02\\x02\\x02j\\u02B5\\x03\\x02\" +\n\t\t\"\\x02\\x02l\\u02C5\\x03\\x02\\x02\\x02n\\u02D1\\x03\\x02\\x02\\x02p\\u02D3\\x03\\x02\" +\n\t\t\"\\x02\\x02r\\u02DB\\x03\\x02\\x02\\x02t\\u02DE\\x03\\x02\\x02\\x02v\\u02E1\\x03\\x02\" +\n\t\t\"\\x02\\x02x\\u02E7\\x03\\x02\\x02\\x02z\\u02EA\\x03\\x02\\x02\\x02|\\u02EE\\x03\\x02\" +\n\t\t\"\\x02\\x02~\\u02F9\\x03\\x02\\x02\\x02\\x80\\u0302\\x03\\x02\\x02\\x02\\x82\\u030D\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x84\\u031C\\x03\\x02\\x02\\x02\\x86\\u0330\\x03\\x02\\x02\\x02\\x88\\u0388\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x8A\\u038A\\x03\\x02\\x02\\x02\\x8C\\u0392\\x03\\x02\\x02\\x02\\x8E\" +\n\t\t\"\\u039D\\x03\\x02\\x02\\x02\\x90\\u03A9\\x03\\x02\\x02\\x02\\x92\\u03AB\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x94\\u03B0\\x03\\x02\\x02\\x02\\x96\\u03CB\\x03\\x02\\x02\\x02\\x98\\u03D0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x9A\\u03D2\\x03\\x02\\x02\\x02\\x9C\\u03DA\\x03\\x02\\x02\\x02\\x9E\\u03EA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xA0\\u03F0\\x03\\x02\\x02\\x02\\xA2\\u03FA\\x03\\x02\\x02\\x02\\xA4\" +\n\t\t\"\\u03FC\\x03\\x02\\x02\\x02\\xA6\\u0404\\x03\\x02\\x02\\x02\\xA8\\u0408\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xAA\\u040B\\x03\\x02\\x02\\x02\\xAC\\u0419\\x03\\x02\\x02\\x02\\xAE\\u041B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xB0\\u0427\\x03\\x02\\x02\\x02\\xB2\\u042A\\x03\\x02\\x02\\x02\\xB4\\u0436\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xB6\\u043E\\x03\\x02\\x02\\x02\\xB8\\u0440\\x03\\x02\\x02\\x02\\xBA\" +\n\t\t\"\\u045E\\x03\\x02\\x02\\x02\\xBC\\u0460\\x03\\x02\\x02\\x02\\xBE\\u0464\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xC0\\u0467\\x03\\x02\\x02\\x02\\xC2\\u046B\\x03\\x02\\x02\\x02\\xC4\\u047A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xC6\\xD1\\x05\\x04\\x03\\x02\\xC7\\xD1\\x05\\x12\\n\\x02\\xC8\\xD1\\x05\" +\n\t\t\"\\x16\\f\\x02\\xC9\\xD1\\x05:\\x1E\\x02\\xCA\\xD1\\x05(\\x15\\x02\\xCB\\xD1\\x05.\\x18\" +\n\t\t\"\\x02\\xCC\\xD1\\x05\\x1E\\x10\\x02\\xCD\\xD1\\x05 \\x11\\x02\\xCE\\xD1\\x05\\\"\\x12\\x02\" +\n\t\t\"\\xCF\\xD1\\x05$\\x13\\x02\\xD0\\xC6\\x03\\x02\\x02\\x02\\xD0\\xC7\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xC8\\x03\\x02\\x02\\x02\\xD0\\xC9\\x03\\x02\\x02\\x02\\xD0\\xCA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xCB\\x03\\x02\\x02\\x02\\xD0\\xCC\\x03\\x02\\x02\\x02\\xD0\\xCD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xCE\\x03\\x02\\x02\\x02\\xD0\\xCF\\x03\\x02\\x02\\x02\\xD1\\xD4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD2\\xD0\\x03\\x02\\x02\\x02\\xD2\\xD3\\x03\\x02\\x02\\x02\\xD3\\xD5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD4\\xD2\\x03\\x02\\x02\\x02\\xD5\\xD6\\x07\\x02\\x02\\x03\\xD6\\x03\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD7\\xD8\\x07\\x03\\x02\\x02\\xD8\\xD9\\x05\\x06\\x04\\x02\\xD9\\xDA\\x05\\b\\x05\\x02\" +\n\t\t\"\\xDA\\xDB\\x07\\x04\\x02\\x02\\xDB\\x05\\x03\\x02\\x02\\x02\\xDC\\xDD\\x05\\xBE`\\x02\" +\n\t\t\"\\xDD\\x07\\x03\\x02\\x02\\x02\\xDE\\xE2\\x07\\x05\\x02\\x02\\xDF\\xE2\\x05\\n\\x06\\x02\" +\n\t\t\"\\xE0\\xE2\\x05\\x86D\\x02\\xE1\\xDE\\x03\\x02\\x02\\x02\\xE1\\xDF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xE1\\xE0\\x03\\x02\\x02\\x02\\xE2\\t\\x03\\x02\\x02\\x02\\xE3\\xEA\\x05\\x0E\\b\\x02\\xE4\" +\n\t\t\"\\xE6\\x07\\x06\\x02\\x02\\xE5\\xE4\\x03\\x02\\x02\\x02\\xE5\\xE6\\x03\\x02\\x02\\x02\\xE6\" +\n\t\t\"\\xE7\\x03\\x02\\x02\\x02\\xE7\\xE9\\x05\\x0E\\b\\x02\\xE8\\xE5\\x03\\x02\\x02\\x02\\xE9\" +\n\t\t\"\\xEC\\x03\\x02\\x02\\x02\\xEA\\xE8\\x03\\x02\\x02\\x02\\xEA\\xEB\\x03\\x02\\x02\\x02\\xEB\" +\n\t\t\"\\v\\x03\\x02\\x02\\x02\\xEC\\xEA\\x03\\x02\\x02\\x02\\xED\\xEE\\t\\x02\\x02\\x02\\xEE\\r\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xEF\\xF1\\x05\\f\\x07\\x02\\xF0\\xEF\\x03\\x02\\x02\\x02\\xF0\\xF1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF1\\xF2\\x03\\x02\\x02\\x02\\xF2\\xF8\\x07\\x85\\x02\\x02\\xF3\\xF5\" +\n\t\t\"\\x05\\f\\x07\\x02\\xF4\\xF3\\x03\\x02\\x02\\x02\\xF4\\xF5\\x03\\x02\\x02\\x02\\xF5\\xF6\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF6\\xF8\\x07j\\x02\\x02\\xF7\\xF0\\x03\\x02\\x02\\x02\\xF7\\xF4\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF8\\x0F\\x03\\x02\\x02\\x02\\xF9\\xFC\\x05\\xBE`\\x02\\xFA\\xFB\" +\n\t\t\"\\x07\\x0E\\x02\\x02\\xFB\\xFD\\x05\\xBE`\\x02\\xFC\\xFA\\x03\\x02\\x02\\x02\\xFC\\xFD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xFD\\x11\\x03\\x02\\x02\\x02\\xFE\\xFF\\x07\\x0F\\x02\\x02\\xFF\\u0102\" +\n\t\t\"\\x05\\x14\\v\\x02\\u0100\\u0101\\x07\\x0E\\x02\\x02\\u0101\\u0103\\x05\\xBE`\\x02\\u0102\" +\n\t\t\"\\u0100\\x03\\x02\\x02\\x02\\u0102\\u0103\\x03\\x02\\x02\\x02\\u0103\\u0104\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0104\\u0105\\x07\\x04\\x02\\x02\\u0105\\u0123\\x03\\x02\\x02\\x02\\u0106\" +\n\t\t\"\\u0109\\x07\\x0F\\x02\\x02\\u0107\\u010A\\x07\\x05\\x02\\x02\\u0108\\u010A\\x05\\xBE\" +\n\t\t\"`\\x02\\u0109\\u0107\\x03\\x02\\x02\\x02\\u0109\\u0108\\x03\\x02\\x02\\x02\\u010A\\u010D\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u010B\\u010C\\x07\\x0E\\x02\\x02\\u010C\\u010E\\x05\\xBE`\\x02\" +\n\t\t\"\\u010D\\u010B\\x03\\x02\\x02\\x02\\u010D\\u010E\\x03\\x02\\x02\\x02\\u010E\\u010F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u010F\\u0110\\x07\\x10\\x02\\x02\\u0110\\u0111\\x05\\x14\\v\\x02\\u0111\" +\n\t\t\"\\u0112\\x07\\x04\\x02\\x02\\u0112\\u0123\\x03\\x02\\x02\\x02\\u0113\\u0114\\x07\\x0F\" +\n\t\t\"\\x02\\x02\\u0114\\u0115\\x07\\x11\\x02\\x02\\u0115\\u011A\\x05\\x10\\t\\x02\\u0116\\u0117\" +\n\t\t\"\\x07\\x12\\x02\\x02\\u0117\\u0119\\x05\\x10\\t\\x02\\u0118\\u0116\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0119\\u011C\\x03\\x02\\x02\\x02\\u011A\\u0118\\x03\\x02\\x02\\x02\\u011A\\u011B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u011B\\u011D\\x03\\x02\\x02\\x02\\u011C\\u011A\\x03\\x02\\x02\\x02\\u011D\" +\n\t\t\"\\u011E\\x07\\x13\\x02\\x02\\u011E\\u011F\\x07\\x10\\x02\\x02\\u011F\\u0120\\x05\\x14\" +\n\t\t\"\\v\\x02\\u0120\\u0121\\x07\\x04\\x02\\x02\\u0121\\u0123\\x03\\x02\\x02\\x02\\u0122\\xFE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0122\\u0106\\x03\\x02\\x02\\x02\\u0122\\u0113\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0123\\x13\\x03\\x02\\x02\\x02\\u0124\\u0125\\x07\\x84\\x02\\x02\\u0125\\x15\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0126\\u0128\\x07\\x14\\x02\\x02\\u0127\\u0126\\x03\\x02\\x02\\x02\\u0127\" +\n\t\t\"\\u0128\\x03\\x02\\x02\\x02\\u0128\\u0129\\x03\\x02\\x02\\x02\\u0129\\u012A\\t\\x03\\x02\" +\n\t\t\"\\x02\\u012A\\u0134\\x05\\xBE`\\x02\\u012B\\u012C\\x07\\x18\\x02\\x02\\u012C\\u0131\" +\n\t\t\"\\x05\\x18\\r\\x02\\u012D\\u012E\\x07\\x12\\x02\\x02\\u012E\\u0130\\x05\\x18\\r\\x02\\u012F\" +\n\t\t\"\\u012D\\x03\\x02\\x02\\x02\\u0130\\u0133\\x03\\x02\\x02\\x02\\u0131\\u012F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0131\\u0132\\x03\\x02\\x02\\x02\\u0132\\u0135\\x03\\x02\\x02\\x02\\u0133\" +\n\t\t\"\\u0131\\x03\\x02\\x02\\x02\\u0134\\u012B\\x03\\x02\\x02\\x02\\u0134\\u0135\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0135\\u0136\\x03\\x02\\x02\\x02\\u0136\\u013A\\x07\\x11\\x02\\x02\\u0137\" +\n\t\t\"\\u0139\\x05\\x1A\\x0E\\x02\\u0138\\u0137\\x03\\x02\\x02\\x02\\u0139\\u013C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u013A\\u0138\\x03\\x02\\x02\\x02\\u013A\\u013B\\x03\\x02\\x02\\x02\\u013B\" +\n\t\t\"\\u013D\\x03\\x02\\x02\\x02\\u013C\\u013A\\x03\\x02\\x02\\x02\\u013D\\u013E\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u013E\\x17\\x03\\x02\\x02\\x02\\u013F\\u0145\\x05L\\'\\x02\\u0140\\u0142\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u0141\\u0143\\x05\\x8AF\\x02\\u0142\\u0141\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0142\\u0143\\x03\\x02\\x02\\x02\\u0143\\u0144\\x03\\x02\\x02\\x02\\u0144\\u0146\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u0145\\u0140\\x03\\x02\\x02\\x02\\u0145\\u0146\\x03\\x02\\x02\\x02\\u0146\" +\n\t\t\"\\x19\\x03\\x02\\x02\\x02\\u0147\\u0151\\x05\\x1C\\x0F\\x02\\u0148\\u0151\\x05$\\x13\" +\n\t\t\"\\x02\\u0149\\u0151\\x05(\\x15\\x02\\u014A\\u0151\\x05*\\x16\\x02\\u014B\\u0151\\x05\" +\n\t\t\".\\x18\\x02\\u014C\\u0151\\x056\\x1C\\x02\\u014D\\u0151\\x05:\\x1E\\x02\\u014E\\u0151\" +\n\t\t\"\\x05 \\x11\\x02\\u014F\\u0151\\x05\\\"\\x12\\x02\\u0150\\u0147\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u0148\\x03\\x02\\x02\\x02\\u0150\\u0149\\x03\\x02\\x02\\x02\\u0150\\u014A\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0150\\u014B\\x03\\x02\\x02\\x02\\u0150\\u014C\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u014D\\x03\\x02\\x02\\x02\\u0150\\u014E\\x03\\x02\\x02\\x02\\u0150\\u014F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0151\\x1B\\x03\\x02\\x02\\x02\\u0152\\u015B\\x05J&\\x02\\u0153\\u015A\\x07\" +\n\t\t\"z\\x02\\x02\\u0154\\u015A\\x07w\\x02\\x02\\u0155\\u015A\\x07y\\x02\\x02\\u0156\\u015A\" +\n\t\t\"\\x07q\\x02\\x02\\u0157\\u015A\\x07r\\x02\\x02\\u0158\\u015A\\x05\\xC2b\\x02\\u0159\" +\n\t\t\"\\u0153\\x03\\x02\\x02\\x02\\u0159\\u0154\\x03\\x02\\x02\\x02\\u0159\\u0155\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0159\\u0156\\x03\\x02\\x02\\x02\\u0159\\u0157\\x03\\x02\\x02\\x02\\u0159\" +\n\t\t\"\\u0158\\x03\\x02\\x02\\x02\\u015A\\u015D\\x03\\x02\\x02\\x02\\u015B\\u0159\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u015B\\u015C\\x03\\x02\\x02\\x02\\u015C\\u015E\\x03\\x02\\x02\\x02\\u015D\" +\n\t\t\"\\u015B\\x03\\x02\\x02\\x02\\u015E\\u0161\\x05\\xBE`\\x02\\u015F\\u0160\\x07\\r\\x02\" +\n\t\t\"\\x02\\u0160\\u0162\\x05\\x86D\\x02\\u0161\\u015F\\x03\\x02\\x02\\x02\\u0161\\u0162\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0162\\u0163\\x03\\x02\\x02\\x02\\u0163\\u0164\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u0164\\x1D\\x03\\x02\\x02\\x02\\u0165\\u0166\\x05J&\\x02\\u0166\\u0167\\x07q\\x02\" +\n\t\t\"\\x02\\u0167\\u0168\\x05\\xBE`\\x02\\u0168\\u0169\\x07\\r\\x02\\x02\\u0169\\u016A\\x05\" +\n\t\t\"\\x86D\\x02\\u016A\\u016B\\x07\\x04\\x02\\x02\\u016B\\x1F\\x03\\x02\\x02\\x02\\u016C\" +\n\t\t\"\\u016D\\x07\\x1B\\x02\\x02\\u016D\\u016E\\x05\\xBE`\\x02\\u016E\\u016F\\x05<\\x1F\\x02\" +\n\t\t\"\\u016F\\u0170\\x07\\x04\\x02\\x02\\u0170!\\x03\\x02\\x02\\x02\\u0171\\u0172\\x07}\\x02\" +\n\t\t\"\\x02\\u0172\\u0173\\x05\\xBE`\\x02\\u0173\\u0174\\x07\\x18\\x02\\x02\\u0174\\u0175\" +\n\t\t\"\\x05\\x84C\\x02\\u0175\\u0176\\x07\\x04\\x02\\x02\\u0176#\\x03\\x02\\x02\\x02\\u0177\" +\n\t\t\"\\u0178\\x07\\x1C\\x02\\x02\\u0178\\u0179\\x05&\\x14\\x02\\u0179\\u017C\\x07\\x1D\\x02\" +\n\t\t\"\\x02\\u017A\\u017D\\x07\\x05\\x02\\x02\\u017B\\u017D\\x05J&\\x02\\u017C\\u017A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u017C\\u017B\\x03\\x02\\x02\\x02\\u017D\\u017F\\x03\\x02\\x02\\x02\\u017E\" +\n\t\t\"\\u0180\\x07\\x7F\\x02\\x02\\u017F\\u017E\\x03\\x02\\x02\\x02\\u017F\\u0180\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0180\\u0181\\x03\\x02\\x02\\x02\\u0181\\u0182\\x07\\x04\\x02\\x02\\u0182\" +\n\t\t\"%\\x03\\x02\\x02\\x02\\u0183\\u0190\\x05L\\'\\x02\\u0184\\u0185\\x07\\x11\\x02\\x02\\u0185\" +\n\t\t\"\\u018A\\x05L\\'\\x02\\u0186\\u0187\\x07\\x12\\x02\\x02\\u0187\\u0189\\x05L\\'\\x02\\u0188\" +\n\t\t\"\\u0186\\x03\\x02\\x02\\x02\\u0189\\u018C\\x03\\x02\\x02\\x02\\u018A\\u0188\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u018A\\u018B\\x03\\x02\\x02\\x02\\u018B\\u018D\\x03\\x02\\x02\\x02\\u018C\" +\n\t\t\"\\u018A\\x03\\x02\\x02\\x02\\u018D\\u018E\\x07\\x13\\x02\\x02\\u018E\\u0190\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u018F\\u0183\\x03\\x02\\x02\\x02\\u018F\\u0184\\x03\\x02\\x02\\x02\\u0190\" +\n\t\t\"\\'\\x03\\x02\\x02\\x02\\u0191\\u0192\\x07\\x1E\\x02\\x02\\u0192\\u0193\\x05\\xBE`\\x02\" +\n\t\t\"\\u0193\\u019E\\x07\\x11\\x02\\x02\\u0194\\u0195\\x05H%\\x02\\u0195\\u019B\\x07\\x04\" +\n\t\t\"\\x02\\x02\\u0196\\u0197\\x05H%\\x02\\u0197\\u0198\\x07\\x04\\x02\\x02\\u0198\\u019A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0199\\u0196\\x03\\x02\\x02\\x02\\u019A\\u019D\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u019B\\u0199\\x03\\x02\\x02\\x02\\u019B\\u019C\\x03\\x02\\x02\\x02\\u019C\\u019F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u019D\\u019B\\x03\\x02\\x02\\x02\\u019E\\u0194\\x03\\x02\\x02\\x02\\u019E\" +\n\t\t\"\\u019F\\x03\\x02\\x02\\x02\\u019F\\u01A0\\x03\\x02\\x02\\x02\\u01A0\\u01A1\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u01A1)\\x03\\x02\\x02\\x02\\u01A2\\u01A3\\x07\\x1F\\x02\\x02\\u01A3\\u01A5\" +\n\t\t\"\\x05\\xBE`\\x02\\u01A4\\u01A6\\x05<\\x1F\\x02\\u01A5\\u01A4\\x03\\x02\\x02\\x02\\u01A5\" +\n\t\t\"\\u01A6\";\n\tprivate static readonly _serializedATNSegment1: string =\n\t\t\"\\x03\\x02\\x02\\x02\\u01A6\\u01AB\\x03\\x02\\x02\\x02\\u01A7\\u01AA\\x07{\\x02\\x02\" +\n\t\t\"\\u01A8\\u01AA\\x05\\xC2b\\x02\\u01A9\\u01A7\\x03\\x02\\x02\\x02\\u01A9\\u01A8\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01AA\\u01AD\\x03\\x02\\x02\\x02\\u01AB\\u01A9\\x03\\x02\\x02\\x02\\u01AB\" +\n\t\t\"\\u01AC\\x03\\x02\\x02\\x02\\u01AC\\u01B0\\x03\\x02\\x02\\x02\\u01AD\\u01AB\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01AE\\u01B1\\x07\\x04\\x02\\x02\\u01AF\\u01B1\\x05X-\\x02\\u01B0\\u01AE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01B0\\u01AF\\x03\\x02\\x02\\x02\\u01B1+\\x03\\x02\\x02\\x02\\u01B2\" +\n\t\t\"\\u01B8\\x05\\xBE`\\x02\\u01B3\\u01B5\\x07\\x19\\x02\\x02\\u01B4\\u01B6\\x05\\x8AF\\x02\" +\n\t\t\"\\u01B5\\u01B4\\x03\\x02\\x02\\x02\\u01B5\\u01B6\\x03\\x02\\x02\\x02\\u01B6\\u01B7\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01B7\\u01B9\\x07\\x1A\\x02\\x02\\u01B8\\u01B3\\x03\\x02\\x02\\x02\\u01B8\" +\n\t\t\"\\u01B9\\x03\\x02\\x02\\x02\\u01B9-\\x03\\x02\\x02\\x02\\u01BA\\u01BB\\x050\\x19\\x02\" +\n\t\t\"\\u01BB\\u01BC\\x05<\\x1F\\x02\\u01BC\\u01BE\\x054\\x1B\\x02\\u01BD\\u01BF\\x052\\x1A\" +\n\t\t\"\\x02\\u01BE\\u01BD\\x03\\x02\\x02\\x02\\u01BE\\u01BF\\x03\\x02\\x02\\x02\\u01BF\\u01C2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01C0\\u01C3\\x07\\x04\\x02\\x02\\u01C1\\u01C3\\x05X-\\x02\\u01C2\" +\n\t\t\"\\u01C0\\x03\\x02\\x02\\x02\\u01C2\\u01C1\\x03\\x02\\x02\\x02\\u01C3/\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01C4\\u01C6\\x07 \\x02\\x02\\u01C5\\u01C7\\x05\\xBE`\\x02\\u01C6\\u01C5\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01C6\\u01C7\\x03\\x02\\x02\\x02\\u01C7\\u01CC\\x03\\x02\\x02\\x02\\u01C8\" +\n\t\t\"\\u01CC\\x07\\x80\\x02\\x02\\u01C9\\u01CC\\x07\\x81\\x02\\x02\\u01CA\\u01CC\\x07\\x82\" +\n\t\t\"\\x02\\x02\\u01CB\\u01C4\\x03\\x02\\x02\\x02\\u01CB\\u01C8\\x03\\x02\\x02\\x02\\u01CB\" +\n\t\t\"\\u01C9\\x03\\x02\\x02\\x02\\u01CB\\u01CA\\x03\\x02\\x02\\x02\\u01CC1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01CD\\u01CE\\x07!\\x02\\x02\\u01CE\\u01CF\\x05<\\x1F\\x02\\u01CF3\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D0\\u01D9\\x07u\\x02\\x02\\u01D1\\u01D9\\x07z\\x02\\x02\\u01D2\\u01D9\" +\n\t\t\"\\x07w\\x02\\x02\\u01D3\\u01D9\\x07y\\x02\\x02\\u01D4\\u01D9\\x07{\\x02\\x02\\u01D5\" +\n\t\t\"\\u01D9\\x05V,\\x02\\u01D6\\u01D9\\x05,\\x17\\x02\\u01D7\\u01D9\\x05\\xC2b\\x02\\u01D8\" +\n\t\t\"\\u01D0\\x03\\x02\\x02\\x02\\u01D8\\u01D1\\x03\\x02\\x02\\x02\\u01D8\\u01D2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D8\\u01D3\\x03\\x02\\x02\\x02\\u01D8\\u01D4\\x03\\x02\\x02\\x02\\u01D8\" +\n\t\t\"\\u01D5\\x03\\x02\\x02\\x02\\u01D8\\u01D6\\x03\\x02\\x02\\x02\\u01D8\\u01D7\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D9\\u01DC\\x03\\x02\\x02\\x02\\u01DA\\u01D8\\x03\\x02\\x02\\x02\\u01DA\" +\n\t\t\"\\u01DB\\x03\\x02\\x02\\x02\\u01DB5\\x03\\x02\\x02\\x02\\u01DC\\u01DA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01DD\\u01DE\\x07\\\"\\x02\\x02\\u01DE\\u01DF\\x05\\xBE`\\x02\\u01DF\\u01E1\\x05\" +\n\t\t\"@!\\x02\\u01E0\\u01E2\\x07o\\x02\\x02\\u01E1\\u01E0\\x03\\x02\\x02\\x02\\u01E1\\u01E2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01E2\\u01E3\\x03\\x02\\x02\\x02\\u01E3\\u01E4\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u01E47\\x03\\x02\\x02\\x02\\u01E5\\u01E6\\x05\\xBE`\\x02\\u01E69\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u01E7\\u01E8\\x07#\\x02\\x02\\u01E8\\u01E9\\x05\\xBE`\\x02\\u01E9\\u01EB\\x07\\x11\" +\n\t\t\"\\x02\\x02\\u01EA\\u01EC\\x058\\x1D\\x02\\u01EB\\u01EA\\x03\\x02\\x02\\x02\\u01EB\\u01EC\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01EC\\u01F1\\x03\\x02\\x02\\x02\\u01ED\\u01EE\\x07\\x12\\x02\\x02\" +\n\t\t\"\\u01EE\\u01F0\\x058\\x1D\\x02\\u01EF\\u01ED\\x03\\x02\\x02\\x02\\u01F0\\u01F3\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01F1\\u01EF\\x03\\x02\\x02\\x02\\u01F1\\u01F2\\x03\\x02\\x02\\x02\\u01F2\" +\n\t\t\"\\u01F4\\x03\\x02\\x02\\x02\\u01F3\\u01F1\\x03\\x02\\x02\\x02\\u01F4\\u01F5\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u01F5;\\x03\\x02\\x02\\x02\\u01F6\\u01FF\\x07\\x19\\x02\\x02\\u01F7\\u01FC\" +\n\t\t\"\\x05> \\x02\\u01F8\\u01F9\\x07\\x12\\x02\\x02\\u01F9\\u01FB\\x05> \\x02\\u01FA\\u01F8\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01FB\\u01FE\\x03\\x02\\x02\\x02\\u01FC\\u01FA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u01FC\\u01FD\\x03\\x02\\x02\\x02\\u01FD\\u0200\\x03\\x02\\x02\\x02\\u01FE\\u01FC\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01FF\\u01F7\\x03\\x02\\x02\\x02\\u01FF\\u0200\\x03\\x02\\x02\\x02\\u0200\" +\n\t\t\"\\u0201\\x03\\x02\\x02\\x02\\u0201\\u0202\\x07\\x1A\\x02\\x02\\u0202=\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0203\\u0205\\x05J&\\x02\\u0204\\u0206\\x05T+\\x02\\u0205\\u0204\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0205\\u0206\\x03\\x02\\x02\\x02\\u0206\\u0208\\x03\\x02\\x02\\x02\\u0207\\u0209\" +\n\t\t\"\\x05\\xBE`\\x02\\u0208\\u0207\\x03\\x02\\x02\\x02\\u0208\\u0209\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0209?\\x03\\x02\\x02\\x02\\u020A\\u0213\\x07\\x19\\x02\\x02\\u020B\\u0210\\x05B\\\"\" +\n\t\t\"\\x02\\u020C\\u020D\\x07\\x12\\x02\\x02\\u020D\\u020F\\x05B\\\"\\x02\\u020E\\u020C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u020F\\u0212\\x03\\x02\\x02\\x02\\u0210\\u020E\\x03\\x02\\x02\\x02\\u0210\" +\n\t\t\"\\u0211\\x03\\x02\\x02\\x02\\u0211\\u0214\\x03\\x02\\x02\\x02\\u0212\\u0210\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0213\\u020B\\x03\\x02\\x02\\x02\\u0213\\u0214\\x03\\x02\\x02\\x02\\u0214\" +\n\t\t\"\\u0215\\x03\\x02\\x02\\x02\\u0215\\u0216\\x07\\x1A\\x02\\x02\\u0216A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0217\\u0219\\x05J&\\x02\\u0218\\u021A\\x07v\\x02\\x02\\u0219\\u0218\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0219\\u021A\\x03\\x02\\x02\\x02\\u021A\\u021C\\x03\\x02\\x02\\x02\\u021B\" +\n\t\t\"\\u021D\\x05\\xBE`\\x02\\u021C\\u021B\\x03\\x02\\x02\\x02\\u021C\\u021D\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u021DC\\x03\\x02\\x02\\x02\\u021E\\u0227\\x07\\x19\\x02\\x02\\u021F\\u0224\\x05\" +\n\t\t\"F$\\x02\\u0220\\u0221\\x07\\x12\\x02\\x02\\u0221\\u0223\\x05F$\\x02\\u0222\\u0220\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0223\\u0226\\x03\\x02\\x02\\x02\\u0224\\u0222\\x03\\x02\\x02\\x02\\u0224\" +\n\t\t\"\\u0225\\x03\\x02\\x02\\x02\\u0225\\u0228\\x03\\x02\\x02\\x02\\u0226\\u0224\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0227\\u021F\\x03\\x02\\x02\\x02\\u0227\\u0228\\x03\\x02\\x02\\x02\\u0228\" +\n\t\t\"\\u0229\\x03\\x02\\x02\\x02\\u0229\\u022A\\x07\\x1A\\x02\\x02\\u022AE\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u022B\\u022D\\x05J&\\x02\\u022C\\u022E\\x05T+\\x02\\u022D\\u022C\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u022D\\u022E\\x03\\x02\\x02\\x02\\u022EG\\x03\\x02\\x02\\x02\\u022F\\u0231\\x05\" +\n\t\t\"J&\\x02\\u0230\\u0232\\x05T+\\x02\\u0231\\u0230\\x03\\x02\\x02\\x02\\u0231\\u0232\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0232\\u0233\\x03\\x02\\x02\\x02\\u0233\\u0234\\x05\\xBE`\\x02\\u0234\" +\n\t\t\"I\\x03\\x02\\x02\\x02\\u0235\\u0236\\b&\\x01\\x02\\u0236\\u023D\\x05\\x84C\\x02\\u0237\" +\n\t\t\"\\u023D\\x05L\\'\\x02\\u0238\\u023D\\x05P)\\x02\\u0239\\u023D\\x05R*\\x02\\u023A\\u023B\" +\n\t\t\"\\x07&\\x02\\x02\\u023B\\u023D\\x07x\\x02\\x02\\u023C\\u0235\\x03\\x02\\x02\\x02\\u023C\" +\n\t\t\"\\u0237\\x03\\x02\\x02\\x02\\u023C\\u0238\\x03\\x02\\x02\\x02\\u023C\\u0239\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u023C\\u023A\\x03\\x02\\x02\\x02\\u023D\\u0246\\x03\\x02\\x02\\x02\\u023E\" +\n\t\t\"\\u023F\\f\\x05\\x02\\x02\\u023F\\u0241\\x07$\\x02\\x02\\u0240\\u0242\\x05\\x86D\\x02\" +\n\t\t\"\\u0241\\u0240\\x03\\x02\\x02\\x02\\u0241\\u0242\\x03\\x02\\x02\\x02\\u0242\\u0243\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0243\\u0245\\x07%\\x02\\x02\\u0244\\u023E\\x03\\x02\\x02\\x02\\u0245\" +\n\t\t\"\\u0248\\x03\\x02\\x02\\x02\\u0246\\u0244\\x03\\x02\\x02\\x02\\u0246\\u0247\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0247K\\x03\\x02\\x02\\x02\\u0248\\u0246\\x03\\x02\\x02\\x02\\u0249\\u024E\" +\n\t\t\"\\x05\\xBE`\\x02\\u024A\\u024B\\x07\\'\\x02\\x02\\u024B\\u024D\\x05\\xBE`\\x02\\u024C\" +\n\t\t\"\\u024A\\x03\\x02\\x02\\x02\\u024D\\u0250\\x03\\x02\\x02\\x02\\u024E\\u024C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u024E\\u024F\\x03\\x02\\x02\\x02\\u024FM\\x03\\x02\\x02\\x02\\u0250\\u024E\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0251\\u0254\\x05\\x84C\\x02\\u0252\\u0254\\x05L\\'\\x02\\u0253\" +\n\t\t\"\\u0251\\x03\\x02\\x02\\x02\\u0253\\u0252\\x03\\x02\\x02\\x02\\u0254O\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0255\\u0256\\x07(\\x02\\x02\\u0256\\u0257\\x07\\x19\\x02\\x02\\u0257\\u0258\" +\n\t\t\"\\x05N(\\x02\\u0258\\u0259\\x07)\\x02\\x02\\u0259\\u025A\\x05J&\\x02\\u025A\\u025B\" +\n\t\t\"\\x07\\x1A\\x02\\x02\\u025BQ\\x03\\x02\\x02\\x02\\u025C\\u025D\\x07 \\x02\\x02\\u025D\" +\n\t\t\"\\u0263\\x05D#\\x02\\u025E\\u0262\\x07w\\x02\\x02\\u025F\\u0262\\x07u\\x02\\x02\\u0260\" +\n\t\t\"\\u0262\\x05V,\\x02\\u0261\\u025E\\x03\\x02\\x02\\x02\\u0261\\u025F\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0261\\u0260\\x03\\x02\\x02\\x02\\u0262\\u0265\\x03\\x02\\x02\\x02\\u0263\\u0261\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0263\\u0264\\x03\\x02\\x02\\x02\\u0264\\u0268\\x03\\x02\\x02\\x02\\u0265\" +\n\t\t\"\\u0263\\x03\\x02\\x02\\x02\\u0266\\u0267\\x07!\\x02\\x02\\u0267\\u0269\\x05D#\\x02\" +\n\t\t\"\\u0268\\u0266\\x03\\x02\\x02\\x02\\u0268\\u0269\\x03\\x02\\x02\\x02\\u0269S\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u026A\\u026B\\t\\x04\\x02\\x02\\u026BU\\x03\\x02\\x02\\x02\\u026C\\u026D\" +\n\t\t\"\\t\\x05\\x02\\x02\\u026DW\\x03\\x02\\x02\\x02\\u026E\\u0272\\x07\\x11\\x02\\x02\\u026F\" +\n\t\t\"\\u0271\\x05Z.\\x02\\u0270\\u026F\\x03\\x02\\x02\\x02\\u0271\\u0274\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0272\\u0270\\x03\\x02\\x02\\x02\\u0272\\u0273\\x03\\x02\\x02\\x02\\u0273\\u0275\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0274\\u0272\\x03\\x02\\x02\\x02\\u0275\\u0276\\x07\\x13\\x02\\x02\\u0276\" +\n\t\t\"Y\\x03\\x02\\x02\\x02\\u0277\\u0287\\x05^0\\x02\\u0278\\u0287\\x05`1\\x02\\u0279\\u0287\" +\n\t\t\"\\x05d3\\x02\\u027A\\u0287\\x05j6\\x02\\u027B\\u0287\\x05X-\\x02\\u027C\\u0287\\x05\" +\n\t\t\"l7\\x02\\u027D\\u0287\\x05p9\\x02\\u027E\\u0287\\x05r:\\x02\\u027F\\u0287\\x05t;\\x02\" +\n\t\t\"\\u0280\\u0287\\x05v<\\x02\\u0281\\u0287\\x05x=\\x02\\u0282\\u0287\\x05z>\\x02\\u0283\" +\n\t\t\"\\u0287\\x05f4\\x02\\u0284\\u0287\\x05h5\\x02\\u0285\\u0287\\x05|?\\x02\\u0286\\u0277\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0286\\u0278\\x03\\x02\\x02\\x02\\u0286\\u0279\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0286\\u027A\\x03\\x02\\x02\\x02\\u0286\\u027B\\x03\\x02\\x02\\x02\\u0286\\u027C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0286\\u027D\\x03\\x02\\x02\\x02\\u0286\\u027E\\x03\\x02\\x02\\x02\\u0286\" +\n\t\t\"\\u027F\\x03\\x02\\x02\\x02\\u0286\\u0280\\x03\\x02\\x02\\x02\\u0286\\u0281\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0286\\u0282\\x03\\x02\\x02\\x02\\u0286\\u0283\\x03\\x02\\x02\\x02\\u0286\" +\n\t\t\"\\u0284\\x03\\x02\\x02\\x02\\u0286\\u0285\\x03\\x02\\x02\\x02\\u0287[\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0288\\u0289\\x05\\x86D\\x02\\u0289\\u028A\\x07\\x04\\x02\\x02\\u028A]\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u028B\\u028C\\x07-\\x02\\x02\\u028C\\u028D\\x07\\x19\\x02\\x02\\u028D\\u028E\" +\n\t\t\"\\x05\\x86D\\x02\\u028E\\u028F\\x07\\x1A\\x02\\x02\\u028F\\u0292\\x05Z.\\x02\\u0290\" +\n\t\t\"\\u0291\\x07.\\x02\\x02\\u0291\\u0293\\x05Z.\\x02\\u0292\\u0290\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0292\\u0293\\x03\\x02\\x02\\x02\\u0293_\\x03\\x02\\x02\\x02\\u0294\\u0295\\x07/\\x02\" +\n\t\t\"\\x02\\u0295\\u0297\\x05\\x86D\\x02\\u0296\\u0298\\x052\\x1A\\x02\\u0297\\u0296\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0297\\u0298\\x03\\x02\\x02\\x02\\u0298\\u0299\\x03\\x02\\x02\\x02\\u0299\" +\n\t\t\"\\u029B\\x05X-\\x02\\u029A\\u029C\\x05b2\\x02\\u029B\\u029A\\x03\\x02\\x02\\x02\\u029C\" +\n\t\t\"\\u029D\\x03\\x02\\x02\\x02\\u029D\\u029B\\x03\\x02\\x02\\x02\\u029D\\u029E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u029Ea\\x03\\x02\\x02\\x02\\u029F\\u02A4\\x070\\x02\\x02\\u02A0\\u02A2\\x05\" +\n\t\t\"\\xBE`\\x02\\u02A1\\u02A0\\x03\\x02\\x02\\x02\\u02A1\\u02A2\\x03\\x02\\x02\\x02\\u02A2\" +\n\t\t\"\\u02A3\\x03\\x02\\x02\\x02\\u02A3\\u02A5\\x05<\\x1F\\x02\\u02A4\\u02A1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02A4\\u02A5\\x03\\x02\\x02\\x02\\u02A5\\u02A6\\x03\\x02\\x02\\x02\\u02A6\\u02A7\" +\n\t\t\"\\x05X-\\x02\\u02A7c\\x03\\x02\\x02\\x02\\u02A8\\u02A9\\x071\\x02\\x02\\u02A9\\u02AA\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u02AA\\u02AB\\x05\\x86D\\x02\\u02AB\\u02AC\\x07\\x1A\\x02\\x02\" +\n\t\t\"\\u02AC\\u02AD\\x05Z.\\x02\\u02ADe\\x03\\x02\\x02\\x02\\u02AE\\u02B1\\x05~@\\x02\\u02AF\" +\n\t\t\"\\u02B1\\x05\\\\/\\x02\\u02B0\\u02AE\\x03\\x02\\x02\\x02\\u02B0\\u02AF\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02B1g\\x03\\x02\\x02\\x02\\u02B2\\u02B3\\x072\\x02\\x02\\u02B3\\u02B4\\x05X\" +\n\t\t\"-\\x02\\u02B4i\\x03\\x02\\x02\\x02\\u02B5\\u02B6\\x07\\x1D\\x02\\x02\\u02B6\\u02B9\\x07\" +\n\t\t\"\\x19\\x02\\x02\\u02B7\\u02BA\\x05f4\\x02\\u02B8\\u02BA\\x07\\x04\\x02\\x02\\u02B9\\u02B7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02B9\\u02B8\\x03\\x02\\x02\\x02\\u02BA\\u02BD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02BB\\u02BE\\x05\\\\/\\x02\\u02BC\\u02BE\\x07\\x04\\x02\\x02\\u02BD\\u02BB\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02BD\\u02BC\\x03\\x02\\x02\\x02\\u02BE\\u02C0\\x03\\x02\\x02\\x02\\u02BF\" +\n\t\t\"\\u02C1\\x05\\x86D\\x02\\u02C0\\u02BF\\x03\\x02\\x02\\x02\\u02C0\\u02C1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02C1\\u02C2\\x03\\x02\\x02\\x02\\u02C2\\u02C3\\x07\\x1A\\x02\\x02\\u02C3\\u02C4\" +\n\t\t\"\\x05Z.\\x02\\u02C4k\\x03\\x02\\x02\\x02\\u02C5\\u02C7\\x073\\x02\\x02\\u02C6\\u02C8\" +\n\t\t\"\\x07\\x84\\x02\\x02\\u02C7\\u02C6\\x03\\x02\\x02\\x02\\u02C7\\u02C8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02C8\\u02CD\\x03\\x02\\x02\\x02\\u02C9\\u02CA\\x07\\x19\\x02\\x02\\u02CA\\u02CB\\x05\" +\n\t\t\"n8\\x02\\u02CB\\u02CC\\x07\\x1A\\x02\\x02\\u02CC\\u02CE\\x03\\x02\\x02\\x02\\u02CD\\u02C9\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02CD\\u02CE\\x03\\x02\\x02\\x02\\u02CE\\u02CF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02CF\\u02D0\\x05\\x94K\\x02\\u02D0m\\x03\\x02\\x02\\x02\\u02D1\\u02D2\\x05\\xC4c\" +\n\t\t\"\\x02\\u02D2o\\x03\\x02\\x02\\x02\\u02D3\\u02D4\\x074\\x02\\x02\\u02D4\\u02D5\\x05Z\" +\n\t\t\".\\x02\\u02D5\\u02D6\\x071\\x02\\x02\\u02D6\\u02D7\\x07\\x19\\x02\\x02\\u02D7\\u02D8\" +\n\t\t\"\\x05\\x86D\\x02\\u02D8\\u02D9\\x07\\x1A\\x02\\x02\\u02D9\\u02DA\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u02DAq\\x03\\x02\\x02\\x02\\u02DB\\u02DC\\x07s\\x02\\x02\\u02DC\\u02DD\\x07\\x04\\x02\" +\n\t\t\"\\x02\\u02DDs\\x03\\x02\\x02\\x02\\u02DE\\u02DF\\x07p\\x02\\x02\\u02DF\\u02E0\\x07\\x04\" +\n\t\t\"\\x02\\x02\\u02E0u\\x03\\x02\\x02\\x02\\u02E1\\u02E3\\x075\\x02\\x02\\u02E2\\u02E4\\x05\" +\n\t\t\"\\x86D\\x02\\u02E3\\u02E2\\x03\\x02\\x02\\x02\\u02E3\\u02E4\\x03\\x02\\x02\\x02\\u02E4\" +\n\t\t\"\\u02E5\\x03\\x02\\x02\\x02\\u02E5\\u02E6\\x07\\x04\\x02\\x02\\u02E6w\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02E7\\u02E8\\x076\\x02\\x02\\u02E8\\u02E9\\x07\\x04\\x02\\x02\\u02E9y\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02EA\\u02EB\\x077\\x02\\x02\\u02EB\\u02EC\\x05\\x92J\\x02\\u02EC\\u02ED\" +\n\t\t\"\\x07\\x04\\x02\\x02\\u02ED{\\x03\\x02\\x02\\x02\\u02EE\\u02EF\\x078\\x02\\x02\\u02EF\" +\n\t\t\"\\u02F0\\x05\\x92J\\x02\\u02F0\\u02F1\\x07\\x04\\x02\\x02\\u02F1}\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02F2\\u02F3\\x079\\x02\\x02\\u02F3\\u02FA\\x05\\x82B\\x02\\u02F4\\u02FA\\x05H%\\x02\" +\n\t\t\"\\u02F5\\u02F6\\x07\\x19\\x02\\x02\\u02F6\\u02F7\\x05\\x80A\\x02\\u02F7\\u02F8\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u02F8\\u02FA\\x03\\x02\\x02\\x02\\u02F9\\u02F2\\x03\\x02\\x02\\x02\\u02F9\" +\n\t\t\"\\u02F4\\x03\\x02\\x02\\x02\\u02F9\\u02F5\\x03\\x02\\x02\\x02\\u02FA\\u02FD\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02FB\\u02FC\\x07\\r\\x02\\x02\\u02FC\\u02FE\\x05\\x86D\\x02\\u02FD\\u02FB\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02FD\\u02FE\\x03\\x02\\x02\\x02\\u02FE\\u02FF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02FF\\u0300\\x07\\x04\\x02\\x02\\u0300\\x7F\\x03\\x02\\x02\\x02\\u0301\\u0303\\x05\" +\n\t\t\"H%\\x02\\u0302\\u0301\\x03\\x02\\x02\\x02\\u0302\\u0303\\x03\\x02\\x02\\x02\\u0303\\u030A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0304\\u0306\\x07\\x12\\x02\\x02\\u0305\\u0307\\x05H%\\x02\\u0306\" +\n\t\t\"\\u0305\\x03\\x02\\x02\\x02\\u0306\\u0307\\x03\\x02\\x02\\x02\\u0307\\u0309\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0308\\u0304\\x03\\x02\\x02\\x02\\u0309\\u030C\\x03\\x02\\x02\\x02\\u030A\" +\n\t\t\"\\u0308\\x03\\x02\\x02\\x02\\u030A\\u030B\\x03\\x02\\x02\\x02\\u030B\\x81\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u030C\\u030A\\x03\\x02\\x02\\x02\\u030D\\u0314\\x07\\x19\\x02\\x02\\u030E\\u0310\" +\n\t\t\"\\x05\\xBE`\\x02\\u030F\\u030E\\x03\\x02\\x02\\x02\\u030F\\u0310\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0310\\u0311\\x03\\x02\\x02\\x02\\u0311\\u0313\\x07\\x12\\x02\\x02\\u0312\\u030F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0313\\u0316\\x03\\x02\\x02\\x02\\u0314\\u0312\\x03\\x02\\x02\\x02\\u0314\" +\n\t\t\"\\u0315\\x03\\x02\\x02\\x02\\u0315\\u0318\\x03\\x02\\x02\\x02\\u0316\\u0314\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0317\\u0319\\x05\\xBE`\\x02\\u0318\\u0317\\x03\\x02\\x02\\x02\\u0318\\u0319\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0319\\u031A\\x03\\x02\\x02\\x02\\u031A\\u031B\\x07\\x1A\\x02\\x02\" +\n\t\t\"\\u031B\\x83\\x03\\x02\\x02\\x02\\u031C\\u031D\\t\\x06\\x02\\x02\\u031D\\x85\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u031E\\u031F\\bD\\x01\\x02\\u031F\\u0320\\x07?\\x02\\x02\\u0320\\u0331\\x05\" +\n\t\t\"J&\\x02\\u0321\\u0322\\x07\\x19\\x02\\x02\\u0322\\u0323\\x05\\x86D\\x02\\u0323\\u0324\" +\n\t\t\"\\x07\\x1A\\x02\\x02\\u0324\\u0331\\x03\\x02\\x02\\x02\\u0325\\u0326\\t\\x07\\x02\\x02\" +\n\t\t\"\\u0326\\u0331\\x05\\x86D\\x15\\u0327\\u0328\\t\\b\\x02\\x02\\u0328\\u0331\\x05\\x86\" +\n\t\t\"D\\x14\\u0329\\u032A\\t\\t\\x02\\x02\\u032A\\u0331\\x05\\x86D\\x13\\u032B\\u032C\\x07\" +\n\t\t\"E\\x02\\x02\\u032C\\u0331\\x05\\x86D\\x12\\u032D\\u032E\\x07\\b\\x02\\x02\\u032E\\u0331\" +\n\t\t\"\\x05\\x86D\\x11\\u032F\\u0331\\x05\\x88E\\x02\\u0330\\u031E\\x03\\x02\\x02\\x02\\u0330\" +\n\t\t\"\\u0321\\x03\\x02\\x02\\x02\\u0330\\u0325\\x03\\x02\\x02\\x02\\u0330\\u0327\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0330\\u0329\\x03\\x02\\x02\\x02\\u0330\\u032B\\x03\\x02\\x02\\x02\\u0330\" +\n\t\t\"\\u032D\\x03\\x02\\x02\\x02\\u0330\\u032F\\x03\\x02\\x02\\x02\\u0331\\u037C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0332\\u0333\\f\\x10\\x02\\x02\\u0333\\u0334\\x07F\\x02\\x02\\u0334\\u037B\" +\n\t\t\"\\x05\\x86D\\x11\\u0335\\u0336\\f\\x0F\\x02\\x02\\u0336\\u0337\\t\\n\\x02\\x02\\u0337\" +\n\t\t\"\\u037B\\x05\\x86D\\x10\\u0338\\u0339\\f\\x0E\\x02\\x02\\u0339\\u033A\\t\\b\\x02\\x02\" +\n\t\t\"\\u033A\\u037B\\x05\\x86D\\x0F\\u033B\\u033C\\f\\r\\x02\\x02\\u033C\\u033D\\t\\v\\x02\" +\n\t\t\"\\x02\\u033D\\u037B\\x05\\x86D\\x0E\\u033E\\u033F\\f\\f\\x02\\x02\\u033F\\u0340\\x07\" +\n\t\t\"K\\x02\\x02\\u0340\\u037B\\x05\\x86D\\r\\u0341\\u0342\\f\\v\\x02\\x02\\u0342\\u0343\\x07\" +\n\t\t\"\\x07\\x02\\x02\\u0343\\u037B\\x05\\x86D\\f\\u0344\\u0345\\f\\n\\x02\\x02\\u0345\\u0346\" +\n\t\t\"\\x07L\\x02\\x02\\u0346\\u037B\\x05\\x86D\\v\\u0347\\u0348\\f\\t\\x02\\x02\\u0348\\u0349\" +\n\t\t\"\\t\\f\\x02\\x02\\u0349\\u037B\\x05\\x86D\\n\\u034A\\u034B\\f\\b\\x02\\x02\\u034B\\u034C\" +\n\t\t\"\\t\\r\\x02\\x02\\u034C\\u037B\\x05\\x86D\\t\\u034D\\u034E\\f\\x07\\x02\\x02\\u034E\\u034F\" +\n\t\t\"\\x07O\\x02\\x02\\u034F\\u037B\\x05\\x86D\\b\\u0350\\u0351\\f\\x06\\x02\\x02\\u0351\\u0352\" +\n\t\t\"\\x07\\x06\\x02\\x02\\u0352\\u037B\\x05\\x86D\\x07\\u0353\\u0354\\f\\x05\\x02\\x02\\u0354\" +\n\t\t\"\\u0355\\x07P\\x02\\x02\\u0355\\u0356\\x05\\x86D\\x02\\u0356\\u0357\\x07@\\x02\\x02\" +\n\t\t\"\\u0357\\u0358\\x05\\x86D\\x06\\u0358\\u037B\\x03\\x02\\x02\\x02\\u0359\\u035A\\f\\x04\" +\n\t\t\"\\x02\\x02\\u035A\\u035B\\t\\x0E\\x02\\x02\\u035B\\u037B\\x05\\x86D\\x05\\u035C\\u035D\" +\n\t\t\"\\f\\x1D\\x02\\x02\\u035D\\u037B\\t\\x07\\x02\\x02\\u035E\\u035F\\f\\x1B\\x02\\x02\\u035F\" +\n\t\t\"\\u0360\\x07$\\x02\\x02\\u0360\\u0361\\x05\\x86D\\x02\\u0361\\u0362\\x07%\\x02\\x02\" +\n\t\t\"\\u0362\\u037B\\x03\\x02\\x02\\x02\\u0363\\u0364\\f\\x1A\\x02\\x02\\u0364\\u0366\\x07\" +\n\t\t\"$\\x02\\x02\\u0365\\u0367\\x05\\x86D\\x02\\u0366\\u0365\\x03\\x02\\x02\\x02\\u0366\\u0367\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0367\\u0368\\x03\\x02\\x02\\x02\\u0368\\u036A\\x07@\\x02\\x02\" +\n\t\t\"\\u0369\\u036B\\x05\\x86D\\x02\\u036A\\u0369\\x03\\x02\\x02\\x02\\u036A\\u036B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u036B\\u036C\\x03\\x02\\x02\\x02\\u036C\\u037B\\x07%\\x02\\x02\\u036D\" +\n\t\t\"\\u036E\\f\\x19\\x02\\x02\\u036E\\u036F\\x07\\'\\x02\\x02\\u036F\\u037B\\x05\\xBE`\\x02\" +\n\t\t\"\\u0370\\u0371\\f\\x18\\x02\\x02\\u0371\\u0372\\x07\\x11\\x02\\x02\\u0372\\u0373\\x05\" +\n\t\t\"\\x8CG\\x02\\u0373\\u0374\\x07\\x13\\x02\\x02\\u0374\\u037B\\x03\\x02\\x02\\x02\\u0375\" +\n\t\t\"\\u0376\\f\\x17\\x02\\x02\\u0376\\u0377\\x07\\x19\\x02\\x02\\u0377\\u0378\\x05\\x90I\" +\n\t\t\"\\x02\\u0378\\u0379\\x07\\x1A\\x02\\x02\\u0379\\u037B\\x03\\x02\\x02\\x02\\u037A\\u0332\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u037A\\u0335\\x03\\x02\\x02\\x02\\u037A\\u0338\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u037A\\u033B\\x03\\x02\\x02\\x02\\u037A\\u033E\\x03\\x02\\x02\\x02\\u037A\\u0341\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u037A\\u0344\\x03\\x02\\x02\\x02\\u037A\\u0347\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u034A\\x03\\x02\\x02\\x02\\u037A\\u034D\\x03\\x02\\x02\\x02\\u037A\\u0350\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037A\\u0353\\x03\\x02\\x02\\x02\\u037A\\u0359\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u035C\\x03\\x02\\x02\\x02\\u037A\\u035E\\x03\\x02\\x02\\x02\\u037A\\u0363\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037A\\u036D\\x03\\x02\\x02\\x02\\u037A\\u0370\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u0375\\x03\\x02\\x02\\x02\\u037B\\u037E\\x03\\x02\\x02\\x02\\u037C\\u037A\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037C\\u037D\\x03\\x02\\x02\\x02\\u037D\\x87\\x03\\x02\\x02\\x02\\u037E\\u037C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u037F\\u0389\\x07i\\x02\\x02\\u0380\\u0389\\x05\\xBC_\\x02\\u0381\" +\n\t\t\"\\u0389\\x05\\xC0a\\x02\\u0382\\u0389\\x05\\xC4c\\x02\\u0383\\u0389\\x05\\xBE`\\x02\" +\n\t\t\"\\u0384\\u0389\\x07}\\x02\\x02\\u0385\\u0389\\x07x\\x02\\x02\\u0386\\u0389\\x05\\xBA\" +\n\t\t\"^\\x02\\u0387\\u0389\\x05J&\\x02\\u0388\\u037F\\x03\\x02\\x02\\x02\\u0388\\u0380\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0388\\u0381\\x03\\x02\\x02\\x02\\u0388\\u0382\\x03\\x02\\x02\\x02\\u0388\" +\n\t\t\"\\u0383\\x03\\x02\\x02\\x02\\u0388\\u0384\\x03\\x02\\x02\\x02\\u0388\\u0385\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0388\\u0386\\x03\\x02\\x02\\x02\\u0388\\u0387\\x03\\x02\\x02\\x02\\u0389\" +\n\t\t\"\\x89\\x03\\x02\\x02\\x02\\u038A\\u038F\\x05\\x86D\\x02\\u038B\\u038C\\x07\\x12\\x02\" +\n\t\t\"\\x02\\u038C\\u038E\\x05\\x86D\\x02\\u038D\\u038B\\x03\\x02\\x02\\x02\\u038E\\u0391\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u038F\\u038D\\x03\\x02\\x02\\x02\\u038F\\u0390\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0390\\x8B\\x03\\x02\\x02\\x02\\u0391\\u038F\\x03\\x02\\x02\\x02\\u0392\\u0397\\x05\" +\n\t\t\"\\x8EH\\x02\\u0393\\u0394\\x07\\x12\\x02\\x02\\u0394\\u0396\\x05\\x8EH\\x02\\u0395\\u0393\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0396\\u0399\\x03\\x02\\x02\\x02\\u0397\\u0395\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0397\\u0398\\x03\\x02\\x02\\x02\\u0398\\u039B\\x03\\x02\\x02\\x02\\u0399\\u0397\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u039A\\u039C\\x07\\x12\\x02\\x02\\u039B\\u039A\\x03\\x02\\x02\\x02\\u039B\" +\n\t\t\"\\u039C\\x03\\x02\\x02\\x02\\u039C\\x8D\\x03\\x02\\x02\\x02\\u039D\\u039E\\x05\\xBE`\" +\n\t\t\"\\x02\\u039E\\u039F\\x07@\\x02\\x02\\u039F\\u03A0\\x05\\x86D\\x02\\u03A0\\x8F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03A1\\u03A3\\x07\\x11\\x02\\x02\\u03A2\\u03A4\\x05\\x8CG\\x02\\u03A3\\u03A2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03A3\\u03A4\\x03\\x02\\x02\\x02\\u03A4\\u03A5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03A5\\u03AA\\x07\\x13\\x02\\x02\\u03A6\\u03A8\\x05\\x8AF\\x02\\u03A7\\u03A6\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03A7\\u03A8\\x03\\x02\\x02\\x02\\u03A8\\u03AA\\x03\\x02\\x02\\x02\\u03A9\" +\n\t\t\"\\u03A1\\x03\\x02\\x02\\x02\\u03A9\\u03A7\\x03\\x02\\x02\\x02\\u03AA\\x91\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u03AB\\u03AC\\x05\\x86D\\x02\\u03AC\\u03AD\\x07\\x19\\x02\\x02\\u03AD\\u03AE\" +\n\t\t\"\\x05\\x90I\\x02\\u03AE\\u03AF\\x07\\x1A\\x02\\x02\\u03AF\\x93\\x03\\x02\\x02\\x02\\u03B0\" +\n\t\t\"\\u03B4\\x07\\x11\\x02\\x02\\u03B1\\u03B3\\x05\\x96L\\x02\\u03B2\\u03B1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u03B3\\u03B6\\x03\\x02\\x02\\x02\\u03B4\\u03B2\\x03\\x02\\x02\\x02\\u03B4\\u03B5\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03B5\\u03B7\\x03\\x02\\x02\\x02\\u03B6\\u03B4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03B7\\u03B8\\x07\\x13\\x02\\x02\\u03B8\\x95\\x03\\x02\\x02\\x02\\u03B9\\u03CC\\x05\" +\n\t\t\"\\xBE`\\x02\\u03BA\\u03CC\\x05\\x94K\\x02\\u03BB\\u03CC\\x05\\x98M\\x02\\u03BC\\u03CC\" +\n\t\t\"\\x05\\x9EP\\x02\\u03BD\\u03CC\\x05\\xA0Q\\x02\\u03BE\\u03CC\\x05\\xA6T\\x02\\u03BF\" +\n\t\t\"\\u03CC\\x05\\xA8U\\x02\\u03C0\\u03CC\\x05\\xAAV\\x02\\u03C1\\u03CC\\x05\\xAEX\\x02\" +\n\t\t\"\\u03C2\\u03CC\\x05\\xB2Z\\x02\\u03C3\\u03CC\\x05\\xB4[\\x02\\u03C4\\u03CC\\x07p\\x02\" +\n\t\t\"\\x02\\u03C5\\u03CC\\x07s\\x02\\x02\\u03C6\\u03CC\\x07t\\x02\\x02\\u03C7\\u03CC\\x05\" +\n\t\t\"\\xB8]\\x02\\u03C8\\u03CC\\x05\\xBC_\\x02\\u03C9\\u03CC\\x05\\xC4c\\x02\\u03CA\\u03CC\" +\n\t\t\"\\x05\\xC0a\\x02\\u03CB\\u03B9\\x03\\x02\\x02\\x02\\u03CB\\u03BA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03CB\\u03BB\\x03\\x02\\x02\\x02\\u03CB\\u03BC\\x03\\x02\\x02\\x02\\u03CB\\u03BD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03CB\\u03BE\\x03\\x02\\x02\\x02\\u03CB\\u03BF\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03C0\\x03\\x02\\x02\\x02\\u03CB\\u03C1\\x03\\x02\\x02\\x02\\u03CB\\u03C2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03CB\\u03C3\\x03\\x02\\x02\\x02\\u03CB\\u03C4\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03C5\\x03\\x02\\x02\\x02\\u03CB\\u03C6\\x03\\x02\\x02\\x02\\u03CB\\u03C7\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03CB\\u03C8\\x03\\x02\\x02\\x02\\u03CB\\u03C9\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03CA\\x03\\x02\\x02\\x02\\u03CC\\x97\\x03\\x02\\x02\\x02\\u03CD\\u03D1\\x05\\x9CO\" +\n\t\t\"\\x02\\u03CE\\u03D1\\x05\\xB6\\\\\\x02\\u03CF\\u03D1\\x05\\x9AN\\x02\\u03D0\\u03CD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03D0\\u03CE\\x03\\x02\\x02\\x02\\u03D0\\u03CF\\x03\\x02\\x02\\x02\\u03D1\" +\n\t\t\"\\x99\\x03\\x02\\x02\\x02\\u03D2\\u03D3\\x05\\xBE`\\x02\\u03D3\\u03D4\\x07\\'\\x02\\x02\" +\n\t\t\"\\u03D4\\u03D5\\x05\\xBE`\\x02\\u03D5\\x9B\\x03\\x02\\x02\\x02\\u03D6\\u03DB\\x075\\x02\" +\n\t\t\"\\x02\\u03D7\\u03DB\\x07&\\x02\\x02\\u03D8\\u03DB\\x07<\\x02\\x02\\u03D9\\u03DB\\x05\" +\n\t\t\"\\xBE`\\x02\\u03DA\\u03D6\\x03\\x02\\x02\\x02\\u03DA\\u03D7\\x03\\x02\\x02\\x02\\u03DA\" +\n\t\t\"\\u03D8\\x03\\x02\\x02\\x02\\u03DA\\u03D9\\x03\\x02\\x02\\x02\\u03DB\\u03E8\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03DC\\u03DE\\x07\\x19\\x02\\x02\\u03DD\\u03DF\\x05\\x98M\\x02\\u03DE\\u03DD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03DE\\u03DF\\x03\\x02\\x02\\x02\\u03DF\\u03E4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03E0\\u03E1\\x07\\x12\\x02\\x02\\u03E1\\u03E3\\x05\\x98M\\x02\\u03E2\\u03E0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03E3\\u03E6\\x03\\x02\\x02\\x02\\u03E4\\u03E2\\x03\\x02\\x02\\x02\\u03E4\" +\n\t\t\"\\u03E5\\x03\\x02\\x02\\x02\\u03E5\\u03E7\\x03\\x02\\x02\\x02\\u03E6\\u03E4\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03E7\\u03E9\\x07\\x1A\\x02\\x02\\u03E8\\u03DC\\x03\\x02\\x02\\x02\\u03E8\" +\n\t\t\"\\u03E9\\x03\\x02\\x02\\x02\\u03E9\\x9D\\x03\\x02\\x02\\x02\\u03EA\\u03EB\\x07[\\x02\" +\n\t\t\"\\x02\\u03EB\\u03EE\\x05\\xA2R\\x02\\u03EC\\u03ED\\x07\\\\\\x02\\x02\\u03ED\\u03EF\\x05\" +\n\t\t\"\\x98M\\x02\\u03EE\\u03EC\\x03\\x02\\x02\\x02\\u03EE\\u03EF\\x03\\x02\\x02\\x02\\u03EF\" +\n\t\t\"\\x9F\\x03\\x02\\x02\\x02\\u03F0\\u03F1\\x05\\xA2R\\x02\\u03F1\\u03F2\\x07\\\\\\x02\\x02\" +\n\t\t\"\\u03F2\\u03F3\\x05\\x98M\\x02\\u03F3\\xA1\\x03\\x02\\x02\\x02\\u03F4\\u03FB\\x05\\xBE\" +\n\t\t\"`\\x02\\u03F5\\u03FB\\x05\\x9AN\\x02\\u03F6\\u03F7\\x07\\x19\\x02\\x02\\u03F7\\u03F8\" +\n\t\t\"\\x05\\xA4S\\x02\\u03F8\\u03F9\\x07\\x1A\\x02\\x02\\u03F9\\u03FB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03FA\\u03F4\\x03\\x02\\x02\\x02\\u03FA\\u03F5\\x03\\x02\\x02\\x02\\u03FA\\u03F6\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03FB\\xA3\\x03\\x02\\x02\\x02\\u03FC\\u0401\\x05\\xBE`\\x02\\u03FD\" +\n\t\t\"\\u03FE\\x07\\x12\\x02\\x02\\u03FE\\u0400\\x05\\xBE`\\x02\\u03FF\\u03FD\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0400\\u0403\\x03\\x02\\x02\\x02\\u0401\\u03FF\\x03\\x02\\x02\\x02\\u0401\\u0402\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0402\\xA5\\x03\\x02\\x02\\x02\\u0403\\u0401\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0404\\u0405\\x05\\x98M\\x02\\u0405\\u0406\\x07]\\x02\\x02\\u0406\\u0407\\x05\\xBE\" +\n\t\t\"`\\x02\\u0407\\xA7\\x03\\x02\\x02\\x02\\u0408\\u0409\\x05\\xBE`\\x02\\u0409\\u040A\\x07\" +\n\t\t\"@\\x02\\x02\\u040A\\xA9\\x03\\x02\\x02\\x02\\u040B\\u040C\\x07^\\x02\\x02\\u040C\\u0410\" +\n\t\t\"\\x05\\x98M\\x02\\u040D\\u040F\\x05\\xACW\\x02\\u040E\\u040D\\x03\\x02\\x02\\x02\\u040F\" +\n\t\t\"\\u0412\\x03\\x02\\x02\\x02\\u0410\\u040E\\x03\\x02\\x02\\x02\\u0410\\u0411\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0411\\xAB\\x03\\x02\\x02\\x02\\u0412\\u0410\\x03\\x02\\x02\\x02\\u0413\\u0414\" +\n\t\t\"\\x07_\\x02\\x02\\u0414\\u0415\\x05\\xB6\\\\\\x02\\u0415\\u0416\\x05\\x94K\\x02\\u0416\" +\n\t\t\"\\u041A\\x03\\x02\\x02\\x02\\u0417\\u0418\\x07`\\x02\\x02\\u0418\\u041A\\x05\\x94K\\x02\" +\n\t\t\"\\u0419\\u0413\\x03\\x02\\x02\\x02\\u0419\\u0417\\x03\\x02\\x02\\x02\\u041A\\xAD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u041B\\u041C\\x07 \\x02\\x02\\u041C\\u041D\\x05\\xBE`\\x02\\u041D\\u041F\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u041E\\u0420\\x05\\xA4S\\x02\\u041F\\u041E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u041F\\u0420\\x03\\x02\\x02\\x02\\u0420\\u0421\\x03\\x02\\x02\\x02\\u0421\\u0423\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u0422\\u0424\\x05\\xB0Y\\x02\\u0423\\u0422\\x03\\x02\\x02\\x02\\u0423\" +\n\t\t\"\\u0424\\x03\\x02\\x02\\x02\\u0424\\u0425\\x03\\x02\\x02\\x02\\u0425\\u0426\\x05\\x94\" +\n\t\t\"K\\x02\\u0426\\xAF\\x03\\x02\\x02\\x02\\u0427\\u0428\\x07a\\x02\\x02\\u0428\\u0429\\x05\" +\n\t\t\"\\xA4S\\x02\\u0429\\xB1\\x03\\x02\\x02\\x02\\u042A\\u042D\\x07\\x1D\\x02\\x02\\u042B\" +\n\t\t\"\\u042E\\x05\\x94K\\x02\\u042C\\u042E\\x05\\x98M\\x02\\u042D\\u042B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u042D\\u042C\\x03\\x02\\x02\\x02\\u042E\\u042F\\x03\\x02\\x02\\x02\\u042F\\u0432\\x05\" +\n\t\t\"\\x98M\\x02\\u0430\\u0433\\x05\\x94K\\x02\\u0431\\u0433\\x05\\x98M\\x02\\u0432\\u0430\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0432\\u0431\\x03\\x02\\x02\\x02\\u0433\\u0434\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0434\\u0435\\x05\\x94K\\x02\\u0435\\xB3\\x03\\x02\\x02\\x02\\u0436\\u0437\\x07-\\x02\" +\n\t\t\"\\x02\\u0437\\u0438\\x05\\x98M\\x02\\u0438\\u0439\\x05\\x94K\\x02\\u0439\\xB5\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u043A\\u043F\\x05\\xC4c\\x02\\u043B\\u043F\\x07j\\x02\\x02\\u043C\\u043F\" +\n\t\t\"\\x07k\\x02\\x02\\u043D\\u043F\\x05\\xC0a\\x02\\u043E\\u043A\\x03\\x02\\x02\\x02\\u043E\" +\n\t\t\"\\u043B\\x03\\x02\\x02\\x02\\u043E\\u043C\\x03\\x02\\x02\\x02\\u043E\\u043D\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u043F\\xB7\\x03\\x02\\x02\\x02\\u0440\\u0441\\x073\\x02\\x02\\u0441\\u0442\" +\n\t\t\"\\x05\\xBE`\\x02\\u0442\\u0443\\x05\\x94K\\x02\\u0443\\xB9\\x03\\x02\";\n\tprivate static readonly _serializedATNSegment2: string =\n\t\t\"\\x02\\x02\\u0444\\u0446\\x07\\x19\\x02\\x02\\u0445\\u0447\\x05\\x86D\\x02\\u0446\\u0445\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0446\\u0447\\x03\\x02\\x02\\x02\\u0447\\u044E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0448\\u044A\\x07\\x12\\x02\\x02\\u0449\\u044B\\x05\\x86D\\x02\\u044A\\u0449\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u044A\\u044B\\x03\\x02\\x02\\x02\\u044B\\u044D\\x03\\x02\\x02\\x02\\u044C\" +\n\t\t\"\\u0448\\x03\\x02\\x02\\x02\\u044D\\u0450\\x03\\x02\\x02\\x02\\u044E\\u044C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u044E\\u044F\\x03\\x02\\x02\\x02\\u044F\\u0451\\x03\\x02\\x02\\x02\\u0450\" +\n\t\t\"\\u044E\\x03\\x02\\x02\\x02\\u0451\\u045F\\x07\\x1A\\x02\\x02\\u0452\\u045B\\x07$\\x02\" +\n\t\t\"\\x02\\u0453\\u0458\\x05\\x86D\\x02\\u0454\\u0455\\x07\\x12\\x02\\x02\\u0455\\u0457\" +\n\t\t\"\\x05\\x86D\\x02\\u0456\\u0454\\x03\\x02\\x02\\x02\\u0457\\u045A\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0458\\u0456\\x03\\x02\\x02\\x02\\u0458\\u0459\\x03\\x02\\x02\\x02\\u0459\\u045C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u045A\\u0458\\x03\\x02\\x02\\x02\\u045B\\u0453\\x03\\x02\\x02\\x02\\u045B\" +\n\t\t\"\\u045C\\x03\\x02\\x02\\x02\\u045C\\u045D\\x03\\x02\\x02\\x02\\u045D\\u045F\\x07%\\x02\" +\n\t\t\"\\x02\\u045E\\u0444\\x03\\x02\\x02\\x02\\u045E\\u0452\\x03\\x02\\x02\\x02\\u045F\\xBB\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0460\\u0462\\t\\x0F\\x02\\x02\\u0461\\u0463\\x07l\\x02\\x02\\u0462\" +\n\t\t\"\\u0461\\x03\\x02\\x02\\x02\\u0462\\u0463\\x03\\x02\\x02\\x02\\u0463\\xBD\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0464\\u0465\\t\\x10\\x02\\x02\\u0465\\xBF\\x03\\x02\\x02\\x02\\u0466\\u0468\\x07\" +\n\t\t\"m\\x02\\x02\\u0467\\u0466\\x03\\x02\\x02\\x02\\u0468\\u0469\\x03\\x02\\x02\\x02\\u0469\" +\n\t\t\"\\u0467\\x03\\x02\\x02\\x02\\u0469\\u046A\\x03\\x02\\x02\\x02\\u046A\\xC1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u046B\\u0477\\x07c\\x02\\x02\\u046C\\u046D\\x07\\x19\\x02\\x02\\u046D\\u0472\" +\n\t\t\"\\x05L\\'\\x02\\u046E\\u046F\\x07\\x12\\x02\\x02\\u046F\\u0471\\x05L\\'\\x02\\u0470\\u046E\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0471\\u0474\\x03\\x02\\x02\\x02\\u0472\\u0470\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0472\\u0473\\x03\\x02\\x02\\x02\\u0473\\u0475\\x03\\x02\\x02\\x02\\u0474\\u0472\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0475\\u0476\\x07\\x1A\\x02\\x02\\u0476\\u0478\\x03\\x02\\x02\\x02\\u0477\" +\n\t\t\"\\u046C\\x03\\x02\\x02\\x02\\u0477\\u0478\\x03\\x02\\x02\\x02\\u0478\\xC3\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0479\\u047B\\x07\\x84\\x02\\x02\\u047A\\u0479\\x03\\x02\\x02\\x02\\u047B\\u047C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u047C\\u047A\\x03\\x02\\x02\\x02\\u047C\\u047D\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u047D\\xC5\\x03\\x02\\x02\\x02\\x81\\xD0\\xD2\\xE1\\xE5\\xEA\\xF0\\xF4\\xF7\\xFC\\u0102\" +\n\t\t\"\\u0109\\u010D\\u011A\\u0122\\u0127\\u0131\\u0134\\u013A\\u0142\\u0145\\u0150\\u0159\" +\n\t\t\"\\u015B\\u0161\\u017C\\u017F\\u018A\\u018F\\u019B\\u019E\\u01A5\\u01A9\\u01AB\\u01B0\" +\n\t\t\"\\u01B5\\u01B8\\u01BE\\u01C2\\u01C6\\u01CB\\u01D8\\u01DA\\u01E1\\u01EB\\u01F1\\u01FC\" +\n\t\t\"\\u01FF\\u0205\\u0208\\u0210\\u0213\\u0219\\u021C\\u0224\\u0227\\u022D\\u0231\\u023C\" +\n\t\t\"\\u0241\\u0246\\u024E\\u0253\\u0261\\u0263\\u0268\\u0272\\u0286\\u0292\\u0297\\u029D\" +\n\t\t\"\\u02A1\\u02A4\\u02B0\\u02B9\\u02BD\\u02C0\\u02C7\\u02CD\\u02E3\\u02F9\\u02FD\\u0302\" +\n\t\t\"\\u0306\\u030A\\u030F\\u0314\\u0318\\u0330\\u0366\\u036A\\u037A\\u037C\\u0388\\u038F\" +\n\t\t\"\\u0397\\u039B\\u03A3\\u03A7\\u03A9\\u03B4\\u03CB\\u03D0\\u03DA\\u03DE\\u03E4\\u03E8\" +\n\t\t\"\\u03EE\\u03FA\\u0401\\u0410\\u0419\\u041F\\u0423\\u042D\\u0432\\u043E\\u0446\\u044A\" +\n\t\t\"\\u044E\\u0458\\u045B\\u045E\\u0462\\u0469\\u0472\\u0477\\u047C\";\n\tpublic static readonly _serializedATN: string = Utils.join(\n\t\t[\n\t\t\tSolidityParser._serializedATNSegment0,\n\t\t\tSolidityParser._serializedATNSegment1,\n\t\t\tSolidityParser._serializedATNSegment2,\n\t\t],\n\t\t\"\",\n\t);\n\tpublic static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!SolidityParser.__ATN) {\n\t\t\tSolidityParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityParser._serializedATN));\n\t\t}\n\n\t\treturn SolidityParser.__ATN;\n\t}\n\n}\n\nexport class SourceUnitContext extends ParserRuleContext {\n\tpublic EOF(): TerminalNode { return this.getToken(SolidityParser.EOF, 0); }\n\tpublic pragmaDirective(): PragmaDirectiveContext[];\n\tpublic pragmaDirective(i: number): PragmaDirectiveContext;\n\tpublic pragmaDirective(i?: number): PragmaDirectiveContext | PragmaDirectiveContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(PragmaDirectiveContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, PragmaDirectiveContext);\n\t\t}\n\t}\n\tpublic importDirective(): ImportDirectiveContext[];\n\tpublic importDirective(i: number): ImportDirectiveContext;\n\tpublic importDirective(i?: number): ImportDirectiveContext | ImportDirectiveContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ImportDirectiveContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ImportDirectiveContext);\n\t\t}\n\t}\n\tpublic contractDefinition(): ContractDefinitionContext[];\n\tpublic contractDefinition(i: number): ContractDefinitionContext;\n\tpublic contractDefinition(i?: number): ContractDefinitionContext | ContractDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ContractDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ContractDefinitionContext);\n\t\t}\n\t}\n\tpublic enumDefinition(): EnumDefinitionContext[];\n\tpublic enumDefinition(i: number): EnumDefinitionContext;\n\tpublic enumDefinition(i?: number): EnumDefinitionContext | EnumDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EnumDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EnumDefinitionContext);\n\t\t}\n\t}\n\tpublic structDefinition(): StructDefinitionContext[];\n\tpublic structDefinition(i: number): StructDefinitionContext;\n\tpublic structDefinition(i?: number): StructDefinitionContext | StructDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StructDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StructDefinitionContext);\n\t\t}\n\t}\n\tpublic functionDefinition(): FunctionDefinitionContext[];\n\tpublic functionDefinition(i: number): FunctionDefinitionContext;\n\tpublic functionDefinition(i?: number): FunctionDefinitionContext | FunctionDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionDefinitionContext);\n\t\t}\n\t}\n\tpublic fileLevelConstant(): FileLevelConstantContext[];\n\tpublic fileLevelConstant(i: number): FileLevelConstantContext;\n\tpublic fileLevelConstant(i?: number): FileLevelConstantContext | FileLevelConstantContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FileLevelConstantContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FileLevelConstantContext);\n\t\t}\n\t}\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext[];\n\tpublic customErrorDefinition(i: number): CustomErrorDefinitionContext;\n\tpublic customErrorDefinition(i?: number): CustomErrorDefinitionContext | CustomErrorDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(CustomErrorDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, CustomErrorDefinitionContext);\n\t\t}\n\t}\n\tpublic typeDefinition(): TypeDefinitionContext[];\n\tpublic typeDefinition(i: number): TypeDefinitionContext;\n\tpublic typeDefinition(i?: number): TypeDefinitionContext | TypeDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(TypeDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, TypeDefinitionContext);\n\t\t}\n\t}\n\tpublic usingForDeclaration(): UsingForDeclarationContext[];\n\tpublic usingForDeclaration(i: number): UsingForDeclarationContext;\n\tpublic usingForDeclaration(i?: number): UsingForDeclarationContext | UsingForDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UsingForDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UsingForDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_sourceUnit; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSourceUnit) {\n\t\t\tlistener.enterSourceUnit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSourceUnit) {\n\t\t\tlistener.exitSourceUnit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSourceUnit) {\n\t\t\treturn visitor.visitSourceUnit(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaDirectiveContext extends ParserRuleContext {\n\tpublic pragmaName(): PragmaNameContext {\n\t\treturn this.getRuleContext(0, PragmaNameContext);\n\t}\n\tpublic pragmaValue(): PragmaValueContext {\n\t\treturn this.getRuleContext(0, PragmaValueContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaDirective; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaDirective) {\n\t\t\tlistener.enterPragmaDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaDirective) {\n\t\t\tlistener.exitPragmaDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaDirective) {\n\t\t\treturn visitor.visitPragmaDirective(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaNameContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaName) {\n\t\t\tlistener.enterPragmaName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaName) {\n\t\t\tlistener.exitPragmaName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaName) {\n\t\t\treturn visitor.visitPragmaName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaValueContext extends ParserRuleContext {\n\tpublic version(): VersionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VersionContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaValue) {\n\t\t\tlistener.enterPragmaValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaValue) {\n\t\t\tlistener.exitPragmaValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaValue) {\n\t\t\treturn visitor.visitPragmaValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionContext extends ParserRuleContext {\n\tpublic versionConstraint(): VersionConstraintContext[];\n\tpublic versionConstraint(i: number): VersionConstraintContext;\n\tpublic versionConstraint(i?: number): VersionConstraintContext | VersionConstraintContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VersionConstraintContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VersionConstraintContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_version; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersion) {\n\t\t\tlistener.enterVersion(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersion) {\n\t\t\tlistener.exitVersion(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersion) {\n\t\t\treturn visitor.visitVersion(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionOperatorContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_versionOperator; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersionOperator) {\n\t\t\tlistener.enterVersionOperator(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersionOperator) {\n\t\t\tlistener.exitVersionOperator(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersionOperator) {\n\t\t\treturn visitor.visitVersionOperator(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionConstraintContext extends ParserRuleContext {\n\tpublic VersionLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.VersionLiteral, 0); }\n\tpublic versionOperator(): VersionOperatorContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VersionOperatorContext);\n\t}\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_versionConstraint; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersionConstraint) {\n\t\t\tlistener.enterVersionConstraint(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersionConstraint) {\n\t\t\tlistener.exitVersionConstraint(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersionConstraint) {\n\t\t\treturn visitor.visitVersionConstraint(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportDeclarationContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportDeclaration) {\n\t\t\tlistener.enterImportDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportDeclaration) {\n\t\t\tlistener.exitImportDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportDeclaration) {\n\t\t\treturn visitor.visitImportDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportDirectiveContext extends ParserRuleContext {\n\tpublic importPath(): ImportPathContext {\n\t\treturn this.getRuleContext(0, ImportPathContext);\n\t}\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tpublic importDeclaration(): ImportDeclarationContext[];\n\tpublic importDeclaration(i: number): ImportDeclarationContext;\n\tpublic importDeclaration(i?: number): ImportDeclarationContext | ImportDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ImportDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ImportDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importDirective; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportDirective) {\n\t\t\tlistener.enterImportDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportDirective) {\n\t\t\tlistener.exitImportDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportDirective) {\n\t\t\treturn visitor.visitImportDirective(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportPathContext extends ParserRuleContext {\n\tpublic StringLiteralFragment(): TerminalNode { return this.getToken(SolidityParser.StringLiteralFragment, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importPath; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportPath) {\n\t\t\tlistener.enterImportPath(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportPath) {\n\t\t\tlistener.exitImportPath(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportPath) {\n\t\t\treturn visitor.visitImportPath(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContractDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic inheritanceSpecifier(): InheritanceSpecifierContext[];\n\tpublic inheritanceSpecifier(i: number): InheritanceSpecifierContext;\n\tpublic inheritanceSpecifier(i?: number): InheritanceSpecifierContext | InheritanceSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(InheritanceSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, InheritanceSpecifierContext);\n\t\t}\n\t}\n\tpublic contractPart(): ContractPartContext[];\n\tpublic contractPart(i: number): ContractPartContext;\n\tpublic contractPart(i?: number): ContractPartContext | ContractPartContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ContractPartContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ContractPartContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_contractDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContractDefinition) {\n\t\t\tlistener.enterContractDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContractDefinition) {\n\t\t\tlistener.exitContractDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContractDefinition) {\n\t\t\treturn visitor.visitContractDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InheritanceSpecifierContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext {\n\t\treturn this.getRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inheritanceSpecifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInheritanceSpecifier) {\n\t\t\tlistener.enterInheritanceSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInheritanceSpecifier) {\n\t\t\tlistener.exitInheritanceSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInheritanceSpecifier) {\n\t\t\treturn visitor.visitInheritanceSpecifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContractPartContext extends ParserRuleContext {\n\tpublic stateVariableDeclaration(): StateVariableDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StateVariableDeclarationContext);\n\t}\n\tpublic usingForDeclaration(): UsingForDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UsingForDeclarationContext);\n\t}\n\tpublic structDefinition(): StructDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StructDefinitionContext);\n\t}\n\tpublic modifierDefinition(): ModifierDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ModifierDefinitionContext);\n\t}\n\tpublic functionDefinition(): FunctionDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionDefinitionContext);\n\t}\n\tpublic eventDefinition(): EventDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EventDefinitionContext);\n\t}\n\tpublic enumDefinition(): EnumDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EnumDefinitionContext);\n\t}\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, CustomErrorDefinitionContext);\n\t}\n\tpublic typeDefinition(): TypeDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeDefinitionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_contractPart; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContractPart) {\n\t\t\tlistener.enterContractPart(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContractPart) {\n\t\t\tlistener.exitContractPart(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContractPart) {\n\t\t\treturn visitor.visitContractPart(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StateVariableDeclarationContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic PublicKeyword(): TerminalNode[];\n\tpublic PublicKeyword(i: number): TerminalNode;\n\tpublic PublicKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PublicKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PublicKeyword, i);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic PrivateKeyword(): TerminalNode[];\n\tpublic PrivateKeyword(i: number): TerminalNode;\n\tpublic PrivateKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PrivateKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PrivateKeyword, i);\n\t\t}\n\t}\n\tpublic ConstantKeyword(): TerminalNode[];\n\tpublic ConstantKeyword(i: number): TerminalNode;\n\tpublic ConstantKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ConstantKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ConstantKeyword, i);\n\t\t}\n\t}\n\tpublic ImmutableKeyword(): TerminalNode[];\n\tpublic ImmutableKeyword(i: number): TerminalNode;\n\tpublic ImmutableKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ImmutableKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ImmutableKeyword, i);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stateVariableDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStateVariableDeclaration) {\n\t\t\tlistener.enterStateVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStateVariableDeclaration) {\n\t\t\tlistener.exitStateVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStateVariableDeclaration) {\n\t\t\treturn visitor.visitStateVariableDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FileLevelConstantContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic ConstantKeyword(): TerminalNode { return this.getToken(SolidityParser.ConstantKeyword, 0); }\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_fileLevelConstant; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFileLevelConstant) {\n\t\t\tlistener.enterFileLevelConstant(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFileLevelConstant) {\n\t\t\tlistener.exitFileLevelConstant(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFileLevelConstant) {\n\t\t\treturn visitor.visitFileLevelConstant(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class CustomErrorDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_customErrorDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterCustomErrorDefinition) {\n\t\t\tlistener.enterCustomErrorDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitCustomErrorDefinition) {\n\t\t\tlistener.exitCustomErrorDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitCustomErrorDefinition) {\n\t\t\treturn visitor.visitCustomErrorDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TypeDefinitionContext extends ParserRuleContext {\n\tpublic TypeKeyword(): TerminalNode { return this.getToken(SolidityParser.TypeKeyword, 0); }\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic elementaryTypeName(): ElementaryTypeNameContext {\n\t\treturn this.getRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_typeDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTypeDefinition) {\n\t\t\tlistener.enterTypeDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTypeDefinition) {\n\t\t\tlistener.exitTypeDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTypeDefinition) {\n\t\t\treturn visitor.visitTypeDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UsingForDeclarationContext extends ParserRuleContext {\n\tpublic usingForObject(): UsingForObjectContext {\n\t\treturn this.getRuleContext(0, UsingForObjectContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic GlobalKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.GlobalKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_usingForDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUsingForDeclaration) {\n\t\t\tlistener.enterUsingForDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUsingForDeclaration) {\n\t\t\tlistener.exitUsingForDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUsingForDeclaration) {\n\t\t\treturn visitor.visitUsingForDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UsingForObjectContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext[];\n\tpublic userDefinedTypeName(i: number): UserDefinedTypeNameContext;\n\tpublic userDefinedTypeName(i?: number): UserDefinedTypeNameContext | UserDefinedTypeNameContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UserDefinedTypeNameContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UserDefinedTypeNameContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_usingForObject; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUsingForObject) {\n\t\t\tlistener.enterUsingForObject(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUsingForObject) {\n\t\t\tlistener.exitUsingForObject(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUsingForObject) {\n\t\t\treturn visitor.visitUsingForObject(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StructDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic variableDeclaration(): VariableDeclarationContext[];\n\tpublic variableDeclaration(i: number): VariableDeclarationContext;\n\tpublic variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VariableDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VariableDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_structDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStructDefinition) {\n\t\t\tlistener.enterStructDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStructDefinition) {\n\t\t\tlistener.exitStructDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStructDefinition) {\n\t\t\treturn visitor.visitStructDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic parameterList(): ParameterListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ParameterListContext);\n\t}\n\tpublic VirtualKeyword(): TerminalNode[];\n\tpublic VirtualKeyword(i: number): TerminalNode;\n\tpublic VirtualKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.VirtualKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.VirtualKeyword, i);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierDefinition) {\n\t\t\tlistener.enterModifierDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierDefinition) {\n\t\t\tlistener.exitModifierDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierDefinition) {\n\t\t\treturn visitor.visitModifierDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierInvocationContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierInvocation; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierInvocation) {\n\t\t\tlistener.enterModifierInvocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierInvocation) {\n\t\t\tlistener.exitModifierInvocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierInvocation) {\n\t\t\treturn visitor.visitModifierInvocation(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionDefinitionContext extends ParserRuleContext {\n\tpublic functionDescriptor(): FunctionDescriptorContext {\n\t\treturn this.getRuleContext(0, FunctionDescriptorContext);\n\t}\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tpublic modifierList(): ModifierListContext {\n\t\treturn this.getRuleContext(0, ModifierListContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic returnParameters(): ReturnParametersContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnParametersContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionDefinition) {\n\t\t\tlistener.enterFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionDefinition) {\n\t\t\tlistener.exitFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionDefinition) {\n\t\t\treturn visitor.visitFunctionDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionDescriptorContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); }\n\tpublic FallbackKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.FallbackKeyword, 0); }\n\tpublic ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionDescriptor; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionDescriptor) {\n\t\t\tlistener.enterFunctionDescriptor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionDescriptor) {\n\t\t\tlistener.exitFunctionDescriptor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionDescriptor) {\n\t\t\treturn visitor.visitFunctionDescriptor(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ReturnParametersContext extends ParserRuleContext {\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_returnParameters; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterReturnParameters) {\n\t\t\tlistener.enterReturnParameters(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitReturnParameters) {\n\t\t\tlistener.exitReturnParameters(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitReturnParameters) {\n\t\t\treturn visitor.visitReturnParameters(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierListContext extends ParserRuleContext {\n\tpublic ExternalKeyword(): TerminalNode[];\n\tpublic ExternalKeyword(i: number): TerminalNode;\n\tpublic ExternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ExternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ExternalKeyword, i);\n\t\t}\n\t}\n\tpublic PublicKeyword(): TerminalNode[];\n\tpublic PublicKeyword(i: number): TerminalNode;\n\tpublic PublicKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PublicKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PublicKeyword, i);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic PrivateKeyword(): TerminalNode[];\n\tpublic PrivateKeyword(i: number): TerminalNode;\n\tpublic PrivateKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PrivateKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PrivateKeyword, i);\n\t\t}\n\t}\n\tpublic VirtualKeyword(): TerminalNode[];\n\tpublic VirtualKeyword(i: number): TerminalNode;\n\tpublic VirtualKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.VirtualKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.VirtualKeyword, i);\n\t\t}\n\t}\n\tpublic stateMutability(): StateMutabilityContext[];\n\tpublic stateMutability(i: number): StateMutabilityContext;\n\tpublic stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StateMutabilityContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StateMutabilityContext);\n\t\t}\n\t}\n\tpublic modifierInvocation(): ModifierInvocationContext[];\n\tpublic modifierInvocation(i: number): ModifierInvocationContext;\n\tpublic modifierInvocation(i?: number): ModifierInvocationContext | ModifierInvocationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ModifierInvocationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ModifierInvocationContext);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierList) {\n\t\t\tlistener.enterModifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierList) {\n\t\t\tlistener.exitModifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierList) {\n\t\t\treturn visitor.visitModifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic eventParameterList(): EventParameterListContext {\n\t\treturn this.getRuleContext(0, EventParameterListContext);\n\t}\n\tpublic AnonymousKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.AnonymousKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventDefinition) {\n\t\t\tlistener.enterEventDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventDefinition) {\n\t\t\tlistener.exitEventDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventDefinition) {\n\t\t\treturn visitor.visitEventDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EnumValueContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_enumValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEnumValue) {\n\t\t\tlistener.enterEnumValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEnumValue) {\n\t\t\tlistener.exitEnumValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEnumValue) {\n\t\t\treturn visitor.visitEnumValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EnumDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic enumValue(): EnumValueContext[];\n\tpublic enumValue(i: number): EnumValueContext;\n\tpublic enumValue(i?: number): EnumValueContext | EnumValueContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EnumValueContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EnumValueContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_enumDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEnumDefinition) {\n\t\t\tlistener.enterEnumDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEnumDefinition) {\n\t\t\tlistener.exitEnumDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEnumDefinition) {\n\t\t\treturn visitor.visitEnumDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ParameterListContext extends ParserRuleContext {\n\tpublic parameter(): ParameterContext[];\n\tpublic parameter(i: number): ParameterContext;\n\tpublic parameter(i?: number): ParameterContext | ParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_parameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterParameterList) {\n\t\t\tlistener.enterParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitParameterList) {\n\t\t\tlistener.exitParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitParameterList) {\n\t\t\treturn visitor.visitParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_parameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterParameter) {\n\t\t\tlistener.enterParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitParameter) {\n\t\t\tlistener.exitParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitParameter) {\n\t\t\treturn visitor.visitParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventParameterListContext extends ParserRuleContext {\n\tpublic eventParameter(): EventParameterContext[];\n\tpublic eventParameter(i: number): EventParameterContext;\n\tpublic eventParameter(i?: number): EventParameterContext | EventParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EventParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EventParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventParameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventParameterList) {\n\t\t\tlistener.enterEventParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventParameterList) {\n\t\t\tlistener.exitEventParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventParameterList) {\n\t\t\treturn visitor.visitEventParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic IndexedKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.IndexedKeyword, 0); }\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventParameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventParameter) {\n\t\t\tlistener.enterEventParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventParameter) {\n\t\t\tlistener.exitEventParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventParameter) {\n\t\t\treturn visitor.visitEventParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeParameterListContext extends ParserRuleContext {\n\tpublic functionTypeParameter(): FunctionTypeParameterContext[];\n\tpublic functionTypeParameter(i: number): FunctionTypeParameterContext;\n\tpublic functionTypeParameter(i?: number): FunctionTypeParameterContext | FunctionTypeParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionTypeParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionTypeParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeParameterList) {\n\t\t\tlistener.enterFunctionTypeParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeParameterList) {\n\t\t\tlistener.exitFunctionTypeParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeParameterList) {\n\t\t\treturn visitor.visitFunctionTypeParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeParameter) {\n\t\t\tlistener.enterFunctionTypeParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeParameter) {\n\t\t\tlistener.exitFunctionTypeParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeParameter) {\n\t\t\treturn visitor.visitFunctionTypeParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclaration) {\n\t\t\tlistener.enterVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclaration) {\n\t\t\tlistener.exitVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclaration) {\n\t\t\treturn visitor.visitVariableDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TypeNameContext extends ParserRuleContext {\n\tpublic elementaryTypeName(): ElementaryTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tpublic mapping(): MappingContext | undefined {\n\t\treturn this.tryGetRuleContext(0, MappingContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tpublic functionTypeName(): FunctionTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionTypeNameContext);\n\t}\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_typeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTypeName) {\n\t\t\tlistener.enterTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTypeName) {\n\t\t\tlistener.exitTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTypeName) {\n\t\t\treturn visitor.visitTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UserDefinedTypeNameContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_userDefinedTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUserDefinedTypeName) {\n\t\t\tlistener.enterUserDefinedTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUserDefinedTypeName) {\n\t\t\tlistener.exitUserDefinedTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUserDefinedTypeName) {\n\t\t\treturn visitor.visitUserDefinedTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class MappingKeyContext extends ParserRuleContext {\n\tpublic elementaryTypeName(): ElementaryTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_mappingKey; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterMappingKey) {\n\t\t\tlistener.enterMappingKey(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitMappingKey) {\n\t\t\tlistener.exitMappingKey(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitMappingKey) {\n\t\t\treturn visitor.visitMappingKey(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class MappingContext extends ParserRuleContext {\n\tpublic mappingKey(): MappingKeyContext {\n\t\treturn this.getRuleContext(0, MappingKeyContext);\n\t}\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_mapping; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterMapping) {\n\t\t\tlistener.enterMapping(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitMapping) {\n\t\t\tlistener.exitMapping(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitMapping) {\n\t\t\treturn visitor.visitMapping(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeNameContext extends ParserRuleContext {\n\tpublic functionTypeParameterList(): FunctionTypeParameterListContext[];\n\tpublic functionTypeParameterList(i: number): FunctionTypeParameterListContext;\n\tpublic functionTypeParameterList(i?: number): FunctionTypeParameterListContext | FunctionTypeParameterListContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionTypeParameterListContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionTypeParameterListContext);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic ExternalKeyword(): TerminalNode[];\n\tpublic ExternalKeyword(i: number): TerminalNode;\n\tpublic ExternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ExternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ExternalKeyword, i);\n\t\t}\n\t}\n\tpublic stateMutability(): StateMutabilityContext[];\n\tpublic stateMutability(i: number): StateMutabilityContext;\n\tpublic stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StateMutabilityContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StateMutabilityContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeName) {\n\t\t\tlistener.enterFunctionTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeName) {\n\t\t\tlistener.exitFunctionTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeName) {\n\t\t\treturn visitor.visitFunctionTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StorageLocationContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_storageLocation; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStorageLocation) {\n\t\t\tlistener.enterStorageLocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStorageLocation) {\n\t\t\tlistener.exitStorageLocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStorageLocation) {\n\t\t\treturn visitor.visitStorageLocation(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StateMutabilityContext extends ParserRuleContext {\n\tpublic PureKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PureKeyword, 0); }\n\tpublic ConstantKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstantKeyword, 0); }\n\tpublic ViewKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ViewKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stateMutability; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStateMutability) {\n\t\t\tlistener.enterStateMutability(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStateMutability) {\n\t\t\tlistener.exitStateMutability(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStateMutability) {\n\t\t\treturn visitor.visitStateMutability(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class BlockContext extends ParserRuleContext {\n\tpublic statement(): StatementContext[];\n\tpublic statement(i: number): StatementContext;\n\tpublic statement(i?: number): StatementContext | StatementContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StatementContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StatementContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_block; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterBlock) {\n\t\t\tlistener.enterBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitBlock) {\n\t\t\tlistener.exitBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitBlock) {\n\t\t\treturn visitor.visitBlock(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StatementContext extends ParserRuleContext {\n\tpublic ifStatement(): IfStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IfStatementContext);\n\t}\n\tpublic tryStatement(): TryStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TryStatementContext);\n\t}\n\tpublic whileStatement(): WhileStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, WhileStatementContext);\n\t}\n\tpublic forStatement(): ForStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ForStatementContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic inlineAssemblyStatement(): InlineAssemblyStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, InlineAssemblyStatementContext);\n\t}\n\tpublic doWhileStatement(): DoWhileStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, DoWhileStatementContext);\n\t}\n\tpublic continueStatement(): ContinueStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ContinueStatementContext);\n\t}\n\tpublic breakStatement(): BreakStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BreakStatementContext);\n\t}\n\tpublic returnStatement(): ReturnStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnStatementContext);\n\t}\n\tpublic throwStatement(): ThrowStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ThrowStatementContext);\n\t}\n\tpublic emitStatement(): EmitStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EmitStatementContext);\n\t}\n\tpublic simpleStatement(): SimpleStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SimpleStatementContext);\n\t}\n\tpublic uncheckedStatement(): UncheckedStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UncheckedStatementContext);\n\t}\n\tpublic revertStatement(): RevertStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, RevertStatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_statement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStatement) {\n\t\t\tlistener.enterStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStatement) {\n\t\t\tlistener.exitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStatement) {\n\t\t\treturn visitor.visitStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expressionStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpressionStatement) {\n\t\t\tlistener.enterExpressionStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpressionStatement) {\n\t\t\tlistener.exitExpressionStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpressionStatement) {\n\t\t\treturn visitor.visitExpressionStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IfStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic statement(): StatementContext[];\n\tpublic statement(i: number): StatementContext;\n\tpublic statement(i?: number): StatementContext | StatementContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StatementContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StatementContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_ifStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIfStatement) {\n\t\t\tlistener.enterIfStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIfStatement) {\n\t\t\tlistener.exitIfStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIfStatement) {\n\t\t\treturn visitor.visitIfStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TryStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tpublic returnParameters(): ReturnParametersContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnParametersContext);\n\t}\n\tpublic catchClause(): CatchClauseContext[];\n\tpublic catchClause(i: number): CatchClauseContext;\n\tpublic catchClause(i?: number): CatchClauseContext | CatchClauseContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(CatchClauseContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, CatchClauseContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_tryStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTryStatement) {\n\t\t\tlistener.enterTryStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTryStatement) {\n\t\t\tlistener.exitTryStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTryStatement) {\n\t\t\treturn visitor.visitTryStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class CatchClauseContext extends ParserRuleContext {\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tpublic parameterList(): ParameterListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ParameterListContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_catchClause; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterCatchClause) {\n\t\t\tlistener.enterCatchClause(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitCatchClause) {\n\t\t\tlistener.exitCatchClause(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitCatchClause) {\n\t\t\treturn visitor.visitCatchClause(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class WhileStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_whileStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterWhileStatement) {\n\t\t\tlistener.enterWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitWhileStatement) {\n\t\t\tlistener.exitWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitWhileStatement) {\n\t\t\treturn visitor.visitWhileStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class SimpleStatementContext extends ParserRuleContext {\n\tpublic variableDeclarationStatement(): VariableDeclarationStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationStatementContext);\n\t}\n\tpublic expressionStatement(): ExpressionStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionStatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_simpleStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSimpleStatement) {\n\t\t\tlistener.enterSimpleStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSimpleStatement) {\n\t\t\tlistener.exitSimpleStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSimpleStatement) {\n\t\t\treturn visitor.visitSimpleStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UncheckedStatementContext extends ParserRuleContext {\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_uncheckedStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUncheckedStatement) {\n\t\t\tlistener.enterUncheckedStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUncheckedStatement) {\n\t\t\tlistener.exitUncheckedStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUncheckedStatement) {\n\t\t\treturn visitor.visitUncheckedStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ForStatementContext extends ParserRuleContext {\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tpublic simpleStatement(): SimpleStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SimpleStatementContext);\n\t}\n\tpublic expressionStatement(): ExpressionStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionStatementContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_forStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterForStatement) {\n\t\t\tlistener.enterForStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitForStatement) {\n\t\t\tlistener.exitForStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitForStatement) {\n\t\t\treturn visitor.visitForStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InlineAssemblyStatementContext extends ParserRuleContext {\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic StringLiteralFragment(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.StringLiteralFragment, 0); }\n\tpublic inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext | undefined {\n\t\treturn this.tryGetRuleContext(0, InlineAssemblyStatementFlagContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInlineAssemblyStatement) {\n\t\t\tlistener.enterInlineAssemblyStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInlineAssemblyStatement) {\n\t\t\tlistener.exitInlineAssemblyStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInlineAssemblyStatement) {\n\t\t\treturn visitor.visitInlineAssemblyStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InlineAssemblyStatementFlagContext extends ParserRuleContext {\n\tpublic stringLiteral(): StringLiteralContext {\n\t\treturn this.getRuleContext(0, StringLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatementFlag; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInlineAssemblyStatementFlag) {\n\t\t\tlistener.enterInlineAssemblyStatementFlag(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInlineAssemblyStatementFlag) {\n\t\t\tlistener.exitInlineAssemblyStatementFlag(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInlineAssemblyStatementFlag) {\n\t\t\treturn visitor.visitInlineAssemblyStatementFlag(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class DoWhileStatementContext extends ParserRuleContext {\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_doWhileStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterDoWhileStatement) {\n\t\t\tlistener.enterDoWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitDoWhileStatement) {\n\t\t\tlistener.exitDoWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitDoWhileStatement) {\n\t\t\treturn visitor.visitDoWhileStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContinueStatementContext extends ParserRuleContext {\n\tpublic ContinueKeyword(): TerminalNode { return this.getToken(SolidityParser.ContinueKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_continueStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContinueStatement) {\n\t\t\tlistener.enterContinueStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContinueStatement) {\n\t\t\tlistener.exitContinueStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContinueStatement) {\n\t\t\treturn visitor.visitContinueStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class BreakStatementContext extends ParserRuleContext {\n\tpublic BreakKeyword(): TerminalNode { return this.getToken(SolidityParser.BreakKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_breakStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterBreakStatement) {\n\t\t\tlistener.enterBreakStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitBreakStatement) {\n\t\t\tlistener.exitBreakStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitBreakStatement) {\n\t\t\treturn visitor.visitBreakStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ReturnStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_returnStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterReturnStatement) {\n\t\t\tlistener.enterReturnStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitReturnStatement) {\n\t\t\tlistener.exitReturnStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitReturnStatement) {\n\t\t\treturn visitor.visitReturnStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ThrowStatementContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_throwStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterThrowStatement) {\n\t\t\tlistener.enterThrowStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitThrowStatement) {\n\t\t\tlistener.exitThrowStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitThrowStatement) {\n\t\t\treturn visitor.visitThrowStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EmitStatementContext extends ParserRuleContext {\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getRuleContext(0, FunctionCallContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_emitStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEmitStatement) {\n\t\t\tlistener.enterEmitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEmitStatement) {\n\t\t\tlistener.exitEmitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEmitStatement) {\n\t\t\treturn visitor.visitEmitStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class RevertStatementContext extends ParserRuleContext {\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getRuleContext(0, FunctionCallContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_revertStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterRevertStatement) {\n\t\t\tlistener.enterRevertStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitRevertStatement) {\n\t\t\tlistener.exitRevertStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitRevertStatement) {\n\t\t\treturn visitor.visitRevertStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationStatementContext extends ParserRuleContext {\n\tpublic identifierList(): IdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierListContext);\n\t}\n\tpublic variableDeclaration(): VariableDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationContext);\n\t}\n\tpublic variableDeclarationList(): VariableDeclarationListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationListContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclarationStatement) {\n\t\t\tlistener.enterVariableDeclarationStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclarationStatement) {\n\t\t\tlistener.exitVariableDeclarationStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclarationStatement) {\n\t\t\treturn visitor.visitVariableDeclarationStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationListContext extends ParserRuleContext {\n\tpublic variableDeclaration(): VariableDeclarationContext[];\n\tpublic variableDeclaration(i: number): VariableDeclarationContext;\n\tpublic variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VariableDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VariableDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclarationList) {\n\t\t\tlistener.enterVariableDeclarationList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclarationList) {\n\t\t\tlistener.exitVariableDeclarationList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclarationList) {\n\t\t\treturn visitor.visitVariableDeclarationList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IdentifierListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_identifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIdentifierList) {\n\t\t\tlistener.enterIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIdentifierList) {\n\t\t\tlistener.exitIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIdentifierList) {\n\t\t\treturn visitor.visitIdentifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ElementaryTypeNameContext extends ParserRuleContext {\n\tpublic Int(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Int, 0); }\n\tpublic Uint(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Uint, 0); }\n\tpublic Byte(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Byte, 0); }\n\tpublic Fixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Fixed, 0); }\n\tpublic Ufixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Ufixed, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_elementaryTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterElementaryTypeName) {\n\t\t\tlistener.enterElementaryTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitElementaryTypeName) {\n\t\t\tlistener.exitElementaryTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitElementaryTypeName) {\n\t\t\treturn visitor.visitElementaryTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic nameValueList(): NameValueListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NameValueListContext);\n\t}\n\tpublic functionCallArguments(): FunctionCallArgumentsContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionCallArgumentsContext);\n\t}\n\tpublic primaryExpression(): PrimaryExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, PrimaryExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpression) {\n\t\t\tlistener.enterExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpression) {\n\t\t\tlistener.exitExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpression) {\n\t\t\treturn visitor.visitExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PrimaryExpressionContext extends ParserRuleContext {\n\tpublic BooleanLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BooleanLiteral, 0); }\n\tpublic numberLiteral(): NumberLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NumberLiteralContext);\n\t}\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic TypeKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.TypeKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tpublic tupleExpression(): TupleExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TupleExpressionContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_primaryExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPrimaryExpression) {\n\t\t\tlistener.enterPrimaryExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPrimaryExpression) {\n\t\t\tlistener.exitPrimaryExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPrimaryExpression) {\n\t\t\treturn visitor.visitPrimaryExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionListContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expressionList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpressionList) {\n\t\t\tlistener.enterExpressionList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpressionList) {\n\t\t\tlistener.exitExpressionList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpressionList) {\n\t\t\treturn visitor.visitExpressionList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NameValueListContext extends ParserRuleContext {\n\tpublic nameValue(): NameValueContext[];\n\tpublic nameValue(i: number): NameValueContext;\n\tpublic nameValue(i?: number): NameValueContext | NameValueContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(NameValueContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, NameValueContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_nameValueList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNameValueList) {\n\t\t\tlistener.enterNameValueList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNameValueList) {\n\t\t\tlistener.exitNameValueList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNameValueList) {\n\t\t\treturn visitor.visitNameValueList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NameValueContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_nameValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNameValue) {\n\t\t\tlistener.enterNameValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNameValue) {\n\t\t\tlistener.exitNameValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNameValue) {\n\t\t\treturn visitor.visitNameValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallArgumentsContext extends ParserRuleContext {\n\tpublic nameValueList(): NameValueListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NameValueListContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionCallArguments; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionCallArguments) {\n\t\t\tlistener.enterFunctionCallArguments(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionCallArguments) {\n\t\t\tlistener.exitFunctionCallArguments(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionCallArguments) {\n\t\t\treturn visitor.visitFunctionCallArguments(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic functionCallArguments(): FunctionCallArgumentsContext {\n\t\treturn this.getRuleContext(0, FunctionCallArgumentsContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionCall; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionCall) {\n\t\t\tlistener.enterFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionCall) {\n\t\t\tlistener.exitFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionCall) {\n\t\t\treturn visitor.visitFunctionCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyBlockContext extends ParserRuleContext {\n\tpublic assemblyItem(): AssemblyItemContext[];\n\tpublic assemblyItem(i: number): AssemblyItemContext;\n\tpublic assemblyItem(i?: number): AssemblyItemContext | AssemblyItemContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyItemContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyItemContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyBlock; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyBlock) {\n\t\t\tlistener.enterAssemblyBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyBlock) {\n\t\t\tlistener.exitAssemblyBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyBlock) {\n\t\t\treturn visitor.visitAssemblyBlock(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyItemContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyLocalDefinition(): AssemblyLocalDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLocalDefinitionContext);\n\t}\n\tpublic assemblyAssignment(): AssemblyAssignmentContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyAssignmentContext);\n\t}\n\tpublic assemblyStackAssignment(): AssemblyStackAssignmentContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyStackAssignmentContext);\n\t}\n\tpublic labelDefinition(): LabelDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, LabelDefinitionContext);\n\t}\n\tpublic assemblySwitch(): AssemblySwitchContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblySwitchContext);\n\t}\n\tpublic assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyFunctionDefinitionContext);\n\t}\n\tpublic assemblyFor(): AssemblyForContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyForContext);\n\t}\n\tpublic assemblyIf(): AssemblyIfContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIfContext);\n\t}\n\tpublic BreakKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BreakKeyword, 0); }\n\tpublic ContinueKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ContinueKeyword, 0); }\n\tpublic LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); }\n\tpublic subAssembly(): SubAssemblyContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SubAssemblyContext);\n\t}\n\tpublic numberLiteral(): NumberLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NumberLiteralContext);\n\t}\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyItem; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyItem) {\n\t\t\tlistener.enterAssemblyItem(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyItem) {\n\t\t\tlistener.exitAssemblyItem(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyItem) {\n\t\t\treturn visitor.visitAssemblyItem(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyExpressionContext extends ParserRuleContext {\n\tpublic assemblyCall(): AssemblyCallContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyCallContext);\n\t}\n\tpublic assemblyLiteral(): AssemblyLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLiteralContext);\n\t}\n\tpublic assemblyMember(): AssemblyMemberContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyMemberContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyExpression) {\n\t\t\tlistener.enterAssemblyExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyExpression) {\n\t\t\tlistener.exitAssemblyExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyExpression) {\n\t\t\treturn visitor.visitAssemblyExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyMemberContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyMember; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyMember) {\n\t\t\tlistener.enterAssemblyMember(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyMember) {\n\t\t\tlistener.exitAssemblyMember(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyMember) {\n\t\t\treturn visitor.visitAssemblyMember(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyCallContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext[];\n\tpublic assemblyExpression(i: number): AssemblyExpressionContext;\n\tpublic assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyCall; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyCall) {\n\t\t\tlistener.enterAssemblyCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyCall) {\n\t\t\tlistener.exitAssemblyCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyCall) {\n\t\t\treturn visitor.visitAssemblyCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyLocalDefinitionContext extends ParserRuleContext {\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\treturn this.getRuleContext(0, AssemblyIdentifierOrListContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyLocalDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyLocalDefinition) {\n\t\t\tlistener.enterAssemblyLocalDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyLocalDefinition) {\n\t\t\tlistener.exitAssemblyLocalDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyLocalDefinition) {\n\t\t\treturn visitor.visitAssemblyLocalDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyAssignmentContext extends ParserRuleContext {\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\treturn this.getRuleContext(0, AssemblyIdentifierOrListContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyAssignment; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyAssignment) {\n\t\t\tlistener.enterAssemblyAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyAssignment) {\n\t\t\tlistener.exitAssemblyAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyAssignment) {\n\t\t\treturn visitor.visitAssemblyAssignment(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIdentifierOrListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyMember(): AssemblyMemberContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyMemberContext);\n\t}\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierOrList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIdentifierOrList) {\n\t\t\tlistener.enterAssemblyIdentifierOrList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIdentifierOrList) {\n\t\t\tlistener.exitAssemblyIdentifierOrList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIdentifierOrList) {\n\t\t\treturn visitor.visitAssemblyIdentifierOrList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIdentifierListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIdentifierList) {\n\t\t\tlistener.enterAssemblyIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIdentifierList) {\n\t\t\tlistener.exitAssemblyIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIdentifierList) {\n\t\t\treturn visitor.visitAssemblyIdentifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyStackAssignmentContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyStackAssignment; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyStackAssignment) {\n\t\t\tlistener.enterAssemblyStackAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyStackAssignment) {\n\t\t\tlistener.exitAssemblyStackAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyStackAssignment) {\n\t\t\treturn visitor.visitAssemblyStackAssignment(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class LabelDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_labelDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterLabelDefinition) {\n\t\t\tlistener.enterLabelDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitLabelDefinition) {\n\t\t\tlistener.exitLabelDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitLabelDefinition) {\n\t\t\treturn visitor.visitLabelDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblySwitchContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyCase(): AssemblyCaseContext[];\n\tpublic assemblyCase(i: number): AssemblyCaseContext;\n\tpublic assemblyCase(i?: number): AssemblyCaseContext | AssemblyCaseContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyCaseContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyCaseContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblySwitch; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblySwitch) {\n\t\t\tlistener.enterAssemblySwitch(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblySwitch) {\n\t\t\tlistener.exitAssemblySwitch(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblySwitch) {\n\t\t\treturn visitor.visitAssemblySwitch(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyCaseContext extends ParserRuleContext {\n\tpublic assemblyLiteral(): AssemblyLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLiteralContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyCase; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyCase) {\n\t\t\tlistener.enterAssemblyCase(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyCase) {\n\t\t\tlistener.exitAssemblyCase(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyCase) {\n\t\t\treturn visitor.visitAssemblyCase(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyFunctionDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tpublic assemblyFunctionReturns(): AssemblyFunctionReturnsContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyFunctionReturnsContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFunctionDefinition) {\n\t\t\tlistener.enterAssemblyFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFunctionDefinition) {\n\t\t\tlistener.exitAssemblyFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFunctionDefinition) {\n\t\t\treturn visitor.visitAssemblyFunctionDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyFunctionReturnsContext extends ParserRuleContext {\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionReturns; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFunctionReturns) {\n\t\t\tlistener.enterAssemblyFunctionReturns(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFunctionReturns) {\n\t\t\tlistener.exitAssemblyFunctionReturns(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFunctionReturns) {\n\t\t\treturn visitor.visitAssemblyFunctionReturns(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyForContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext[];\n\tpublic assemblyExpression(i: number): AssemblyExpressionContext;\n\tpublic assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyExpressionContext);\n\t\t}\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext[];\n\tpublic assemblyBlock(i: number): AssemblyBlockContext;\n\tpublic assemblyBlock(i?: number): AssemblyBlockContext | AssemblyBlockContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyBlockContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyBlockContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFor; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFor) {\n\t\t\tlistener.enterAssemblyFor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFor) {\n\t\t\tlistener.exitAssemblyFor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFor) {\n\t\t\treturn visitor.visitAssemblyFor(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIfContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIf; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIf) {\n\t\t\tlistener.enterAssemblyIf(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIf) {\n\t\t\tlistener.exitAssemblyIf(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIf) {\n\t\t\treturn visitor.visitAssemblyIf(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyLiteralContext extends ParserRuleContext {\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tpublic HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); }\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyLiteral) {\n\t\t\tlistener.enterAssemblyLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyLiteral) {\n\t\t\tlistener.exitAssemblyLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyLiteral) {\n\t\t\treturn visitor.visitAssemblyLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class SubAssemblyContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_subAssembly; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSubAssembly) {\n\t\t\tlistener.enterSubAssembly(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSubAssembly) {\n\t\t\tlistener.exitSubAssembly(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSubAssembly) {\n\t\t\treturn visitor.visitSubAssembly(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TupleExpressionContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_tupleExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTupleExpression) {\n\t\t\tlistener.enterTupleExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTupleExpression) {\n\t\t\tlistener.exitTupleExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTupleExpression) {\n\t\t\treturn visitor.visitTupleExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumberLiteralContext extends ParserRuleContext {\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tpublic HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); }\n\tpublic NumberUnit(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.NumberUnit, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_numberLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNumberLiteral) {\n\t\t\tlistener.enterNumberLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNumberLiteral) {\n\t\t\tlistener.exitNumberLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNumberLiteral) {\n\t\t\treturn visitor.visitNumberLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IdentifierContext extends ParserRuleContext {\n\tpublic ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); }\n\tpublic ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tpublic LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); }\n\tpublic Identifier(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Identifier, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_identifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIdentifier) {\n\t\t\tlistener.enterIdentifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIdentifier) {\n\t\t\tlistener.exitIdentifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIdentifier) {\n\t\t\treturn visitor.visitIdentifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class HexLiteralContext extends ParserRuleContext {\n\tpublic HexLiteralFragment(): TerminalNode[];\n\tpublic HexLiteralFragment(i: number): TerminalNode;\n\tpublic HexLiteralFragment(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.HexLiteralFragment);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.HexLiteralFragment, i);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_hexLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterHexLiteral) {\n\t\t\tlistener.enterHexLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitHexLiteral) {\n\t\t\tlistener.exitHexLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitHexLiteral) {\n\t\t\treturn visitor.visitHexLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class OverrideSpecifierContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext[];\n\tpublic userDefinedTypeName(i: number): UserDefinedTypeNameContext;\n\tpublic userDefinedTypeName(i?: number): UserDefinedTypeNameContext | UserDefinedTypeNameContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UserDefinedTypeNameContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UserDefinedTypeNameContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_overrideSpecifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterOverrideSpecifier) {\n\t\t\tlistener.enterOverrideSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitOverrideSpecifier) {\n\t\t\tlistener.exitOverrideSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitOverrideSpecifier) {\n\t\t\treturn visitor.visitOverrideSpecifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StringLiteralContext extends ParserRuleContext {\n\tpublic StringLiteralFragment(): TerminalNode[];\n\tpublic StringLiteralFragment(i: number): TerminalNode;\n\tpublic StringLiteralFragment(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.StringLiteralFragment);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.StringLiteralFragment, i);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stringLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStringLiteral) {\n\t\t\tlistener.enterStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStringLiteral) {\n\t\t\tlistener.exitStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStringLiteral) {\n\t\t\treturn visitor.visitStringLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\n", "// Base on the original type definitions for solidity-parser-antlr 0.2\n// by Leonid Logvinov \n// Alex Browne \n// Xiao Liang \n\ninterface Location {\n start: {\n line: number\n column: number\n }\n end: {\n line: number\n column: number\n }\n}\n\nexport interface BaseASTNode {\n type: ASTNodeTypeString\n range?: [number, number]\n loc?: Location\n}\n\nexport interface SourceUnit extends BaseASTNode {\n type: 'SourceUnit'\n children: ASTNode[]\n}\n\nexport interface ContractDefinition extends BaseASTNode {\n type: 'ContractDefinition'\n name: string\n baseContracts: InheritanceSpecifier[]\n kind: string\n subNodes: BaseASTNode[]\n}\n\nexport interface InheritanceSpecifier extends BaseASTNode {\n type: 'InheritanceSpecifier'\n baseName: UserDefinedTypeName\n arguments: Expression[]\n}\n\nexport interface UserDefinedTypeName extends BaseASTNode {\n type: 'UserDefinedTypeName'\n namePath: string\n}\n\nexport const astNodeTypes = [\n 'SourceUnit',\n 'PragmaDirective',\n 'ImportDirective',\n 'ContractDefinition',\n 'InheritanceSpecifier',\n 'StateVariableDeclaration',\n 'UsingForDeclaration',\n 'StructDefinition',\n 'ModifierDefinition',\n 'ModifierInvocation',\n 'FunctionDefinition',\n 'EventDefinition',\n 'CustomErrorDefinition',\n 'RevertStatement',\n 'EnumValue',\n 'EnumDefinition',\n 'VariableDeclaration',\n 'UserDefinedTypeName',\n 'Mapping',\n 'ArrayTypeName',\n 'FunctionTypeName',\n 'Block',\n 'ExpressionStatement',\n 'IfStatement',\n 'WhileStatement',\n 'ForStatement',\n 'InlineAssemblyStatement',\n 'DoWhileStatement',\n 'ContinueStatement',\n 'Break',\n 'Continue',\n 'BreakStatement',\n 'ReturnStatement',\n 'EmitStatement',\n 'ThrowStatement',\n 'VariableDeclarationStatement',\n 'ElementaryTypeName',\n 'FunctionCall',\n 'AssemblyBlock',\n 'AssemblyCall',\n 'AssemblyLocalDefinition',\n 'AssemblyAssignment',\n 'AssemblyStackAssignment',\n 'LabelDefinition',\n 'AssemblySwitch',\n 'AssemblyCase',\n 'AssemblyFunctionDefinition',\n 'AssemblyFunctionReturns',\n 'AssemblyFor',\n 'AssemblyIf',\n 'SubAssembly',\n 'TupleExpression',\n 'NameValueExpression',\n 'BooleanLiteral',\n 'NumberLiteral',\n 'Identifier',\n 'BinaryOperation',\n 'UnaryOperation',\n 'NewExpression',\n 'Conditional',\n 'StringLiteral',\n 'HexLiteral',\n 'HexNumber',\n 'DecimalNumber',\n 'MemberAccess',\n 'IndexAccess',\n 'IndexRangeAccess',\n 'NameValueList',\n 'UncheckedStatement',\n 'TryStatement',\n 'CatchClause',\n 'FileLevelConstant',\n 'AssemblyMemberAccess',\n 'TypeDefinition'\n] as const\n\nexport type ASTNodeTypeString = typeof astNodeTypes[number]\n\nexport interface PragmaDirective extends BaseASTNode {\n type: 'PragmaDirective'\n name: string\n value: string\n}\nexport interface ImportDirective extends BaseASTNode {\n type: 'ImportDirective'\n path: string\n pathLiteral: StringLiteral\n unitAlias: string | null\n unitAliasIdentifier: Identifier | null\n symbolAliases: Array<[string, string | null]> | null\n symbolAliasesIdentifiers: Array<[Identifier, Identifier | null]> | null\n}\nexport interface StateVariableDeclaration extends BaseASTNode {\n type: 'StateVariableDeclaration'\n variables: StateVariableDeclarationVariable[]\n initialValue: Expression | null\n}\nexport interface FileLevelConstant extends BaseASTNode {\n type: 'FileLevelConstant'\n typeName: TypeName\n name: string\n initialValue: Expression\n isDeclaredConst: boolean\n isImmutable: boolean\n}\nexport interface UsingForDeclaration extends BaseASTNode {\n type: 'UsingForDeclaration'\n typeName: TypeName | null\n functions: string[]\n libraryName: string | null\n isGlobal: boolean;\n}\nexport interface StructDefinition extends BaseASTNode {\n type: 'StructDefinition'\n name: string\n members: VariableDeclaration[]\n}\nexport interface ModifierDefinition extends BaseASTNode {\n type: 'ModifierDefinition'\n name: string\n parameters: null | VariableDeclaration[]\n isVirtual: boolean\n override: null | UserDefinedTypeName[]\n body: Block | null\n}\nexport interface ModifierInvocation extends BaseASTNode {\n type: 'ModifierInvocation'\n name: string\n arguments: Expression[] | null\n}\nexport interface FunctionDefinition extends BaseASTNode {\n type: 'FunctionDefinition'\n name: string | null\n parameters: VariableDeclaration[]\n modifiers: ModifierInvocation[]\n stateMutability: 'pure' | 'constant' | 'payable' | 'view' | null\n visibility: 'default' | 'external' | 'internal' | 'public' | 'private'\n returnParameters: VariableDeclaration[] | null\n body: Block | null\n override: UserDefinedTypeName[] | null\n isConstructor: boolean\n isReceiveEther: boolean\n isFallback: boolean\n isVirtual: boolean\n}\n\nexport interface CustomErrorDefinition extends BaseASTNode {\n type: 'CustomErrorDefinition'\n name: string\n parameters: VariableDeclaration[]\n}\n\nexport interface TypeDefinition extends BaseASTNode {\n type: 'TypeDefinition'\n name: string\n definition: ElementaryTypeName\n}\n\nexport interface RevertStatement extends BaseASTNode {\n type: 'RevertStatement'\n revertCall: FunctionCall\n}\nexport interface EventDefinition extends BaseASTNode {\n type: 'EventDefinition'\n name: string\n parameters: VariableDeclaration[]\n isAnonymous: boolean\n}\nexport interface EnumValue extends BaseASTNode {\n type: 'EnumValue'\n name: string\n}\nexport interface EnumDefinition extends BaseASTNode {\n type: 'EnumDefinition'\n name: string\n members: EnumValue[]\n}\nexport interface VariableDeclaration extends BaseASTNode {\n type: 'VariableDeclaration'\n isIndexed: boolean\n isStateVar: boolean\n typeName: TypeName | null\n name: string | null\n identifier: Identifier | null\n isDeclaredConst?: boolean\n storageLocation: string | null\n expression: Expression | null\n visibility?: 'public' | 'private' | 'internal' | 'default'\n}\nexport interface StateVariableDeclarationVariable extends VariableDeclaration {\n override: null | UserDefinedTypeName[]\n isImmutable: boolean\n}\nexport interface ArrayTypeName extends BaseASTNode {\n type: 'ArrayTypeName'\n baseTypeName: TypeName\n length: Expression | null\n}\nexport interface Mapping extends BaseASTNode {\n type: 'Mapping'\n keyType: ElementaryTypeName | UserDefinedTypeName\n valueType: TypeName\n}\nexport interface FunctionTypeName extends BaseASTNode {\n type: 'FunctionTypeName'\n parameterTypes: VariableDeclaration[]\n returnTypes: VariableDeclaration[]\n visibility: string\n stateMutability: string | null\n}\n\nexport interface Block extends BaseASTNode {\n type: 'Block'\n statements: BaseASTNode[]\n}\nexport interface ExpressionStatement extends BaseASTNode {\n type: 'ExpressionStatement'\n expression: Expression | null\n}\nexport interface IfStatement extends BaseASTNode {\n type: 'IfStatement'\n condition: Expression\n trueBody: Statement\n falseBody: Statement | null\n}\nexport interface UncheckedStatement extends BaseASTNode {\n type: 'UncheckedStatement'\n block: Block\n}\nexport interface TryStatement extends BaseASTNode {\n type: 'TryStatement'\n expression: Expression\n returnParameters: VariableDeclaration[] | null\n body: Block\n catchClauses: CatchClause[]\n}\nexport interface CatchClause extends BaseASTNode {\n type: 'CatchClause'\n isReasonStringType: boolean\n kind: string | null\n parameters: VariableDeclaration[] | null\n body: Block\n}\nexport interface WhileStatement extends BaseASTNode {\n type: 'WhileStatement'\n condition: Expression\n body: Statement\n}\nexport interface ForStatement extends BaseASTNode {\n type: 'ForStatement'\n initExpression: SimpleStatement | null\n conditionExpression?: Expression\n loopExpression: ExpressionStatement\n body: Statement\n}\nexport interface InlineAssemblyStatement extends BaseASTNode {\n type: 'InlineAssemblyStatement'\n language: string | null\n flags: string[]\n body: AssemblyBlock\n}\nexport interface DoWhileStatement extends BaseASTNode {\n type: 'DoWhileStatement'\n condition: Expression\n body: Statement\n}\nexport interface ContinueStatement extends BaseASTNode {\n type: 'ContinueStatement'\n}\nexport interface Break extends BaseASTNode {\n type: 'Break'\n}\nexport interface Continue extends BaseASTNode {\n type: 'Continue'\n}\nexport interface BreakStatement extends BaseASTNode {\n type: 'BreakStatement'\n}\nexport interface ReturnStatement extends BaseASTNode {\n type: 'ReturnStatement'\n expression: Expression | null\n}\nexport interface EmitStatement extends BaseASTNode {\n type: 'EmitStatement'\n eventCall: FunctionCall\n}\nexport interface ThrowStatement extends BaseASTNode {\n type: 'ThrowStatement'\n}\nexport interface VariableDeclarationStatement extends BaseASTNode {\n type: 'VariableDeclarationStatement'\n variables: Array\n initialValue: Expression | null\n}\nexport interface ElementaryTypeName extends BaseASTNode {\n type: 'ElementaryTypeName'\n name: string\n stateMutability: string | null\n}\nexport interface FunctionCall extends BaseASTNode {\n type: 'FunctionCall'\n expression: Expression\n arguments: Expression[]\n names: string[]\n identifiers: Identifier[]\n}\nexport interface AssemblyBlock extends BaseASTNode {\n type: 'AssemblyBlock'\n operations: AssemblyItem[]\n}\nexport interface AssemblyCall extends BaseASTNode {\n type: 'AssemblyCall'\n functionName: string\n arguments: AssemblyExpression[]\n}\nexport interface AssemblyLocalDefinition extends BaseASTNode {\n type: 'AssemblyLocalDefinition'\n names: Identifier[] | AssemblyMemberAccess[]\n expression: AssemblyExpression | null\n}\nexport interface AssemblyAssignment extends BaseASTNode {\n type: 'AssemblyAssignment'\n names: Identifier[] | AssemblyMemberAccess[]\n expression: AssemblyExpression\n}\nexport interface AssemblyStackAssignment extends BaseASTNode {\n type: 'AssemblyStackAssignment'\n name: string\n expression: AssemblyExpression\n}\nexport interface LabelDefinition extends BaseASTNode {\n type: 'LabelDefinition'\n name: string\n}\nexport interface AssemblySwitch extends BaseASTNode {\n type: 'AssemblySwitch'\n expression: AssemblyExpression\n cases: AssemblyCase[]\n}\nexport interface AssemblyCase extends BaseASTNode {\n type: 'AssemblyCase'\n value: AssemblyLiteral | null\n block: AssemblyBlock\n default: boolean\n}\nexport interface AssemblyFunctionDefinition extends BaseASTNode {\n type: 'AssemblyFunctionDefinition'\n name: string\n arguments: Identifier[]\n returnArguments: Identifier[]\n body: AssemblyBlock\n}\nexport interface AssemblyFunctionReturns extends BaseASTNode {\n type: 'AssemblyFunctionReturns'\n}\nexport interface AssemblyFor extends BaseASTNode {\n type: 'AssemblyFor'\n pre: AssemblyBlock | AssemblyExpression\n condition: AssemblyExpression\n post: AssemblyBlock | AssemblyExpression\n body: AssemblyBlock\n}\nexport interface AssemblyIf extends BaseASTNode {\n type: 'AssemblyIf'\n condition: AssemblyExpression\n body: AssemblyBlock\n}\nexport type AssemblyLiteral =\n | StringLiteral\n | DecimalNumber\n | HexNumber\n | HexLiteral\nexport interface SubAssembly extends BaseASTNode {\n type: 'SubAssembly'\n}\nexport interface AssemblyMemberAccess extends BaseASTNode {\n type: 'AssemblyMemberAccess'\n expression: Identifier\n memberName: Identifier\n}\nexport interface NewExpression extends BaseASTNode {\n type: 'NewExpression'\n typeName: TypeName\n}\nexport interface TupleExpression extends BaseASTNode {\n type: 'TupleExpression'\n components: Array\n isArray: boolean\n}\nexport interface NameValueExpression extends BaseASTNode {\n type: 'NameValueExpression'\n expression: Expression\n arguments: NameValueList\n}\nexport interface NumberLiteral extends BaseASTNode {\n type: 'NumberLiteral'\n number: string\n subdenomination:\n | null\n | 'wei'\n | 'szabo'\n | 'finney'\n | 'ether'\n | 'seconds'\n | 'minutes'\n | 'hours'\n | 'days'\n | 'weeks'\n | 'years'\n}\nexport interface BooleanLiteral extends BaseASTNode {\n type: 'BooleanLiteral'\n value: boolean\n}\nexport interface HexLiteral extends BaseASTNode {\n type: 'HexLiteral'\n value: string\n parts: string[]\n}\nexport interface StringLiteral extends BaseASTNode {\n type: 'StringLiteral'\n value: string\n parts: string[]\n isUnicode: boolean[]\n}\nexport interface Identifier extends BaseASTNode {\n type: 'Identifier'\n name: string\n}\n\nexport const binaryOpValues = [\n '+',\n '-',\n '*',\n '/',\n '**',\n '%',\n '<<',\n '>>',\n '&&',\n '||',\n ',,',\n '&',\n ',',\n '^',\n '<',\n '>',\n '<=',\n '>=',\n '==',\n '!=',\n '=',\n ',=',\n '^=',\n '&=',\n '<<=',\n '>>=',\n '+=',\n '-=',\n '*=',\n '/=',\n '%=',\n '|',\n '|=',\n] as const\nexport type BinOp = typeof binaryOpValues[number]\n\nexport const unaryOpValues = [\n '-',\n '+',\n '++',\n '--',\n '~',\n 'after',\n 'delete',\n '!',\n] as const\nexport type UnaryOp = typeof unaryOpValues[number]\n\nexport interface BinaryOperation extends BaseASTNode {\n type: 'BinaryOperation'\n left: Expression\n right: Expression\n operator: BinOp\n}\nexport interface UnaryOperation extends BaseASTNode {\n type: 'UnaryOperation'\n operator: UnaryOp\n subExpression: Expression\n isPrefix: boolean\n}\nexport interface Conditional extends BaseASTNode {\n type: 'Conditional'\n condition: Expression\n trueExpression: Expression\n falseExpression: Expression\n}\nexport interface IndexAccess extends BaseASTNode {\n type: 'IndexAccess'\n base: Expression\n index: Expression\n}\nexport interface IndexRangeAccess extends BaseASTNode {\n type: 'IndexRangeAccess'\n base: Expression\n indexStart?: Expression\n indexEnd?: Expression\n}\nexport interface MemberAccess extends BaseASTNode {\n type: 'MemberAccess'\n expression: Expression\n memberName: string\n}\nexport interface HexNumber extends BaseASTNode {\n type: 'HexNumber'\n value: string\n}\nexport interface DecimalNumber extends BaseASTNode {\n type: 'DecimalNumber'\n value: string\n}\nexport interface NameValueList extends BaseASTNode {\n type: 'NameValueList'\n names: string[]\n identifiers: Identifier[]\n arguments: Expression[]\n}\nexport type ASTNode =\n | SourceUnit\n | PragmaDirective\n | ImportDirective\n | ContractDefinition\n | InheritanceSpecifier\n | StateVariableDeclaration\n | UsingForDeclaration\n | StructDefinition\n | ModifierDefinition\n | ModifierInvocation\n | FunctionDefinition\n | EventDefinition\n | CustomErrorDefinition\n | EnumValue\n | EnumDefinition\n | VariableDeclaration\n | TypeName\n | UserDefinedTypeName\n | Mapping\n | FunctionTypeName\n | Block\n | Statement\n | ElementaryTypeName\n | AssemblyBlock\n | AssemblyCall\n | AssemblyLocalDefinition\n | AssemblyAssignment\n | AssemblyStackAssignment\n | LabelDefinition\n | AssemblySwitch\n | AssemblyCase\n | AssemblyFunctionDefinition\n | AssemblyFunctionReturns\n | AssemblyFor\n | AssemblyIf\n | AssemblyLiteral\n | SubAssembly\n | TupleExpression\n | BinaryOperation\n | Conditional\n | IndexAccess\n | IndexRangeAccess\n | AssemblyItem\n | Expression\n | NameValueList\n | AssemblyMemberAccess\n | CatchClause\n | FileLevelConstant\n | TypeDefinition\n\nexport type AssemblyItem =\n | Identifier\n | AssemblyBlock\n | AssemblyExpression\n | AssemblyLocalDefinition\n | AssemblyAssignment\n | AssemblyStackAssignment\n | LabelDefinition\n | AssemblySwitch\n | AssemblyFunctionDefinition\n | AssemblyFor\n | AssemblyIf\n | Break\n | Continue\n | SubAssembly\n | NumberLiteral\n | StringLiteral\n | HexNumber\n | HexLiteral\n | DecimalNumber\nexport type AssemblyExpression = AssemblyCall | AssemblyLiteral\nexport type Expression =\n | IndexAccess\n | IndexRangeAccess\n | TupleExpression\n | BinaryOperation\n | Conditional\n | MemberAccess\n | FunctionCall\n | UnaryOperation\n | NewExpression\n | PrimaryExpression\n | NameValueExpression\nexport type PrimaryExpression =\n | BooleanLiteral\n | HexLiteral\n | StringLiteral\n | NumberLiteral\n | Identifier\n | TupleExpression\n | TypeName\nexport type SimpleStatement = VariableDeclarationStatement | ExpressionStatement\nexport type TypeName =\n | ElementaryTypeName\n | UserDefinedTypeName\n | Mapping\n | ArrayTypeName\n | FunctionTypeName\nexport type Statement =\n | IfStatement\n | WhileStatement\n | ForStatement\n | Block\n | InlineAssemblyStatement\n | DoWhileStatement\n | ContinueStatement\n | BreakStatement\n | ReturnStatement\n | EmitStatement\n | ThrowStatement\n | SimpleStatement\n | VariableDeclarationStatement\n | UncheckedStatement\n | TryStatement\n | RevertStatement\n\ntype ASTMap = { [K in ASTNodeTypeString]: U extends { type: K } ? U : never }\ntype ASTTypeMap = ASTMap\ntype ASTVisitorEnter = {\n [K in keyof ASTTypeMap]?: (ast: ASTTypeMap[K], parent?: ASTNode) => any\n}\ntype ASTVisitorExit = {\n [K in keyof ASTTypeMap as `${K}:exit`]?: (\n ast: ASTTypeMap[K],\n parent?: ASTNode\n ) => any\n}\n\nexport type ASTVisitor = ASTVisitorEnter & ASTVisitorExit\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * This monstrosity is here to check that there are no ASTNodeTypeString without\n * a corresponding ASTNode, no ASTNode without a corresponding ASTNodeTypeString,\n * no ASTVisitorEnter callback without a corresponding ASTNode,\n * no ASTVisitorExit callback without a corresponding ASTVisitorEnter callback,\n * and so on, and so on.\n *\n * There are probably some ways to simplify this by deriving some types\n * from others.\n */\nfunction checkTypes() {\n const astNodeType: ASTNode['type'] = '' as any\n const astNodeTypeString: ASTNodeTypeString = '' as any\n const astVisitorEnterKey: keyof ASTVisitorEnter = '' as any\n\n let assignAstNodeType: ASTNode['type'] = astNodeTypeString\n assignAstNodeType = astVisitorEnterKey\n\n let assignAstNodeTyeString: ASTNodeTypeString = astNodeType\n assignAstNodeTyeString = astVisitorEnterKey\n\n let assignAstVisitorEnterKey: keyof ASTVisitorEnter = astNodeType\n assignAstVisitorEnterKey = astNodeTypeString\n\n const astNodeTypeExit: `${ASTNode['type']}:exit` = '' as any\n const astNodeTypeStringExit: `${ASTNodeTypeString}:exit` = '' as any\n const astVisitorEnterKeyExit: `${keyof ASTVisitorEnter}:exit` = '' as any\n const astVisitorExitKey: keyof ASTVisitorExit = '' as any\n\n let letAstNodeTypeExit: `${ASTNode['type']}:exit` = astNodeTypeStringExit\n letAstNodeTypeExit = astVisitorEnterKeyExit\n letAstNodeTypeExit = astVisitorExitKey\n\n let assignAstNodeTypeStringExit: `${ASTNodeTypeString}:exit` = astNodeTypeExit\n assignAstNodeTypeStringExit = astVisitorEnterKeyExit\n assignAstNodeTypeStringExit = astVisitorExitKey\n\n let assignAstVisitorEnterKeyExit: `${keyof ASTVisitorEnter}:exit` = astNodeTypeExit\n assignAstVisitorEnterKeyExit = astNodeTypeStringExit\n assignAstVisitorEnterKeyExit = astVisitorExitKey\n\n let assignAstVisitorExitKey: keyof ASTVisitorExit = astNodeTypeExit\n assignAstVisitorExitKey = astNodeTypeStringExit\n assignAstVisitorExitKey = astVisitorEnterKeyExit\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n", "import { ParserRuleContext } from 'antlr4ts'\nimport { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'\nimport { ParseTree } from 'antlr4ts/tree/ParseTree'\nimport * as SP from './antlr/SolidityParser'\n\nimport { SolidityVisitor } from './antlr/SolidityVisitor'\nimport { ParseOptions } from './types'\nimport * as AST from './ast-types'\nimport { ErrorNode } from 'antlr4ts/tree/ErrorNode'\n\ninterface SourceLocation {\n start: {\n line: number\n column: number\n }\n end: {\n line: number\n column: number\n }\n}\n\ninterface WithMeta {\n __withMeta: never\n}\n\ntype ASTBuilderNode = AST.ASTNode & WithMeta\n\nexport class ASTBuilder\n extends AbstractParseTreeVisitor\n implements SolidityVisitor {\n public result: AST.SourceUnit | null = null\n private _currentContract?: string\n\n constructor(public options: ParseOptions) {\n super()\n }\n\n defaultResult(): AST.ASTNode & WithMeta {\n throw new Error('Unknown node')\n }\n\n aggregateResult() {\n return ({ type: '' } as unknown) as AST.ASTNode & WithMeta\n }\n\n public visitSourceUnit(ctx: SP.SourceUnitContext): AST.SourceUnit & WithMeta {\n const children = (ctx.children ?? []).filter(\n (x) => !(x instanceof ErrorNode)\n )\n\n const node: AST.SourceUnit = {\n type: 'SourceUnit',\n children: children.slice(0, -1).map((child) => this.visit(child)),\n }\n const result = this._addMeta(node, ctx)\n this.result = result\n\n return result\n }\n\n public visitContractPart(ctx: SP.ContractPartContext) {\n return this.visit(ctx.getChild(0))\n }\n\n public visitContractDefinition(\n ctx: SP.ContractDefinitionContext\n ): AST.ContractDefinition & WithMeta {\n const name = this._toText(ctx.identifier())\n const kind = this._toText(ctx.getChild(0))\n\n this._currentContract = name\n\n const node: AST.ContractDefinition = {\n type: 'ContractDefinition',\n name,\n baseContracts: ctx\n .inheritanceSpecifier()\n .map((x) => this.visitInheritanceSpecifier(x)),\n subNodes: ctx.contractPart().map((x) => this.visit(x)),\n kind,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStateVariableDeclaration(\n ctx: SP.StateVariableDeclarationContext\n ) {\n const type = this.visitTypeName(ctx.typeName())\n const iden = ctx.identifier()\n const name = this._toText(iden)\n\n let expression: AST.Expression | null = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n expression = this.visitExpression(ctxExpression)\n }\n\n let visibility: AST.VariableDeclaration['visibility'] = 'default'\n if (ctx.InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.PublicKeyword().length > 0) {\n visibility = 'public'\n } else if (ctx.PrivateKeyword().length > 0) {\n visibility = 'private'\n }\n\n let isDeclaredConst = false\n if (ctx.ConstantKeyword().length > 0) {\n isDeclaredConst = true\n }\n\n let override\n const overrideSpecifier = ctx.overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n let isImmutable = false\n if (ctx.ImmutableKeyword().length > 0) {\n isImmutable = true\n }\n\n const decl: AST.StateVariableDeclarationVariable = {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n identifier: this.visitIdentifier(iden),\n expression,\n visibility,\n isStateVar: true,\n isDeclaredConst,\n isIndexed: false,\n isImmutable,\n override,\n storageLocation: null,\n }\n\n const node: AST.StateVariableDeclaration = {\n type: 'StateVariableDeclaration',\n variables: [this._addMeta(decl, ctx)],\n initialValue: expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitVariableDeclaration(\n ctx: SP.VariableDeclarationContext\n ): AST.VariableDeclaration & WithMeta {\n let storageLocation: string | null = null\n const ctxStorageLocation = ctx.storageLocation()\n if (ctxStorageLocation) {\n storageLocation = this._toText(ctxStorageLocation)\n }\n\n const identifierCtx = ctx.identifier()\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name: this._toText(identifierCtx),\n identifier: this.visitIdentifier(identifierCtx),\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitVariableDeclarationStatement(\n ctx: SP.VariableDeclarationStatementContext\n ): AST.VariableDeclarationStatement & WithMeta {\n let variables: Array = []\n const ctxVariableDeclaration = ctx.variableDeclaration()\n const ctxIdentifierList = ctx.identifierList()\n const ctxVariableDeclarationList = ctx.variableDeclarationList()\n if (ctxVariableDeclaration !== undefined) {\n variables = [this.visitVariableDeclaration(ctxVariableDeclaration)]\n } else if (ctxIdentifierList !== undefined) {\n variables = this.buildIdentifierList(ctxIdentifierList)\n } else if (ctxVariableDeclarationList) {\n variables = this.buildVariableDeclarationList(ctxVariableDeclarationList)\n }\n\n let initialValue: AST.Expression | null = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n initialValue = this.visitExpression(ctxExpression)\n }\n\n const node: AST.VariableDeclarationStatement = {\n type: 'VariableDeclarationStatement',\n variables,\n initialValue,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStatement(ctx: SP.StatementContext) {\n return this.visit(ctx.getChild(0)) as AST.Statement & WithMeta\n }\n\n public visitSimpleStatement(ctx: SP.SimpleStatementContext) {\n return this.visit(ctx.getChild(0)) as AST.SimpleStatement & WithMeta\n }\n\n public visitEventDefinition(ctx: SP.EventDefinitionContext) {\n const parameters = ctx\n .eventParameterList()\n .eventParameter()\n .map((paramCtx) => {\n const type = this.visitTypeName(paramCtx.typeName())\n let name: string | null = null\n const paramCtxIdentifier = paramCtx.identifier()\n if (paramCtxIdentifier) {\n name = this._toText(paramCtxIdentifier)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n identifier:\n paramCtxIdentifier !== undefined\n ? this.visitIdentifier(paramCtxIdentifier)\n : null,\n isStateVar: false,\n isIndexed: paramCtx.IndexedKeyword() !== undefined,\n storageLocation: null,\n expression: null,\n }\n return this._addMeta(node, paramCtx)\n })\n\n const node: AST.EventDefinition = {\n type: 'EventDefinition',\n name: this._toText(ctx.identifier()),\n parameters,\n isAnonymous: ctx.AnonymousKeyword() !== undefined,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitBlock(ctx: SP.BlockContext): AST.Block & WithMeta {\n const node: AST.Block = {\n type: 'Block',\n statements: ctx.statement().map((x) => this.visitStatement(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitParameter(ctx: SP.ParameterContext) {\n let storageLocation: string | null = null\n const ctxStorageLocation = ctx.storageLocation()\n if (ctxStorageLocation !== undefined) {\n storageLocation = this._toText(ctxStorageLocation)\n }\n\n let name: string | null = null\n const ctxIdentifier = ctx.identifier()\n if (ctxIdentifier !== undefined) {\n name = this._toText(ctxIdentifier)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name,\n identifier:\n ctxIdentifier !== undefined\n ? this.visitIdentifier(ctxIdentifier)\n : null,\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionDefinition(\n ctx: SP.FunctionDefinitionContext\n ): AST.FunctionDefinition & WithMeta {\n let isConstructor = false\n let isFallback = false\n let isReceiveEther = false\n let isVirtual = false\n let name: string | null = null\n let parameters: any = []\n let returnParameters: AST.VariableDeclaration[] | null = null\n let visibility: AST.FunctionDefinition['visibility'] = 'default'\n\n let block: AST.Block | null = null\n const ctxBlock = ctx.block()\n if (ctxBlock !== undefined) {\n block = this.visitBlock(ctxBlock)\n }\n\n const modifiers = ctx\n .modifierList()\n .modifierInvocation()\n .map((mod) => this.visitModifierInvocation(mod))\n\n let stateMutability = null\n if (ctx.modifierList().stateMutability().length > 0) {\n stateMutability = this._stateMutabilityToText(\n ctx.modifierList().stateMutability(0)\n )\n }\n\n // see what type of function we're dealing with\n const ctxReturnParameters = ctx.returnParameters()\n switch (this._toText(ctx.functionDescriptor().getChild(0))) {\n case 'constructor':\n parameters = ctx\n .parameterList()\n .parameter()\n .map((x) => this.visit(x))\n\n // error out on incorrect function visibility\n if (ctx.modifierList().InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.modifierList().PublicKeyword().length > 0) {\n visibility = 'public'\n } else {\n visibility = 'default'\n }\n\n isConstructor = true\n break\n case 'fallback':\n visibility = 'external'\n isFallback = true\n break\n case 'receive':\n visibility = 'external'\n isReceiveEther = true\n break\n case 'function': {\n const identifier = ctx.functionDescriptor().identifier()\n name = identifier !== undefined ? this._toText(identifier) : ''\n\n parameters = ctx\n .parameterList()\n .parameter()\n .map((x) => this.visit(x))\n returnParameters =\n ctxReturnParameters !== undefined\n ? this.visitReturnParameters(ctxReturnParameters)\n : null\n\n // parse function visibility\n if (ctx.modifierList().ExternalKeyword().length > 0) {\n visibility = 'external'\n } else if (ctx.modifierList().InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.modifierList().PublicKeyword().length > 0) {\n visibility = 'public'\n } else if (ctx.modifierList().PrivateKeyword().length > 0) {\n visibility = 'private'\n }\n\n isConstructor = name === this._currentContract\n isFallback = name === ''\n break\n }\n }\n\n // check if function is virtual\n if (ctx.modifierList().VirtualKeyword().length > 0) {\n isVirtual = true\n }\n\n let override: AST.UserDefinedTypeName[] | null\n const overrideSpecifier = ctx.modifierList().overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n const node: AST.FunctionDefinition = {\n type: 'FunctionDefinition',\n name,\n parameters,\n returnParameters,\n body: block,\n visibility,\n modifiers,\n override,\n isConstructor,\n isReceiveEther,\n isFallback,\n isVirtual,\n stateMutability,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEnumDefinition(\n ctx: SP.EnumDefinitionContext\n ): AST.EnumDefinition & WithMeta {\n const node: AST.EnumDefinition = {\n type: 'EnumDefinition',\n name: this._toText(ctx.identifier()),\n members: ctx.enumValue().map((x) => this.visitEnumValue(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEnumValue(ctx: SP.EnumValueContext): AST.EnumValue & WithMeta {\n const node: AST.EnumValue = {\n type: 'EnumValue',\n name: this._toText(ctx.identifier()),\n }\n return this._addMeta(node, ctx)\n }\n\n public visitElementaryTypeName(\n ctx: SP.ElementaryTypeNameContext\n ): AST.ElementaryTypeName & WithMeta {\n const node: AST.ElementaryTypeName = {\n type: 'ElementaryTypeName',\n name: this._toText(ctx),\n stateMutability: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitIdentifier(ctx: SP.IdentifierContext): AST.Identifier & WithMeta {\n const node: AST.Identifier = {\n type: 'Identifier',\n name: this._toText(ctx),\n }\n return this._addMeta(node, ctx)\n }\n\n public visitTypeName(ctx: SP.TypeNameContext): AST.TypeName & WithMeta {\n if (ctx.children !== undefined && ctx.children.length > 2) {\n let length = null\n if (ctx.children.length === 4) {\n const expression = ctx.expression()\n if (expression === undefined) {\n throw new Error(\n 'Assertion error: a typeName with 4 children should have an expression'\n )\n }\n length = this.visitExpression(expression)\n }\n\n const ctxTypeName = ctx.typeName()\n\n const node: AST.ArrayTypeName = {\n type: 'ArrayTypeName',\n baseTypeName: this.visitTypeName(ctxTypeName!),\n length,\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.children?.length === 2) {\n const node: AST.ElementaryTypeName = {\n type: 'ElementaryTypeName',\n name: this._toText(ctx.getChild(0)),\n stateMutability: this._toText(ctx.getChild(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.elementaryTypeName() !== undefined) {\n return this.visitElementaryTypeName(ctx.elementaryTypeName()!)\n }\n\n if (ctx.userDefinedTypeName() !== undefined) {\n return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()!)\n }\n\n if (ctx.mapping() !== undefined) {\n return this.visitMapping(ctx.mapping()!)\n }\n\n if (ctx.functionTypeName() !== undefined) {\n return this.visitFunctionTypeName(ctx.functionTypeName()!)\n }\n\n throw new Error('Assertion error: unhandled type name case')\n }\n\n public visitUserDefinedTypeName(\n ctx: SP.UserDefinedTypeNameContext\n ): AST.UserDefinedTypeName & WithMeta {\n const node: AST.UserDefinedTypeName = {\n type: 'UserDefinedTypeName',\n namePath: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitUsingForDeclaration(\n ctx: SP.UsingForDeclarationContext\n ): AST.UsingForDeclaration & WithMeta {\n let typeName = null\n const ctxTypeName = ctx.typeName()\n if (ctxTypeName !== undefined) {\n typeName = this.visitTypeName(ctxTypeName)\n }\n\n const isGlobal = ctx.GlobalKeyword() !== undefined;\n\n // the object of the `usingForDeclaration` can be a single identifier\n // (the library name) or a group of functions:\n // using Lib for uint;\n // using { f } for uint;\n let node: AST.UsingForDeclaration\n const usingForObject = ctx.usingForObject()\n const firstChild = this._toText(usingForObject.getChild(0))\n if (firstChild === '{') {\n node = {\n type: 'UsingForDeclaration',\n isGlobal,\n typeName,\n libraryName: null,\n functions: usingForObject\n .userDefinedTypeName()\n .map((x) => this._toText(x)),\n }\n } else {\n node = {\n type: 'UsingForDeclaration',\n isGlobal,\n typeName,\n libraryName: this._toText(usingForObject.userDefinedTypeName(0)),\n functions: [],\n }\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitPragmaDirective(\n ctx: SP.PragmaDirectiveContext\n ): AST.PragmaDirective & WithMeta {\n // this converts something like >= 0.5.0 <0.7.0\n // in >=0.5.0 <0.7.0\n const versionContext = ctx.pragmaValue().version()\n\n let value = this._toText(ctx.pragmaValue())\n if (versionContext?.children !== undefined) {\n value = versionContext.children.map((x) => this._toText(x)).join(' ')\n }\n\n const node: AST.PragmaDirective = {\n type: 'PragmaDirective',\n name: this._toText(ctx.pragmaName()),\n value,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitInheritanceSpecifier(\n ctx: SP.InheritanceSpecifierContext\n ): AST.InheritanceSpecifier & WithMeta {\n const exprList = ctx.expressionList()\n const args =\n exprList !== undefined\n ? exprList.expression().map((x) => this.visitExpression(x))\n : []\n\n const node: AST.InheritanceSpecifier = {\n type: 'InheritanceSpecifier',\n baseName: this.visitUserDefinedTypeName(ctx.userDefinedTypeName()),\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitModifierInvocation(\n ctx: SP.ModifierInvocationContext\n ): AST.ModifierInvocation & WithMeta {\n const exprList = ctx.expressionList()\n\n let args\n if (exprList != null) {\n args = exprList.expression().map((x) => this.visit(x))\n } else if (ctx.children !== undefined && ctx.children.length > 1) {\n args = []\n } else {\n args = null\n }\n\n const node: AST.ModifierInvocation = {\n type: 'ModifierInvocation',\n name: this._toText(ctx.identifier()),\n arguments: args,\n }\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionTypeName(\n ctx: SP.FunctionTypeNameContext\n ): AST.FunctionTypeName & WithMeta {\n const parameterTypes = ctx\n .functionTypeParameterList(0)\n .functionTypeParameter()\n .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx))\n\n let returnTypes: AST.VariableDeclaration[] = []\n if (ctx.functionTypeParameterList().length > 1) {\n returnTypes = ctx\n .functionTypeParameterList(1)\n .functionTypeParameter()\n .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx))\n }\n\n let visibility = 'default'\n if (ctx.InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.ExternalKeyword().length > 0) {\n visibility = 'external'\n }\n\n let stateMutability = null\n if (ctx.stateMutability().length > 0) {\n stateMutability = this._toText(ctx.stateMutability(0))\n }\n\n const node: AST.FunctionTypeName = {\n type: 'FunctionTypeName',\n parameterTypes,\n returnTypes,\n visibility,\n stateMutability,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionTypeParameter(\n ctx: SP.FunctionTypeParameterContext\n ): AST.VariableDeclaration & WithMeta {\n let storageLocation = null\n if (ctx.storageLocation()) {\n storageLocation = this._toText(ctx.storageLocation()!)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name: null,\n identifier: null,\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitThrowStatement(\n ctx: SP.ThrowStatementContext\n ): AST.ThrowStatement & WithMeta {\n const node: AST.ThrowStatement = {\n type: 'ThrowStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitReturnStatement(\n ctx: SP.ReturnStatementContext\n ): AST.ReturnStatement & WithMeta {\n let expression = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n expression = this.visitExpression(ctxExpression)\n }\n\n const node: AST.ReturnStatement = {\n type: 'ReturnStatement',\n expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEmitStatement(\n ctx: SP.EmitStatementContext\n ): AST.EmitStatement & WithMeta {\n const node: AST.EmitStatement = {\n type: 'EmitStatement',\n eventCall: this.visitFunctionCall(ctx.functionCall()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitCustomErrorDefinition(\n ctx: SP.CustomErrorDefinitionContext\n ): AST.CustomErrorDefinition & WithMeta {\n const node: AST.CustomErrorDefinition = {\n type: 'CustomErrorDefinition',\n name: this._toText(ctx.identifier()),\n parameters: this.visitParameterList(ctx.parameterList()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitTypeDefinition(\n ctx: SP.TypeDefinitionContext\n ): AST.TypeDefinition & WithMeta {\n const node: AST.TypeDefinition = {\n type: 'TypeDefinition',\n name: this._toText(ctx.identifier()),\n definition: this.visitElementaryTypeName(ctx.elementaryTypeName()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitRevertStatement(\n ctx: SP.RevertStatementContext\n ): AST.RevertStatement & WithMeta {\n const node: AST.RevertStatement = {\n type: 'RevertStatement',\n revertCall: this.visitFunctionCall(ctx.functionCall()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionCall(\n ctx: SP.FunctionCallContext\n ): AST.FunctionCall & WithMeta {\n let args: AST.Expression[] = []\n const names = []\n const identifiers = []\n\n const ctxArgs = ctx.functionCallArguments()\n const ctxArgsExpressionList = ctxArgs.expressionList()\n const ctxArgsNameValueList = ctxArgs.nameValueList()\n if (ctxArgsExpressionList) {\n args = ctxArgsExpressionList\n .expression()\n .map((exprCtx) => this.visitExpression(exprCtx))\n } else if (ctxArgsNameValueList) {\n for (const nameValue of ctxArgsNameValueList.nameValue()) {\n args.push(this.visitExpression(nameValue.expression()))\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n }\n }\n\n const node: AST.FunctionCall = {\n type: 'FunctionCall',\n expression: this.visitExpression(ctx.expression()),\n arguments: args,\n names,\n identifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStructDefinition(\n ctx: SP.StructDefinitionContext\n ): AST.StructDefinition & WithMeta {\n const node: AST.StructDefinition = {\n type: 'StructDefinition',\n name: this._toText(ctx.identifier()),\n members: ctx\n .variableDeclaration()\n .map((x) => this.visitVariableDeclaration(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitWhileStatement(\n ctx: SP.WhileStatementContext\n ): AST.WhileStatement & WithMeta {\n const node: AST.WhileStatement = {\n type: 'WhileStatement',\n condition: this.visitExpression(ctx.expression()),\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitDoWhileStatement(\n ctx: SP.DoWhileStatementContext\n ): AST.DoWhileStatement & WithMeta {\n const node: AST.DoWhileStatement = {\n type: 'DoWhileStatement',\n condition: this.visitExpression(ctx.expression()),\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitIfStatement(\n ctx: SP.IfStatementContext\n ): AST.IfStatement & WithMeta {\n const trueBody = this.visitStatement(ctx.statement(0))\n\n let falseBody = null\n if (ctx.statement().length > 1) {\n falseBody = this.visitStatement(ctx.statement(1))\n }\n\n const node: AST.IfStatement = {\n type: 'IfStatement',\n condition: this.visitExpression(ctx.expression()),\n trueBody,\n falseBody,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitTryStatement(\n ctx: SP.TryStatementContext\n ): AST.TryStatement & WithMeta {\n let returnParameters = null\n const ctxReturnParameters = ctx.returnParameters()\n if (ctxReturnParameters !== undefined) {\n returnParameters = this.visitReturnParameters(ctxReturnParameters)\n }\n\n const catchClauses = ctx\n .catchClause()\n .map((exprCtx) => this.visitCatchClause(exprCtx))\n\n const node: AST.TryStatement = {\n type: 'TryStatement',\n expression: this.visitExpression(ctx.expression()),\n returnParameters,\n body: this.visitBlock(ctx.block()),\n catchClauses,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitCatchClause(\n ctx: SP.CatchClauseContext\n ): AST.CatchClause & WithMeta {\n let parameters = null\n if (ctx.parameterList()) {\n parameters = this.visitParameterList(ctx.parameterList()!)\n }\n\n if (\n ctx.identifier() &&\n this._toText(ctx.identifier()!) !== 'Error' &&\n this._toText(ctx.identifier()!) !== 'Panic'\n ) {\n throw new Error('Expected \"Error\" or \"Panic\" identifier in catch clause')\n }\n\n let kind = null\n const ctxIdentifier = ctx.identifier()\n if (ctxIdentifier !== undefined) {\n kind = this._toText(ctxIdentifier)\n }\n\n const node: AST.CatchClause = {\n type: 'CatchClause',\n // deprecated, use the `kind` property instead,\n isReasonStringType: kind === 'Error',\n kind,\n parameters,\n body: this.visitBlock(ctx.block()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitExpressionStatement(\n ctx: SP.ExpressionStatementContext\n ): AST.ExpressionStatement & WithMeta {\n if (!ctx) {\n return null as any\n }\n const node: AST.ExpressionStatement = {\n type: 'ExpressionStatement',\n expression: this.visitExpression(ctx.expression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitNumberLiteral(\n ctx: SP.NumberLiteralContext\n ): AST.NumberLiteral & WithMeta {\n const number = this._toText(ctx.getChild(0))\n let subdenomination = null\n\n if (ctx.children?.length === 2) {\n subdenomination = this._toText(ctx.getChild(1))\n }\n\n const node: AST.NumberLiteral = {\n type: 'NumberLiteral',\n number,\n subdenomination: subdenomination as AST.NumberLiteral['subdenomination'],\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitMappingKey(\n ctx: SP.MappingKeyContext\n ): (AST.ElementaryTypeName | AST.UserDefinedTypeName) & WithMeta {\n if (ctx.elementaryTypeName()) {\n return this.visitElementaryTypeName(ctx.elementaryTypeName()!)\n } else if (ctx.userDefinedTypeName()) {\n return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()!)\n } else {\n throw new Error(\n 'Expected MappingKey to have either ' +\n 'elementaryTypeName or userDefinedTypeName'\n )\n }\n }\n\n public visitMapping(ctx: SP.MappingContext): AST.Mapping & WithMeta {\n const node: AST.Mapping = {\n type: 'Mapping',\n keyType: this.visitMappingKey(ctx.mappingKey()),\n valueType: this.visitTypeName(ctx.typeName()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitModifierDefinition(\n ctx: SP.ModifierDefinitionContext\n ): AST.ModifierDefinition & WithMeta {\n let parameters = null\n if (ctx.parameterList()) {\n parameters = this.visitParameterList(ctx.parameterList()!)\n }\n\n let isVirtual = false\n if (ctx.VirtualKeyword().length > 0) {\n isVirtual = true\n }\n\n let override\n const overrideSpecifier = ctx.overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n let body = null\n const blockCtx = ctx.block()\n if (blockCtx !== undefined) {\n body = this.visitBlock(blockCtx)\n }\n\n const node: AST.ModifierDefinition = {\n type: 'ModifierDefinition',\n name: this._toText(ctx.identifier()),\n parameters,\n body,\n isVirtual,\n override,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitUncheckedStatement(\n ctx: SP.UncheckedStatementContext\n ): AST.UncheckedStatement & WithMeta {\n const node: AST.UncheckedStatement = {\n type: 'UncheckedStatement',\n block: this.visitBlock(ctx.block()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitExpression(ctx: SP.ExpressionContext): AST.Expression & WithMeta {\n let op: string\n\n switch (ctx.children!.length) {\n case 1: {\n // primary expression\n const primaryExpressionCtx = ctx.tryGetRuleContext(\n 0,\n SP.PrimaryExpressionContext\n )\n if (primaryExpressionCtx === undefined) {\n throw new Error(\n 'Assertion error: primary expression should exist when children length is 1'\n )\n }\n return this.visitPrimaryExpression(primaryExpressionCtx)\n }\n case 2:\n op = this._toText(ctx.getChild(0))\n\n // new expression\n if (op === 'new') {\n const node: AST.NewExpression = {\n type: 'NewExpression',\n typeName: this.visitTypeName(ctx.typeName()!),\n }\n return this._addMeta(node, ctx)\n }\n\n // prefix operators\n if (AST.unaryOpValues.includes(op as AST.UnaryOp)) {\n const node: AST.UnaryOperation = {\n type: 'UnaryOperation',\n operator: op as AST.UnaryOp,\n subExpression: this.visitExpression(\n ctx.getRuleContext(0, SP.ExpressionContext)\n ),\n isPrefix: true,\n }\n return this._addMeta(node, ctx)\n }\n\n op = this._toText(ctx.getChild(1))!\n\n // postfix operators\n if (['++', '--'].includes(op)) {\n const node: AST.UnaryOperation = {\n type: 'UnaryOperation',\n operator: op as AST.UnaryOp,\n subExpression: this.visitExpression(\n ctx.getRuleContext(0, SP.ExpressionContext)\n ),\n isPrefix: false,\n }\n return this._addMeta(node, ctx)\n }\n break\n\n case 3:\n // treat parenthesis as no-op\n if (\n this._toText(ctx.getChild(0)) === '(' &&\n this._toText(ctx.getChild(2)) === ')'\n ) {\n const node: AST.TupleExpression = {\n type: 'TupleExpression',\n components: [\n this.visitExpression(ctx.getRuleContext(0, SP.ExpressionContext)),\n ],\n isArray: false,\n }\n return this._addMeta(node, ctx)\n }\n\n op = this._toText(ctx.getChild(1))!\n\n // member access\n if (op === '.') {\n const node: AST.MemberAccess = {\n type: 'MemberAccess',\n expression: this.visitExpression(ctx.expression(0)),\n memberName: this._toText(ctx.identifier()!),\n }\n return this._addMeta(node, ctx)\n }\n\n if (isBinOp(op)) {\n const node: AST.BinaryOperation = {\n type: 'BinaryOperation',\n operator: op,\n left: this.visitExpression(ctx.expression(0)),\n right: this.visitExpression(ctx.expression(1)),\n }\n return this._addMeta(node, ctx)\n }\n break\n\n case 4:\n // function call\n if (\n this._toText(ctx.getChild(1)) === '(' &&\n this._toText(ctx.getChild(3)) === ')'\n ) {\n let args: AST.Expression[] = []\n const names = []\n const identifiers = []\n\n const ctxArgs = ctx.functionCallArguments()!\n if (ctxArgs.expressionList()) {\n args = ctxArgs\n .expressionList()!\n .expression()\n .map((exprCtx) => this.visitExpression(exprCtx))\n } else if (ctxArgs.nameValueList()) {\n for (const nameValue of ctxArgs.nameValueList()!.nameValue()) {\n args.push(this.visitExpression(nameValue.expression()))\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n }\n }\n\n const node: AST.FunctionCall = {\n type: 'FunctionCall',\n expression: this.visitExpression(ctx.expression(0)),\n arguments: args,\n names,\n identifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n // index access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ']'\n ) {\n if (ctx.getChild(2).text === ':') {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n const node: AST.IndexAccess = {\n type: 'IndexAccess',\n base: this.visitExpression(ctx.expression(0)),\n index: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n // expression with nameValueList\n if (\n this._toText(ctx.getChild(1)) === '{' &&\n this._toText(ctx.getChild(3)) === '}'\n ) {\n const node: AST.NameValueExpression = {\n type: 'NameValueExpression',\n expression: this.visitExpression(ctx.expression(0)),\n arguments: this.visitNameValueList(ctx.nameValueList()!),\n }\n\n return this._addMeta(node, ctx)\n }\n\n break\n\n case 5:\n // ternary operator\n if (\n this._toText(ctx.getChild(1)) === '?' &&\n this._toText(ctx.getChild(3)) === ':'\n ) {\n const node: AST.Conditional = {\n type: 'Conditional',\n condition: this.visitExpression(ctx.expression(0)),\n trueExpression: this.visitExpression(ctx.expression(1)),\n falseExpression: this.visitExpression(ctx.expression(2)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n // index range access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(2)) === ':' &&\n this._toText(ctx.getChild(4)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexEnd: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n } else if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ':' &&\n this._toText(ctx.getChild(4)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexStart: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n break\n\n case 6:\n // index range access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ':' &&\n this._toText(ctx.getChild(5)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexStart: this.visitExpression(ctx.expression(1)),\n indexEnd: this.visitExpression(ctx.expression(2)),\n }\n\n return this._addMeta(node, ctx)\n }\n break\n }\n\n throw new Error('Unrecognized expression')\n }\n\n public visitNameValueList(\n ctx: SP.NameValueListContext\n ): AST.NameValueList & WithMeta {\n const names: string[] = []\n const identifiers: AST.Identifier[] = []\n const args: AST.Expression[] = []\n\n for (const nameValue of ctx.nameValue()) {\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n args.push(this.visitExpression(nameValue.expression()))\n }\n\n const node: AST.NameValueList = {\n type: 'NameValueList',\n names,\n identifiers,\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFileLevelConstant(ctx: SP.FileLevelConstantContext) {\n const type = this.visitTypeName(ctx.typeName())\n const iden = ctx.identifier()\n const name = this._toText(iden)\n\n const expression = this.visitExpression(ctx.expression())\n\n const node: AST.FileLevelConstant = {\n type: 'FileLevelConstant',\n typeName: type,\n name,\n initialValue: expression,\n isDeclaredConst: true,\n isImmutable: false,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitForStatement(ctx: SP.ForStatementContext) {\n let conditionExpression: any = this.visitExpressionStatement(\n ctx.expressionStatement()!\n )\n if (conditionExpression) {\n conditionExpression = conditionExpression.expression\n }\n const node: AST.ForStatement = {\n type: 'ForStatement',\n initExpression: ctx.simpleStatement()\n ? this.visitSimpleStatement(ctx.simpleStatement()!)\n : null,\n conditionExpression,\n loopExpression: {\n type: 'ExpressionStatement',\n expression:\n ctx.expression() !== undefined\n ? this.visitExpression(ctx.expression()!)\n : null,\n },\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitHexLiteral(ctx: SP.HexLiteralContext) {\n const parts = ctx\n .HexLiteralFragment()\n .map((x) => this._toText(x))\n .map((x) => x.substring(4, x.length - 1))\n\n const node: AST.HexLiteral = {\n type: 'HexLiteral',\n value: parts.join(''),\n parts,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitPrimaryExpression(\n ctx: SP.PrimaryExpressionContext\n ): AST.PrimaryExpression & WithMeta {\n if (ctx.BooleanLiteral()) {\n const node: AST.BooleanLiteral = {\n type: 'BooleanLiteral',\n value: this._toText(ctx.BooleanLiteral()!) === 'true',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n if (ctx.stringLiteral()) {\n const fragments = ctx\n .stringLiteral()!\n .StringLiteralFragment()\n .map((stringLiteralFragmentCtx: any) => {\n let text = this._toText(stringLiteralFragmentCtx)!\n\n const isUnicode = text.slice(0, 7) === 'unicode'\n if (isUnicode) {\n text = text.slice(7)\n }\n const singleQuotes = text[0] === \"'\"\n const textWithoutQuotes = text.substring(1, text.length - 1)\n const value = singleQuotes\n ? textWithoutQuotes.replace(new RegExp(\"\\\\\\\\'\", 'g'), \"'\")\n : textWithoutQuotes.replace(new RegExp('\\\\\\\\\"', 'g'), '\"')\n\n return { value, isUnicode }\n })\n\n const parts = fragments.map((x: any) => x.value)\n\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value: parts.join(''),\n parts,\n isUnicode: fragments.map((x: any) => x.isUnicode),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.numberLiteral()) {\n return this.visitNumberLiteral(ctx.numberLiteral()!)\n }\n\n if (ctx.TypeKeyword()) {\n const node: AST.Identifier = {\n type: 'Identifier',\n name: 'type',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.typeName()) {\n return this.visitTypeName(ctx.typeName()!)\n }\n\n return this.visit(ctx.getChild(0)) as any\n }\n\n public visitTupleExpression(\n ctx: SP.TupleExpressionContext\n ): AST.TupleExpression & WithMeta {\n // remove parentheses\n const children = ctx.children!.slice(1, -1)\n const components = this._mapCommasToNulls(children).map((expr) => {\n // add a null for each empty value\n if (expr === null) {\n return null\n }\n return this.visit(expr)\n })\n\n const node: AST.TupleExpression = {\n type: 'TupleExpression',\n components,\n isArray: this._toText(ctx.getChild(0)) === '[',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public buildIdentifierList(ctx: SP.IdentifierListContext) {\n // remove parentheses\n const children = ctx.children!.slice(1, -1)\n const identifiers = ctx.identifier()\n let i = 0\n return this._mapCommasToNulls(children).map((idenOrNull) => {\n // add a null for each empty value\n if (!idenOrNull) {\n return null\n }\n\n const iden = identifiers[i]\n i++\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n name: this._toText(iden),\n identifier: this.visitIdentifier(iden),\n isStateVar: false,\n isIndexed: false,\n typeName: null,\n storageLocation: null,\n expression: null,\n }\n\n return this._addMeta(node, iden)\n })\n }\n\n public buildVariableDeclarationList(\n ctx: SP.VariableDeclarationListContext\n ): Array<(AST.VariableDeclaration & WithMeta) | null> {\n // remove parentheses\n\n const variableDeclarations = ctx.variableDeclaration()\n let i = 0\n return this._mapCommasToNulls(ctx.children!).map((declOrNull) => {\n // add a null for each empty value\n if (!declOrNull) {\n return null\n }\n\n const decl = variableDeclarations[i]\n i++\n\n let storageLocation: string | null = null\n if (decl.storageLocation()) {\n storageLocation = this._toText(decl.storageLocation()!)\n }\n\n const identifierCtx = decl.identifier()\n\n const result: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n name: this._toText(identifierCtx),\n identifier: this.visitIdentifier(identifierCtx),\n typeName: this.visitTypeName(decl.typeName()),\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(result, decl)\n })\n }\n\n public visitImportDirective(ctx: SP.ImportDirectiveContext) {\n const pathString = this._toText(ctx.importPath())\n let unitAlias = null\n let unitAliasIdentifier = null\n let symbolAliases = null\n let symbolAliasesIdentifiers = null\n\n if (ctx.importDeclaration().length > 0) {\n symbolAliases = ctx.importDeclaration().map((decl) => {\n const symbol = this._toText(decl.identifier(0))\n let alias = null\n if (decl.identifier().length > 1) {\n alias = this._toText(decl.identifier(1))\n }\n return [symbol, alias] as [string, string | null]\n })\n symbolAliasesIdentifiers = ctx.importDeclaration().map((decl) => {\n const symbolIdentifier = this.visitIdentifier(decl.identifier(0))\n let aliasIdentifier = null\n if (decl.identifier().length > 1) {\n aliasIdentifier = this.visitIdentifier(decl.identifier(1))\n }\n return [symbolIdentifier, aliasIdentifier] as [\n AST.Identifier,\n AST.Identifier | null\n ]\n })\n } else {\n const identifierCtxList = ctx.identifier()\n if (identifierCtxList.length === 0) {\n // nothing to do\n } else if (identifierCtxList.length === 1) {\n const aliasIdentifierCtx = ctx.identifier(0)\n unitAlias = this._toText(aliasIdentifierCtx)\n unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx)\n } else if (identifierCtxList.length === 2) {\n const aliasIdentifierCtx = ctx.identifier(1)\n unitAlias = this._toText(aliasIdentifierCtx)\n unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx)\n } else {\n throw new Error(\n 'Assertion error: an import should have one or two identifiers'\n )\n }\n }\n\n const path = pathString.substring(1, pathString.length - 1)\n\n const pathLiteral: AST.StringLiteral = {\n type: 'StringLiteral',\n value: path,\n parts: [path],\n isUnicode: [false], // paths in imports don't seem to support unicode literals\n }\n\n const node: AST.ImportDirective = {\n type: 'ImportDirective',\n path,\n pathLiteral: this._addMeta(pathLiteral, ctx.importPath()),\n unitAlias,\n unitAliasIdentifier,\n symbolAliases,\n symbolAliasesIdentifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public buildEventParameterList(ctx: SP.EventParameterListContext) {\n return ctx.eventParameter().map((paramCtx: any) => {\n const type = this.visit(paramCtx.typeName())\n let name = null\n if (paramCtx.identifier()) {\n name = this._toText(paramCtx.identifier())\n }\n\n return {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n isStateVar: false,\n isIndexed: !!paramCtx.IndexedKeyword(0),\n }\n })\n }\n\n public visitReturnParameters(\n ctx: SP.ReturnParametersContext\n ): (AST.VariableDeclaration & WithMeta)[] {\n return this.visitParameterList(ctx.parameterList())\n }\n\n public visitParameterList(\n ctx: SP.ParameterListContext\n ): (AST.VariableDeclaration & WithMeta)[] {\n return ctx.parameter().map((paramCtx: any) => this.visitParameter(paramCtx))\n }\n\n public visitInlineAssemblyStatement(ctx: SP.InlineAssemblyStatementContext) {\n let language: string | null = null\n if (ctx.StringLiteralFragment()) {\n language = this._toText(ctx.StringLiteralFragment()!)!\n language = language.substring(1, language.length - 1)\n }\n\n const flags = []\n const flag = ctx.inlineAssemblyStatementFlag()\n if (flag !== undefined) {\n const flagString = this._toText(flag.stringLiteral())\n flags.push(flagString.slice(1, flagString.length - 1))\n }\n\n const node: AST.InlineAssemblyStatement = {\n type: 'InlineAssemblyStatement',\n language,\n flags,\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyBlock(\n ctx: SP.AssemblyBlockContext\n ): AST.AssemblyBlock & WithMeta {\n const operations = ctx\n .assemblyItem()\n .map((item) => this.visitAssemblyItem(item))\n\n const node: AST.AssemblyBlock = {\n type: 'AssemblyBlock',\n operations,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyItem(\n ctx: SP.AssemblyItemContext\n ): AST.AssemblyItem & WithMeta {\n let text\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n if (ctx.stringLiteral()) {\n text = this._toText(ctx.stringLiteral()!)!\n const value = text.substring(1, text.length - 1)\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value,\n parts: [value],\n isUnicode: [false], // assembly doesn't seem to support unicode literals right now\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.BreakKeyword()) {\n const node: AST.Break = {\n type: 'Break',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.ContinueKeyword()) {\n const node: AST.Continue = {\n type: 'Continue',\n }\n\n return this._addMeta(node, ctx)\n }\n\n return this.visit(ctx.getChild(0)) as AST.AssemblyItem & WithMeta\n }\n\n public visitAssemblyExpression(ctx: SP.AssemblyExpressionContext) {\n return this.visit(ctx.getChild(0)) as AST.AssemblyExpression & WithMeta\n }\n\n public visitAssemblyCall(ctx: SP.AssemblyCallContext) {\n const functionName = this._toText(ctx.getChild(0))\n const args = ctx\n .assemblyExpression()\n .map((assemblyExpr) => this.visitAssemblyExpression(assemblyExpr))\n\n const node: AST.AssemblyCall = {\n type: 'AssemblyCall',\n functionName,\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyLiteral(\n ctx: SP.AssemblyLiteralContext\n ): AST.AssemblyLiteral & WithMeta {\n let text\n\n if (ctx.stringLiteral()) {\n text = this._toText(ctx)!\n const value = text.substring(1, text.length - 1)\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value,\n parts: [value],\n isUnicode: [false], // assembly doesn't seem to support unicode literals right now\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.DecimalNumber()) {\n const node: AST.DecimalNumber = {\n type: 'DecimalNumber',\n value: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.HexNumber()) {\n const node: AST.HexNumber = {\n type: 'HexNumber',\n value: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n throw new Error('Should never reach here')\n }\n\n public visitAssemblySwitch(ctx: SP.AssemblySwitchContext) {\n const node: AST.AssemblySwitch = {\n type: 'AssemblySwitch',\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n cases: ctx.assemblyCase().map((c) => this.visitAssemblyCase(c)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyCase(\n ctx: SP.AssemblyCaseContext\n ): AST.AssemblyCase & WithMeta {\n let value = null\n if (this._toText(ctx.getChild(0)) === 'case') {\n value = this.visitAssemblyLiteral(ctx.assemblyLiteral()!)\n }\n\n const node: AST.AssemblyCase = {\n type: 'AssemblyCase',\n block: this.visitAssemblyBlock(ctx.assemblyBlock()),\n value,\n default: value === null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyLocalDefinition(\n ctx: SP.AssemblyLocalDefinitionContext\n ): AST.AssemblyLocalDefinition & WithMeta {\n const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList()\n let names\n if (ctxAssemblyIdentifierOrList.identifier()) {\n names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier()!)]\n } else if (ctxAssemblyIdentifierOrList.assemblyMember()) {\n names = [\n this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()!),\n ]\n } else {\n names = ctxAssemblyIdentifierOrList\n .assemblyIdentifierList()!\n .identifier()!\n .map((x) => this.visitIdentifier(x))\n }\n\n let expression: AST.AssemblyExpression | null = null\n if (ctx.assemblyExpression() !== undefined) {\n expression = this.visitAssemblyExpression(ctx.assemblyExpression()!)\n }\n\n const node: AST.AssemblyLocalDefinition = {\n type: 'AssemblyLocalDefinition',\n names,\n expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyFunctionDefinition(\n ctx: SP.AssemblyFunctionDefinitionContext\n ) {\n const ctxAssemblyIdentifierList = ctx.assemblyIdentifierList()\n const args =\n ctxAssemblyIdentifierList !== undefined\n ? ctxAssemblyIdentifierList\n .identifier()\n .map((x) => this.visitIdentifier(x))\n : []\n\n const ctxAssemblyFunctionReturns = ctx.assemblyFunctionReturns()\n const returnArgs = ctxAssemblyFunctionReturns\n ? ctxAssemblyFunctionReturns\n .assemblyIdentifierList()!\n .identifier()\n .map((x) => this.visitIdentifier(x))\n : []\n\n const node: AST.AssemblyFunctionDefinition = {\n type: 'AssemblyFunctionDefinition',\n name: this._toText(ctx.identifier()),\n arguments: args,\n returnArguments: returnArgs,\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyAssignment(ctx: SP.AssemblyAssignmentContext) {\n const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList()\n let names\n if (ctxAssemblyIdentifierOrList.identifier()) {\n names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier()!)]\n } else if (ctxAssemblyIdentifierOrList.assemblyMember()) {\n names = [\n this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()!),\n ]\n } else {\n names = ctxAssemblyIdentifierOrList\n .assemblyIdentifierList()!\n .identifier()\n .map((x) => this.visitIdentifier(x))\n }\n\n const node: AST.AssemblyAssignment = {\n type: 'AssemblyAssignment',\n names,\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyMember(\n ctx: SP.AssemblyMemberContext\n ): AST.AssemblyMemberAccess & WithMeta {\n const [accessed, member] = ctx.identifier()\n const node: AST.AssemblyMemberAccess = {\n type: 'AssemblyMemberAccess',\n expression: this.visitIdentifier(accessed),\n memberName: this.visitIdentifier(member),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitLabelDefinition(ctx: SP.LabelDefinitionContext) {\n const node: AST.LabelDefinition = {\n type: 'LabelDefinition',\n name: this._toText(ctx.identifier()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyStackAssignment(ctx: SP.AssemblyStackAssignmentContext) {\n const node: AST.AssemblyStackAssignment = {\n type: 'AssemblyStackAssignment',\n name: this._toText(ctx.identifier()),\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyFor(ctx: SP.AssemblyForContext) {\n // TODO remove these type assertions\n const node: AST.AssemblyFor = {\n type: 'AssemblyFor',\n pre: this.visit(ctx.getChild(1)) as\n | AST.AssemblyBlock\n | AST.AssemblyExpression,\n condition: this.visit(ctx.getChild(2)) as AST.AssemblyExpression,\n post: this.visit(ctx.getChild(3)) as\n | AST.AssemblyBlock\n | AST.AssemblyExpression,\n body: this.visit(ctx.getChild(4)) as AST.AssemblyBlock,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyIf(ctx: SP.AssemblyIfContext) {\n const node: AST.AssemblyIf = {\n type: 'AssemblyIf',\n condition: this.visitAssemblyExpression(ctx.assemblyExpression()),\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitContinueStatement(\n ctx: SP.ContinueStatementContext\n ): AST.ContinueStatement & WithMeta {\n const node: AST.ContinueStatement = {\n type: 'ContinueStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitBreakStatement(\n ctx: SP.BreakStatementContext\n ): AST.BreakStatement & WithMeta {\n const node: AST.BreakStatement = {\n type: 'BreakStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n private _toText(ctx: ParserRuleContext | ParseTree): string {\n const text = ctx.text\n if (text === undefined) {\n throw new Error('Assertion error: text should never be undefiend')\n }\n\n return text\n }\n\n private _stateMutabilityToText(\n ctx: SP.StateMutabilityContext\n ): AST.FunctionDefinition['stateMutability'] {\n if (ctx.PureKeyword() !== undefined) {\n return 'pure'\n }\n if (ctx.ConstantKeyword() !== undefined) {\n return 'constant'\n }\n if (ctx.PayableKeyword() !== undefined) {\n return 'payable'\n }\n if (ctx.ViewKeyword() !== undefined) {\n return 'view'\n }\n\n throw new Error('Assertion error: non-exhaustive stateMutability check')\n }\n\n private _loc(ctx: ParserRuleContext): SourceLocation {\n const sourceLocation: SourceLocation = {\n start: {\n line: ctx.start.line,\n column: ctx.start.charPositionInLine,\n },\n end: {\n line: ctx.stop ? ctx.stop.line : ctx.start.line,\n column: ctx.stop\n ? ctx.stop.charPositionInLine\n : ctx.start.charPositionInLine,\n },\n }\n return sourceLocation\n }\n\n _range(ctx: ParserRuleContext): [number, number] {\n return [ctx.start.startIndex, ctx.stop?.stopIndex ?? ctx.start.startIndex]\n }\n\n private _addMeta(\n node: T,\n ctx: ParserRuleContext\n ): T & WithMeta {\n const nodeWithMeta: AST.BaseASTNode = {\n type: node.type,\n }\n\n if (this.options.loc === true) {\n node.loc = this._loc(ctx)\n }\n if (this.options.range === true) {\n node.range = this._range(ctx)\n }\n\n return {\n ...nodeWithMeta,\n ...node,\n } as T & WithMeta\n }\n\n private _mapCommasToNulls(children: ParseTree[]) {\n if (children.length === 0) {\n return []\n }\n\n const values: Array = []\n let comma = true\n\n for (const el of children) {\n if (comma) {\n if (this._toText(el) === ',') {\n values.push(null)\n } else {\n values.push(el)\n comma = false\n }\n } else {\n if (this._toText(el) !== ',') {\n throw new Error('expected comma')\n }\n comma = true\n }\n }\n\n if (comma) {\n values.push(null)\n }\n\n return values\n }\n}\n\nfunction isBinOp(op: string): op is AST.BinOp {\n return AST.binaryOpValues.includes(op as AST.BinOp)\n}\n", "import antlr4 from 'antlr4'\n\nclass ErrorListener extends antlr4.error.ErrorListener {\n private _errors: any[]\n\n constructor() {\n super()\n\n this._errors = []\n }\n\n syntaxError(\n recognizer: any,\n offendingSymbol: any,\n line: number,\n column: number,\n message: string\n ) {\n this._errors.push({ message, line, column })\n }\n\n getErrors(): any[] {\n return this._errors\n }\n\n hasErrors() {\n return this._errors.length > 0\n }\n}\n\nexport default ErrorListener\n", "import { Token, AntlrToken, TokenizeOptions } from './types'\nimport untypedTokens from './tokens-string'\n\nconst tokens = untypedTokens as string\n\nconst TYPE_TOKENS = [\n 'var',\n 'bool',\n 'address',\n 'string',\n 'Int',\n 'Uint',\n 'Byte',\n 'Fixed',\n 'UFixed',\n]\n\nfunction rsplit(str: string, value: string) {\n const index = str.lastIndexOf(value)\n return [str.substring(0, index), str.substring(index + 1, str.length)]\n}\n\nfunction normalizeTokenType(value: string) {\n if (value.endsWith(\"'\")) {\n value = value.substring(0, value.length - 1)\n }\n if (value.startsWith(\"'\")) {\n value = value.substring(1, value.length)\n }\n return value\n}\n\nfunction getTokenType(value: string) {\n if (value === 'Identifier' || value === 'from') {\n return 'Identifier'\n } else if (value === 'TrueLiteral' || value === 'FalseLiteral') {\n return 'Boolean'\n } else if (value === 'VersionLiteral') {\n return 'Version'\n } else if (value === 'StringLiteral') {\n return 'String'\n } else if (TYPE_TOKENS.includes(value)) {\n return 'Type'\n } else if (value === 'NumberUnit') {\n return 'Subdenomination'\n } else if (value === 'DecimalNumber') {\n return 'Numeric'\n } else if (value === 'HexLiteral') {\n return 'Hex'\n } else if (value === 'ReservedKeyword') {\n return 'Reserved'\n } else if (/^\\W+$/.test(value)) {\n return 'Punctuator'\n } else {\n return 'Keyword'\n }\n}\n\nfunction getTokenTypeMap() {\n return tokens\n .split('\\n')\n .map((line) => rsplit(line, '='))\n .reduce((acum: any, [value, key]) => {\n acum[parseInt(key, 10)] = normalizeTokenType(value)\n return acum\n }, {})\n}\n\nexport function buildTokenList(\n tokensArg: AntlrToken[],\n options: TokenizeOptions\n): Token[] {\n const tokenTypes = getTokenTypeMap()\n\n const result = tokensArg.map((token) => {\n const type = getTokenType(tokenTypes[token.type])\n const node: Token = { type, value: token.text }\n if (options.range === true) {\n node.range = [token.startIndex, token.stopIndex + 1]\n }\n if (options.loc === true) {\n node.loc = {\n start: { line: token.line, column: token.charPositionInLine },\n end: { line: token.line, column: token.charPositionInLine + (token.text?.length ?? 0) },\n }\n }\n return node\n })\n\n return result\n}\n"], - "mappings": "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", + "sources": ["../process-shim.js", "../src/ANTLRErrorListener.ts", "../src/ANTLRErrorStrategy.ts", "../node_modules/has-symbols/shams.js", "../node_modules/has-tostringtag/shams.js", "../node_modules/has-symbols/index.js", "../node_modules/function-bind/implementation.js", "../node_modules/function-bind/index.js", "../node_modules/has/src/index.js", "../node_modules/get-intrinsic/index.js", "../node_modules/call-bind/index.js", "../node_modules/call-bind/callBound.js", "../node_modules/is-arguments/index.js", "../node_modules/is-generator-function/index.js", "../node_modules/is-callable/index.js", "../node_modules/for-each/index.js", "../node_modules/available-typed-arrays/index.js", "../node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js", "../node_modules/is-typed-array/index.js", "../node_modules/which-typed-array/index.js", "../node_modules/util/support/types.js", "../node_modules/util/support/isBufferBrowser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/util/util.js", "../node_modules/assert/build/internal/errors.js", "../node_modules/assert/build/internal/assert/assertion_error.js", "../node_modules/es6-object-assign/index.js", "../node_modules/object-keys/isArguments.js", "../node_modules/object-keys/implementation.js", "../node_modules/object-keys/index.js", "../node_modules/has-property-descriptors/index.js", "../node_modules/define-properties/index.js", "../node_modules/object-is/implementation.js", "../node_modules/object-is/polyfill.js", "../node_modules/object-is/shim.js", "../node_modules/object-is/index.js", "../node_modules/is-nan/implementation.js", "../node_modules/is-nan/polyfill.js", "../node_modules/is-nan/shim.js", "../node_modules/is-nan/index.js", "../node_modules/assert/build/internal/util/comparisons.js", "../node_modules/assert/build/assert.js", "../src/Decorators.ts", "../src/IntStream.ts", "../src/ANTLRInputStream.ts", "../src/atn/ATNState.ts", "../src/atn/ATNStateType.ts", "../src/RecognitionException.ts", "../src/atn/Transition.ts", "../src/atn/AbstractPredicateTransition.ts", "../src/misc/MurmurHash.ts", "../src/misc/ObjectEqualityComparator.ts", "../src/misc/DefaultEqualityComparator.ts", "../src/misc/Array2DHashSet.ts", "../src/misc/ArrayEqualityComparator.ts", "../src/misc/Utils.ts", "../src/atn/SemanticContext.ts", "../src/atn/PredicateTransition.ts", "../src/FailedPredicateException.ts", "../src/InputMismatchException.ts", "../src/misc/Arrays.ts", "../src/misc/IntegerList.ts", "../src/misc/Interval.ts", "../src/Token.ts", "../src/CommonToken.ts", "../src/CommonTokenFactory.ts", "../src/misc/IntegerStack.ts", "../src/dfa/AcceptStateInfo.ts", "../src/misc/Array2DHashMap.ts", "../src/atn/DecisionState.ts", "../src/atn/PredictionContextCache.ts", "../src/atn/PredictionContext.ts", "../src/atn/ATNConfig.ts", "../src/misc/BitSet.ts", "../src/atn/ATNConfigSet.ts", "../src/dfa/DFAState.ts", "../src/atn/ATNSimulator.ts", "../src/ConsoleErrorListener.ts", "../src/ProxyErrorListener.ts", "../src/Recognizer.ts", "../src/VocabularyImpl.ts", "../src/dfa/DFASerializer.ts", "../src/dfa/LexerDFASerializer.ts", "../src/atn/StarLoopEntryState.ts", "../src/dfa/DFA.ts", "../src/atn/BasicState.ts", "../src/atn/InvalidState.ts", "../src/atn/SetTransition.ts", "../src/atn/NotSetTransition.ts", "../src/atn/RuleStopState.ts", "../src/atn/RuleTransition.ts", "../src/atn/WildcardTransition.ts", "../src/atn/LL1Analyzer.ts", "../src/atn/ATN.ts", "../src/atn/LexerIndexedCustomAction.ts", "../src/atn/LexerActionExecutor.ts", "../src/LexerNoViableAltException.ts", "../src/atn/OrderedATNConfigSet.ts", "../src/atn/LexerATNSimulator.ts", "../src/Lexer.ts", "../src/misc/IntervalSet.ts", "../src/atn/ATNDeserializationOptions.ts", "../src/atn/ActionTransition.ts", "../src/atn/AtomTransition.ts", "../src/atn/BlockStartState.ts", "../src/atn/BasicBlockStartState.ts", "../src/atn/BlockEndState.ts", "../src/atn/EpsilonTransition.ts", "../src/atn/LexerChannelAction.ts", "../src/atn/LexerCustomAction.ts", "../src/atn/LexerModeAction.ts", "../src/atn/LexerMoreAction.ts", "../src/atn/LexerPopModeAction.ts", "../src/atn/LexerPushModeAction.ts", "../src/atn/LexerSkipAction.ts", "../src/atn/LexerTypeAction.ts", "../src/atn/LoopEndState.ts", "../src/atn/ConflictInfo.ts", "../src/tree/TerminalNode.ts", "../src/tree/ErrorNode.ts", "../src/tree/RuleNode.ts", "../src/tree/Trees.ts", "../src/RuleContext.ts", "../src/ParserRuleContext.ts", "../src/atn/PredictionMode.ts", "../src/atn/SimulatorState.ts", "../src/atn/ParserATNSimulator.ts", "../src/atn/PlusBlockStartState.ts", "../src/atn/PlusLoopbackState.ts", "../src/atn/PrecedencePredicateTransition.ts", "../src/atn/RangeTransition.ts", "../src/atn/RuleStartState.ts", "../src/atn/StarBlockStartState.ts", "../src/atn/StarLoopbackState.ts", "../src/atn/TokensStartState.ts", "../src/misc/UUID.ts", "../src/atn/ATNDeserializer.ts", "../src/atn/ParseInfo.ts", "../src/ProxyParserErrorListener.ts", "../src/misc/Character.ts", "../src/CodePointBuffer.ts", "../src/CodePointCharStream.ts", "../src/CharStreams.ts", "../src/BufferedTokenStream.ts", "../src/CommonTokenStream.ts", "../src/ListTokenSource.ts", "../src/misc/MultiMap.ts", "../src/misc/ParseCancellationException.ts", "../src/InterpreterRuleContext.ts", "../src/ParserInterpreter.ts", "../src/tree/pattern/ParseTreeMatch.ts", "../src/tree/xpath/XPathLexer.ts", "../src/tree/xpath/XPathLexerErrorListener.ts", "../src/tree/xpath/XPathElement.ts", "../src/tree/xpath/XPathRuleAnywhereElement.ts", "../src/tree/xpath/XPathRuleElement.ts", "../src/tree/xpath/XPathTokenAnywhereElement.ts", "../src/tree/xpath/XPathTokenElement.ts", "../src/tree/xpath/XPathWildcardAnywhereElement.ts", "../src/tree/xpath/XPathWildcardElement.ts", "../src/tree/xpath/XPath.ts", "../src/tree/pattern/ParseTreePattern.ts", "../src/tree/pattern/RuleTagToken.ts", "../src/tree/pattern/Chunk.ts", "../src/tree/pattern/TagChunk.ts", "../src/tree/pattern/TextChunk.ts", "../src/tree/pattern/TokenTagToken.ts", "../src/tree/pattern/ParseTreePatternMatcher.ts", "../src/atn/DecisionEventInfo.ts", "../src/atn/AmbiguityInfo.ts", "../src/atn/ContextSensitivityInfo.ts", "../src/atn/DecisionInfo.ts", "../src/atn/ErrorInfo.ts", "../src/atn/LookaheadEventInfo.ts", "../src/atn/PredicateEvalInfo.ts", "../src/atn/ProfilingATNSimulator.ts", "../src/Parser.ts", "../src/NoViableAltException.ts", "../src/DefaultErrorStrategy.ts", "../src/BailErrorStrategy.ts", "../src/CharStream.ts", "../src/Dependents.ts", "../src/DiagnosticErrorListener.ts", "../src/LexerInterpreter.ts", "../src/ParserErrorListener.ts", "../src/RuleContextWithAltNum.ts", "../src/RuleDependency.ts", "../src/RuleVersion.ts", "../src/TokenFactory.ts", "../src/TokenSource.ts", "../src/TokenStream.ts", "../src/TokenStreamRewriter.ts", "../src/Vocabulary.ts", "../src/WritableToken.ts", "../src/index.ts", "../src/tree/AbstractParseTreeVisitor.ts", "(disabled):fs", "../src/tokens-string.js", "../src/index.ts", "../src/parser.ts", "../src/antlr/SolidityLexer.ts", "../src/antlr/SolidityParser.ts", "../src/ast-types.ts", "../src/ASTBuilder.ts", "../src/ErrorListener.ts", "../node_modules/antlr4/src/antlr4/index.js", "../node_modules/antlr4/src/antlr4/utils/stringHashCode.js", "../node_modules/antlr4/src/antlr4/polyfills/codepointat.js", "../node_modules/antlr4/src/antlr4/polyfills/fromcodepoint.js", "../node_modules/antlr4/src/antlr4/atn/index.js", "../node_modules/antlr4/src/antlr4/atn/ATN.js", "../node_modules/antlr4/src/antlr4/atn/LL1Analyzer.js", "../node_modules/antlr4/src/antlr4/Token.js", "../node_modules/antlr4/src/antlr4/atn/ATNConfig.js", "../node_modules/antlr4/src/antlr4/atn/SemanticContext.js", "../node_modules/antlr4/src/antlr4/utils/equalArrays.js", "../node_modules/antlr4/src/antlr4/misc/HashCode.js", "../node_modules/antlr4/src/antlr4/misc/HashSet.js", "../node_modules/antlr4/src/antlr4/utils/standardHashCodeFunction.js", "../node_modules/antlr4/src/antlr4/utils/standardEqualsFunction.js", "../node_modules/antlr4/src/antlr4/utils/arrayToString.js", "../node_modules/antlr4/src/antlr4/utils/valueToString.js", "../node_modules/antlr4/src/antlr4/misc/IntervalSet.js", "../node_modules/antlr4/src/antlr4/misc/Interval.js", "../node_modules/antlr4/src/antlr4/state/RuleStopState.js", "../node_modules/antlr4/src/antlr4/state/ATNState.js", "../node_modules/antlr4/src/antlr4/transition/RuleTransition.js", "../node_modules/antlr4/src/antlr4/transition/Transition.js", "../node_modules/antlr4/src/antlr4/transition/NotSetTransition.js", "../node_modules/antlr4/src/antlr4/transition/SetTransition.js", "../node_modules/antlr4/src/antlr4/transition/WildcardTransition.js", "../node_modules/antlr4/src/antlr4/atn/AbstractPredicateTransition.js", "../node_modules/antlr4/src/antlr4/context/PredictionContextUtils.js", "../node_modules/antlr4/src/antlr4/context/RuleContext.js", "../node_modules/antlr4/src/antlr4/tree/RuleNode.js", "../node_modules/antlr4/src/antlr4/tree/ParseTree.js", "../node_modules/antlr4/src/antlr4/tree/SyntaxTree.js", "../node_modules/antlr4/src/antlr4/tree/Tree.js", "../node_modules/antlr4/src/antlr4/tree/Trees.js", "../node_modules/antlr4/src/antlr4/tree/ErrorNode.js", "../node_modules/antlr4/src/antlr4/tree/TerminalNode.js", "../node_modules/antlr4/src/antlr4/utils/escapeWhitespace.js", "../node_modules/antlr4/src/antlr4/context/PredictionContext.js", "../node_modules/antlr4/src/antlr4/context/ArrayPredictionContext.js", "../node_modules/antlr4/src/antlr4/context/SingletonPredictionContext.js", "../node_modules/antlr4/src/antlr4/context/EmptyPredictionContext.js", "../node_modules/antlr4/src/antlr4/misc/HashMap.js", "../node_modules/antlr4/src/antlr4/misc/BitSet.js", "../node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js", "../node_modules/antlr4/src/antlr4/atn/ATNType.js", "../node_modules/antlr4/src/antlr4/state/BasicState.js", "../node_modules/antlr4/src/antlr4/state/DecisionState.js", "../node_modules/antlr4/src/antlr4/state/BlockStartState.js", "../node_modules/antlr4/src/antlr4/state/BlockEndState.js", "../node_modules/antlr4/src/antlr4/state/LoopEndState.js", "../node_modules/antlr4/src/antlr4/state/RuleStartState.js", "../node_modules/antlr4/src/antlr4/state/TokensStartState.js", "../node_modules/antlr4/src/antlr4/state/PlusLoopbackState.js", "../node_modules/antlr4/src/antlr4/state/StarLoopbackState.js", "../node_modules/antlr4/src/antlr4/state/StarLoopEntryState.js", "../node_modules/antlr4/src/antlr4/state/PlusBlockStartState.js", "../node_modules/antlr4/src/antlr4/state/StarBlockStartState.js", "../node_modules/antlr4/src/antlr4/state/BasicBlockStartState.js", "../node_modules/antlr4/src/antlr4/transition/AtomTransition.js", "../node_modules/antlr4/src/antlr4/transition/RangeTransition.js", "../node_modules/antlr4/src/antlr4/transition/ActionTransition.js", "../node_modules/antlr4/src/antlr4/transition/EpsilonTransition.js", "../node_modules/antlr4/src/antlr4/transition/PredicateTransition.js", "../node_modules/antlr4/src/antlr4/atn/Predicate.js", "../node_modules/antlr4/src/antlr4/transition/PrecedencePredicateTransition.js", "../node_modules/antlr4/src/antlr4/atn/PrecedencePredicate.js", "../node_modules/antlr4/src/antlr4/atn/ATNDeserializationOptions.js", "../node_modules/antlr4/src/antlr4/atn/LexerActionType.js", "../node_modules/antlr4/src/antlr4/action/LexerSkipAction.js", "../node_modules/antlr4/src/antlr4/action/LexerAction.js", "../node_modules/antlr4/src/antlr4/action/LexerChannelAction.js", "../node_modules/antlr4/src/antlr4/action/LexerCustomAction.js", "../node_modules/antlr4/src/antlr4/action/LexerMoreAction.js", "../node_modules/antlr4/src/antlr4/action/LexerTypeAction.js", "../node_modules/antlr4/src/antlr4/action/LexerPushModeAction.js", "../node_modules/antlr4/src/antlr4/action/LexerPopModeAction.js", "../node_modules/antlr4/src/antlr4/action/LexerModeAction.js", "../node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js", "../node_modules/antlr4/src/antlr4/Lexer.js", "../node_modules/antlr4/src/antlr4/Recognizer.js", "../node_modules/antlr4/src/antlr4/error/ConsoleErrorListener.js", "../node_modules/antlr4/src/antlr4/error/ErrorListener.js", "../node_modules/antlr4/src/antlr4/error/ProxyErrorListener.js", "../node_modules/antlr4/src/antlr4/CommonTokenFactory.js", "../node_modules/antlr4/src/antlr4/CommonToken.js", "../node_modules/antlr4/src/antlr4/error/RecognitionException.js", "../node_modules/antlr4/src/antlr4/error/LexerNoViableAltException.js", "../node_modules/antlr4/src/antlr4/atn/ATNSimulator.js", "../node_modules/antlr4/src/antlr4/dfa/DFAState.js", "../node_modules/antlr4/src/antlr4/atn/ATNConfigSet.js", "../node_modules/antlr4/src/antlr4/atn/OrderedATNConfigSet.js", "../node_modules/antlr4/src/antlr4/atn/LexerATNConfig.js", "../node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js", "../node_modules/antlr4/src/antlr4/action/LexerIndexedCustomAction.js", "../node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js", "../node_modules/antlr4/src/antlr4/dfa/PredPrediction.js", "../node_modules/antlr4/src/antlr4/atn/PredictionMode.js", "../node_modules/antlr4/src/antlr4/misc/AltDict.js", "../node_modules/antlr4/src/antlr4/error/NoViableAltException.js", "../node_modules/antlr4/src/antlr4/utils/DoubleDict.js", "../node_modules/antlr4/src/antlr4/dfa/index.js", "../node_modules/antlr4/src/antlr4/dfa/DFA.js", "../node_modules/antlr4/src/antlr4/dfa/DFASerializer.js", "../node_modules/antlr4/src/antlr4/dfa/LexerDFASerializer.js", "../node_modules/antlr4/src/antlr4/tree/index.js", "../node_modules/antlr4/src/antlr4/tree/ParseTreeListener.js", "../node_modules/antlr4/src/antlr4/tree/ParseTreeVisitor.js", "../node_modules/antlr4/src/antlr4/tree/ParseTreeWalker.js", "../node_modules/antlr4/src/antlr4/error/index.js", "../node_modules/antlr4/src/antlr4/error/InputMismatchException.js", "../node_modules/antlr4/src/antlr4/error/FailedPredicateException.js", "../node_modules/antlr4/src/antlr4/error/DiagnosticErrorListener.js", "../node_modules/antlr4/src/antlr4/error/BailErrorStrategy.js", "../node_modules/antlr4/src/antlr4/error/ParseCancellationException.js", "../node_modules/antlr4/src/antlr4/error/DefaultErrorStrategy.js", "../node_modules/antlr4/src/antlr4/error/ErrorStrategy.js", "../node_modules/antlr4/src/antlr4/CharStreams.js", "../node_modules/antlr4/src/antlr4/InputStream.js", "../node_modules/antlr4/src/antlr4/FileStream.js", "../node_modules/antlr4/src/antlr4/CommonTokenStream.js", "../node_modules/antlr4/src/antlr4/BufferedTokenStream.js", "../node_modules/antlr4/src/antlr4/TokenStream.js", "../node_modules/antlr4/src/antlr4/Parser.js", "../node_modules/antlr4/src/antlr4/TraceListener.js", "../node_modules/antlr4/src/antlr4/atn/PredictionContextCache.js", "../node_modules/antlr4/src/antlr4/context/ParserRuleContext.js", "../node_modules/antlr4/src/antlr4/tree/TerminalNodeImpl.js", "../node_modules/antlr4/src/antlr4/tree/ErrorNodeImpl.js", "../node_modules/antlr4/src/antlr4/utils/index.js", "../src/tokens.ts"], + "sourcesContent": ["export let process = {\n cwd: () => '',\n env: () => {}\n}\n\nexport let global = {}\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.7499997-07:00\r\n\r\n/** How to emit recognition errors. */\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\n\r\nexport interface ANTLRErrorListener {\r\n\t/**\r\n\t * Upon syntax error, notify any interested parties. This is not how to\r\n\t * recover from errors or compute error messages. {@link ANTLRErrorStrategy}\r\n\t * specifies how to recover from syntax errors and how to compute error\r\n\t * messages. This listener's job is simply to emit a computed message,\r\n\t * though it has enough information to create its own message in many cases.\r\n\t *\r\n\t * The {@link RecognitionException} is non-`undefined` for all syntax errors except\r\n\t * when we discover mismatched token errors that we can recover from\r\n\t * in-line, without returning from the surrounding rule (via the single\r\n\t * token insertion and deletion mechanism).\r\n\t *\r\n\t * @param recognizer\r\n\t * What parser got the error. From this\r\n\t * \t\t object, you can access the context as well\r\n\t * \t\t as the input stream.\r\n\t * @param offendingSymbol\r\n\t * The offending token in the input token\r\n\t * \t\t stream, unless recognizer is a lexer (then it's `undefined`). If\r\n\t * \t\t no viable alternative error, `e` has token at which we\r\n\t * \t\t started production for the decision.\r\n\t * @param line\r\n\t * \t\t The line number in the input where the error occurred.\r\n\t * @param charPositionInLine\r\n\t * \t\t The character position within that line where the error occurred.\r\n\t * @param msg\r\n\t * \t\t The message to emit.\r\n\t * @param e\r\n\t * The exception generated by the parser that led to\r\n\t * the reporting of an error. It is `undefined` in the case where\r\n\t * the parser was able to recover in line without exiting the\r\n\t * surrounding rule.\r\n\t */\r\n\tsyntaxError?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t/*@NotNull*/\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined) => void;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.9102174-07:00\r\n\r\nimport { Parser } from \"./Parser\";\r\nimport { Token } from \"./Token\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\n\r\n/**\r\n * The interface for defining strategies to deal with syntax errors encountered\r\n * during a parse by ANTLR-generated parsers. We distinguish between three\r\n * different kinds of errors:\r\n *\r\n * * The parser could not figure out which path to take in the ATN (none of\r\n * the available alternatives could possibly match)\r\n * * The current input does not match what we were looking for\r\n * * A predicate evaluated to false\r\n *\r\n * Implementations of this interface report syntax errors by calling\r\n * {@link Parser#notifyErrorListeners}.\r\n *\r\n * TODO: what to do about lexers\r\n */\r\nexport interface ANTLRErrorStrategy {\r\n\t/**\r\n\t * Reset the error handler state for the specified `recognizer`.\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\treset(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * This method is called when an unexpected symbol is encountered during an\r\n\t * inline match operation, such as {@link Parser#match}. If the error\r\n\t * strategy successfully recovers from the match failure, this method\r\n\t * returns the {@link Token} instance which should be treated as the\r\n\t * successful result of the match.\r\n\t *\r\n\t * This method handles the consumption of any tokens - the caller should\r\n\t * *not* call {@link Parser#consume} after a successful recovery.\r\n\t *\r\n\t * Note that the calling code will not report an error if this method\r\n\t * returns successfully. The error strategy implementation is responsible\r\n\t * for calling {@link Parser#notifyErrorListeners} as appropriate.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @ if the error strategy was not able to\r\n\t * recover from the unexpected input symbol\r\n\t */\r\n\trecoverInline(/*@NotNull*/ recognizer: Parser): Token;\r\n\r\n\t/**\r\n\t * This method is called to recover from exception `e`. This method is\r\n\t * called after {@link #reportError} by the default exception handler\r\n\t * generated for a rule method.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception to recover from\r\n\t * @ if the error strategy could not recover from\r\n\t * the recognition exception\r\n\t */\r\n\trecover(/*@NotNull*/ recognizer: Parser, /*@NotNull*/ e: RecognitionException): void;\r\n\r\n\t/**\r\n\t * This method provides the error handler with an opportunity to handle\r\n\t * syntactic or semantic errors in the input stream before they result in a\r\n\t * {@link RecognitionException}.\r\n\t *\r\n\t * The generated code currently contains calls to {@link #sync} after\r\n\t * entering the decision state of a closure block (`(...)*` or\r\n\t * `(...)+`).\r\n\t *\r\n\t * For an implementation based on Jim Idle's \"magic sync\" mechanism, see\r\n\t * {@link DefaultErrorStrategy#sync}.\r\n\t *\r\n\t * @see DefaultErrorStrategy#sync\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @ if an error is detected by the error\r\n\t * strategy but cannot be automatically recovered at the current state in\r\n\t * the parsing process\r\n\t */\r\n\tsync(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * Tests whether or not `recognizer` is in the process of recovering\r\n\t * from an error. In error recovery mode, {@link Parser#consume} adds\r\n\t * symbols to the parse tree by calling\r\n\t * {@link Parser#createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)} instead of\r\n\t * {@link Parser#createTerminalNode(ParserRuleContext, Token)}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns `true` if the parser is currently recovering from a parse\r\n\t * error, otherwise `false`\r\n\t */\r\n\tinErrorRecoveryMode(/*@NotNull*/ recognizer: Parser): boolean;\r\n\r\n\t/**\r\n\t * This method is called by when the parser successfully matches an input\r\n\t * symbol.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\treportMatch(/*@NotNull*/ recognizer: Parser): void;\r\n\r\n\t/**\r\n\t * Report any kind of {@link RecognitionException}. This method is called by\r\n\t * the default exception handler generated for a rule method.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception to report\r\n\t */\r\n\treportError(\r\n\t\t/*@NotNull*/ recognizer: Parser,\r\n\t\t/*@NotNull*/ e: RecognitionException): void;\r\n}\r\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n", "'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n", "// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n", "module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n", "// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;", "// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;", "/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n", "'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};", "// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport function NotNull(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor | number) {\r\n\t// intentionally empty\r\n}\r\n\r\nexport function Nullable(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor | number) {\r\n\t// intentionally empty\r\n}\r\n\r\nexport function Override(\r\n\ttarget: any,\r\n\tpropertyKey: PropertyKey,\r\n\tpropertyDescriptor?: PropertyDescriptor) {\r\n\t// do something with 'target' ...\r\n}\r\n\r\nexport function SuppressWarnings(options: string) {\r\n\treturn (target: any, propertyKey: PropertyKey, descriptor?: PropertyDescriptor) => {\r\n\t\t// intentionally empty\r\n\t};\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.6934376-07:00\r\n\r\nexport namespace IntStream {\r\n\t/**\r\n\t * The value returned by {@link #LA LA()} when the end of the stream is\r\n\t * reached.\r\n\t */\r\n\texport const EOF: number = -1;\r\n\r\n\t/**\r\n\t * The value returned by {@link #getSourceName} when the actual name of the\r\n\t * underlying source is not known.\r\n\t */\r\n\texport const UNKNOWN_SOURCE_NAME: string = \"\";\r\n}\r\n\r\n/**\r\n * A simple stream of symbols whose values are represented as integers. This\r\n * interface provides *marked ranges* with support for a minimum level\r\n * of buffering necessary to implement arbitrary lookahead during prediction.\r\n * For more information on marked ranges, see {@link #mark}.\r\n *\r\n * **Initializing Methods:** Some methods in this interface have\r\n * unspecified behavior if no call to an initializing method has occurred after\r\n * the stream was constructed. The following is a list of initializing methods:\r\n *\r\n * * {@link #LA}\r\n * * {@link #consume}\r\n * * {@link #size}\r\n */\r\nexport interface IntStream {\r\n\t/**\r\n\t * Consumes the current symbol in the stream. This method has the following\r\n\t * effects:\r\n\t *\r\n\t * * **Forward movement:** The value of `index`\r\n\t * before calling this method is less than the value of `index`\r\n\t * after calling this method.\r\n\t * * **Ordered lookahead:** The value of `LA(1)` before\r\n\t * calling this method becomes the value of `LA(-1)` after calling\r\n\t * this method.\r\n\t *\r\n\t * Note that calling this method does not guarantee that `index` is\r\n\t * incremented by exactly 1, as that would preclude the ability to implement\r\n\t * filtering streams (e.g. {@link CommonTokenStream} which distinguishes\r\n\t * between \"on-channel\" and \"off-channel\" tokens).\r\n\t *\r\n\t * @throws IllegalStateException if an attempt is made to consume the\r\n\t * end of the stream (i.e. if `LA(1)==`{@link #EOF EOF} before calling\r\n\t * `consume`).\r\n\t */\r\n\tconsume(): void;\r\n\r\n\t/**\r\n\t * Gets the value of the symbol at offset `i` from the current\r\n\t * position. When `i==1`, this method returns the value of the current\r\n\t * symbol in the stream (which is the next symbol to be consumed). When\r\n\t * `i==-1`, this method returns the value of the previously read\r\n\t * symbol in the stream. It is not valid to call this method with\r\n\t * `i==0`, but the specific behavior is unspecified because this\r\n\t * method is frequently called from performance-critical code.\r\n\t *\r\n\t * This method is guaranteed to succeed if any of the following are true:\r\n\t *\r\n\t * * `i>0`\r\n\t * * `i==-1` and `index` returns a value greater\r\n\t * than the value of `index` after the stream was constructed\r\n\t * and `LA(1)` was called in that order. Specifying the current\r\n\t * `index` relative to the index after the stream was created\r\n\t * allows for filtering implementations that do not return every symbol\r\n\t * from the underlying source. Specifying the call to `LA(1)`\r\n\t * allows for lazily initialized streams.\r\n\t * * `LA(i)` refers to a symbol consumed within a marked region\r\n\t * that has not yet been released.\r\n\t *\r\n\t * If `i` represents a position at or beyond the end of the stream,\r\n\t * this method returns {@link #EOF}.\r\n\t *\r\n\t * The return value is unspecified if `i<0` and fewer than `-i`\r\n\t * calls to {@link #consume consume()} have occurred from the beginning of\r\n\t * the stream before calling this method.\r\n\t *\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * retrieving the value of the specified symbol\r\n\t */\r\n\tLA(i: number): number;\r\n\r\n\t/**\r\n\t * A mark provides a guarantee that {@link #seek seek()} operations will be\r\n\t * valid over a \"marked range\" extending from the index where `mark()`\r\n\t * was called to the current `index`. This allows the use of\r\n\t * streaming input sources by specifying the minimum buffering requirements\r\n\t * to support arbitrary lookahead during prediction.\r\n\t *\r\n\t * The returned mark is an opaque handle (type `int`) which is passed\r\n\t * to {@link #release release()} when the guarantees provided by the marked\r\n\t * range are no longer necessary. When calls to\r\n\t * `mark()`/`release()` are nested, the marks must be released\r\n\t * in reverse order of which they were obtained. Since marked regions are\r\n\t * used during performance-critical sections of prediction, the specific\r\n\t * behavior of invalid usage is unspecified (i.e. a mark is not released, or\r\n\t * a mark is released twice, or marks are not released in reverse order from\r\n\t * which they were created).\r\n\t *\r\n\t * The behavior of this method is unspecified if no call to an\r\n\t * {@link IntStream initializing method} has occurred after this stream was\r\n\t * constructed.\r\n\t *\r\n\t * This method does not change the current position in the input stream.\r\n\t *\r\n\t * The following example shows the use of {@link #mark mark()},\r\n\t * {@link #release release(mark)}, `index`, and\r\n\t * {@link #seek seek(index)} as part of an operation to safely work within a\r\n\t * marked region, then restore the stream position to its original value and\r\n\t * release the mark.\r\n\t *\r\n\t * ```\r\n\t * IntStream stream = ...;\r\n\t * int index = -1;\r\n\t * int mark = stream.mark();\r\n\t * try {\r\n\t * index = stream.index;\r\n\t * // perform work here...\r\n\t * } finally {\r\n\t * if (index != -1) {\r\n\t * stream.seek(index);\r\n\t * }\r\n\t * stream.release(mark);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @returns An opaque marker which should be passed to\r\n\t * {@link #release release()} when the marked range is no longer required.\r\n\t */\r\n\tmark(): number;\r\n\r\n\t/**\r\n\t * This method releases a marked range created by a call to\r\n\t * {@link #mark mark()}. Calls to `release()` must appear in the\r\n\t * reverse order of the corresponding calls to `mark()`. If a mark is\r\n\t * released twice, or if marks are not released in reverse order of the\r\n\t * corresponding calls to `mark()`, the behavior is unspecified.\r\n\t *\r\n\t * For more information and an example, see {@link #mark}.\r\n\t *\r\n\t * @param marker A marker returned by a call to `mark()`.\r\n\t * @see #mark\r\n\t */\r\n\trelease(marker: number): void;\r\n\r\n\t/**\r\n\t * Return the index into the stream of the input symbol referred to by\r\n\t * `LA(1)`.\r\n\t *\r\n\t * The behavior of this method is unspecified if no call to an\r\n\t * {@link IntStream initializing method} has occurred after this stream was\r\n\t * constructed.\r\n\t */\r\n\treadonly index: number;\r\n\r\n\t/**\r\n\t * Set the input cursor to the position indicated by `index`. If the\r\n\t * specified index lies past the end of the stream, the operation behaves as\r\n\t * though `index` was the index of the EOF symbol. After this method\r\n\t * returns without throwing an exception, then at least one of the following\r\n\t * will be true.\r\n\t *\r\n\t * * `index` will return the index of the first symbol\r\n\t * appearing at or after the specified `index`. Specifically,\r\n\t * implementations which filter their sources should automatically\r\n\t * adjust `index` forward the minimum amount required for the\r\n\t * operation to target a non-ignored symbol.\r\n\t * * `LA(1)` returns {@link #EOF}\r\n\t *\r\n\t * This operation is guaranteed to not throw an exception if `index`\r\n\t * lies within a marked region. For more information on marked regions, see\r\n\t * {@link #mark}. The behavior of this method is unspecified if no call to\r\n\t * an {@link IntStream initializing method} has occurred after this stream\r\n\t * was constructed.\r\n\t *\r\n\t * @param index The absolute index to seek to.\r\n\t *\r\n\t * @throws IllegalArgumentException if `index` is less than 0\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * seeking to the specified index\r\n\t */\r\n\tseek(index: number): void;\r\n\r\n\t/**\r\n\t * Returns the total number of symbols in the stream, including a single EOF\r\n\t * symbol.\r\n\t *\r\n\t * @throws UnsupportedOperationException if the size of the stream is\r\n\t * unknown.\r\n\t */\r\n\treadonly size: number;\r\n\r\n\t/**\r\n\t * Gets the name of the underlying symbol source. This method returns a\r\n\t * non-undefined, non-empty string. If such a name is not known, this method\r\n\t * returns {@link #UNKNOWN_SOURCE_NAME}.\r\n\t */\r\n\t//@NotNull\r\n\treadonly sourceName: string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.0828748-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Arrays } from \"./misc/Arrays\";\r\nimport { Override } from \"./Decorators\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\n\r\nconst READ_BUFFER_SIZE: number = 1024;\r\nconst INITIAL_BUFFER_SIZE: number = 1024;\r\n\r\n/**\r\n * Vacuum all input from a {@link Reader}/{@link InputStream} and then treat it\r\n * like a `char[]` buffer. Can also pass in a {@link String} or\r\n * `char[]` to use.\r\n *\r\n * If you need encoding, pass in stream/reader with correct encoding.\r\n *\r\n * @deprecated as of 4.7, please use `CharStreams` interface.\r\n */\r\nexport class ANTLRInputStream implements CharStream {\r\n\t/** The data being scanned */\r\n\tprotected data: string;\r\n\r\n\t/** How many characters are actually in the buffer */\r\n\tprotected n: number;\r\n\r\n\t/** 0..n-1 index into string of next char */\r\n\tprotected p: number = 0;\r\n\r\n\t/** What is name or source of this char stream? */\r\n\tpublic name?: string;\r\n\r\n\t/** Copy data in string to a local char array */\r\n\tconstructor(input: string) {\r\n\t\tthis.data = input;\r\n\t\tthis.n = input.length;\r\n\t}\r\n\r\n\t/** Reset the stream so that it's in the same state it was\r\n\t * when the object was created *except* the data array is not\r\n\t * touched.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis.p = 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tif (this.p >= this.n) {\r\n\t\t\tassert(this.LA(1) === IntStream.EOF);\r\n\t\t\tthrow new Error(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\t//System.out.println(\"prev p=\"+p+\", c=\"+(char)data[p]);\r\n\t\tif (this.p < this.n) {\r\n\t\t\tthis.p++;\r\n\t\t\t//System.out.println(\"p moves to \"+p+\" (c='\"+(char)data[p]+\"')\");\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tif (i === 0) {\r\n\t\t\treturn 0; // undefined\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\ti++; // e.g., translate LA(-1) to use offset i=0; then data[p+0-1]\r\n\t\t\tif ((this.p + i - 1) < 0) {\r\n\t\t\t\treturn IntStream.EOF; // invalid; no char before first char\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((this.p + i - 1) >= this.n) {\r\n\t\t\t//System.out.println(\"char LA(\"+i+\")=EOF; p=\"+p);\r\n\t\t\treturn IntStream.EOF;\r\n\t\t}\r\n\t\t//System.out.println(\"char LA(\"+i+\")=\"+(char)data[p+i-1]+\"; p=\"+p);\r\n\t\t//System.out.println(\"LA(\"+i+\"); p=\"+p+\" n=\"+n+\" data.length=\"+data.length);\r\n\t\treturn this.data.charCodeAt(this.p + i - 1);\r\n\t}\r\n\r\n\tpublic LT(i: number): number {\r\n\t\treturn this.LA(i);\r\n\t}\r\n\r\n\t/** Return the current input symbol index 0..n where n indicates the\r\n\t * last symbol has been read. The index is the index of char to\r\n\t * be returned from LA(1).\r\n\t */\r\n\t@Override\r\n\tget index(): number {\r\n\t\treturn this.p;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.n;\r\n\t}\r\n\r\n\t/** mark/release do nothing; we have entire buffer */\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// No default implementation since this stream buffers the entire input\r\n\t}\r\n\r\n\t/** consume() ahead until p==index; can't just set p=index as we must\r\n\t * update line and charPositionInLine. If we seek backwards, just set p\r\n\t */\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tif (index <= this.p) {\r\n\t\t\tthis.p = index; // just jump; don't update stream state (line, ...)\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// seek forward, consume until p hits index or n (whichever comes first)\r\n\t\tindex = Math.min(index, this.n);\r\n\t\twhile (this.p < index) {\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getText(interval: Interval): string {\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\t\tif (stop >= this.n) {\r\n\t\t\tstop = this.n - 1;\r\n\t\t}\r\n\t\tlet count: number = stop - start + 1;\r\n\t\tif (start >= this.n) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\t// System.err.println(\"data: \"+Arrays.toString(data)+\", n=\"+n+\r\n\t\t// \t\t\t\t \", start=\"+start+\r\n\t\t// \t\t\t\t \", stop=\"+stop);\r\n\t\treturn this.data.substr(start, count);\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\tif (!this.name) {\r\n\t\t\treturn IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString() { return this.data; }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.4734328-07:00\r\n\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\n\r\nconst INITIAL_NUM_TRANSITIONS: number = 4;\r\n\r\n/**\r\n * The following images show the relation of states and\r\n * {@link ATNState#transitions} for various grammar constructs.\r\n *\r\n * * Solid edges marked with an ε indicate a required\r\n * {@link EpsilonTransition}.\r\n *\r\n * * Dashed edges indicate locations where any transition derived from\r\n * {@link Transition} might appear.\r\n *\r\n * * Dashed nodes are place holders for either a sequence of linked\r\n * {@link BasicState} states or the inclusion of a block representing a nested\r\n * construct in one of the forms below.\r\n *\r\n * * Nodes showing multiple outgoing alternatives with a `...` support\r\n * any number of alternatives (one or more). Nodes without the `...` only\r\n * support the exact number of alternatives shown in the diagram.\r\n *\r\n *

        Basic Blocks

        \r\n *\r\n *

        Rule

        \r\n *\r\n * \r\n *\r\n *

        Block of 1 or more alternatives

        \r\n *\r\n * \r\n *\r\n *

        Greedy Loops

        \r\n *\r\n *

        Greedy Closure: `(...)*`

        \r\n *\r\n * \r\n *\r\n *

        Greedy Positive Closure: `(...)+`

        \r\n *\r\n * \r\n *\r\n *

        Greedy Optional: `(...)?`

        \r\n *\r\n * \r\n *\r\n *

        Non-Greedy Loops

        \r\n *\r\n *

        Non-Greedy Closure: `(...)*?`

        \r\n *\r\n * \r\n *\r\n *

        Non-Greedy Positive Closure: `(...)+?`

        \r\n *\r\n * \r\n *\r\n *

        Non-Greedy Optional: `(...)??`

        \r\n *\r\n * \r\n */\r\nexport abstract class ATNState {\r\n\r\n\t/** Which ATN are we in? */\r\n\tpublic atn?: ATN;\r\n\r\n\tpublic stateNumber: number = ATNState.INVALID_STATE_NUMBER;\r\n\r\n\tpublic ruleIndex: number = 0; // at runtime, we don't have Rule objects\r\n\r\n\tpublic epsilonOnlyTransitions: boolean = false;\r\n\r\n\t/** Track the transitions emanating from this ATN state. */\r\n\tprotected transitions: Transition[] = [];\r\n\r\n\tprotected optimizedTransitions: Transition[] = this.transitions;\r\n\r\n\t/** Used to cache lookahead during parsing, not used during construction */\r\n\tpublic nextTokenWithinRule?: IntervalSet;\r\n\r\n\t/**\r\n\t * Gets the state number.\r\n\t *\r\n\t * @returns the state number\r\n\t */\r\n\tpublic getStateNumber(): number {\r\n\t\treturn this.stateNumber;\r\n\t}\r\n\r\n\t/**\r\n\t * For all states except {@link RuleStopState}, this returns the state\r\n\t * number. Returns -1 for stop states.\r\n\t *\r\n\t * @returns -1 for {@link RuleStopState}, otherwise the state number\r\n\t */\r\n\tget nonStopStateNumber(): number {\r\n\t\treturn this.getStateNumber();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.stateNumber;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\t// are these states same object?\r\n\t\tif (o instanceof ATNState) {\r\n\t\t\treturn this.stateNumber === o.stateNumber;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isNonGreedyExitState(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn String(this.stateNumber);\r\n\t}\r\n\r\n\tpublic getTransitions(): Transition[] {\r\n\t\treturn this.transitions.slice(0);\r\n\t}\r\n\r\n\tget numberOfTransitions(): number {\r\n\t\treturn this.transitions.length;\r\n\t}\r\n\r\n\tpublic addTransition(e: Transition, index?: number): void {\r\n\t\tif (this.transitions.length === 0) {\r\n\t\t\tthis.epsilonOnlyTransitions = e.isEpsilon;\r\n\t\t}\r\n\t\telse if (this.epsilonOnlyTransitions !== e.isEpsilon) {\r\n\t\t\tthis.epsilonOnlyTransitions = false;\r\n\t\t\tthrow new Error(\"ATN state \" + this.stateNumber + \" has both epsilon and non-epsilon transitions.\");\r\n\t\t}\r\n\r\n\t\tthis.transitions.splice(index !== undefined ? index : this.transitions.length, 0, e);\r\n\t}\r\n\r\n\tpublic transition(i: number): Transition {\r\n\t\treturn this.transitions[i];\r\n\t}\r\n\r\n\tpublic setTransition(i: number, e: Transition): void {\r\n\t\tthis.transitions[i] = e;\r\n\t}\r\n\r\n\tpublic removeTransition(index: number): Transition {\r\n\t\treturn this.transitions.splice(index, 1)[0];\r\n\t}\r\n\r\n\tpublic abstract readonly stateType: ATNStateType;\r\n\r\n\tget onlyHasEpsilonTransitions(): boolean {\r\n\t\treturn this.epsilonOnlyTransitions;\r\n\t}\r\n\r\n\tpublic setRuleIndex(ruleIndex: number): void {\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\tget isOptimized(): boolean {\r\n\t\treturn this.optimizedTransitions !== this.transitions;\r\n\t}\r\n\r\n\tget numberOfOptimizedTransitions(): number {\r\n\t\treturn this.optimizedTransitions.length;\r\n\t}\r\n\r\n\tpublic getOptimizedTransition(i: number): Transition {\r\n\t\treturn this.optimizedTransitions[i];\r\n\t}\r\n\r\n\tpublic addOptimizedTransition(e: Transition): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthis.optimizedTransitions = new Array();\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions.push(e);\r\n\t}\r\n\r\n\tpublic setOptimizedTransition(i: number, e: Transition): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthrow new Error(\"This ATNState is not optimized.\");\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions[i] = e;\r\n\t}\r\n\r\n\tpublic removeOptimizedTransition(i: number): void {\r\n\t\tif (!this.isOptimized) {\r\n\t\t\tthrow new Error(\"This ATNState is not optimized.\");\r\n\t\t}\r\n\r\n\t\tthis.optimizedTransitions.splice(i, 1);\r\n\t}\r\n}\r\n\r\nexport namespace ATNState {\r\n\texport const INVALID_STATE_NUMBER: number = -1;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.4734328-07:00\r\n\r\nexport enum ATNStateType {\r\n\tINVALID_TYPE = 0,\r\n\tBASIC = 1,\r\n\tRULE_START = 2,\r\n\tBLOCK_START = 3,\r\n\tPLUS_BLOCK_START = 4,\r\n\tSTAR_BLOCK_START = 5,\r\n\tTOKEN_START = 6,\r\n\tRULE_STOP = 7,\r\n\tBLOCK_END = 8,\r\n\tSTAR_LOOP_BACK = 9,\r\n\tSTAR_LOOP_ENTRY = 10,\r\n\tPLUS_LOOP_BACK = 11,\r\n\tLOOP_END = 12,\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.0697674-07:00\r\nimport { CharStream } from \"./CharStream\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\n\r\n\r\n/** The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\r\n * 3 kinds of errors: prediction errors, failed predicate errors, and\r\n * mismatched input errors. In each case, the parser knows where it is\r\n * in the input, where it is in the ATN, the rule invocation stack,\r\n * and what kind of problem occurred.\r\n */\r\nexport class RecognitionException extends Error {\r\n\t// private static serialVersionUID: number = -3861826954750022374L;\r\n\r\n\t/** The {@link Recognizer} where this exception originated. */\r\n\tprivate _recognizer?: Recognizer;\r\n\r\n\tprivate ctx?: RuleContext;\r\n\r\n\tprivate input?: IntStream;\r\n\r\n\t/**\r\n\t * The current {@link Token} when an error occurred. Since not all streams\r\n\t * support accessing symbols by index, we have to track the {@link Token}\r\n\t * instance itself.\r\n\t */\r\n\tprivate offendingToken?: Token;\r\n\r\n\tprivate _offendingState: number = -1;\r\n\r\n\tconstructor(\r\n\t\tlexer: Lexer | undefined,\r\n\t\tinput: CharStream);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer | undefined,\r\n\t\tinput: IntStream | undefined,\r\n\t\tctx: ParserRuleContext | undefined);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer | undefined,\r\n\t\tinput: IntStream | undefined,\r\n\t\tctx: ParserRuleContext | undefined,\r\n\t\tmessage: string);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Lexer | Recognizer | undefined,\r\n\t\tinput: CharStream | IntStream | undefined,\r\n\t\tctx?: ParserRuleContext,\r\n\t\tmessage?: string) {\r\n\t\tsuper(message);\r\n\r\n\t\tthis._recognizer = recognizer;\r\n\t\tthis.input = input;\r\n\t\tthis.ctx = ctx;\r\n\t\tif (recognizer) {\r\n\t\t\tthis._offendingState = recognizer.state;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the ATN state number the parser was in at the time the error\r\n\t * occurred. For {@link NoViableAltException} and\r\n\t * {@link LexerNoViableAltException} exceptions, this is the\r\n\t * {@link DecisionState} number. For others, it is the state whose outgoing\r\n\t * edge we couldn't match.\r\n\t *\r\n\t * If the state number is not known, this method returns -1.\r\n\t */\r\n\tget offendingState(): number {\r\n\t\treturn this._offendingState;\r\n\t}\r\n\r\n\tprotected setOffendingState(offendingState: number): void {\r\n\t\tthis._offendingState = offendingState;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of input symbols which could potentially follow the\r\n\t * previously matched symbol at the time this exception was thrown.\r\n\t *\r\n\t * If the set of expected tokens is not known and could not be computed,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @returns The set of token types that could potentially follow the current\r\n\t * state in the ATN, or `undefined` if the information is not available.\r\n\t */\r\n\tget expectedTokens(): IntervalSet | undefined {\r\n\t\tif (this._recognizer) {\r\n\t\t\treturn this._recognizer.atn.getExpectedTokens(this._offendingState, this.ctx);\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link RuleContext} at the time this exception was thrown.\r\n\t *\r\n\t * If the context is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The {@link RuleContext} at the time this exception was thrown.\r\n\t * If the context is not available, this method returns `undefined`.\r\n\t */\r\n\tget context(): RuleContext | undefined {\r\n\t\treturn this.ctx;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the input stream which is the symbol source for the recognizer where\r\n\t * this exception was thrown.\r\n\t *\r\n\t * If the input stream is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The input stream which is the symbol source for the recognizer\r\n\t * where this exception was thrown, or `undefined` if the stream is not\r\n\t * available.\r\n\t */\r\n\r\n\tget inputStream(): IntStream | undefined {\r\n\t\treturn this.input;\r\n\t}\r\n\r\n\tpublic getOffendingToken(recognizer?: Recognizer): Token | undefined {\r\n\t\tif (recognizer && recognizer !== this._recognizer) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn this.offendingToken;\r\n\t}\r\n\r\n\tprotected setOffendingToken(\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingToken?: TSymbol): void {\r\n\t\tif (recognizer === this._recognizer) {\r\n\t\t\tthis.offendingToken = offendingToken;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link Recognizer} where this exception occurred.\r\n\t *\r\n\t * If the recognizer is not available, this method returns `undefined`.\r\n\t *\r\n\t * @returns The recognizer where this exception occurred, or `undefined` if\r\n\t * the recognizer is not available.\r\n\t */\r\n\tget recognizer(): Recognizer | undefined {\r\n\t\treturn this._recognizer;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.8530496-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** An ATN transition between any two ATN states. Subclasses define\r\n * atom, set, epsilon, action, predicate, rule transitions.\r\n *\r\n * This is a one way link. It emanates from a state (usually via a list of\r\n * transitions) and has a target state.\r\n *\r\n * Since we never have to change the ATN transitions once we construct it,\r\n * we can fix these transitions as specific classes. The DFA transitions\r\n * on the other hand need to update the labels as it adds transitions to\r\n * the states. We'll use the term Edge for the DFA to distinguish them from\r\n * ATN transitions.\r\n */\r\nexport abstract class Transition {\r\n\tpublic static readonly serializationNames: string[] = [\r\n\t\t\"INVALID\",\r\n\t\t\"EPSILON\",\r\n\t\t\"RANGE\",\r\n\t\t\"RULE\",\r\n\t\t\"PREDICATE\",\r\n\t\t\"ATOM\",\r\n\t\t\"ACTION\",\r\n\t\t\"SET\",\r\n\t\t\"NOT_SET\",\r\n\t\t\"WILDCARD\",\r\n\t\t\"PRECEDENCE\",\r\n\t];\r\n\r\n\t// @SuppressWarnings(\"serial\")\r\n\t// static serializationTypes: Map, number> =\r\n\t// \tCollections.unmodifiableMap(new HashMap, Integer>() {{\r\n\t// \t\tput(EpsilonTransition.class, EPSILON);\r\n\t// \t\tput(RangeTransition.class, RANGE);\r\n\t// \t\tput(RuleTransition.class, RULE);\r\n\t// \t\tput(PredicateTransition.class, PREDICATE);\r\n\t// \t\tput(AtomTransition.class, ATOM);\r\n\t// \t\tput(ActionTransition.class, ACTION);\r\n\t// \t\tput(SetTransition.class, SET);\r\n\t// \t\tput(NotSetTransition.class, NOT_SET);\r\n\t// \t\tput(WildcardTransition.class, WILDCARD);\r\n\t// \t\tput(PrecedencePredicateTransition.class, PRECEDENCE);\r\n\t// \t}});\r\n\r\n\t/** The target of this transition. */\r\n\t@NotNull\r\n\tpublic target: ATNState;\r\n\r\n\tconstructor(@NotNull target: ATNState) {\r\n\t\tif (target == null) {\r\n\t\t\tthrow new Error(\"target cannot be null.\");\r\n\t\t}\r\n\r\n\t\tthis.target = target;\r\n\t}\r\n\r\n\tpublic abstract readonly serializationType: TransitionType;\r\n\r\n\t/**\r\n\t * Determines if the transition is an \"epsilon\" transition.\r\n\t *\r\n\t * The default implementation returns `false`.\r\n\t *\r\n\t * @returns `true` if traversing this transition in the ATN does not\r\n\t * consume an input symbol; otherwise, `false` if traversing this\r\n\t * transition consumes (matches) an input symbol.\r\n\t */\r\n\tget isEpsilon(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget label(): IntervalSet | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic abstract matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.6596177-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Transition } from \"./Transition\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport abstract class AbstractPredicateTransition extends Transition {\r\n\r\n\tconstructor(target: ATNState) {\r\n\t\tsuper(target);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.1239660-07:00\r\nimport { Equatable } from \"./Stubs\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport namespace MurmurHash {\r\n\r\n\tconst DEFAULT_SEED: number = 0;\r\n\r\n\t/**\r\n\t * Initialize the hash using the specified `seed`.\r\n\t *\r\n\t * @param seed the seed (optional)\r\n\t * @returns the intermediate hash value\r\n\t */\r\n\texport function initialize(seed: number = DEFAULT_SEED): number {\r\n\t\treturn seed;\r\n\t}\r\n\r\n\t/**\r\n\t * Update the intermediate hash value for the next input `value`.\r\n\t *\r\n\t * @param hash the intermediate hash value\r\n\t * @param value the value to add to the current hash\r\n\t * @returns the updated intermediate hash value\r\n\t */\r\n\texport function update(hash: number, value: number | string | Equatable | null | undefined): number {\r\n\t\tconst c1: number = 0xCC9E2D51;\r\n\t\tconst c2: number = 0x1B873593;\r\n\t\tconst r1: number = 15;\r\n\t\tconst r2: number = 13;\r\n\t\tconst m: number = 5;\r\n\t\tconst n: number = 0xE6546B64;\r\n\r\n\t\tif (value == null) {\r\n\t\t\tvalue = 0;\r\n\t\t} else if (typeof value === \"string\") {\r\n\t\t\tvalue = hashString(value);\r\n\t\t} else if (typeof value === \"object\") {\r\n\t\t\tvalue = value.hashCode();\r\n\t\t}\r\n\r\n\t\tlet k: number = value;\r\n\t\tk = Math.imul(k, c1);\r\n\t\tk = (k << r1) | (k >>> (32 - r1));\r\n\t\tk = Math.imul(k, c2);\r\n\r\n\t\thash = hash ^ k;\r\n\t\thash = (hash << r2) | (hash >>> (32 - r2));\r\n\t\thash = Math.imul(hash, m) + n;\r\n\r\n\t\treturn hash & 0xFFFFFFFF;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Apply the final computation steps to the intermediate value `hash`\r\n\t * to form the final result of the MurmurHash 3 hash function.\r\n\t *\r\n\t * @param hash the intermediate hash value\r\n\t * @param numberOfWords the number of integer values added to the hash\r\n\t * @returns the final hash result\r\n\t */\r\n\texport function finish(hash: number, numberOfWords: number): number {\r\n\t\thash = hash ^ (numberOfWords * 4);\r\n\t\thash = hash ^ (hash >>> 16);\r\n\t\thash = Math.imul(hash, 0x85EBCA6B);\r\n\t\thash = hash ^ (hash >>> 13);\r\n\t\thash = Math.imul(hash, 0xC2B2AE35);\r\n\t\thash = hash ^ (hash >>> 16);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Utility function to compute the hash code of an array using the\r\n\t * MurmurHash algorithm.\r\n\t *\r\n\t * @param the array element type\r\n\t * @param data the array data\r\n\t * @param seed the seed for the MurmurHash algorithm\r\n\t * @returns the hash code of the data\r\n\t */\r\n\texport function hashCode(data: Iterable, seed: number = DEFAULT_SEED): number {\r\n\t\tlet hash: number = initialize(seed);\r\n\t\tlet length = 0;\r\n\t\tfor (let value of data) {\r\n\t\t\thash = update(hash, value);\r\n\t\t\tlength++;\r\n\t\t}\r\n\r\n\t\thash = finish(hash, length);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Function to hash a string. Based on the implementation found here:\r\n\t * http://stackoverflow.com/a/7616484\r\n\t */\r\n\tfunction hashString(str: string): number {\r\n\t\tlet len = str.length;\r\n\t\tif (len === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet hash = 0;\r\n\t\tfor (let i = 0; i < len; i++) {\r\n\t\t\tlet c = str.charCodeAt(i);\r\n\t\t\thash = (((hash << 5) >>> 0) - hash) + c;\r\n\t\t\thash |= 0;\r\n\t\t}\r\n\r\n\t\treturn hash;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.2127260-07:00\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ObjectEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: ObjectEqualityComparator = new ObjectEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: Equatable | null | undefined): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn obj.hashCode();\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined` or `null`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined` or `null`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: Equatable | null | undefined, b: Equatable | null | undefined): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t}\r\n\r\n\t\treturn a.equals(b);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class DefaultEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: DefaultEqualityComparator = new DefaultEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: any): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t} else if (typeof obj === \"string\" || typeof obj === \"number\") {\r\n\t\t\treturn MurmurHash.hashCode([obj]);\r\n\t\t} else {\r\n\t\t\treturn ObjectEqualityComparator.INSTANCE.hashCode(obj as Equatable);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined` or `null`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined` or `null`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: any, b: any): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t} else if (typeof a === \"string\" || typeof a === \"number\") {\r\n\t\t\treturn a === b;\r\n\t\t} else {\r\n\t\t\treturn ObjectEqualityComparator.INSTANCE.equals(a as Equatable, b as Equatable);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:41.7434086-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { DefaultEqualityComparator } from \"./DefaultEqualityComparator\";\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { NotNull, Nullable, Override, SuppressWarnings } from \"../Decorators\";\r\nimport { JavaCollection, JavaSet } from \"./Stubs\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\n/** {@link Set} implementation with closed hashing (open addressing). */\r\n\r\n// NOTE: JavaScript's Set interface has on significant different diffrence from Java's:\r\n// \t\t e.g. the return type of add() differs!\r\n// For this reason I've commented tweaked the implements clause\r\n\r\nconst INITAL_CAPACITY: number = 16; // must be power of 2\r\nconst LOAD_FACTOR: number = 0.75;\r\n\r\nexport class Array2DHashSet implements JavaSet {\r\n\t@NotNull\r\n\tprotected comparator: EqualityComparator;\r\n\r\n\tprotected buckets: Array;\r\n\r\n\t/** How many elements in set */\r\n\tprotected n: number = 0;\r\n\r\n\tprotected threshold: number = Math.floor(INITAL_CAPACITY * LOAD_FACTOR); // when to expand\r\n\r\n\tconstructor(comparator?: EqualityComparator, initialCapacity?: number);\r\n\tconstructor(set: Array2DHashSet);\r\n\tconstructor(\r\n\t\tcomparatorOrSet?: EqualityComparator | Array2DHashSet,\r\n\t\tinitialCapacity: number = INITAL_CAPACITY) {\r\n\r\n\t\tif (comparatorOrSet instanceof Array2DHashSet) {\r\n\t\t\tthis.comparator = comparatorOrSet.comparator;\r\n\t\t\tthis.buckets = comparatorOrSet.buckets.slice(0);\r\n\t\t\tfor (let i = 0; i < this.buckets.length; i++) {\r\n\t\t\t\tlet bucket = this.buckets[i];\r\n\t\t\t\tif (bucket) {\r\n\t\t\t\t\tthis.buckets[i] = bucket.slice(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.n = comparatorOrSet.n;\r\n\t\t\tthis.threshold = comparatorOrSet.threshold;\r\n\t\t} else {\r\n\t\t\tthis.comparator = comparatorOrSet || DefaultEqualityComparator.INSTANCE;\r\n\t\t\tthis.buckets = this.createBuckets(initialCapacity);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add `o` to set if not there; return existing value if already\r\n\t * there. This method performs the same operation as {@link #add} aside from\r\n\t * the return value.\r\n\t */\r\n\tpublic getOrAdd(o: T): T {\r\n\t\tif (this.n > this.threshold) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this.getOrAddImpl(o);\r\n\t}\r\n\r\n\tprotected getOrAddImpl(o: T): T {\r\n\t\tlet b: number = this.getBucket(o);\r\n\t\tlet bucket = this.buckets[b];\r\n\r\n\t\t// NEW BUCKET\r\n\t\tif (!bucket) {\r\n\t\t\tbucket = [o];\r\n\t\t\tthis.buckets[b] = bucket;\r\n\t\t\tthis.n++;\r\n\t\t\treturn o;\r\n\t\t}\r\n\r\n\t\t// LOOK FOR IT IN BUCKET\r\n\t\tfor (let existing of bucket) {\r\n\t\t\tif (this.comparator.equals(existing, o)) {\r\n\t\t\t\treturn existing; // found existing, quit\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// FULL BUCKET, expand and add to end\r\n\t\tbucket.push(o);\r\n\t\tthis.n++;\r\n\t\treturn o;\r\n\t}\r\n\r\n\tpublic get(o: T): T | undefined {\r\n\t\tif (o == null) {\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\tlet b: number = this.getBucket(o);\r\n\t\tlet bucket = this.buckets[b];\r\n\t\tif (!bucket) {\r\n\t\t\t// no bucket\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tfor (let e of bucket) {\r\n\t\t\tif (this.comparator.equals(e, o)) {\r\n\t\t\t\treturn e;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tprotected getBucket(o: T): number {\r\n\t\tlet hash: number = this.comparator.hashCode(o);\r\n\t\tlet b: number = hash & (this.buckets.length - 1); // assumes len is power of 2\r\n\t\treturn b;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\thash = MurmurHash.update(hash, this.comparator.hashCode(o));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, this.size);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (!(o instanceof Array2DHashSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (o.size !== this.size) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tlet same: boolean = this.containsAll(o);\r\n\t\treturn same;\r\n\t}\r\n\r\n\tprotected expand(): void {\r\n\t\tlet old = this.buckets;\r\n\t\tlet newCapacity: number = this.buckets.length * 2;\r\n\t\tlet newTable: Array = this.createBuckets(newCapacity);\r\n\t\tthis.buckets = newTable;\r\n\t\tthis.threshold = Math.floor(newCapacity * LOAD_FACTOR);\r\n//\t\tSystem.out.println(\"new size=\"+newCapacity+\", thres=\"+threshold);\r\n\t\t// rehash all existing entries\r\n\t\tlet oldSize: number = this.size;\r\n\t\tfor (let bucket of old) {\r\n\t\t\tif (!bucket) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tlet b: number = this.getBucket(o);\r\n\t\t\t\tlet newBucket: T[] | undefined = this.buckets[b];\r\n\t\t\t\tif (!newBucket) {\r\n\t\t\t\t\tnewBucket = [];\r\n\t\t\t\t\tthis.buckets[b] = newBucket;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewBucket.push(o);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tassert(this.n === oldSize);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic add(t: T): boolean {\r\n\t\tlet existing: T = this.getOrAdd(t);\r\n\t\treturn existing === t;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.n;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.n === 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic contains(o: any): boolean {\r\n\t\treturn this.containsFast(this.asElementType(o));\r\n\t}\r\n\r\n\tpublic containsFast(@Nullable obj: T): boolean {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.get(obj) != null;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic *[Symbol.iterator](): IterableIterator {\r\n\t\tyield* this.toArray();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toArray(): T[] {\r\n\t\tconst a = new Array(this.size);\r\n\r\n\t\t// Copy elements from the nested arrays into the destination array\r\n\t\tlet i: number = 0; // Position within destination array\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\ta[i++] = o;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn a;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic containsAll(collection: JavaCollection): boolean {\r\n\t\tif (collection instanceof Array2DHashSet) {\r\n\t\t\tlet s = collection as any as Array2DHashSet;\r\n\t\t\tfor (let bucket of s.buckets) {\r\n\t\t\t\tif (bucket == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let o of bucket) {\r\n\t\t\t\t\tif (o == null) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.containsFast(this.asElementType(o))) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let o of collection) {\r\n\t\t\t\tif (!this.containsFast(this.asElementType(o))) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic addAll(c: Iterable): boolean {\r\n\t\tlet changed: boolean = false;\r\n\r\n\t\tfor (let o of c) {\r\n\t\t\tlet existing: T = this.getOrAdd(o);\r\n\t\t\tif (existing !== o) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clear(): void {\r\n\t\tthis.buckets = this.createBuckets(INITAL_CAPACITY);\r\n\t\tthis.n = 0;\r\n\t\tthis.threshold = Math.floor(INITAL_CAPACITY * LOAD_FACTOR);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this.size === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tlet buf = \"{\";\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += \", \";\r\n\t\t\t\t}\r\n\t\t\t\tbuf += o.toString();\r\n\t\t\t}\r\n\t\t}\r\n\t\tbuf += \"}\";\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic toTableString(): string {\r\n\t\tlet buf = \"\";\r\n\t\tfor (let bucket of this.buckets) {\r\n\t\t\tif (bucket == null) {\r\n\t\t\t\tbuf += \"null\\n\";\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tbuf += \"[\";\r\n\t\t\tlet first: boolean = true;\r\n\t\t\tfor (let o of bucket) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tif (o == null) {\r\n\t\t\t\t\tbuf += \"_\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += o.toString();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbuf += \"]\\n\";\r\n\t\t}\r\n\t\treturn buf;\r\n\t}\r\n\r\n\t/**\r\n\t * Return `o` as an instance of the element type `T`. If\r\n\t * `o` is non-undefined but known to not be an instance of `T`, this\r\n\t * method returns `undefined`. The base implementation does not perform any\r\n\t * type checks; override this method to provide strong type checks for the\r\n\t * {@link #contains} and {@link #remove} methods to ensure the arguments to\r\n\t * the {@link EqualityComparator} for the set always have the expected\r\n\t * types.\r\n\t *\r\n\t * @param o the object to try and cast to the element type of the set\r\n\t * @returns `o` if it could be an instance of `T`, otherwise\r\n\t * `undefined`.\r\n\t */\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected asElementType(o: any): T {\r\n\t\treturn o as T;\r\n\t}\r\n\r\n\t/**\r\n\t * Return an array of `T[]` with length `capacity`.\r\n\t *\r\n\t * @param capacity the length of the array to return\r\n\t * @returns the newly constructed array\r\n\t */\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprotected createBuckets(capacity: number): Array {\r\n\t\treturn new Array(capacity);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-03T02:09:42.2127260-07:00\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"./ObjectEqualityComparator\";\r\n\r\n/**\r\n * This default implementation of {@link EqualityComparator} uses object equality\r\n * for comparisons by calling {@link Object#hashCode} and {@link Object#equals}.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ArrayEqualityComparator implements EqualityComparator {\r\n\tpublic static readonly INSTANCE: ArrayEqualityComparator = new ArrayEqualityComparator();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation returns\r\n\t * `obj.`{@link Object#hashCode hashCode()}.\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(obj: Equatable[]): number {\r\n\t\tif (obj == null) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn MurmurHash.hashCode(obj, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation relies on object equality. If both objects are\r\n\t * `undefined`, this method returns `true`. Otherwise if only\r\n\t * `a` is `undefined`, this method returns `false`. Otherwise,\r\n\t * this method returns the result of\r\n\t * `a.`{@link Object#equals equals}`(b)`.\r\n\t */\r\n\t@Override\r\n\tpublic equals(a: Equatable[], b: Equatable[]): boolean {\r\n\t\tif (a == null) {\r\n\t\t\treturn b == null;\r\n\t\t} else if (b == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (a.length !== b.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < a.length; i++) {\r\n\t\t\tif (!ObjectEqualityComparator.INSTANCE.equals(a[i], b[i])) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:45.0833752-07:00\r\n\r\n// Taking a case-by-case approach to pporting this functionaltiy\r\n// as much of it may be supported natively by JavaScript. Or otherwise need\r\n// substantial rethink\r\n\r\nimport { NotNull } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\nimport { IntegerList } from \"./IntegerList\";\r\n\r\nexport function escapeWhitespace(s: string, escapeSpaces: boolean): string {\r\n\treturn escapeSpaces ? s.replace(/ /, \"\\u00B7\") : s\r\n\t\t.replace(/\\t/, \"\\\\t\")\r\n\t\t.replace(/\\n/, \"\\\\n\")\r\n\t\t.replace(/\\r/, \"\\\\r\");\r\n}\r\n\r\n// Seriously: why isn't this built in to java? ugh!\r\nexport function join(collection: Iterable, separator: string): string {\r\n\tlet buf = \"\";\r\n\tlet first = true;\r\n\tfor (let current of collection) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t} else {\r\n\t\t\tbuf += separator;\r\n\t\t}\r\n\r\n\t\tbuf += current;\r\n\t}\r\n\r\n\treturn buf;\r\n}\r\n\r\nexport function equals(x: Equatable | undefined, y: Equatable | undefined): boolean {\r\n\tif (x === y) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif (x === undefined || y === undefined) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn x.equals(y);\r\n}\r\n\r\n// export function numNonnull(data: any[]): number {\r\n// \tlet n: number = 0;\r\n// \tif ( data == null ) return n;\r\n// \tfor (let o of data) {\r\n// \t\tif ( o!=null ) n++;\r\n// \t}\r\n// \treturn n;\r\n// }\r\n\r\n// export function removeAllElements(data: Collection, value: T): void {\r\n// \tif ( data==null ) return;\r\n// \twhile ( data.contains(value) ) data.remove(value);\r\n// }\r\n\r\n// export function writeFile(@NotNull file: File, @NotNull content: Uint8Array): void {\r\n// \tlet fos: FileOutputStream = new FileOutputStream(file);\r\n// \ttry {\r\n// \t\tfos.write(content);\r\n// \t} finally {\r\n// \t\tfos.close();\r\n// \t}\r\n// }\r\n\r\n// export function writeFile(@NotNull fileName: string, @NotNull content: string): void {\r\n// \twriteFile(fileName, content, null);\r\n// }\r\n\r\n// export function writeFile(@NotNull fileName: string, @NotNull content: string, @Nullable encoding: string): void {\r\n// \tlet f: File = new File(fileName);\r\n// \tlet fos: FileOutputStream = new FileOutputStream(f);\r\n// \tlet osw: OutputStreamWriter;\r\n// \tif (encoding != null) {\r\n// \t\tosw = new OutputStreamWriter(fos, encoding);\r\n// \t}\r\n// \telse {\r\n// \t\tosw = new OutputStreamWriter(fos);\r\n// \t}\r\n\r\n// \ttry {\r\n// \t\tosw.write(content);\r\n// \t}\r\n// \tfinally {\r\n// \t\tosw.close();\r\n// \t}\r\n// }\r\n\r\n// @NotNull\r\n// export function readFile(@NotNull fileName: string): char[] {\r\n// \treturn readFile(fileName, null);\r\n// }\r\n\r\n// @NotNull\r\n// export function readFile(@NotNull fileName: string, @Nullable encoding: string): char[] {\r\n// \tlet f: File = new File(fileName);\r\n// \tlet size: number = (int)f.length();\r\n// \tlet isr: InputStreamReader;\r\n// \tlet fis: FileInputStream = new FileInputStream(fileName);\r\n// \tif ( encoding!=null ) {\r\n// \t\tisr = new InputStreamReader(fis, encoding);\r\n// \t}\r\n// \telse {\r\n// \t\tisr = new InputStreamReader(fis);\r\n// \t}\r\n// \tlet data: char[] = null;\r\n// \ttry {\r\n// \t\tdata = new char[size];\r\n// \t\tlet n: number = isr.read(data);\r\n// \t\tif (n < data.length) {\r\n// \t\t\tdata = Arrays.copyOf(data, n);\r\n// \t\t}\r\n// \t}\r\n// \tfinally {\r\n// \t\tisr.close();\r\n// \t}\r\n// \treturn data;\r\n// }\r\n\r\n// export function removeAll(@NotNull predicate: List list,@NotNull Predicate): void {\r\n// \tlet j: number = 0;\r\n// \tfor (let i = 0; i < list.size; i++) {\r\n// \t\tlet item: T = list.get(i);\r\n// \t\tif (!predicate.eval(item)) {\r\n// \t\t\tif (j != i) {\r\n// \t\t\t\tlist.set(j, item);\r\n// \t\t\t}\r\n\r\n// \t\t\tj++;\r\n// \t\t}\r\n// \t}\r\n\r\n// \tif (j < list.size) {\r\n// \t\tlist.subList(j, list.size).clear();\r\n// \t}\r\n// }\r\n\r\n// export function removeAll(@NotNull predicate: Iterable iterable,@NotNull Predicate): void {\r\n// \tif (iterable instanceof List) {\r\n// \t\tremoveAll((List)iterable, predicate);\r\n// \t\treturn;\r\n// \t}\r\n\r\n// \tfor (Iterator iterator = iterable.iterator(); iterator.hasNext(); ) {\r\n// \t\tlet item: T = iterator.next();\r\n// \t\tif (predicate.eval(item)) {\r\n// \t\t\titerator.remove();\r\n// \t\t}\r\n// \t}\r\n// }\r\n\r\n/** Convert array of strings to string→index map. Useful for\r\n * converting rulenames to name→ruleindex map.\r\n */\r\nexport function toMap(keys: string[]): Map {\r\n\tlet m: Map = new Map();\r\n\tfor (let i = 0; i < keys.length; i++) {\r\n\t\tm.set(keys[i], i);\r\n\t}\r\n\r\n\treturn m;\r\n}\r\n\r\nexport function toCharArray(str: string): Uint16Array;\r\nexport function toCharArray(data: IntegerList): Uint16Array;\r\nexport function toCharArray(str: string | IntegerList): Uint16Array {\r\n\tif (typeof str === \"string\") {\r\n\t\tlet result = new Uint16Array(str.length);\r\n\t\tfor (let i = 0; i < str.length; i++) {\r\n\t\t\tresult[i] = str.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t} else {\r\n\t\treturn str.toCharArray();\r\n\t}\r\n}\r\n\r\n// /**\r\n// \t* @since 4.5\r\n// \t*/\r\n// @NotNull\r\n// export function toSet(@NotNull bits: BitSet): IntervalSet {\r\n// \tlet s: IntervalSet = new IntervalSet();\r\n// \tlet i: number = bits.nextSetBit(0);\r\n// \twhile ( i >= 0 ) {\r\n// \t\ts.add(i);\r\n// \t\ti = bits.nextSetBit(i+1);\r\n// \t}\r\n// \treturn s;\r\n// }\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.9521478-07:00\r\n\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { Comparable } from \"../misc/Stubs\";\r\nimport { Equatable } from \"../misc/Stubs\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\nfunction max>(items: Iterable): T | undefined {\r\n\tlet result: T | undefined;\r\n\tfor (let current of items) {\r\n\t\tif (result === undefined) {\r\n\t\t\tresult = current;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tlet comparison = result.compareTo(current);\r\n\t\tif (comparison < 0) {\r\n\t\t\tresult = current;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction min>(items: Iterable): T | undefined {\r\n\tlet result: T | undefined;\r\n\tfor (let current of items) {\r\n\t\tif (result === undefined) {\r\n\t\t\tresult = current;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tlet comparison = result.compareTo(current);\r\n\t\tif (comparison > 0) {\r\n\t\t\tresult = current;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/** A tree structure used to record the semantic context in which\r\n * an ATN configuration is valid. It's either a single predicate,\r\n * a conjunction `p1&&p2`, or a sum of products `p1||p2`.\r\n *\r\n * I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\r\n * {@link SemanticContext} within the scope of this outer class.\r\n */\r\nexport abstract class SemanticContext implements Equatable {\r\n\tprivate static _NONE: SemanticContext;\r\n\r\n\t/**\r\n\t * The default {@link SemanticContext}, which is semantically equivalent to\r\n\t * a predicate of the form `{true}?`.\r\n\t */\r\n\tstatic get NONE(): SemanticContext {\r\n\t\tif (SemanticContext._NONE === undefined) {\r\n\t\t\tSemanticContext._NONE = new SemanticContext.Predicate();\r\n\t\t}\r\n\r\n\t\treturn SemanticContext._NONE;\r\n\t}\r\n\r\n\t/**\r\n\t * For context independent predicates, we evaluate them without a local\r\n\t * context (i.e., unedfined context). That way, we can evaluate them without\r\n\t * having to create proper rule-specific context during prediction (as\r\n\t * opposed to the parser, which creates them naturally). In a practical\r\n\t * sense, this avoids a cast exception from RuleContext to myruleContext.\r\n\t *\r\n\t * For context dependent predicates, we must pass in a local context so that\r\n\t * references such as $arg evaluate properly as _localctx.arg. We only\r\n\t * capture context dependent predicates in the context in which we begin\r\n\t * prediction, so we passed in the outer context here in case of context\r\n\t * dependent predicate evaluation.\r\n\t */\r\n\tpublic abstract eval(parser: Recognizer, parserCallStack: RuleContext): boolean;\r\n\r\n\t/**\r\n\t * Evaluate the precedence predicates for the context and reduce the result.\r\n\t *\r\n\t * @param parser The parser instance.\r\n\t * @param parserCallStack\r\n\t * @returns The simplified semantic context after precedence predicates are\r\n\t * evaluated, which will be one of the following values.\r\n\t *\r\n\t * * {@link #NONE}: if the predicate simplifies to `true` after\r\n\t * precedence predicates are evaluated.\r\n\t * * `undefined`: if the predicate simplifies to `false` after\r\n\t * precedence predicates are evaluated.\r\n\t * * `this`: if the semantic context is not changed as a result of\r\n\t * precedence predicate evaluation.\r\n\t * * A non-`undefined` {@link SemanticContext}: the new simplified\r\n\t * semantic context after precedence predicates are evaluated.\r\n\t */\r\n\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic abstract hashCode(): number;\r\n\r\n\tpublic abstract equals(obj: any): boolean;\r\n\r\n\tpublic static and(a: SemanticContext | undefined, b: SemanticContext): SemanticContext {\r\n\t\tif (!a || a === SemanticContext.NONE) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b === SemanticContext.NONE) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\tlet result: SemanticContext.AND = new SemanticContext.AND(a, b);\r\n\t\tif (result.opnds.length === 1) {\r\n\t\t\treturn result.opnds[0];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @see ParserATNSimulator#getPredsForAmbigAlts\r\n\t */\r\n\tpublic static or(a: SemanticContext | undefined, b: SemanticContext): SemanticContext {\r\n\t\tif (!a) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\r\n\t\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\r\n\t\t\treturn SemanticContext.NONE;\r\n\t\t}\r\n\t\tlet result: SemanticContext.OR = new SemanticContext.OR(a, b);\r\n\t\tif (result.opnds.length === 1) {\r\n\t\t\treturn result.opnds[0];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport namespace SemanticContext {\r\n\t/**\r\n\t * This random 30-bit prime represents the value of `AND.class.hashCode()`.\r\n\t */\r\n\tconst AND_HASHCODE = 40363613;\r\n\t/**\r\n\t * This random 30-bit prime represents the value of `OR.class.hashCode()`.\r\n\t */\r\n\tconst OR_HASHCODE = 486279973;\r\n\r\n\tfunction filterPrecedencePredicates(collection: SemanticContext[]): SemanticContext.PrecedencePredicate[] {\r\n\t\tlet result: SemanticContext.PrecedencePredicate[] = [];\r\n\t\tfor (let i = 0; i < collection.length; i++) {\r\n\t\t\tlet context: SemanticContext = collection[i];\r\n\t\t\tif (context instanceof SemanticContext.PrecedencePredicate) {\r\n\t\t\t\tresult.push(context);\r\n\r\n\t\t\t\t// Remove the item from 'collection' and move i back so we look at the same index again\r\n\t\t\t\tcollection.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\texport class Predicate extends SemanticContext {\r\n\t\tpublic ruleIndex: number;\r\n\t\tpublic predIndex: number;\r\n\t\tpublic isCtxDependent: boolean; // e.g., $i ref in pred\r\n\r\n\t\tconstructor();\r\n\t\tconstructor(ruleIndex: number, predIndex: number, isCtxDependent: boolean);\r\n\r\n\t\tconstructor(ruleIndex: number = -1, predIndex: number = -1, isCtxDependent: boolean = false) {\r\n\t\t\tsuper();\r\n\t\t\tthis.ruleIndex = ruleIndex;\r\n\t\t\tthis.predIndex = predIndex;\r\n\t\t\tthis.isCtxDependent = isCtxDependent;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tlet localctx: RuleContext | undefined = this.isCtxDependent ? parserCallStack : undefined;\r\n\t\t\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = MurmurHash.initialize();\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.ruleIndex);\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.predIndex);\r\n\t\t\thashCode = MurmurHash.update(hashCode, this.isCtxDependent ? 1 : 0);\r\n\t\t\thashCode = MurmurHash.finish(hashCode, 3);\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof Predicate)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn this.ruleIndex === obj.ruleIndex &&\r\n\t\t\t\tthis.predIndex === obj.predIndex &&\r\n\t\t\t\tthis.isCtxDependent === obj.isCtxDependent;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\r\n\t\t}\r\n\t}\r\n\r\n\texport class PrecedencePredicate extends SemanticContext implements Comparable {\r\n\t\tpublic precedence: number;\r\n\r\n\t\tconstructor(precedence: number) {\r\n\t\t\tsuper();\r\n\t\t\tthis.precedence = precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\treturn parser.precpred(parserCallStack, this.precedence);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tif (parser.precpred(parserCallStack, this.precedence)) {\r\n\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic compareTo(o: PrecedencePredicate): number {\r\n\t\t\treturn this.precedence - o.precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = 1;\r\n\t\t\thashCode = 31 * hashCode + this.precedence;\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof PrecedencePredicate)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.precedence === obj.precedence;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\t// precedence >= _precedenceStack.peek()\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"{\" + this.precedence + \">=prec}?\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This is the base class for semantic context \"operators\", which operate on\r\n\t * a collection of semantic context \"operands\".\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\texport abstract class Operator extends SemanticContext {\r\n\t\t/**\r\n\t\t * Gets the operands for the semantic context operator.\r\n\t\t *\r\n\t\t * @returns a collection of {@link SemanticContext} operands for the\r\n\t\t * operator.\r\n\t\t *\r\n\t\t * @since 4.3\r\n\t\t */\r\n\t\t// @NotNull\r\n\t\tpublic abstract readonly operands: Iterable;\r\n\t}\r\n\r\n\t/**\r\n\t * A semantic context which is true whenever none of the contained contexts\r\n\t * is false.\r\n\t */\r\n\texport class AND extends Operator {\r\n\t\tpublic opnds: SemanticContext[];\r\n\r\n\t\tconstructor(@NotNull a: SemanticContext, @NotNull b: SemanticContext) {\r\n\t\t\tsuper();\r\n\r\n\t\t\tlet operands: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tif (a instanceof AND) {\r\n\t\t\t\toperands.addAll(a.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(a);\r\n\t\t\t}\r\n\r\n\t\t\tif (b instanceof AND) {\r\n\t\t\t\toperands.addAll(b.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(b);\r\n\t\t\t}\r\n\r\n\t\t\tthis.opnds = operands.toArray();\r\n\t\t\tlet precedencePredicates: PrecedencePredicate[] = filterPrecedencePredicates(this.opnds);\r\n\r\n\t\t\t// interested in the transition with the lowest precedence\r\n\t\t\tlet reduced = min(precedencePredicates);\r\n\t\t\tif (reduced) {\r\n\t\t\t\tthis.opnds.push(reduced);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tget operands(): Iterable {\r\n\t\t\treturn this.opnds;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (!(obj instanceof AND)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn MurmurHash.hashCode(this.opnds, AND_HASHCODE);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * {@inheritDoc}\r\n\t\t *\r\n\t\t * The evaluation of predicates by this context is short-circuiting, but\r\n\t\t * unordered.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tfor (let opnd of this.opnds) {\r\n\t\t\t\tif (!opnd.eval(parser, parserCallStack)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tlet differs: boolean = false;\r\n\t\t\tlet operands: SemanticContext[] = [];\r\n\t\t\tfor (let context of this.opnds) {\r\n\t\t\t\tlet evaluated: SemanticContext | undefined = context.evalPrecedence(parser, parserCallStack);\r\n\t\t\t\tdiffers = differs || (evaluated !== context);\r\n\t\t\t\tif (evaluated == null) {\r\n\t\t\t\t\t// The AND context is false if any element is false\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t\telse if (evaluated !== SemanticContext.NONE) {\r\n\t\t\t\t\t// Reduce the result by skipping true elements\r\n\t\t\t\t\toperands.push(evaluated);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!differs) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (operands.length === 0) {\r\n\t\t\t\t// all elements were true, so the AND context is true\r\n\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t}\r\n\r\n\t\t\tlet result: SemanticContext = operands[0];\r\n\t\t\tfor (let i = 1; i < operands.length; i++) {\r\n\t\t\t\tresult = SemanticContext.and(result, operands[i]);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn Utils.join(this.opnds, \"&&\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A semantic context which is true whenever at least one of the contained\r\n\t * contexts is true.\r\n\t */\r\n\texport class OR extends Operator {\r\n\t\tpublic opnds: SemanticContext[];\r\n\r\n\t\tconstructor(@NotNull a: SemanticContext, @NotNull b: SemanticContext) {\r\n\t\t\tsuper();\r\n\r\n\t\t\tlet operands: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tif (a instanceof OR) {\r\n\t\t\t\toperands.addAll(a.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(a);\r\n\t\t\t}\r\n\r\n\t\t\tif (b instanceof OR) {\r\n\t\t\t\toperands.addAll(b.opnds);\r\n\t\t\t} else {\r\n\t\t\t\toperands.add(b);\r\n\t\t\t}\r\n\r\n\t\t\tthis.opnds = operands.toArray();\r\n\t\t\tlet precedencePredicates: PrecedencePredicate[] = filterPrecedencePredicates(this.opnds);\r\n\r\n\t\t\t// interested in the transition with the highest precedence\r\n\t\t\tlet reduced = max(precedencePredicates);\r\n\t\t\tif (reduced) {\r\n\t\t\t\tthis.opnds.push(reduced);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tget operands(): Iterable {\r\n\t\t\treturn this.opnds;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (this === obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (!(obj instanceof OR)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn ArrayEqualityComparator.INSTANCE.equals(this.opnds, obj.opnds);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn MurmurHash.hashCode(this.opnds, OR_HASHCODE);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * {@inheritDoc}\r\n\t\t *\r\n\t\t * The evaluation of predicates by this context is short-circuiting, but\r\n\t\t * unordered.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic eval(parser: Recognizer, parserCallStack: RuleContext): boolean {\r\n\t\t\tfor (let opnd of this.opnds) {\r\n\t\t\t\tif (opnd.eval(parser, parserCallStack)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic evalPrecedence(parser: Recognizer, parserCallStack: RuleContext): SemanticContext | undefined {\r\n\t\t\tlet differs: boolean = false;\r\n\t\t\tlet operands: SemanticContext[] = [];\r\n\t\t\tfor (let context of this.opnds) {\r\n\t\t\t\tlet evaluated: SemanticContext | undefined = context.evalPrecedence(parser, parserCallStack);\r\n\t\t\t\tdiffers = differs || (evaluated !== context);\r\n\t\t\t\tif (evaluated === SemanticContext.NONE) {\r\n\t\t\t\t\t// The OR context is true if any element is true\r\n\t\t\t\t\treturn SemanticContext.NONE;\r\n\t\t\t\t} else if (evaluated) {\r\n\t\t\t\t\t// Reduce the result by skipping false elements\r\n\t\t\t\t\toperands.push(evaluated);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!differs) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (operands.length === 0) {\r\n\t\t\t\t// all elements were false, so the OR context is false\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\r\n\t\t\tlet result: SemanticContext = operands[0];\r\n\t\t\tfor (let i = 1; i < operands.length; i++) {\r\n\t\t\t\tresult = SemanticContext.or(result, operands[i]);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn Utils.join(this.opnds, \"||\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.2826960-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** TODO: this is old comment:\r\n * A tree of semantic predicates from the grammar AST if label==SEMPRED.\r\n * In the ATN, labels will always be exactly one predicate, but the DFA\r\n * may have to combine a bunch of them as it collects predicates from\r\n * multiple ATN configurations into a single DFA state.\r\n */\r\nexport class PredicateTransition extends AbstractPredicateTransition {\r\n\tpublic ruleIndex: number;\r\n\tpublic predIndex: number;\r\n\tpublic isCtxDependent: boolean; // e.g., $i ref in pred\r\n\r\n\tconstructor(@NotNull target: ATNState, ruleIndex: number, predIndex: number, isCtxDependent: boolean) {\r\n\t\tsuper(target);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.predIndex = predIndex;\r\n\t\tthis.isCtxDependent = isCtxDependent;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.PREDICATE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean { return true; }\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget predicate(): SemanticContext.Predicate {\r\n\t\treturn new SemanticContext.Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.4099946-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./atn/AbstractPredicateTransition\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { Parser } from \"./Parser\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { PredicateTransition } from \"./atn/PredicateTransition\";\r\n\r\n/** A semantic predicate failed during validation. Validation of predicates\r\n * occurs when normally parsing the alternative just like matching a token.\r\n * Disambiguating predicate evaluation occurs when we test a predicate during\r\n * prediction.\r\n */\r\nexport class FailedPredicateException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 5379330841495778709L;\r\n\r\n\tprivate _ruleIndex: number;\r\n\tprivate _predicateIndex: number;\r\n\tprivate _predicate?: string;\r\n\r\n\tconstructor(@NotNull recognizer: Parser, predicate?: string, message?: string) {\r\n\t\tsuper(\r\n\t\t\trecognizer,\r\n\t\t\trecognizer.inputStream,\r\n\t\t\trecognizer.context,\r\n\t\t\tFailedPredicateException.formatMessage(predicate, message));\r\n\t\tlet s: ATNState = recognizer.interpreter.atn.states[recognizer.state];\r\n\r\n\t\tlet trans = s.transition(0) as AbstractPredicateTransition;\r\n\t\tif (trans instanceof PredicateTransition) {\r\n\t\t\tthis._ruleIndex = trans.ruleIndex;\r\n\t\t\tthis._predicateIndex = trans.predIndex;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ruleIndex = 0;\r\n\t\t\tthis._predicateIndex = 0;\r\n\t\t}\r\n\r\n\t\tthis._predicate = predicate;\r\n\t\tsuper.setOffendingToken(recognizer, recognizer.currentToken);\r\n\t}\r\n\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n\r\n\tget predicateIndex(): number {\r\n\t\treturn this._predicateIndex;\r\n\t}\r\n\r\n\tget predicate(): string | undefined {\r\n\t\treturn this._predicate;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprivate static formatMessage(predicate: string | undefined, message: string | undefined): string {\r\n\t\tif (message) {\r\n\t\t\treturn message;\r\n\t\t}\r\n\r\n\t\treturn `failed predicate: {${predicate}}?`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.5187682-07:00\r\n\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** This signifies any kind of mismatched input exceptions such as\r\n * when the current input does not match the expected token.\r\n */\r\nexport class InputMismatchException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 1532568338707443067L;\r\n\r\n\tconstructor(/*@NotNull*/ recognizer: Parser);\r\n\tconstructor(/*@NotNull*/ recognizer: Parser, state: number, context: ParserRuleContext);\r\n\tconstructor(@NotNull recognizer: Parser, state?: number, context?: ParserRuleContext) {\r\n\t\tif (context === undefined) {\r\n\t\t\tcontext = recognizer.context;\r\n\t\t}\r\n\r\n\t\tsuper(recognizer, recognizer.inputStream, context);\r\n\r\n\t\tif (state !== undefined) {\r\n\t\t\tthis.setOffendingState(state);\r\n\t\t}\r\n\r\n\t\tthis.setOffendingToken(recognizer, recognizer.currentToken);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport namespace Arrays {\r\n\t/**\r\n\t * Searches the specified array of numbers for the specified value using the binary search algorithm. The array must\r\n\t * be sorted prior to making this call. If it is not sorted, the results are unspecified. If the array contains\r\n\t * multiple elements with the specified value, there is no guarantee which one will be found.\r\n\t *\r\n\t * @returns index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The\r\n\t * insertion point is defined as the point at which the key would be inserted into the array: the index of the first\r\n\t * element greater than the key, or array.length if all elements in the array are less than the specified key. Note\r\n\t * that this guarantees that the return value will be >= 0 if and only if the key is found.\r\n\t */\r\n\texport function binarySearch(array: ArrayLike, key: number, fromIndex?: number, toIndex?: number): number {\r\n\t\treturn binarySearch0(array, fromIndex !== undefined ? fromIndex : 0, toIndex !== undefined ? toIndex : array.length, key);\r\n\t}\r\n\r\n\tfunction binarySearch0(array: ArrayLike, fromIndex: number, toIndex: number, key: number): number {\r\n\t\tlet low: number = fromIndex;\r\n\t\tlet high: number = toIndex - 1;\r\n\r\n\t\twhile (low <= high) {\r\n\t\t\tlet mid: number = (low + high) >>> 1;\r\n\t\t\tlet midVal: number = array[mid];\r\n\r\n\t\t\tif (midVal < key) {\r\n\t\t\t\tlow = mid + 1;\r\n\t\t\t} else if (midVal > key) {\r\n\t\t\t\thigh = mid - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// key found\r\n\t\t\t\treturn mid;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// key not found.\r\n\t\treturn -(low + 1);\r\n\t}\r\n\r\n\texport function toString(array: Iterable) {\r\n\t\tlet result = \"[\";\r\n\r\n\t\tlet first = true;\r\n\t\tfor (let element of array) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tresult += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tif (element === null) {\r\n\t\t\t\tresult += \"null\";\r\n\t\t\t} else if (element === undefined) {\r\n\t\t\t\tresult += \"undefined\";\r\n\t\t\t} else {\r\n\t\t\t\tresult += element;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult += \"]\";\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.5099429-07:00\r\n\r\nimport { Arrays } from \"./Arrays\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { JavaCollection } from \"./Stubs\";\r\n\r\nconst EMPTY_DATA: Int32Array = new Int32Array(0);\r\n\r\nconst INITIAL_SIZE: number = 4;\r\nconst MAX_ARRAY_SIZE: number = (((1 << 31) >>> 0) - 1) - 8;\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class IntegerList {\r\n\t@NotNull\r\n\tprivate _data: Int32Array;\r\n\r\n\tprivate _size: number;\r\n\r\n\tconstructor(arg?: number | IntegerList | Iterable) {\r\n\t\tif (!arg) {\r\n\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\tthis._size = 0;\r\n\t\t} else if (arg instanceof IntegerList) {\r\n\t\t\tthis._data = arg._data.slice(0);\r\n\t\t\tthis._size = arg._size;\r\n\t\t} else if (typeof arg === \"number\") {\r\n\t\t\tif (arg === 0) {\r\n\t\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\t\tthis._size = 0;\r\n\t\t\t} else {\r\n\t\t\t\tthis._data = new Int32Array(arg);\r\n\t\t\t\tthis._size = 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// arg is Iterable\r\n\t\t\tthis._data = EMPTY_DATA;\r\n\t\t\tthis._size = 0;\r\n\t\t\tfor (let value of arg) {\r\n\t\t\t\tthis.add(value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic add(value: number): void {\r\n\t\tif (this._data.length === this._size) {\r\n\t\t\tthis.ensureCapacity(this._size + 1);\r\n\t\t}\r\n\r\n\t\tthis._data[this._size] = value;\r\n\t\tthis._size++;\r\n\t}\r\n\r\n\tpublic addAll(list: number[] | IntegerList | JavaCollection): void {\r\n\t\tif (Array.isArray(list)) {\r\n\t\t\tthis.ensureCapacity(this._size + list.length);\r\n\t\t\tthis._data.subarray(this._size, this._size + list.length).set(list);\r\n\t\t\tthis._size += list.length;\r\n\t\t} else if (list instanceof IntegerList) {\r\n\t\t\tthis.ensureCapacity(this._size + list._size);\r\n\t\t\tthis._data.subarray(this._size, this._size + list.size).set(list._data);\r\n\t\t\tthis._size += list._size;\r\n\t\t} else {\r\n\t\t\t// list is JavaCollection\r\n\t\t\tthis.ensureCapacity(this._size + list.size);\r\n\t\t\tlet current: number = 0;\r\n\t\t\tfor (let xi of list) {\r\n\t\t\t\tthis._data[this._size + current] = xi;\r\n\t\t\t\tcurrent++;\r\n\t\t\t}\r\n\r\n\t\t\tthis._size += list.size;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get(index: number): number {\r\n\t\tif (index < 0 || index >= this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\treturn this._data[index];\r\n\t}\r\n\r\n\tpublic contains(value: number): boolean {\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tif (this._data[i] === value) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic set(index: number, value: number): number {\r\n\t\tif (index < 0 || index >= this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tlet previous: number = this._data[index];\r\n\t\tthis._data[index] = value;\r\n\t\treturn previous;\r\n\t}\r\n\r\n\tpublic removeAt(index: number): number {\r\n\t\tlet value: number = this.get(index);\r\n\t\tthis._data.copyWithin(index, index + 1, this._size);\r\n\t\tthis._data[this._size - 1] = 0;\r\n\t\tthis._size--;\r\n\t\treturn value;\r\n\t}\r\n\r\n\tpublic removeRange(fromIndex: number, toIndex: number): void {\r\n\t\tif (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tif (fromIndex > toIndex) {\r\n\t\t\tthrow RangeError();\r\n\t\t}\r\n\r\n\t\tthis._data.copyWithin(toIndex, fromIndex, this._size);\r\n\t\tthis._data.fill(0, this._size - (toIndex - fromIndex), this._size);\r\n\t\tthis._size -= (toIndex - fromIndex);\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\treturn this._size === 0;\r\n\t}\r\n\r\n\tget size(): number {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\tpublic trimToSize(): void {\r\n\t\tif (this._data.length === this._size) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._data = this._data.slice(0, this._size);\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tthis._data.fill(0, 0, this._size);\r\n\t\tthis._size = 0;\r\n\t}\r\n\r\n\tpublic toArray(): number[] {\r\n\t\tif (this._size === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn Array.from(this._data.subarray(0, this._size));\r\n\t}\r\n\r\n\tpublic sort(): void {\r\n\t\tthis._data.subarray(0, this._size).sort();\r\n\t}\r\n\r\n\t/**\r\n\t * Compares the specified object with this list for equality. Returns\r\n\t * `true` if and only if the specified object is also an {@link IntegerList},\r\n\t * both lists have the same size, and all corresponding pairs of elements in\r\n\t * the two lists are equal. In other words, two lists are defined to be\r\n\t * equal if they contain the same elements in the same order.\r\n\t *\r\n\t * This implementation first checks if the specified object is this\r\n\t * list. If so, it returns `true`; if not, it checks if the\r\n\t * specified object is an {@link IntegerList}. If not, it returns `false`;\r\n\t * if so, it checks the size of both lists. If the lists are not the same size,\r\n\t * it returns `false`; otherwise it iterates over both lists, comparing\r\n\t * corresponding pairs of elements. If any comparison returns `false`,\r\n\t * this method returns `false`.\r\n\t *\r\n\t * @param o the object to be compared for equality with this list\r\n\t * @returns `true` if the specified object is equal to this list\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(o instanceof IntegerList)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._size !== o._size) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tif (this._data[i] !== o._data[i]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the hash code value for this list.\r\n\t *\r\n\t * This implementation uses exactly the code that is used to define the\r\n\t * list hash function in the documentation for the {@link List#hashCode}\r\n\t * method.\r\n\t *\r\n\t * @returns the hash code value for this list\r\n\t */\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hashCode: number = 1;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\thashCode = 31 * hashCode + this._data[i];\r\n\t\t}\r\n\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representation of this list.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._data.toString();\r\n\t}\r\n\r\n\tpublic binarySearch(key: number, fromIndex?: number, toIndex?: number): number {\r\n\t\tif (fromIndex === undefined) {\r\n\t\t\tfromIndex = 0;\r\n\t\t}\r\n\r\n\t\tif (toIndex === undefined) {\r\n\t\t\ttoIndex = this._size;\r\n\t\t}\r\n\r\n\t\tif (fromIndex < 0 || toIndex < 0 || fromIndex > this._size || toIndex > this._size) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tif (fromIndex > toIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\treturn Arrays.binarySearch(this._data, key, fromIndex, toIndex);\r\n\t}\r\n\r\n\tprivate ensureCapacity(capacity: number): void {\r\n\t\tif (capacity < 0 || capacity > MAX_ARRAY_SIZE) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet newLength: number;\r\n\t\tif (this._data.length === 0) {\r\n\t\t\tnewLength = INITIAL_SIZE;\r\n\t\t} else {\r\n\t\t\tnewLength = this._data.length;\r\n\t\t}\r\n\r\n\t\twhile (newLength < capacity) {\r\n\t\t\tnewLength = newLength * 2;\r\n\t\t\tif (newLength < 0 || newLength > MAX_ARRAY_SIZE) {\r\n\t\t\t\tnewLength = MAX_ARRAY_SIZE;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet tmp = new Int32Array(newLength);\r\n\t\ttmp.set(this._data);\r\n\t\tthis._data = tmp;\r\n\t}\r\n\r\n\t/** Convert the list to a UTF-16 encoded char array. If all values are less\r\n\t * than the 0xFFFF 16-bit code point limit then this is just a char array\r\n\t * of 16-bit char as usual. For values in the supplementary range, encode\r\n\t * them as two UTF-16 code units.\r\n\t */\r\n\tpublic toCharArray(): Uint16Array {\r\n\t\t// Optimize for the common case (all data values are < 0xFFFF) to avoid an extra scan\r\n\t\tlet resultArray: Uint16Array = new Uint16Array(this._size);\r\n\t\tlet resultIdx = 0;\r\n\t\tlet calculatedPreciseResultSize = false;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tlet codePoint = this._data[i];\r\n\t\t\tif (codePoint >= 0 && codePoint < 0x10000) {\r\n\t\t\t\tresultArray[resultIdx] = codePoint;\r\n\t\t\t\tresultIdx++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate the precise result size if we encounter a code point > 0xFFFF\r\n\t\t\tif (!calculatedPreciseResultSize) {\r\n\t\t\t\tlet newResultArray = new Uint16Array(this.charArraySize());\r\n\t\t\t\tnewResultArray.set(resultArray, 0);\r\n\t\t\t\tresultArray = newResultArray;\r\n\t\t\t\tcalculatedPreciseResultSize = true;\r\n\t\t\t}\r\n\r\n\t\t\t// This will throw RangeError if the code point is not a valid Unicode code point\r\n\t\t\tlet pair = String.fromCodePoint(codePoint);\r\n\t\t\tresultArray[resultIdx] = pair.charCodeAt(0);\r\n\t\t\tresultArray[resultIdx + 1] = pair.charCodeAt(1);\r\n\t\t\tresultIdx += 2;\r\n\t\t}\r\n\t\treturn resultArray;\r\n\t}\r\n\r\n\tprivate charArraySize(): number {\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < this._size; i++) {\r\n\t\t\tresult += this._data[i] >= 0x10000 ? 2 : 1;\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.7402214-07:00\r\n\r\nimport { Override } from \"../Decorators\";\r\nimport { Equatable } from \"./Stubs\";\r\n\r\nconst INTERVAL_POOL_MAX_VALUE: number = 1000;\r\n\r\n/** An immutable inclusive interval a..b */\r\nexport class Interval implements Equatable {\r\n\tprivate static _INVALID: Interval = new Interval(-1, -2);\r\n\tstatic get INVALID(): Interval {\r\n\t\treturn Interval._INVALID;\r\n\t}\r\n\r\n\tprivate static readonly cache: Interval[] = new Array(INTERVAL_POOL_MAX_VALUE + 1);\r\n\r\n\t/**\r\n\t * @param a The start of the interval\r\n\t * @param b The end of the interval (inclusive)\r\n\t */\r\n\tconstructor(public a: number, public b: number) {\r\n\t}\r\n\r\n\t/** Interval objects are used readonly so share all with the\r\n\t * same single value a==b up to some max size. Use an array as a perfect hash.\r\n\t * Return shared object for 0..INTERVAL_POOL_MAX_VALUE or a new\r\n\t * Interval object with a..a in it. On Java.g4, 218623 IntervalSets\r\n\t * have a..a (set with 1 element).\r\n\t */\r\n\tpublic static of(a: number, b: number): Interval {\r\n\t\t// cache just a..a\r\n\t\tif (a !== b || a < 0 || a > INTERVAL_POOL_MAX_VALUE) {\r\n\t\t\treturn new Interval(a, b);\r\n\t\t}\r\n\r\n\t\tif (Interval.cache[a] == null) {\r\n\t\t\tInterval.cache[a] = new Interval(a, a);\r\n\t\t}\r\n\r\n\t\treturn Interval.cache[a];\r\n\t}\r\n\r\n\t/** return number of elements between a and b inclusively. x..x is length 1.\r\n\t * if b < a, then length is 0. 9..10 has length 2.\r\n\t */\r\n\tget length(): number {\r\n\t\tif (this.b < this.a) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn this.b - this.a + 1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse if (!(o instanceof Interval)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.a === o.a && this.b === o.b;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = 23;\r\n\t\thash = hash * 31 + this.a;\r\n\t\thash = hash * 31 + this.b;\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/** Does this start completely before other? Disjoint */\r\n\tpublic startsBeforeDisjoint(other: Interval): boolean {\r\n\t\treturn this.a < other.a && this.b < other.a;\r\n\t}\r\n\r\n\t/** Does this start at or before other? Nondisjoint */\r\n\tpublic startsBeforeNonDisjoint(other: Interval): boolean {\r\n\t\treturn this.a <= other.a && this.b >= other.a;\r\n\t}\r\n\r\n\t/** Does this.a start after other.b? May or may not be disjoint */\r\n\tpublic startsAfter(other: Interval): boolean {\r\n\t\treturn this.a > other.a;\r\n\t}\r\n\r\n\t/** Does this start completely after other? Disjoint */\r\n\tpublic startsAfterDisjoint(other: Interval): boolean {\r\n\t\treturn this.a > other.b;\r\n\t}\r\n\r\n\t/** Does this start after other? NonDisjoint */\r\n\tpublic startsAfterNonDisjoint(other: Interval): boolean {\r\n\t\treturn this.a > other.a && this.a <= other.b; // this.b>=other.b implied\r\n\t}\r\n\r\n\t/** Are both ranges disjoint? I.e., no overlap? */\r\n\tpublic disjoint(other: Interval): boolean {\r\n\t\treturn this.startsBeforeDisjoint(other) || this.startsAfterDisjoint(other);\r\n\t}\r\n\r\n\t/** Are two intervals adjacent such as 0..41 and 42..42? */\r\n\tpublic adjacent(other: Interval): boolean {\r\n\t\treturn this.a === other.b + 1 || this.b === other.a - 1;\r\n\t}\r\n\r\n\tpublic properlyContains(other: Interval): boolean {\r\n\t\treturn other.a >= this.a && other.b <= this.b;\r\n\t}\r\n\r\n\t/** Return the interval computed from combining this and other */\r\n\tpublic union(other: Interval): Interval {\r\n\t\treturn Interval.of(Math.min(this.a, other.a), Math.max(this.b, other.b));\r\n\t}\r\n\r\n\t/** Return the interval in common between this and o */\r\n\tpublic intersection(other: Interval): Interval {\r\n\t\treturn Interval.of(Math.max(this.a, other.a), Math.min(this.b, other.b));\r\n\t}\r\n\r\n\t/** Return the interval with elements from `this` not in `other`;\r\n\t * `other` must not be totally enclosed (properly contained)\r\n\t * within `this`, which would result in two disjoint intervals\r\n\t * instead of the single one returned by this method.\r\n\t */\r\n\tpublic differenceNotProperlyContained(other: Interval): Interval | undefined {\r\n\t\tlet diff: Interval | undefined;\r\n\t\tif (other.startsBeforeNonDisjoint(this)) {\r\n\t\t\t// other.a to left of this.a (or same)\r\n\t\t\tdiff = Interval.of(Math.max(this.a, other.b + 1), this.b);\r\n\t\t} else if (other.startsAfterNonDisjoint(this)) {\r\n\t\t\t// other.a to right of this.a\r\n\t\t\tdiff = Interval.of(this.a, other.a - 1);\r\n\t\t}\r\n\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.a + \"..\" + this.b;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.7862802-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\n/** A token has properties: text, type, line, character position in the line\r\n * (so we can ignore tabs), token channel, index, and source from which\r\n * we obtained this token.\r\n */\r\nexport interface Token {\r\n\t/**\r\n\t * Get the text of the token.\r\n\t */\r\n\treadonly text: string | undefined;\r\n\r\n\t/** Get the token type of the token */\r\n\treadonly type: number;\r\n\r\n\t/** The line number on which the 1st character of this token was matched,\r\n\t * line=1..n\r\n\t */\r\n\treadonly line: number;\r\n\r\n\t/** The index of the first character of this token relative to the\r\n\t * beginning of the line at which it occurs, 0..n-1\r\n\t */\r\n\treadonly charPositionInLine: number;\r\n\r\n\t/** Return the channel this token. Each token can arrive at the parser\r\n\t * on a different channel, but the parser only \"tunes\" to a single channel.\r\n\t * The parser ignores everything not on DEFAULT_CHANNEL.\r\n\t */\r\n\treadonly channel: number;\r\n\r\n\t/** An index from 0..n-1 of the token object in the input stream.\r\n\t * This must be valid in order to print token streams and\r\n\t * use TokenRewriteStream.\r\n\t *\r\n\t * Return -1 to indicate that this token was conjured up since\r\n\t * it doesn't have a valid index.\r\n\t */\r\n\treadonly tokenIndex: number;\r\n\r\n\t/** The starting character index of the token\r\n\t * This method is optional; return -1 if not implemented.\r\n\t */\r\n\treadonly startIndex: number;\r\n\r\n\t/** The last character index of the token.\r\n\t * This method is optional; return -1 if not implemented.\r\n\t */\r\n\treadonly stopIndex: number;\r\n\r\n\t/** Gets the {@link TokenSource} which created this token.\r\n\t */\r\n\treadonly tokenSource: TokenSource | undefined;\r\n\r\n\t/**\r\n\t * Gets the {@link CharStream} from which this token was derived.\r\n\t */\r\n\treadonly inputStream: CharStream | undefined;\r\n}\r\n\r\nexport namespace Token {\r\n\texport const INVALID_TYPE: number = 0;\r\n\r\n\t/** During lookahead operations, this \"token\" signifies we hit rule end ATN state\r\n\t * and did not follow it despite needing to.\r\n\t */\r\n\texport const EPSILON: number = -2;\r\n\r\n\texport const MIN_USER_TOKEN_TYPE: number = 1;\r\n\r\n\texport const EOF: number = IntStream.EOF;\r\n\r\n\t/** All tokens go to the parser (unless skip() is called in that rule)\r\n\t * on a particular \"channel\". The parser tunes to a particular channel\r\n\t * so that whitespace etc... can go to the parser on a \"hidden\" channel.\r\n\t */\r\n\texport const DEFAULT_CHANNEL: number = 0;\r\n\r\n\t/** Anything on different channel than DEFAULT_CHANNEL is not parsed\r\n\t * by parser.\r\n\t */\r\n\texport const HIDDEN_CHANNEL: number = 1;\r\n\r\n\t/**\r\n\t * This is the minimum constant value which can be assigned to a\r\n\t * user-defined token channel.\r\n\t *\r\n\t * The non-negative numbers less than {@link #MIN_USER_CHANNEL_VALUE} are\r\n\t * assigned to the predefined channels {@link #DEFAULT_CHANNEL} and\r\n\t * {@link #HIDDEN_CHANNEL}.\r\n\t *\r\n\t * @see `Token.channel`\r\n\t */\r\n\texport const MIN_USER_CHANNEL_VALUE: number = 2;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.1614404-07:00\r\n\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { WritableToken } from \"./WritableToken\";\r\n\r\nexport class CommonToken implements WritableToken {\r\n\t/**\r\n\t * An empty {@link Tuple2} which is used as the default value of\r\n\t * {@link #source} for tokens that do not have a source.\r\n\t */\r\n\tprotected static readonly EMPTY_SOURCE: { source?: TokenSource, stream?: CharStream } =\r\n\t\t{ source: undefined, stream: undefined };\r\n\r\n\t/**\r\n\t * This is the backing field for `type`.\r\n\t */\r\n\tprivate _type: number;\r\n\t/**\r\n\t * This is the backing field for {@link #getLine} and {@link #setLine}.\r\n\t */\r\n\tprivate _line: number = 0;\r\n\t/**\r\n\t * This is the backing field for {@link #getCharPositionInLine} and\r\n\t * {@link #setCharPositionInLine}.\r\n\t */\r\n\tprivate _charPositionInLine: number = -1; // set to invalid position\r\n\t/**\r\n\t * This is the backing field for {@link #getChannel} and\r\n\t * {@link #setChannel}.\r\n\t */\r\n\tprivate _channel: number = Token.DEFAULT_CHANNEL;\r\n\t/**\r\n\t * This is the backing field for {@link #getTokenSource} and\r\n\t * {@link #getInputStream}.\r\n\t *\r\n\t * These properties share a field to reduce the memory footprint of\r\n\t * {@link CommonToken}. Tokens created by a {@link CommonTokenFactory} from\r\n\t * the same source and input stream share a reference to the same\r\n\t * {@link Tuple2} containing these values.\r\n\t */\r\n\t@NotNull\r\n\tprotected source: { source?: TokenSource, stream?: CharStream };\r\n\r\n\t/**\r\n\t * This is the backing field for {@link #getText} when the token text is\r\n\t * explicitly set in the constructor or via {@link #setText}.\r\n\t *\r\n\t * @see `text`\r\n\t */\r\n\tprivate _text?: string;\r\n\r\n\t/**\r\n\t * This is the backing field for `tokenIndex`.\r\n\t */\r\n\tprotected index: number = -1;\r\n\r\n\t/**\r\n\t * This is the backing field for `startIndex`.\r\n\t */\r\n\tprotected start: number;\r\n\r\n\t/**\r\n\t * This is the backing field for `stopIndex`.\r\n\t */\r\n\tprivate stop: number;\r\n\r\n\tconstructor(type: number, text?: string, @NotNull source: { source?: TokenSource, stream?: CharStream } = CommonToken.EMPTY_SOURCE, channel: number = Token.DEFAULT_CHANNEL, start: number = 0, stop: number = 0) {\r\n\t\tthis._text = text;\r\n\t\tthis._type = type;\r\n\t\tthis.source = source;\r\n\t\tthis._channel = channel;\r\n\t\tthis.start = start;\r\n\t\tthis.stop = stop;\r\n\t\tif (source.source != null) {\r\n\t\t\tthis._line = source.source.line;\r\n\t\t\tthis._charPositionInLine = source.source.charPositionInLine;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a new {@link CommonToken} as a copy of another {@link Token}.\r\n\t *\r\n\t * If `oldToken` is also a {@link CommonToken} instance, the newly\r\n\t * constructed token will share a reference to the {@link #text} field and\r\n\t * the {@link Tuple2} stored in {@link #source}. Otherwise, {@link #text} will\r\n\t * be assigned the result of calling {@link #getText}, and {@link #source}\r\n\t * will be constructed from the result of {@link Token#getTokenSource} and\r\n\t * {@link Token#getInputStream}.\r\n\t *\r\n\t * @param oldToken The token to copy.\r\n\t */\r\n\tpublic static fromToken(@NotNull oldToken: Token): CommonToken {\r\n\t\tlet result: CommonToken = new CommonToken(oldToken.type, undefined, CommonToken.EMPTY_SOURCE, oldToken.channel, oldToken.startIndex, oldToken.stopIndex);\r\n\t\tresult._line = oldToken.line;\r\n\t\tresult.index = oldToken.tokenIndex;\r\n\t\tresult._charPositionInLine = oldToken.charPositionInLine;\r\n\r\n\t\tif (oldToken instanceof CommonToken) {\r\n\t\t\tresult._text = oldToken._text;\r\n\t\t\tresult.source = oldToken.source;\r\n\t\t} else {\r\n\t\t\tresult._text = oldToken.text;\r\n\t\t\tresult.source = { source: oldToken.tokenSource, stream: oldToken.inputStream };\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\t// @Override\r\n\tset type(type: number) {\r\n\t\tthis._type = type;\r\n\t}\r\n\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn this._line;\r\n\t}\r\n\r\n\t// @Override\r\n\tset line(line: number) {\r\n\t\tthis._line = line;\r\n\t}\r\n\r\n\t@Override\r\n\tget text(): string | undefined {\r\n\t\tif (this._text != null) {\r\n\t\t\treturn this._text;\r\n\t\t}\r\n\r\n\t\tlet input: CharStream | undefined = this.inputStream;\r\n\t\tif (input == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet n: number = input.size;\r\n\t\tif (this.start < n && this.stop < n) {\r\n\t\t\treturn input.getText(Interval.of(this.start, this.stop));\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Explicitly set the text for this token. If {code text} is not\r\n\t * `undefined`, then {@link #getText} will return this value rather than\r\n\t * extracting the text from the input.\r\n\t *\r\n\t * @param text The explicit text of the token, or `undefined` if the text\r\n\t * should be obtained from the input along with the start and stop indexes\r\n\t * of the token.\r\n\t */\r\n\t// @Override\r\n\tset text(text: string | undefined) {\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn this._charPositionInLine;\r\n\t}\r\n\r\n\t// @Override\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis._charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\t@Override\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\t// @Override\r\n\tset channel(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\t@Override\r\n\tget startIndex(): number {\r\n\t\treturn this.start;\r\n\t}\r\n\r\n\tset startIndex(start: number) {\r\n\t\tthis.start = start;\r\n\t}\r\n\r\n\t@Override\r\n\tget stopIndex(): number {\r\n\t\treturn this.stop;\r\n\t}\r\n\r\n\tset stopIndex(stop: number) {\r\n\t\tthis.stop = stop;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenIndex(): number {\r\n\t\treturn this.index;\r\n\t}\r\n\r\n\t// @Override\r\n\tset tokenIndex(index: number) {\r\n\t\tthis.index = index;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenSource(): TokenSource | undefined {\r\n\t\treturn this.source.source;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\treturn this.source.stream;\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recognizer: Recognizer | undefined): string;\r\n\r\n\t@Override\r\n\tpublic toString(recognizer?: Recognizer): string {\r\n\t\tlet channelStr: string = \"\";\r\n\t\tif (this._channel > 0) {\r\n\t\t\tchannelStr = \",channel=\" + this._channel;\r\n\t\t}\r\n\r\n\t\tlet txt: string | undefined = this.text;\r\n\t\tif (txt != null) {\r\n\t\t\ttxt = txt.replace(/\\n/g, \"\\\\n\");\r\n\t\t\ttxt = txt.replace(/\\r/g, \"\\\\r\");\r\n\t\t\ttxt = txt.replace(/\\t/g, \"\\\\t\");\r\n\t\t} else {\r\n\t\t\ttxt = \"\";\r\n\t\t}\r\n\r\n\t\tlet typeString = String(this._type);\r\n\t\tif (recognizer) {\r\n\t\t\ttypeString = recognizer.vocabulary.getDisplayName(this._type);\r\n\t\t}\r\n\r\n\t\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" + txt + \"',<\" + typeString + \">\" + channelStr + \",\" + this._line + \":\" + this.charPositionInLine + \"]\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.3010112-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonToken } from \"./CommonToken\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * This default implementation of {@link TokenFactory} creates\r\n * {@link CommonToken} objects.\r\n */\r\nexport class CommonTokenFactory implements TokenFactory {\r\n\t/**\r\n\t * Indicates whether {@link CommonToken#setText} should be called after\r\n\t * constructing tokens to explicitly set the text. This is useful for cases\r\n\t * where the input stream might not be able to provide arbitrary substrings\r\n\t * of text from the input after the lexer creates a token (e.g. the\r\n\t * implementation of {@link CharStream#getText} in\r\n\t * {@link UnbufferedCharStream}\r\n\t * {@link UnsupportedOperationException}). Explicitly setting the token text\r\n\t * allows {@link Token#getText} to be called at any time regardless of the\r\n\t * input stream implementation.\r\n\t *\r\n\t * The default value is `false` to avoid the performance and memory\r\n\t * overhead of copying text for every token unless explicitly requested.\r\n\t */\r\n\tprotected copyText: boolean;\r\n\r\n\t/**\r\n\t * Constructs a {@link CommonTokenFactory} with the specified value for\r\n\t * {@link #copyText}.\r\n\t *\r\n\t * When `copyText` is `false`, the {@link #DEFAULT} instance\r\n\t * should be used instead of constructing a new instance.\r\n\t *\r\n\t * @param copyText The value for {@link #copyText}.\r\n\t */\r\n\tconstructor(copyText: boolean = false) {\r\n\t\tthis.copyText = copyText;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic create(\r\n\t\tsource: { source?: TokenSource, stream?: CharStream },\r\n\t\ttype: number,\r\n\t\ttext: string | undefined,\r\n\t\tchannel: number,\r\n\t\tstart: number,\r\n\t\tstop: number,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number): CommonToken {\r\n\r\n\t\tlet t: CommonToken = new CommonToken(type, text, source, channel, start, stop);\r\n\t\tt.line = line;\r\n\t\tt.charPositionInLine = charPositionInLine;\r\n\t\tif (text == null && this.copyText && source.stream != null) {\r\n\t\t\tt.text = source.stream.getText(Interval.of(start, stop));\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic createSimple(type: number, text: string): CommonToken {\r\n\t\treturn new CommonToken(type, text);\r\n\t}\r\n}\r\n\r\nexport namespace CommonTokenFactory {\r\n\t/**\r\n\t * The default {@link CommonTokenFactory} instance.\r\n\t *\r\n\t * This token factory does not explicitly copy token text when constructing\r\n\t * tokens.\r\n\t */\r\n\texport const DEFAULT: TokenFactory = new CommonTokenFactory();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.6647101-07:00\r\n\r\nimport { IntegerList } from \"./IntegerList\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class IntegerStack extends IntegerList {\r\n\r\n\tconstructor(arg?: number | IntegerStack) {\r\n\t\tsuper(arg);\r\n\t}\r\n\r\n\tpublic push(value: number): void {\r\n\t\tthis.add(value);\r\n\t}\r\n\r\n\tpublic pop(): number {\r\n\t\treturn this.removeAt(this.size - 1);\r\n\t}\r\n\r\n\tpublic peek(): number {\r\n\t\treturn this.get(this.size - 1);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.1172076-07:00\r\n\r\nimport { LexerActionExecutor } from \"../atn/LexerActionExecutor\";\r\n\r\n/**\r\n * Stores information about a {@link DFAState} which is an accept state under\r\n * some condition. Certain settings, such as\r\n * {@link ParserATNSimulator#getPredictionMode()}, may be used in addition to\r\n * this information to determine whether or not a particular state is an accept\r\n * state.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class AcceptStateInfo {\r\n\tprivate readonly _prediction: number;\r\n\tprivate readonly _lexerActionExecutor?: LexerActionExecutor;\r\n\r\n\tconstructor(prediction: number);\r\n\tconstructor(prediction: number, lexerActionExecutor: LexerActionExecutor | undefined);\r\n\tconstructor(prediction: number, lexerActionExecutor?: LexerActionExecutor) {\r\n\t\tthis._prediction = prediction;\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the prediction made by this accept state. Note that this value\r\n\t * assumes the predicates, if any, in the {@link DFAState} evaluate to\r\n\t * `true`. If predicate evaluation is enabled, the final prediction of\r\n\t * the accept state will be determined by the result of predicate\r\n\t * evaluation.\r\n\t */\r\n\tget prediction(): number {\r\n\t\treturn this._prediction;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the {@link LexerActionExecutor} which can be used to execute actions\r\n\t * and/or commands after the lexer matches a token.\r\n\t */\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { Array2DHashSet } from \"./Array2DHashSet\";\r\nimport { DefaultEqualityComparator } from \"./DefaultEqualityComparator\";\r\nimport { EqualityComparator } from \"./EqualityComparator\";\r\nimport { Equatable, JavaCollection, JavaMap, JavaSet } from \"./Stubs\";\r\n\r\n// Since `Array2DHashMap` is implemented on top of `Array2DHashSet`, we defined a bucket type which can store a\r\n// key-value pair. The value is optional since looking up values in the map by a key only needs to include the key.\r\ninterface Bucket { key: K; value?: V; }\r\n\r\nclass MapKeyEqualityComparator implements EqualityComparator> {\r\n\tprivate readonly keyComparator: EqualityComparator;\r\n\r\n\tconstructor(keyComparator: EqualityComparator) {\r\n\t\tthis.keyComparator = keyComparator;\r\n\t}\r\n\r\n\tpublic hashCode(obj: Bucket): number {\r\n\t\treturn this.keyComparator.hashCode(obj.key);\r\n\t}\r\n\r\n\tpublic equals(a: Bucket, b: Bucket): boolean {\r\n\t\treturn this.keyComparator.equals(a.key, b.key);\r\n\t}\r\n}\r\n\r\nexport class Array2DHashMap implements JavaMap {\r\n\tprivate backingStore: Array2DHashSet>;\r\n\r\n\tconstructor(keyComparer: EqualityComparator);\r\n\tconstructor(map: Array2DHashMap);\r\n\tconstructor(keyComparer: EqualityComparator | Array2DHashMap) {\r\n\t\tif (keyComparer instanceof Array2DHashMap) {\r\n\t\t\tthis.backingStore = new Array2DHashSet>(keyComparer.backingStore);\r\n\t\t} else {\r\n\t\t\tthis.backingStore = new Array2DHashSet>(new MapKeyEqualityComparator(keyComparer));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tthis.backingStore.clear();\r\n\t}\r\n\r\n\tpublic containsKey(key: K): boolean {\r\n\t\treturn this.backingStore.contains({ key });\r\n\t}\r\n\r\n\tpublic get(key: K): V | undefined {\r\n\t\tlet bucket = this.backingStore.get({ key });\r\n\t\tif (!bucket) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn bucket.value;\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.backingStore.isEmpty;\r\n\t}\r\n\r\n\tpublic put(key: K, value: V): V | undefined {\r\n\t\tlet element = this.backingStore.get({ key, value });\r\n\t\tlet result: V | undefined;\r\n\t\tif (!element) {\r\n\t\t\tthis.backingStore.add({ key, value });\r\n\t\t} else {\r\n\t\t\tresult = element.value;\r\n\t\t\telement.value = value;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic putIfAbsent(key: K, value: V): V | undefined {\r\n\t\tlet element = this.backingStore.get({ key, value });\r\n\t\tlet result: V | undefined;\r\n\t\tif (!element) {\r\n\t\t\tthis.backingStore.add({ key, value });\r\n\t\t} else {\r\n\t\t\tresult = element.value;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tget size(): number {\r\n\t\treturn this.backingStore.size;\r\n\t}\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn this.backingStore.hashCode();\r\n\t}\r\n\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (!(o instanceof Array2DHashMap)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.backingStore.equals(o.backingStore);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.4381103-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\n\r\nexport abstract class DecisionState extends ATNState {\r\n\tpublic decision: number = -1;\r\n\tpublic nonGreedy: boolean = false;\r\n\tpublic sll: boolean = false;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.6390614-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Override } from \"../Decorators\";\r\nimport { JavaMap } from \"../misc/Stubs\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport * as assert from \"assert\";\r\n\r\n/** Used to cache {@link PredictionContext} objects. Its used for the shared\r\n * context cash associated with contexts in DFA states. This cache\r\n * can be used for both lexers and parsers.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class PredictionContextCache {\r\n\tpublic static UNCACHED: PredictionContextCache = new PredictionContextCache(false);\r\n\r\n\tprivate contexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\tprivate childContexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\tprivate joinContexts: JavaMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\r\n\tprivate enableCache: boolean;\r\n\r\n\tconstructor(enableCache: boolean = true) {\r\n\t\tthis.enableCache = enableCache;\r\n\t}\r\n\r\n\tpublic getAsCached(context: PredictionContext): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tlet result = this.contexts.get(context);\r\n\t\tif (!result) {\r\n\t\t\tresult = context;\r\n\t\t\tthis.contexts.put(context, context);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic getChild(context: PredictionContext, invokingState: number): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn context.getChild(invokingState);\r\n\t\t}\r\n\r\n\t\tlet operands: PredictionContextCache.PredictionContextAndInt = new PredictionContextCache.PredictionContextAndInt(context, invokingState);\r\n\t\tlet result = this.childContexts.get(operands);\r\n\t\tif (!result) {\r\n\t\t\tresult = context.getChild(invokingState);\r\n\t\t\tresult = this.getAsCached(result);\r\n\t\t\tthis.childContexts.put(operands, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic join(x: PredictionContext, y: PredictionContext): PredictionContext {\r\n\t\tif (!this.enableCache) {\r\n\t\t\treturn PredictionContext.join(x, y, this);\r\n\t\t}\r\n\r\n\t\tlet operands: PredictionContextCache.IdentityCommutativePredictionContextOperands = new PredictionContextCache.IdentityCommutativePredictionContextOperands(x, y);\r\n\t\tlet result = this.joinContexts.get(operands);\r\n\t\tif (result) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tresult = PredictionContext.join(x, y, this);\r\n\t\tresult = this.getAsCached(result);\r\n\t\tthis.joinContexts.put(operands, result);\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport namespace PredictionContextCache {\r\n\texport class PredictionContextAndInt {\r\n\t\tprivate obj: PredictionContext;\r\n\t\tprivate value: number;\r\n\r\n\t\tconstructor(obj: PredictionContext, value: number) {\r\n\t\t\tthis.obj = obj;\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(obj: any): boolean {\r\n\t\t\tif (!(obj instanceof PredictionContextAndInt)) {\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (obj === this) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tlet other: PredictionContextAndInt = obj;\r\n\t\t\treturn this.value === other.value\r\n\t\t\t\t&& (this.obj === other.obj || (this.obj != null && this.obj.equals(other.obj)));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\tlet hashCode: number = 5;\r\n\t\t\thashCode = 7 * hashCode + (this.obj != null ? this.obj.hashCode() : 0);\r\n\t\t\thashCode = 7 * hashCode + this.value;\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\t}\r\n\r\n\texport class IdentityCommutativePredictionContextOperands {\r\n\t\tprivate _x: PredictionContext;\r\n\t\tprivate _y: PredictionContext;\r\n\r\n\t\tconstructor(x: PredictionContext, y: PredictionContext) {\r\n\t\t\tassert(x != null);\r\n\t\t\tassert(y != null);\r\n\t\t\tthis._x = x;\r\n\t\t\tthis._y = y;\r\n\t\t}\r\n\r\n\t\tget x(): PredictionContext {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tget y(): PredictionContext {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(o: any): boolean {\r\n\t\t\tif (!(o instanceof IdentityCommutativePredictionContextOperands)) {\r\n\t\t\t\treturn false;\r\n\t\t\t} else if (this === o) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tlet other: IdentityCommutativePredictionContextOperands = o;\r\n\t\t\treturn (this._x === other._x && this._y === other._y) || (this._x === other._y && this._y === other._x);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(): number {\r\n\t\t\treturn this._x.hashCode() ^ this._y.hashCode();\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.3812636-07:00\r\n\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { Equatable, JavaSet } from \"../misc/Stubs\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\nconst INITIAL_HASH: number = 1;\r\n\r\nexport abstract class PredictionContext implements Equatable {\r\n\t/**\r\n\t * Stores the computed hash code of this {@link PredictionContext}. The hash\r\n\t * code is computed in parts to match the following reference algorithm.\r\n\t *\r\n\t * ```\r\n\t * private int referenceHashCode() {\r\n\t * int hash = {@link MurmurHash#initialize MurmurHash.initialize}({@link #INITIAL_HASH});\r\n\t *\r\n\t * for (int i = 0; i < this.size; i++) {\r\n\t * hash = {@link MurmurHash#update MurmurHash.update}(hash, {@link #getParent getParent}(i));\r\n\t * }\r\n\t *\r\n\t * for (int i = 0; i < this.size; i++) {\r\n\t * hash = {@link MurmurHash#update MurmurHash.update}(hash, {@link #getReturnState getReturnState}(i));\r\n\t * }\r\n\t *\r\n\t * hash = {@link MurmurHash#finish MurmurHash.finish}(hash, 2 * this.size);\r\n\t * return hash;\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tprivate readonly cachedHashCode: number;\r\n\r\n\tconstructor(cachedHashCode: number) {\r\n\t\tthis.cachedHashCode = cachedHashCode;\r\n\t}\r\n\r\n\tprotected static calculateEmptyHashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\t\thash = MurmurHash.finish(hash, 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tprotected static calculateSingleHashCode(parent: PredictionContext, returnState: number): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\t\thash = MurmurHash.update(hash, parent);\r\n\t\thash = MurmurHash.update(hash, returnState);\r\n\t\thash = MurmurHash.finish(hash, 2);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tprotected static calculateHashCode(parents: PredictionContext[], returnStates: number[]): number {\r\n\t\tlet hash: number = MurmurHash.initialize(INITIAL_HASH);\r\n\r\n\t\tfor (let parent of parents) {\r\n\t\t\thash = MurmurHash.update(hash, parent);\r\n\t\t}\r\n\r\n\t\tfor (let returnState of returnStates) {\r\n\t\t\thash = MurmurHash.update(hash, returnState);\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, 2 * parents.length);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\tpublic abstract readonly size: number;\r\n\r\n\tpublic abstract getReturnState(index: number): number;\r\n\r\n\tpublic abstract findReturnState(returnState: number): number;\r\n\r\n\t// @NotNull\r\n\tpublic abstract getParent(index: number): PredictionContext;\r\n\r\n\tprotected abstract addEmptyContext(): PredictionContext;\r\n\r\n\tprotected abstract removeEmptyContext(): PredictionContext;\r\n\r\n\tpublic static fromRuleContext(atn: ATN, outerContext: RuleContext, fullContext: boolean = true): PredictionContext {\r\n\t\tif (outerContext.isEmpty) {\r\n\t\t\treturn fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL;\r\n\t\t}\r\n\r\n\t\tlet parent: PredictionContext;\r\n\t\tif (outerContext._parent) {\r\n\t\t\tparent = PredictionContext.fromRuleContext(atn, outerContext._parent, fullContext);\r\n\t\t} else {\r\n\t\t\tparent = fullContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL;\r\n\t\t}\r\n\r\n\t\tlet state: ATNState = atn.states[outerContext.invokingState];\r\n\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\treturn parent.getChild(transition.followState.stateNumber);\r\n\t}\r\n\r\n\tprivate static addEmptyContext(context: PredictionContext): PredictionContext {\r\n\t\treturn context.addEmptyContext();\r\n\t}\r\n\r\n\tprivate static removeEmptyContext(context: PredictionContext): PredictionContext {\r\n\t\treturn context.removeEmptyContext();\r\n\t}\r\n\r\n\tpublic static join(@NotNull context0: PredictionContext, @NotNull context1: PredictionContext, @NotNull contextCache: PredictionContextCache = PredictionContextCache.UNCACHED): PredictionContext {\r\n\t\tif (context0 === context1) {\r\n\t\t\treturn context0;\r\n\t\t}\r\n\r\n\t\tif (context0.isEmpty) {\r\n\t\t\treturn PredictionContext.isEmptyLocal(context0) ? context0 : PredictionContext.addEmptyContext(context1);\r\n\t\t} else if (context1.isEmpty) {\r\n\t\t\treturn PredictionContext.isEmptyLocal(context1) ? context1 : PredictionContext.addEmptyContext(context0);\r\n\t\t}\r\n\r\n\t\tlet context0size: number = context0.size;\r\n\t\tlet context1size: number = context1.size;\r\n\t\tif (context0size === 1 && context1size === 1 && context0.getReturnState(0) === context1.getReturnState(0)) {\r\n\t\t\tlet merged: PredictionContext = contextCache.join(context0.getParent(0), context1.getParent(0));\r\n\t\t\tif (merged === context0.getParent(0)) {\r\n\t\t\t\treturn context0;\r\n\t\t\t} else if (merged === context1.getParent(0)) {\r\n\t\t\t\treturn context1;\r\n\t\t\t} else {\r\n\t\t\t\treturn merged.getChild(context0.getReturnState(0));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet count: number = 0;\r\n\t\tlet parentsList: PredictionContext[] = new Array(context0size + context1size);\r\n\t\tlet returnStatesList: number[] = new Array(parentsList.length);\r\n\t\tlet leftIndex: number = 0;\r\n\t\tlet rightIndex: number = 0;\r\n\t\tlet canReturnLeft: boolean = true;\r\n\t\tlet canReturnRight: boolean = true;\r\n\t\twhile (leftIndex < context0size && rightIndex < context1size) {\r\n\t\t\tif (context0.getReturnState(leftIndex) === context1.getReturnState(rightIndex)) {\r\n\t\t\t\tparentsList[count] = contextCache.join(context0.getParent(leftIndex), context1.getParent(rightIndex));\r\n\t\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\t\tcanReturnLeft = canReturnLeft && parentsList[count] === context0.getParent(leftIndex);\r\n\t\t\t\tcanReturnRight = canReturnRight && parentsList[count] === context1.getParent(rightIndex);\r\n\t\t\t\tleftIndex++;\r\n\t\t\t\trightIndex++;\r\n\t\t\t} else if (context0.getReturnState(leftIndex) < context1.getReturnState(rightIndex)) {\r\n\t\t\t\tparentsList[count] = context0.getParent(leftIndex);\r\n\t\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\t\tcanReturnRight = false;\r\n\t\t\t\tleftIndex++;\r\n\t\t\t} else {\r\n\t\t\t\tassert(context1.getReturnState(rightIndex) < context0.getReturnState(leftIndex));\r\n\t\t\t\tparentsList[count] = context1.getParent(rightIndex);\r\n\t\t\t\treturnStatesList[count] = context1.getReturnState(rightIndex);\r\n\t\t\t\tcanReturnLeft = false;\r\n\t\t\t\trightIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\twhile (leftIndex < context0size) {\r\n\t\t\tparentsList[count] = context0.getParent(leftIndex);\r\n\t\t\treturnStatesList[count] = context0.getReturnState(leftIndex);\r\n\t\t\tleftIndex++;\r\n\t\t\tcanReturnRight = false;\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\twhile (rightIndex < context1size) {\r\n\t\t\tparentsList[count] = context1.getParent(rightIndex);\r\n\t\t\treturnStatesList[count] = context1.getReturnState(rightIndex);\r\n\t\t\trightIndex++;\r\n\t\t\tcanReturnLeft = false;\r\n\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\tif (canReturnLeft) {\r\n\t\t\treturn context0;\r\n\t\t} else if (canReturnRight) {\r\n\t\t\treturn context1;\r\n\t\t}\r\n\r\n\t\tif (count < parentsList.length) {\r\n\t\t\tparentsList = parentsList.slice(0, count);\r\n\t\t\treturnStatesList = returnStatesList.slice(0, count);\r\n\t\t}\r\n\r\n\t\tif (parentsList.length === 0) {\r\n\t\t\t// if one of them was EMPTY_LOCAL, it would be empty and handled at the beginning of the method\r\n\t\t\treturn PredictionContext.EMPTY_FULL;\r\n\t\t} else if (parentsList.length === 1) {\r\n\t\t\treturn new SingletonPredictionContext(parentsList[0], returnStatesList[0]);\r\n\t\t} else {\r\n\t\t\treturn new ArrayPredictionContext(parentsList, returnStatesList);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static isEmptyLocal(context: PredictionContext): boolean {\r\n\t\treturn context === PredictionContext.EMPTY_LOCAL;\r\n\t}\r\n\r\n\tpublic static getCachedContext(\r\n\t\t@NotNull context: PredictionContext,\r\n\t\t@NotNull contextCache: Array2DHashMap,\r\n\t\t@NotNull visited: PredictionContext.IdentityHashMap): PredictionContext {\r\n\t\tif (context.isEmpty) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tlet existing = visited.get(context);\r\n\t\tif (existing) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\texisting = contextCache.get(context);\r\n\t\tif (existing) {\r\n\t\t\tvisited.put(context, existing);\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tlet changed: boolean = false;\r\n\t\tlet parents: PredictionContext[] = new Array(context.size);\r\n\t\tfor (let i = 0; i < parents.length; i++) {\r\n\t\t\tlet parent: PredictionContext = PredictionContext.getCachedContext(context.getParent(i), contextCache, visited);\r\n\t\t\tif (changed || parent !== context.getParent(i)) {\r\n\t\t\t\tif (!changed) {\r\n\t\t\t\t\tparents = new Array(context.size);\r\n\t\t\t\t\tfor (let j = 0; j < context.size; j++) {\r\n\t\t\t\t\t\tparents[j] = context.getParent(j);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparents[i] = parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!changed) {\r\n\t\t\texisting = contextCache.putIfAbsent(context, context);\r\n\t\t\tvisited.put(context, existing != null ? existing : context);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\t// We know parents.length>0 because context.isEmpty is checked at the beginning of the method.\r\n\t\tlet updated: PredictionContext;\r\n\t\tif (parents.length === 1) {\r\n\t\t\tupdated = new SingletonPredictionContext(parents[0], context.getReturnState(0));\r\n\t\t} else {\r\n\t\t\tlet returnStates: number[] = new Array(context.size);\r\n\t\t\tfor (let i = 0; i < context.size; i++) {\r\n\t\t\t\treturnStates[i] = context.getReturnState(i);\r\n\t\t\t}\r\n\r\n\t\t\tupdated = new ArrayPredictionContext(parents, returnStates, context.hashCode());\r\n\t\t}\r\n\r\n\t\texisting = contextCache.putIfAbsent(updated, updated);\r\n\t\tvisited.put(updated, existing || updated);\r\n\t\tvisited.put(context, existing || updated);\r\n\r\n\t\treturn updated;\r\n\t}\r\n\r\n\tpublic appendSingleContext(returnContext: number, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn this.appendContext(PredictionContext.EMPTY_FULL.getChild(returnContext), contextCache);\r\n\t}\r\n\r\n\tpublic abstract appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext;\r\n\r\n\tpublic getChild(returnState: number): PredictionContext {\r\n\t\treturn new SingletonPredictionContext(this, returnState);\r\n\t}\r\n\r\n\tpublic abstract readonly isEmpty: boolean;\r\n\r\n\tpublic abstract readonly hasEmpty: boolean;\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.cachedHashCode;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic abstract equals(o: any): boolean;\r\n\r\n\tpublic toStrings(recognizer: Recognizer | undefined, currentState: number, stop: PredictionContext = PredictionContext.EMPTY_FULL): string[] {\r\n\t\tlet result: string[] = [];\r\n\r\n\t\touter:\r\n\t\tfor (let perm = 0; ; perm++) {\r\n\t\t\tlet offset: number = 0;\r\n\t\t\tlet last: boolean = true;\r\n\t\t\tlet p: PredictionContext = this;\r\n\t\t\tlet stateNumber: number = currentState;\r\n\t\t\tlet localBuffer: string = \"\";\r\n\t\t\tlocalBuffer += \"[\";\r\n\t\t\twhile (!p.isEmpty && p !== stop) {\r\n\t\t\t\tlet index: number = 0;\r\n\t\t\t\tif (p.size > 0) {\r\n\t\t\t\t\tlet bits: number = 1;\r\n\t\t\t\t\twhile (((1 << bits) >>> 0) < p.size) {\r\n\t\t\t\t\t\tbits++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet mask: number = ((1 << bits) >>> 0) - 1;\r\n\t\t\t\t\tindex = (perm >> offset) & mask;\r\n\t\t\t\t\tlast = last && index >= p.size - 1;\r\n\t\t\t\t\tif (index >= p.size) {\r\n\t\t\t\t\t\tcontinue outer;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toffset += bits;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (recognizer) {\r\n\t\t\t\t\tif (localBuffer.length > 1) {\r\n\t\t\t\t\t\t// first char is '[', if more than that this isn't the first rule\r\n\t\t\t\t\t\tlocalBuffer += \" \";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet atn: ATN = recognizer.atn;\r\n\t\t\t\t\tlet s: ATNState = atn.states[stateNumber];\r\n\t\t\t\t\tlet ruleName: string = recognizer.ruleNames[s.ruleIndex];\r\n\t\t\t\t\tlocalBuffer += ruleName;\r\n\t\t\t\t} else if (p.getReturnState(index) !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tif (!p.isEmpty) {\r\n\t\t\t\t\t\tif (localBuffer.length > 1) {\r\n\t\t\t\t\t\t\t// first char is '[', if more than that this isn't the first rule\r\n\t\t\t\t\t\t\tlocalBuffer += \" \";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlocalBuffer += p.getReturnState(index);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstateNumber = p.getReturnState(index);\r\n\t\t\t\tp = p.getParent(index);\r\n\t\t\t}\r\n\r\n\t\t\tlocalBuffer += \"]\";\r\n\t\t\tresult.push(localBuffer);\r\n\r\n\t\t\tif (last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nclass EmptyPredictionContext extends PredictionContext {\r\n\tprivate fullContext: boolean;\r\n\r\n\tconstructor(fullContext: boolean) {\r\n\t\tsuper(PredictionContext.calculateEmptyHashCode());\r\n\t\tthis.fullContext = fullContext;\r\n\t}\r\n\r\n\tget isFullContext(): boolean {\r\n\t\treturn this.fullContext;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\tthrow new Error(\"Cannot remove the empty context from itself.\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\tthrow new Error(\"index out of bounds\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\tthrow new Error(\"index out of bounds\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendSingleContext(returnContext: number, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn contextCache.getChild(this, returnContext);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn suffix;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\treturn this === o;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toStrings(recognizer: any, currentState: number, stop?: PredictionContext): string[] {\r\n\t\treturn [\"[]\"];\r\n\t}\r\n\r\n}\r\n\r\nclass ArrayPredictionContext extends PredictionContext {\r\n\t@NotNull\r\n\tpublic parents: PredictionContext[];\r\n\r\n\t@NotNull\r\n\tpublic returnStates: number[];\r\n\r\n\tconstructor( @NotNull parents: PredictionContext[], returnStates: number[], hashCode?: number) {\r\n\t\tsuper(hashCode || PredictionContext.calculateHashCode(parents, returnStates));\r\n\t\tassert(parents.length === returnStates.length);\r\n\t\tassert(returnStates.length > 1 || returnStates[0] !== PredictionContext.EMPTY_FULL_STATE_KEY, \"Should be using PredictionContext.EMPTY instead.\");\r\n\r\n\t\tthis.parents = parents;\r\n\t\tthis.returnStates = returnStates;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\treturn this.parents[index];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\treturn this.returnStates[index];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn Arrays.binarySearch(this.returnStates, returnState);\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.returnStates.length;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn this.returnStates[this.returnStates.length - 1] === PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\tif (this.hasEmpty) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlet parents2: PredictionContext[] = this.parents.slice(0);\r\n\t\tlet returnStates2: number[] = this.returnStates.slice(0);\r\n\t\tparents2.push(PredictionContext.EMPTY_FULL);\r\n\t\treturnStates2.push(PredictionContext.EMPTY_FULL_STATE_KEY);\r\n\t\treturn new ArrayPredictionContext(parents2, returnStates2);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\tif (!this.hasEmpty) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (this.returnStates.length === 2) {\r\n\t\t\treturn new SingletonPredictionContext(this.parents[0], this.returnStates[0]);\r\n\t\t} else {\r\n\t\t\tlet parents2: PredictionContext[] = this.parents.slice(0, this.parents.length - 1);\r\n\t\t\tlet returnStates2: number[] = this.returnStates.slice(0, this.returnStates.length - 1);\r\n\t\t\treturn new ArrayPredictionContext(parents2, returnStates2);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn ArrayPredictionContext.appendContextImpl(this, suffix, new PredictionContext.IdentityHashMap());\r\n\t}\r\n\r\n\tprivate static appendContextImpl(context: PredictionContext, suffix: PredictionContext, visited: PredictionContext.IdentityHashMap): PredictionContext {\r\n\t\tif (suffix.isEmpty) {\r\n\t\t\tif (PredictionContext.isEmptyLocal(suffix)) {\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\treturn PredictionContext.EMPTY_LOCAL;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthrow new Error(\"what to do here?\");\r\n\t\t\t}\r\n\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\tif (suffix.size !== 1) {\r\n\t\t\tthrow new Error(\"Appending a tree suffix is not yet supported.\");\r\n\t\t}\r\n\r\n\t\tlet result = visited.get(context);\r\n\t\tif (!result) {\r\n\t\t\tif (context.isEmpty) {\r\n\t\t\t\tresult = suffix;\r\n\t\t\t} else {\r\n\t\t\t\tlet parentCount: number = context.size;\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\tparentCount--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet updatedParents: PredictionContext[] = new Array(parentCount);\r\n\t\t\t\tlet updatedReturnStates: number[] = new Array(parentCount);\r\n\t\t\t\tfor (let i = 0; i < parentCount; i++) {\r\n\t\t\t\t\tupdatedReturnStates[i] = context.getReturnState(i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < parentCount; i++) {\r\n\t\t\t\t\tupdatedParents[i] = ArrayPredictionContext.appendContextImpl(context.getParent(i), suffix, visited);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (updatedParents.length === 1) {\r\n\t\t\t\t\tresult = new SingletonPredictionContext(updatedParents[0], updatedReturnStates[0]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tassert(updatedParents.length > 1);\r\n\t\t\t\t\tresult = new ArrayPredictionContext(updatedParents, updatedReturnStates);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (context.hasEmpty) {\r\n\t\t\t\t\tresult = PredictionContext.join(result, suffix);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvisited.put(context, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof ArrayPredictionContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.hashCode() !== o.hashCode()) {\r\n\t\t\t// can't be same if hash is different\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: ArrayPredictionContext = o;\r\n\t\treturn this.equalsImpl(other, new Array2DHashSet());\r\n\t}\r\n\r\n\tprivate equalsImpl(other: ArrayPredictionContext, visited: JavaSet): boolean {\r\n\t\tlet selfWorkList: PredictionContext[] = [];\r\n\t\tlet otherWorkList: PredictionContext[] = [];\r\n\t\tselfWorkList.push(this);\r\n\t\totherWorkList.push(other);\r\n\t\twhile (true) {\r\n\t\t\tlet currentSelf = selfWorkList.pop();\r\n\t\t\tlet currentOther = otherWorkList.pop();\r\n\t\t\tif (!currentSelf || !currentOther) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet operands: PredictionContextCache.IdentityCommutativePredictionContextOperands = new PredictionContextCache.IdentityCommutativePredictionContextOperands(currentSelf, currentOther);\r\n\t\t\tif (!visited.add(operands)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet selfSize: number = operands.x.size;\r\n\t\t\tif (selfSize === 0) {\r\n\t\t\t\tif (!operands.x.equals(operands.y)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet otherSize: number = operands.y.size;\r\n\t\t\tif (selfSize !== otherSize) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < selfSize; i++) {\r\n\t\t\t\tif (operands.x.getReturnState(i) !== operands.y.getReturnState(i)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet selfParent: PredictionContext = operands.x.getParent(i);\r\n\t\t\t\tlet otherParent: PredictionContext = operands.y.getParent(i);\r\n\t\t\t\tif (selfParent.hashCode() !== otherParent.hashCode()) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (selfParent !== otherParent) {\r\n\t\t\t\t\tselfWorkList.push(selfParent);\r\n\t\t\t\t\totherWorkList.push(otherParent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class SingletonPredictionContext extends PredictionContext {\r\n\r\n\t@NotNull\r\n\tpublic parent: PredictionContext;\r\n\tpublic returnState: number;\r\n\r\n\tconstructor(@NotNull parent: PredictionContext, returnState: number) {\r\n\t\tsuper(PredictionContext.calculateSingleHashCode(parent, returnState));\r\n\t\t// assert(returnState != PredictionContext.EMPTY_FULL_STATE_KEY && returnState != PredictionContext.EMPTY_LOCAL_STATE_KEY);\r\n\t\tthis.parent = parent;\r\n\t\tthis.returnState = returnState;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getParent(index: number): PredictionContext {\r\n\t\t// assert(index == 0);\r\n\t\treturn this.parent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getReturnState(index: number): number {\r\n\t\t// assert(index == 0);\r\n\t\treturn this.returnState;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic findReturnState(returnState: number): number {\r\n\t\treturn this.returnState === returnState ? 0 : -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasEmpty(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic appendContext(suffix: PredictionContext, contextCache: PredictionContextCache): PredictionContext {\r\n\t\treturn contextCache.getChild(this.parent.appendContext(suffix, contextCache), this.returnState);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected addEmptyContext(): PredictionContext {\r\n\t\tlet parents: PredictionContext[] = [this.parent, PredictionContext.EMPTY_FULL];\r\n\t\tlet returnStates: number[] = [this.returnState, PredictionContext.EMPTY_FULL_STATE_KEY];\r\n\t\treturn new ArrayPredictionContext(parents, returnStates);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected removeEmptyContext(): PredictionContext {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof SingletonPredictionContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: SingletonPredictionContext = o;\r\n\t\tif (this.hashCode() !== other.hashCode()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.returnState === other.returnState\r\n\t\t\t&& this.parent.equals(other.parent);\r\n\t}\r\n}\r\n\r\nexport namespace PredictionContext {\r\n\texport const EMPTY_LOCAL: PredictionContext = new EmptyPredictionContext(false);\r\n\texport const EMPTY_FULL: PredictionContext = new EmptyPredictionContext(true);\r\n\texport const EMPTY_LOCAL_STATE_KEY: number = -((1 << 31) >>> 0);\r\n\texport const EMPTY_FULL_STATE_KEY: number = ((1 << 31) >>> 0) - 1;\r\n\r\n\texport class IdentityHashMap extends Array2DHashMap {\r\n\t\tconstructor() {\r\n\t\t\tsuper(IdentityEqualityComparator.INSTANCE);\r\n\t\t}\r\n\t}\r\n\r\n\texport class IdentityEqualityComparator implements EqualityComparator {\r\n\t\tpublic static readonly INSTANCE: IdentityEqualityComparator = new IdentityEqualityComparator();\r\n\r\n\t\tprivate IdentityEqualityComparator() {\r\n\t\t\t// intentionally empty\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic hashCode(obj: PredictionContext): number {\r\n\t\t\treturn obj.hashCode();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(a: PredictionContext, b: PredictionContext): boolean {\r\n\t\t\treturn a === b;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.2796692-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Equatable } from \"../misc/Stubs\";\r\nimport { LexerActionExecutor } from \"./LexerActionExecutor\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/**\r\n * This field stores the bit mask for implementing the\r\n * {@link #isPrecedenceFilterSuppressed} property as a bit within the\r\n * existing {@link #altAndOuterContextDepth} field.\r\n */\r\nconst SUPPRESS_PRECEDENCE_FILTER: number = 0x80000000;\r\n\r\n/**\r\n * Represents a location with context in an ATN. The location is identified by the following values:\r\n *\r\n * * The current ATN state\r\n * * The predicted alternative\r\n * * The semantic context which must be true for this configuration to be enabled\r\n * * The syntactic context, which is represented as a graph-structured stack whose path(s) lead to the root of the rule\r\n * invocations leading to this state\r\n *\r\n * In addition to these values, `ATNConfig` stores several properties about paths taken to get to the location which\r\n * were added over time to help with performance, correctness, and/or debugging.\r\n *\r\n * * `reachesIntoOuterContext`:: Used to ensure semantic predicates are not evaluated in the wrong context.\r\n * * `hasPassedThroughNonGreedyDecision`: Used for enabling first-match-wins instead of longest-match-wins after\r\n * crossing a non-greedy decision.\r\n * * `lexerActionExecutor`: Used for tracking the lexer action(s) to execute should this instance be selected during\r\n * lexing.\r\n * * `isPrecedenceFilterSuppressed`: A state variable for one of the dynamic disambiguation strategies employed by\r\n * `ParserATNSimulator.applyPrecedenceFilter`.\r\n *\r\n * Due to the use of a graph-structured stack, a single `ATNConfig` is capable of representing many individual ATN\r\n * configurations which reached the same location in an ATN by following different paths.\r\n *\r\n * PERF: To conserve memory, `ATNConfig` is split into several different concrete types. `ATNConfig` itself stores the\r\n * minimum amount of information typically used to define an `ATNConfig` instance. Various derived types provide\r\n * additional storage space for cases where a non-default value is used for some of the object properties. The\r\n * `ATNConfig.create` and `ATNConfig.transform` methods automatically select the smallest concrete type capable of\r\n * representing the unique information for any given `ATNConfig`.\r\n */\r\nexport class ATNConfig implements Equatable {\r\n\t/** The ATN state associated with this configuration */\r\n\t@NotNull\r\n\tprivate _state: ATNState;\r\n\r\n\t/**\r\n\t * This is a bit-field currently containing the following values.\r\n\t *\r\n\t * * 0x00FFFFFF: Alternative\r\n\t * * 0x7F000000: Outer context depth\r\n\t * * 0x80000000: Suppress precedence filter\r\n\t */\r\n\tprivate altAndOuterContextDepth: number;\r\n\r\n\t/** The stack of invoking states leading to the rule/states associated\r\n\t * with this config. We track only those contexts pushed during\r\n\t * execution of the ATN simulator.\r\n\t */\r\n\t@NotNull\r\n\tprivate _context: PredictionContext;\r\n\r\n\tconstructor(/*@NotNull*/ state: ATNState, alt: number, /*@NotNull*/ context: PredictionContext);\r\n\tconstructor(/*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, /*@NotNull*/ context: PredictionContext);\r\n\r\n\tconstructor(@NotNull state: ATNState, altOrConfig: number | ATNConfig, @NotNull context: PredictionContext) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tassert((altOrConfig & 0xFFFFFF) === altOrConfig);\r\n\t\t\tthis._state = state;\r\n\t\t\tthis.altAndOuterContextDepth = altOrConfig;\r\n\t\t\tthis._context = context;\r\n\t\t} else {\r\n\t\t\tthis._state = state;\r\n\t\t\tthis.altAndOuterContextDepth = altOrConfig.altAndOuterContextDepth;\r\n\t\t\tthis._context = context;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext): ATNConfig;\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, /*@NotNull*/ semanticContext: SemanticContext): ATNConfig;\r\n\r\n\tpublic static create(/*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, /*@*/ semanticContext: SemanticContext, lexerActionExecutor: LexerActionExecutor | undefined): ATNConfig;\r\n\r\n\tpublic static create(@NotNull state: ATNState, alt: number, context: PredictionContext, @NotNull semanticContext: SemanticContext = SemanticContext.NONE, lexerActionExecutor?: LexerActionExecutor): ATNConfig {\r\n\t\tif (semanticContext !== SemanticContext.NONE) {\r\n\t\t\tif (lexerActionExecutor != null) {\r\n\t\t\t\treturn new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, alt, context, false);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new SemanticContextATNConfig(semanticContext, state, alt, context);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (lexerActionExecutor != null) {\r\n\t\t\treturn new ActionATNConfig(lexerActionExecutor, state, alt, context, false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new ATNConfig(state, alt, context);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Gets the ATN state associated with this configuration */\r\n\t@NotNull\r\n\tget state(): ATNState {\r\n\t\treturn this._state;\r\n\t}\r\n\r\n\t/** What alt (or lexer rule) is predicted by this configuration */\r\n\tget alt(): number {\r\n\t\treturn this.altAndOuterContextDepth & 0x00FFFFFF;\r\n\t}\r\n\r\n\t@NotNull\r\n\tget context(): PredictionContext {\r\n\t\treturn this._context;\r\n\t}\r\n\r\n\tset context(@NotNull context: PredictionContext) {\r\n\t\tthis._context = context;\r\n\t}\r\n\r\n\tget reachesIntoOuterContext(): boolean {\r\n\t\treturn this.outerContextDepth !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * We cannot execute predicates dependent upon local context unless\r\n\t * we know for sure we are in the correct context. Because there is\r\n\t * no way to do this efficiently, we simply cannot evaluate\r\n\t * dependent predicates unless we are in the rule that initially\r\n\t * invokes the ATN simulator.\r\n\t *\r\n\t * closure() tracks the depth of how far we dip into the outer context:\r\n\t * depth > 0. Note that it may not be totally accurate depth since I\r\n\t * don't ever decrement. TODO: make it a boolean then\r\n\t */\r\n\tget outerContextDepth(): number {\r\n\t\treturn (this.altAndOuterContextDepth >>> 24) & 0x7F;\r\n\t}\r\n\r\n\tset outerContextDepth(outerContextDepth: number) {\r\n\t\tassert(outerContextDepth >= 0);\r\n\t\t// saturate at 0x7F - everything but zero/positive is only used for debug information anyway\r\n\t\touterContextDepth = Math.min(outerContextDepth, 0x7F);\r\n\t\tthis.altAndOuterContextDepth = ((outerContextDepth << 24) | (this.altAndOuterContextDepth & ~0x7F000000) >>> 0);\r\n\t}\r\n\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@NotNull\r\n\tget semanticContext(): SemanticContext {\r\n\t\treturn SemanticContext.NONE;\r\n\t}\r\n\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clone(): ATNConfig {\r\n\t\treturn this.transform(this.state, false);\r\n\t}\r\n\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, /*@NotNull*/ semanticContext: SemanticContext): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, context: PredictionContext): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, lexerActionExecutor: LexerActionExecutor): ATNConfig;\r\n\tpublic transform(/*@NotNull*/ state: ATNState, checkNonGreedy: boolean, arg2?: SemanticContext | PredictionContext | LexerActionExecutor): ATNConfig {\r\n\t\tif (arg2 == null) {\r\n\t\t\treturn this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else if (arg2 instanceof PredictionContext) {\r\n\t\t\treturn this.transformImpl(state, arg2, this.semanticContext, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else if (arg2 instanceof SemanticContext) {\r\n\t\t\treturn this.transformImpl(state, this._context, arg2, checkNonGreedy, this.lexerActionExecutor);\r\n\t\t} else {\r\n\t\t\treturn this.transformImpl(state, this._context, this.semanticContext, checkNonGreedy, arg2);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate transformImpl(@NotNull state: ATNState, context: PredictionContext, @NotNull semanticContext: SemanticContext, checkNonGreedy: boolean, lexerActionExecutor: LexerActionExecutor | undefined): ATNConfig {\r\n\t\tlet passedThroughNonGreedy: boolean = checkNonGreedy && ATNConfig.checkNonGreedyDecision(this, state);\r\n\t\tif (semanticContext !== SemanticContext.NONE) {\r\n\t\t\tif (lexerActionExecutor != null || passedThroughNonGreedy) {\r\n\t\t\t\treturn new ActionSemanticContextATNConfig(lexerActionExecutor, semanticContext, state, this, context, passedThroughNonGreedy);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new SemanticContextATNConfig(semanticContext, state, this, context);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (lexerActionExecutor != null || passedThroughNonGreedy) {\r\n\t\t\treturn new ActionATNConfig(lexerActionExecutor, state, this, context, passedThroughNonGreedy);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new ATNConfig(state, this, context);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static checkNonGreedyDecision(source: ATNConfig, target: ATNState): boolean {\r\n\t\treturn source.hasPassedThroughNonGreedyDecision\r\n\t\t\t|| target instanceof DecisionState && target.nonGreedy;\r\n\t}\r\n\r\n\tpublic appendContext(context: number, contextCache: PredictionContextCache): ATNConfig;\r\n\tpublic appendContext(context: PredictionContext, contextCache: PredictionContextCache): ATNConfig;\r\n\tpublic appendContext(context: number | PredictionContext, contextCache: PredictionContextCache): ATNConfig {\r\n\t\tif (typeof context === \"number\") {\r\n\t\t\tlet appendedContext: PredictionContext = this.context.appendSingleContext(context, contextCache);\r\n\t\t\tlet result: ATNConfig = this.transform(this.state, false, appendedContext);\r\n\t\t\treturn result;\r\n\t\t} else {\r\n\t\t\tlet appendedContext: PredictionContext = this.context.appendContext(context, contextCache);\r\n\t\t\tlet result: ATNConfig = this.transform(this.state, false, appendedContext);\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if this `ATNConfig` fully contains another `ATNConfig`.\r\n\t *\r\n\t * An ATN configuration represents a position (including context) in an ATN during parsing. Since `ATNConfig` stores\r\n\t * the context as a graph, a single `ATNConfig` instance is capable of representing many ATN configurations which\r\n\t * are all in the same \"location\" but have different contexts. These `ATNConfig` instances are again merged when\r\n\t * they are added to an `ATNConfigSet`. This method supports `ATNConfigSet.contains` by evaluating whether a\r\n\t * particular `ATNConfig` contains all of the ATN configurations represented by another `ATNConfig`.\r\n\t *\r\n\t * An `ATNConfig` _a_ contains another `ATNConfig` _b_ if all of the following conditions are met:\r\n\t *\r\n\t * * The configurations are in the same state (`state`)\r\n\t * * The configurations predict the same alternative (`alt`)\r\n\t * * The semantic context of _a_ implies the semantic context of _b_ (this method performs a weaker equality check)\r\n\t * * Joining the prediction contexts of _a_ and _b_ results in the prediction context of _a_\r\n\t *\r\n\t * This method implements a conservative approximation of containment. As a result, when this method returns `true`\r\n\t * it is known that parsing from `subconfig` can only recognize a subset of the inputs which can be recognized\r\n\t * starting at the current `ATNConfig`. However, due to the imprecise evaluation of implication for the semantic\r\n\t * contexts, no assumptions can be made about the relationship between the configurations when this method returns\r\n\t * `false`.\r\n\t *\r\n\t * @param subconfig The sub configuration.\r\n\t * @returns `true` if this configuration contains `subconfig`; otherwise, `false`.\r\n\t */\r\n\tpublic contains(subconfig: ATNConfig): boolean {\r\n\t\tif (this.state.stateNumber !== subconfig.state.stateNumber\r\n\t\t\t|| this.alt !== subconfig.alt\r\n\t\t\t|| !this.semanticContext.equals(subconfig.semanticContext)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet leftWorkList: PredictionContext[] = [];\r\n\t\tlet rightWorkList: PredictionContext[] = [];\r\n\t\tleftWorkList.push(this.context);\r\n\t\trightWorkList.push(subconfig.context);\r\n\t\twhile (true) {\r\n\t\t\tlet left = leftWorkList.pop();\r\n\t\t\tlet right = rightWorkList.pop();\r\n\t\t\tif (!left || !right) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (left === right) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (left.size < right.size) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (right.isEmpty) {\r\n\t\t\t\treturn left.hasEmpty;\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = 0; i < right.size; i++) {\r\n\t\t\t\t\tlet index: number = left.findReturnState(right.getReturnState(i));\r\n\t\t\t\t\tif (index < 0) {\r\n\t\t\t\t\t\t// assumes invokingStates has no duplicate entries\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tleftWorkList.push(left.getParent(index));\r\n\t\t\t\t\trightWorkList.push(right.getParent(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isPrecedenceFilterSuppressed(): boolean {\r\n\t\treturn (this.altAndOuterContextDepth & SUPPRESS_PRECEDENCE_FILTER) !== 0;\r\n\t}\r\n\r\n\tset isPrecedenceFilterSuppressed(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.altAndOuterContextDepth |= SUPPRESS_PRECEDENCE_FILTER;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.altAndOuterContextDepth &= ~SUPPRESS_PRECEDENCE_FILTER;\r\n\t\t}\r\n\t}\r\n\r\n\t/** An ATN configuration is equal to another if both have\r\n\t * the same state, they predict the same alternative, and\r\n\t * syntactic/semantic contexts are the same.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(o instanceof ATNConfig)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.state.stateNumber === o.state.stateNumber\r\n\t\t\t&& this.alt === o.alt\r\n\t\t\t&& this.reachesIntoOuterContext === o.reachesIntoOuterContext\r\n\t\t\t&& this.context.equals(o.context)\r\n\t\t\t&& this.semanticContext.equals(o.semanticContext)\r\n\t\t\t&& this.isPrecedenceFilterSuppressed === o.isPrecedenceFilterSuppressed\r\n\t\t\t&& this.hasPassedThroughNonGreedyDecision === o.hasPassedThroughNonGreedyDecision\r\n\t\t\t&& ObjectEqualityComparator.INSTANCE.equals(this.lexerActionExecutor, o.lexerActionExecutor);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hashCode: number = MurmurHash.initialize(7);\r\n\t\thashCode = MurmurHash.update(hashCode, this.state.stateNumber);\r\n\t\thashCode = MurmurHash.update(hashCode, this.alt);\r\n\t\thashCode = MurmurHash.update(hashCode, this.reachesIntoOuterContext ? 1 : 0);\r\n\t\thashCode = MurmurHash.update(hashCode, this.context);\r\n\t\thashCode = MurmurHash.update(hashCode, this.semanticContext);\r\n\t\thashCode = MurmurHash.update(hashCode, this.hasPassedThroughNonGreedyDecision ? 1 : 0);\r\n\t\thashCode = MurmurHash.update(hashCode, this.lexerActionExecutor);\r\n\t\thashCode = MurmurHash.finish(hashCode, 7);\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a graphical representation of the current `ATNConfig` in Graphviz format. The graph can be stored to a\r\n\t * **.dot** file and then rendered to an image using Graphviz.\r\n\t *\r\n\t * @returns A Graphviz graph representing the current `ATNConfig`.\r\n\t *\r\n\t * @see http://www.graphviz.org/\r\n\t */\r\n\tpublic toDotString(): string {\r\n\t\tlet builder = \"\";\r\n\t\tbuilder += (\"digraph G {\\n\");\r\n\t\tbuilder += (\"rankdir=LR;\\n\");\r\n\r\n\t\tlet visited = new Array2DHashMap(PredictionContext.IdentityEqualityComparator.INSTANCE);\r\n\t\tlet workList: PredictionContext[] = [];\r\n\t\tfunction getOrAddContext(context: PredictionContext): number {\r\n\t\t\tlet newNumber = visited.size;\r\n\t\t\tlet result = visited.putIfAbsent(context, newNumber);\r\n\t\t\tif (result != null) {\r\n\t\t\t\t// Already saw this context\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\r\n\t\t\tworkList.push(context);\r\n\t\t\treturn newNumber;\r\n\t\t}\r\n\r\n\t\tworkList.push(this.context);\r\n\t\tvisited.put(this.context, 0);\r\n\t\twhile (true) {\r\n\t\t\tlet current = workList.pop();\r\n\t\t\tif (!current) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < current.size; i++) {\r\n\t\t\t\tbuilder += (\" s\") + (getOrAddContext(current));\r\n\t\t\t\tbuilder += (\"->\");\r\n\t\t\t\tbuilder += (\"s\") + (getOrAddContext(current.getParent(i)));\r\n\t\t\t\tbuilder += (\"[label=\\\"\") + (current.getReturnState(i)) + (\"\\\"];\\n\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbuilder += (\"}\\n\");\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recog: Recognizer | undefined, showAlt: boolean): string;\r\n\tpublic toString(recog: Recognizer | undefined, showAlt: boolean, showContext: boolean): string;\r\n\tpublic toString(recog?: Recognizer, showAlt?: boolean, showContext?: boolean): string {\r\n\t\t// Must check showContext before showAlt to preserve original overload behavior\r\n\t\tif (showContext == null) {\r\n\t\t\tshowContext = showAlt != null;\r\n\t\t}\r\n\r\n\t\tif (showAlt == null) {\r\n\t\t\tshowAlt = true;\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\t\t// if (this.state.ruleIndex >= 0) {\r\n\t\t// \tif (recog != null) {\r\n\t\t// \t\tbuf += (recog.ruleNames[this.state.ruleIndex] + \":\");\r\n\t\t// \t} else {\r\n\t\t// \t\tbuf += (this.state.ruleIndex + \":\");\r\n\t\t// \t}\r\n\t\t// }\r\n\t\tlet contexts: string[];\r\n\t\tif (showContext) {\r\n\t\t\tcontexts = this.context.toStrings(recog, this.state.stateNumber);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcontexts = [\"?\"];\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let contextDesc of contexts) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbuf += (\", \");\r\n\t\t\t}\r\n\r\n\t\t\tbuf += (\"(\");\r\n\t\t\tbuf += (this.state);\r\n\t\t\tif (showAlt) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (this.alt);\r\n\t\t\t}\r\n\t\t\tif (this.context) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (contextDesc);\r\n\t\t\t}\r\n\t\t\tif (this.semanticContext !== SemanticContext.NONE) {\r\n\t\t\t\tbuf += (\",\");\r\n\t\t\t\tbuf += (this.semanticContext);\r\n\t\t\t}\r\n\t\t\tif (this.reachesIntoOuterContext) {\r\n\t\t\t\tbuf += (\",up=\") + (this.outerContextDepth);\r\n\t\t\t}\r\n\t\t\tbuf += (\")\");\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n\r\n/**\r\n * This class was derived from `ATNConfig` purely as a memory optimization. It allows for the creation of an `ATNConfig`\r\n * with a non-default semantic context.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass SemanticContextATNConfig extends ATNConfig {\r\n\t@NotNull\r\n\tprivate _semanticContext: SemanticContext;\r\n\r\n\tconstructor(semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext);\r\n\tconstructor(semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext);\r\n\tconstructor(semanticContext: SemanticContext, @NotNull state: ATNState, @NotNull altOrConfig: number | ATNConfig, context: PredictionContext) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t}\r\n\r\n\t\tthis._semanticContext = semanticContext;\r\n\t}\r\n\r\n\t@Override\r\n\tget semanticContext(): SemanticContext {\r\n\t\treturn this._semanticContext;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * This class was derived from `ATNConfig` purely as a memory optimization. It allows for the creation of an `ATNConfig`\r\n * with a lexer action.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass ActionATNConfig extends ATNConfig {\r\n\tprivate _lexerActionExecutor?: LexerActionExecutor;\r\n\tprivate passedThroughNonGreedyDecision: boolean;\r\n\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull state: ATNState, @NotNull altOrConfig: number | ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(state, altOrConfig, context);\r\n\t\t\tif (altOrConfig.semanticContext !== SemanticContext.NONE) {\r\n\t\t\t\tthrow new Error(\"Not supported\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t\tthis.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision;\r\n\t}\r\n\r\n\t@Override\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn this.passedThroughNonGreedyDecision;\r\n\t}\r\n}\r\n\r\n/**\r\n * This class was derived from `SemanticContextATNConfig` purely as a memory optimization. It allows for the creation of\r\n * an `ATNConfig` with both a lexer action and a non-default semantic context.\r\n *\r\n * See the `ATNConfig` documentation for more information about conserving memory through the use of several concrete\r\n * types.\r\n */\r\nclass ActionSemanticContextATNConfig extends SemanticContextATNConfig {\r\n\tprivate _lexerActionExecutor?: LexerActionExecutor;\r\n\tprivate passedThroughNonGreedyDecision: boolean;\r\n\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, alt: number, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, /*@NotNull*/ semanticContext: SemanticContext, /*@NotNull*/ state: ATNState, /*@NotNull*/ c: ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean);\r\n\tconstructor(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull semanticContext: SemanticContext, @NotNull state: ATNState, altOrConfig: number | ATNConfig, context: PredictionContext, passedThroughNonGreedyDecision: boolean) {\r\n\t\tif (typeof altOrConfig === \"number\") {\r\n\t\t\tsuper(semanticContext, state, altOrConfig, context);\r\n\t\t} else {\r\n\t\t\tsuper(semanticContext, state, altOrConfig, context);\r\n\t\t}\r\n\r\n\t\tthis._lexerActionExecutor = lexerActionExecutor;\r\n\t\tthis.passedThroughNonGreedyDecision = passedThroughNonGreedyDecision;\r\n\t}\r\n\r\n\t@Override\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\treturn this._lexerActionExecutor;\r\n\t}\r\n\r\n\t@Override\r\n\tget hasPassedThroughNonGreedyDecision(): boolean {\r\n\t\treturn this.passedThroughNonGreedyDecision;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport * as util from \"util\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\n/**\r\n * Private empty array used to construct empty BitSets\r\n */\r\nconst EMPTY_DATA: Uint16Array = new Uint16Array(0);\r\n\r\n/**\r\n * Gets the word index of the `UInt16` element in `BitSet.data` containing the bit with the specified index.\r\n */\r\nfunction getIndex(bitNumber: number) {\r\n\treturn bitNumber >>> 4;\r\n}\r\n\r\n/**\r\n * Convert a word index into the bit index of the LSB of that word\r\n */\r\n\r\nfunction unIndex(n: number) {\r\n\treturn n * 16;\r\n}\r\n\r\n/**\r\n * Get's the bit number of the least signficant bit set LSB which is set in a word non-zero word;\r\n * Bit numbers run from LSB to MSB starting with 0.\r\n */\r\nfunction findLSBSet(word: number) {\r\n\tlet bit = 1;\r\n\tfor (let i = 0; i < 16; i++) {\r\n\t\tif ((word & bit) !== 0) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t\tbit = (bit << 1) >>> 0;\r\n\t}\r\n\tthrow new RangeError(\"No specified bit found\");\r\n}\r\n\r\nfunction findMSBSet(word: number) {\r\n\tlet bit = (1 << 15) >>> 0;\r\n\tfor (let i = 15; i >= 0; i--) {\r\n\t\tif ((word & bit) !== 0) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t\tbit = bit >>> 1;\r\n\t}\r\n\tthrow new RangeError(\"No specified bit found\");\r\n}\r\n\r\n/**\r\n * Gets a 16-bit mask with bit numbers fromBit to toBit (inclusive) set.\r\n * Bit numbers run from LSB to MSB starting with 0.\r\n */\r\nfunction bitsFor(fromBit: number, toBit: number): number {\r\n\tfromBit &= 0xF;\r\n\ttoBit &= 0xF;\r\n\tif (fromBit === toBit) {\r\n\t\treturn (1 << fromBit) >>> 0;\r\n\t}\r\n\treturn ((0xFFFF >>> (15 - toBit)) ^ (0xFFFF >>> (16 - fromBit)));\r\n}\r\n\r\n/**\r\n * A lookup table for number of set bits in a 16-bit integer. This is used to quickly count the cardinality (number of unique elements) of a BitSet.\r\n */\r\nconst POP_CNT: Uint8Array = new Uint8Array(65536);\r\nfor (let i = 0; i < 16; i++) {\r\n\tconst stride = (1 << i) >>> 0;\r\n\tlet index = 0;\r\n\twhile (index < POP_CNT.length) {\r\n\t\t// skip the numbers where the bit isn't set\r\n\t\tindex += stride;\r\n\r\n\t\t// increment the ones where the bit is set\r\n\t\tfor (let j = 0; j < stride; j++) {\r\n\t\t\tPOP_CNT[index]++;\r\n\t\t\tindex++;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class BitSet implements Iterable{\r\n\tprivate data: Uint16Array;\r\n\r\n\t/**\r\n\t * Creates a new bit set. All bits are initially `false`.\r\n\t */\r\n\tconstructor();\r\n\r\n\t/**\r\n\t * Creates a bit set whose initial size is large enough to explicitly represent bits with indices in the range `0`\r\n\t * through `nbits-1`. All bits are initially `false`.\r\n\t */\r\n\tconstructor(nbits: number);\r\n\r\n\t/**\r\n\t * Creates a bit set from a iterable list of numbers (including another BitSet);\r\n\t */\r\n\tconstructor(numbers: Iterable);\r\n\r\n\t/*\r\n\t** constructor implementation\r\n\t*/\r\n\tconstructor(arg?: number | Iterable) {\r\n\t\tif (!arg) {\r\n\t\t\t// covering the case of unspecified and nbits===0\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (typeof arg === \"number\") {\r\n\t\t\tif (arg < 0) {\r\n\t\t\t\tthrow new RangeError(\"nbits cannot be negative\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.data = new Uint16Array(getIndex(arg - 1) + 1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (arg instanceof BitSet) {\r\n\t\t\t\tthis.data = arg.data.slice(0); // Clone the data\r\n\t\t\t} else {\r\n\t\t\t\tlet max = -1;\r\n\t\t\t\tfor (let v of arg) {\r\n\t\t\t\t\tif (max < v) {\r\n\t\t\t\t\t\tmax = v;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.data = new Uint16Array(getIndex(max - 1) + 1);\r\n\t\t\t\tfor (let v of arg) {\r\n\t\t\t\t\tthis.set(v);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a logical **AND** of this target bit set with the argument bit set. This bit set is modified so that\r\n\t * each bit in it has the value `true` if and only if it both initially had the value `true` and the corresponding\r\n\t * bit in the bit set argument also had the value `true`.\r\n\t */\r\n\tpublic and(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst words = Math.min(data.length, other.length);\r\n\r\n\t\tlet lastWord = -1;\t// Keep track of index of last non-zero word\r\n\r\n\t\tfor (let i = 0; i < words; i++) {\r\n\t\t\tlet value = data[i] &= other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t}\r\n\r\n\t\tif (lastWord < data.length - 1) {\r\n\t\t\tthis.data = data.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all of the bits in this `BitSet` whose corresponding bit is set in the specified `BitSet`.\r\n\t */\r\n\tpublic andNot(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst words = Math.min(data.length, other.length);\r\n\r\n\t\tlet lastWord = -1;\t// Keep track of index of last non-zero word\r\n\r\n\t\tfor (let i = 0; i < words; i++) {\r\n\t\t\tlet value = data[i] &= (other[i] ^ 0xFFFF);\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t}\r\n\r\n\t\tif (lastWord < data.length - 1) {\r\n\t\t\tthis.data = data.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns the number of bits set to `true` in this `BitSet`.\r\n\t */\r\n\tpublic cardinality(): number {\r\n\t\tif (this.isEmpty) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet result = 0;\r\n\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tresult += POP_CNT[data[i]];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all of the bits in this `BitSet` to `false`.\r\n\t */\r\n\tpublic clear(): void;\r\n\r\n\t/**\r\n\t * Sets the bit specified by the index to `false`.\r\n\t *\r\n\t * @param bitIndex the index of the bit to be cleared\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic clear(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to `false`.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be cleared\r\n\t * @param toIndex index after the last bit to be cleared\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic clear(fromIndex: number, toIndex: number): void;\r\n\tpublic clear(fromIndex?: number, toIndex?: number): void {\r\n\t\tif (fromIndex == null) {\r\n\t\t\tthis.data.fill(0);\r\n\t\t} else if (toIndex == null) {\r\n\t\t\tthis.set(fromIndex, false);\r\n\t\t} else {\r\n\t\t\tthis.set(fromIndex, toIndex, false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to the complement of its current value.\r\n\t *\r\n\t * @param bitIndex the index of the bit to flip\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic flip(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets each bit from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to the complement\r\n\t * of its current value.\r\n\t *\r\n\t * @param fromIndex index of the first bit to flip\r\n\t * @param toIndex index after the last bit to flip\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic flip(fromIndex: number, toIndex: number): void;\r\n\tpublic flip(fromIndex: number, toIndex?: number): void {\r\n\t\tif (toIndex == null) {\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t}\r\n\t\tif (fromIndex < 0 || toIndex < fromIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tconst lastWord = getIndex(toIndex);\r\n\r\n\t\tif (word === lastWord) {\r\n\t\t\tthis.data[word] ^= bitsFor(fromIndex, toIndex);\r\n\t\t} else {\r\n\t\t\tthis.data[word++] ^= bitsFor(fromIndex, 15);\r\n\t\t\twhile (word < lastWord) {\r\n\t\t\t\tthis.data[word++] ^= 0xFFFF;\r\n\t\t\t}\r\n\t\t\tthis.data[word++] ^= bitsFor(0, toIndex);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the value of the bit with the specified index. The value is `true` if the bit with the index `bitIndex`\r\n\t * is currently set in this `BitSet`; otherwise, the result is `false`.\r\n\t *\r\n\t * @param bitIndex the bit index\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic get(bitIndex: number): boolean;\r\n\r\n\t/**\r\n\t * Returns a new `BitSet` composed of bits from this `BitSet` from `fromIndex` (inclusive) to `toIndex` (exclusive).\r\n\t *\r\n\t * @param fromIndex index of the first bit to include\r\n\t * @param toIndex index after the last bit to include\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic get(fromIndex: number, toIndex: number): BitSet;\r\n\tpublic get(fromIndex: number, toIndex?: number): boolean | BitSet {\r\n\t\tif (toIndex === undefined) {\r\n\t\t\treturn !!(this.data[getIndex(fromIndex)] & bitsFor(fromIndex, fromIndex));\r\n\t\t} else {\r\n\t\t\t// return a BitSet\r\n\t\t\tlet result = new BitSet(toIndex + 1);\r\n\t\t\tfor (let i = fromIndex; i <= toIndex; i++) {\r\n\t\t\t\tresult.set(i, this.get(i));\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if the specified `BitSet` has any bits set to `true` that are also set to `true` in this `BitSet`.\r\n\t *\r\n\t * @param set `BitSet` to intersect with\r\n\t */\r\n\tpublic intersects(set: BitSet): boolean {\r\n\t\tlet smallerLength = Math.min(this.length(), set.length());\r\n\t\tif (smallerLength === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet bound = getIndex(smallerLength - 1);\r\n\t\tfor (let i = 0; i <= bound; i++) {\r\n\t\t\tif ((this.data[i] & set.data[i]) !== 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if this `BitSet` contains no bits that are set to `true`.\r\n\t */\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.length() === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"logical size\" of this `BitSet`: the index of the highest set bit in the `BitSet` plus one. Returns\r\n\t * zero if the `BitSet` contains no set bits.\r\n\t */\r\n\tpublic length(): number {\r\n\t\tif (!this.data.length) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn this.previousSetBit(unIndex(this.data.length) - 1) + 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the first bit that is set to `false` that occurs on or after the specified starting index,\r\n\t * If no such bit exists then `-1` is returned.\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic nextClearBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word > length) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tlet ignore = 0xFFFF ^ bitsFor(fromIndex, 15);\r\n\r\n\t\tif ((data[word] | ignore) === 0xFFFF) {\r\n\t\t\tword++;\r\n\t\t\tignore = 0;\r\n\t\t\tfor (; word < length; word++) {\r\n\t\t\t\tif (data[word] !== 0xFFFF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word === length) {\r\n\t\t\t\t// Hit the end\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findLSBSet((data[word] | ignore) ^ 0xFFFF);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the first bit that is set to `true` that occurs on or after the specified starting index.\r\n\t * If no such bit exists then `-1` is returned.\r\n\t *\r\n\t * To iterate over the `true` bits in a `BitSet`, use the following loop:\r\n\t *\r\n\t * ```\r\n\t * for (let i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {\r\n\t * // operate on index i here\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic nextSetBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word > length) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\tlet mask = bitsFor(fromIndex, 15);\r\n\r\n\t\tif ((data[word] & mask) === 0) {\r\n\t\t\tword++;\r\n\t\t\tmask = 0xFFFF;\r\n\t\t\tfor (; word < length; word++) {\r\n\t\t\t\tif (data[word] !== 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word >= length) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findLSBSet(data[word] & mask);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a logical **OR** of this bit set with the bit set argument. This bit set is modified so that a bit in it\r\n\t * has the value `true` if and only if it either already had the value `true` or the corresponding bit in the bit\r\n\t * set argument has the value `true`.\r\n\t */\r\n\tpublic or(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst minWords = Math.min(data.length, other.length);\r\n\t\tconst words = Math.max(data.length, other.length);\r\n\t\tconst dest = data.length === words ? data : new Uint16Array(words);\r\n\r\n\t\tlet lastWord = -1;\r\n\r\n\t\t// Or those words both sets have in common\r\n\r\n\t\tfor (let i = 0; i < minWords; i++) {\r\n\t\t\tlet value = dest[i] = data[i] | other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy words from larger set (if there is one)\r\n\r\n\t\tconst longer = data.length > other.length ? data : other;\r\n\t\tfor (let i = minWords; i < words; i++) {\r\n\t\t\tlet value = dest[i] = longer[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (dest.length === lastWord + 1) {\r\n\t\t\tthis.data = dest;\r\n\t\t} else {\r\n\t\t\tthis.data = dest.slice(0, lastWord);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the nearest bit that is set to `false` that occurs on or before the specified starting\r\n\t * index. If no such bit exists, or if `-1` is given as the starting index, then `-1` is returned.\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is less than `-1`\r\n\t */\r\n\tpublic previousClearBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word >= length) {\r\n\t\t\tword = length - 1;\r\n\t\t}\r\n\r\n\t\tlet ignore = 0xFFFF ^ bitsFor(0, fromIndex);\r\n\r\n\t\tif ((data[word] | ignore) === 0xFFFF) {\r\n\t\t\tignore = 0;\r\n\t\t\tword--;\r\n\t\t\tfor (; word >= 0; word--) {\r\n\t\t\t\tif (data[word] !== 0xFFFF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word < 0) {\r\n\t\t\t\t// Hit the end\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findMSBSet((data[word] | ignore) ^ 0xFFFF);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns the index of the nearest bit that is set to `true` that occurs on or before the specified starting index.\r\n\t * If no such bit exists, or if `-1` is given as the starting index, then `-1` is returned.\r\n\t *\r\n\t * To iterate over the `true` bits in a `BitSet`, use the following loop:\r\n\t *\r\n\t * ```\r\n\t * for (let i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) {\r\n\t * // operate on index i here\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param fromIndex the index to start checking from (inclusive)\r\n\t *\r\n\t * @throws RangeError if the specified index is less than `-1`\r\n\t */\r\n\tpublic previousSetBit(fromIndex: number): number {\r\n\t\tif (fromIndex < 0) {\r\n\t\t\tthrow new RangeError(\"fromIndex cannot be negative\");\r\n\t\t}\r\n\r\n\t\tconst data = this.data;\r\n\t\tconst length = data.length;\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tif (word >= length) {\r\n\t\t\tword = length - 1;\r\n\t\t}\r\n\r\n\t\tlet mask = bitsFor(0, fromIndex);\r\n\r\n\t\tif ((data[word] & mask) === 0) {\r\n\t\t\tword--;\r\n\t\t\tmask = 0xFFFF;\r\n\t\t\tfor (; word >= 0; word--) {\r\n\t\t\t\tif (data[word] !== 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (word < 0) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn unIndex(word) + findMSBSet(data[word] & mask);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to `true`.\r\n\t *\r\n\t * @param bitIndex a bit index\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic set(bitIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bit at the specified index to the specified value.\r\n\t *\r\n\t * @param bitIndex a bit index\r\n\t * @param value a boolean value to set\r\n\t *\r\n\t * @throws RangeError if the specified index is negative\r\n\t */\r\n\tpublic set(bitIndex: number, value: boolean): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to `true`.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be set\r\n\t * @param toIndex index after the last bit to be set\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic set(fromIndex: number, toIndex: number): void;\r\n\r\n\t/**\r\n\t * Sets the bits from the specified `fromIndex` (inclusive) to the specified `toIndex` (exclusive) to the specified\r\n\t * value.\r\n\t *\r\n\t * @param fromIndex index of the first bit to be set\r\n\t * @param toIndex index after the last bit to be set\r\n\t * @param value value to set the selected bits to\r\n\t *\r\n\t * @throws RangeError if `fromIndex` is negative, or `toIndex` is negative, or `fromIndex` is larger than `toIndex`\r\n\t */\r\n\tpublic set(fromIndex: number, toIndex: number, value: boolean): void;\r\n\tpublic set(fromIndex: number, toIndex?: boolean | number, value?: boolean): void {\r\n\t\tif (toIndex === undefined) {\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t\tvalue = true;\r\n\t\t} else if (typeof toIndex === \"boolean\") {\r\n\t\t\tvalue = toIndex;\r\n\t\t\ttoIndex = fromIndex;\r\n\t\t}\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tvalue = true;\r\n\t\t}\r\n\r\n\t\tif (fromIndex < 0 || fromIndex > toIndex) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tlet word = getIndex(fromIndex);\r\n\t\tlet lastWord = getIndex(toIndex);\r\n\r\n\t\tif (value && lastWord >= this.data.length) {\r\n\t\t\t// Grow array \"just enough\" for bits we need to set\r\n\t\t\tlet temp = new Uint16Array(lastWord + 1);\r\n\t\t\tthis.data.forEach((value, index) => temp[index] = value);\r\n\t\t\tthis.data = temp;\r\n\t\t} else if (!value) {\r\n\t\t\t// But there is no need to grow array to clear bits.\r\n\t\t\tif (word >= this.data.length) {\r\n\t\t\t\t// Early exit\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (lastWord >= this.data.length) {\r\n\t\t\t\t// Adjust work to fit array\r\n\t\t\t\tlastWord = this.data.length - 1;\r\n\t\t\t\ttoIndex = this.data.length * 16 - 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (word === lastWord) {\r\n\t\t\tthis._setBits(word, value, bitsFor(fromIndex, toIndex));\r\n\t\t} else {\r\n\t\t\tthis._setBits(word++, value, bitsFor(fromIndex, 15));\r\n\t\t\twhile (word < lastWord) {\r\n\t\t\t\tthis.data[word++] = value ? 0xFFFF : 0;\r\n\t\t\t}\r\n\t\t\tthis._setBits(word, value, bitsFor(0, toIndex));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setBits(word: number, value: boolean, mask: number) {\r\n\t\tif (value) {\r\n\t\t\tthis.data[word] |= mask;\r\n\t\t} else {\r\n\t\t\tthis.data[word] &= 0xFFFF ^ mask;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the number of bits of space actually in use by this `BitSet` to represent bit values. The maximum element\r\n\t * in the set is the size - 1st element.\r\n\t */\r\n\tget size(): number {\r\n\t\treturn this.data.byteLength * 8;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new byte array containing all the bits in this bit set.\r\n\t *\r\n\t * More precisely, if\r\n\t * `let bytes = s.toByteArray();`\r\n\t * then `bytes.length === (s.length()+7)/8` and `s.get(n) === ((bytes[n/8] & (1<<(n%8))) != 0)` for all\r\n\t * `n < 8 * bytes.length`.\r\n\t */\r\n\t// toByteArray(): Int8Array {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Returns a new integer array containing all the bits in this bit set.\r\n\t *\r\n\t * More precisely, if\r\n\t * `let integers = s.toIntegerArray();`\r\n\t * then `integers.length === (s.length()+31)/32` and `s.get(n) === ((integers[n/32] & (1<<(n%32))) != 0)` for all\r\n\t * `n < 32 * integers.length`.\r\n\t */\r\n\t// toIntegerArray(): Int32Array {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn MurmurHash.hashCode(this.data, 22);\r\n\t}\r\n\r\n\t/**\r\n\t * Compares this object against the specified object. The result is `true` if and only if the argument is not\r\n\t * `undefined` and is a `Bitset` object that has exactly the same set of bits set to `true` as this bit set. That\r\n\t * is, for every nonnegative index `k`,\r\n\t *\r\n\t * ```\r\n\t * ((BitSet)obj).get(k) == this.get(k)\r\n\t * ```\r\n\t *\r\n\t * must be true. The current sizes of the two bit sets are not compared.\r\n\t */\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof BitSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst len = this.length();\r\n\r\n\t\tif (len !== obj.length()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (len === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet bound = getIndex(len - 1);\r\n\t\tfor (let i = 0; i <= bound; i++) {\r\n\t\t\tif (this.data[i] !== obj.data[i]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representation of this bit set. For every index for which this `BitSet` contains a bit in the\r\n\t * set state, the decimal representation of that index is included in the result. Such indices are listed in order\r\n\t * from lowest to highest, separated by \", \" (a comma and a space) and surrounded by braces, resulting in the usual\r\n\t * mathematical notation for a set of integers.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * BitSet drPepper = new BitSet();\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{}\"`.\r\n\t *\r\n\t * drPepper.set(2);\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{2}\"`.\r\n\t *\r\n\t * drPepper.set(4);\r\n\t * drPepper.set(10);\r\n\t *\r\n\t * Now `drPepper.toString()` returns `\"{2, 4, 10}\"`.\r\n\t */\r\n\tpublic toString(): string {\r\n\t\tlet result = \"{\";\r\n\r\n\t\tlet first = true;\r\n\t\tfor (let i = this.nextSetBit(0); i >= 0; i = this.nextSetBit(i + 1)) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tresult += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tresult += i;\r\n\t\t}\r\n\r\n\t\tresult += \"}\";\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// static valueOf(bytes: Int8Array): BitSet;\r\n\t// static valueOf(buffer: ArrayBuffer): BitSet;\r\n\t// static valueOf(integers: Int32Array): BitSet;\r\n\t// static valueOf(data: Int8Array | Int32Array | ArrayBuffer): BitSet {\r\n\t// \tthrow new Error(\"NOT IMPLEMENTED\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Performs a logical **XOR** of this bit set with the bit set argument. This bit set is modified so that a bit in\r\n\t * it has the value `true` if and only if one of the following statements holds:\r\n\t *\r\n\t * * The bit initially has the value `true`, and the corresponding bit in the argument has the value `false`.\r\n\t * * The bit initially has the value `false`, and the corresponding bit in the argument has the value `true`.\r\n\t */\r\n\tpublic xor(set: BitSet): void {\r\n\t\tconst data = this.data;\r\n\t\tconst other = set.data;\r\n\t\tconst minWords = Math.min(data.length, other.length);\r\n\t\tconst words = Math.max(data.length, other.length);\r\n\t\tconst dest = data.length === words ? data : new Uint16Array(words);\r\n\r\n\t\tlet lastWord = -1;\r\n\r\n\t\t// Xor those words both sets have in common\r\n\r\n\t\tfor (let i = 0; i < minWords; i++) {\r\n\t\t\tlet value = dest[i] = data[i] ^ other[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy words from larger set (if there is one)\r\n\r\n\t\tconst longer = data.length > other.length ? data : other;\r\n\t\tfor (let i = minWords; i < words; i++) {\r\n\t\t\tlet value = dest[i] = longer[i];\r\n\t\t\tif (value !== 0) {\r\n\t\t\t\tlastWord = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lastWord === -1) {\r\n\t\t\tthis.data = EMPTY_DATA;\r\n\t\t} else if (dest.length === lastWord + 1) {\r\n\t\t\tthis.data = dest;\r\n\t\t} else {\r\n\t\t\tthis.data = dest.slice(0, lastWord + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clone() {\r\n\t\treturn new BitSet(this);\r\n\t}\r\n\r\n\tpublic [Symbol.iterator](): IterableIterator {\r\n\t\treturn new BitSetIterator(this.data);\r\n\t}\r\n\r\n\t// Overrides formatting for nodejs assert etc.\r\n\tpublic [(util.inspect as any).custom](): string {\r\n\t\treturn \"BitSet \" + this.toString();\r\n\t}\r\n}\r\n\r\nclass BitSetIterator implements IterableIterator{\r\n\tprivate index = 0;\r\n\tprivate mask = 0xFFFF;\r\n\r\n\tconstructor(private data: Uint16Array) { }\r\n\r\n\tpublic next() {\r\n\t\twhile (this.index < this.data.length) {\r\n\t\t\tconst bits = this.data[this.index] & this.mask;\r\n\t\t\tif (bits !== 0) {\r\n\t\t\t\tconst bitNumber = unIndex(this.index) + findLSBSet(bits);\r\n\t\t\t\tthis.mask = bitsFor(bitNumber + 1, 15);\r\n\t\t\t\treturn { done: false, value: bitNumber };\r\n\t\t\t}\r\n\t\t\tthis.index++;\r\n\t\t\tthis.mask = 0xFFFF;\r\n\t\t}\r\n\t\treturn { done: true, value: -1 };\r\n\t}\r\n\r\n\tpublic [Symbol.iterator](): IterableIterator { return this; }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.5488013-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ConflictInfo } from \"./ConflictInfo\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { JavaSet } from \"../misc/Stubs\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\ninterface KeyType { state: number; alt: number; }\r\n\r\nclass KeyTypeEqualityComparer implements EqualityComparator {\r\n\tpublic hashCode(key: KeyType) {\r\n\t\treturn key.state ^ key.alt;\r\n\t}\r\n\r\n\tpublic equals(a: KeyType, b: KeyType) {\r\n\t\treturn a.state === b.state && a.alt === b.alt;\r\n\t}\r\n\r\n\tpublic static readonly INSTANCE = new KeyTypeEqualityComparer();\r\n}\r\n\r\nfunction NewKeyedConfigMap(map?: Array2DHashMap) {\r\n\tif (map) {\r\n\t\treturn new Array2DHashMap(map);\r\n\t} else {\r\n\t\treturn new Array2DHashMap(KeyTypeEqualityComparer.INSTANCE);\r\n\t}\r\n}\r\n\r\n/**\r\n * Represents a set of ATN configurations (see `ATNConfig`). As configurations are added to the set, they are merged\r\n * with other `ATNConfig` instances already in the set when possible using the graph-structured stack.\r\n *\r\n * An instance of this class represents the complete set of positions (with context) in an ATN which would be associated\r\n * with a single DFA state. Its internal representation is more complex than traditional state used for NFA to DFA\r\n * conversion due to performance requirements (both improving speed and reducing memory overhead) as well as supporting\r\n * features such as semantic predicates and non-greedy operators in a form to support ANTLR's prediction algorithm.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNConfigSet implements JavaSet {\r\n\t/**\r\n\t * This maps (state, alt) -> merged {@link ATNConfig}. The key does not account for\r\n\t * the {@link ATNConfig#getSemanticContext} of the value, which is only a problem if a single\r\n\t * `ATNConfigSet` contains two configs with the same state and alternative\r\n\t * but different semantic contexts. When this case arises, the first config\r\n\t * added to this map stays, and the remaining configs are placed in {@link #unmerged}.\r\n\t *\r\n\t * This map is only used for optimizing the process of adding configs to the set,\r\n\t * and is `undefined` for read-only sets stored in the DFA.\r\n\t */\r\n\tprivate mergedConfigs?: Array2DHashMap;\r\n\r\n\t/**\r\n\t * This is an \"overflow\" list holding configs which cannot be merged with one\r\n\t * of the configs in {@link #mergedConfigs} but have a colliding key. This\r\n\t * occurs when two configs in the set have the same state and alternative but\r\n\t * different semantic contexts.\r\n\t *\r\n\t * This list is only used for optimizing the process of adding configs to the set,\r\n\t * and is `undefined` for read-only sets stored in the DFA.\r\n\t */\r\n\tprivate unmerged?: ATNConfig[];\r\n\r\n\t/**\r\n\t * This is a list of all configs in this set.\r\n\t */\r\n\tprivate configs: ATNConfig[];\r\n\r\n\tprivate _uniqueAlt: number = 0;\r\n\tprivate _conflictInfo?: ConflictInfo;\r\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\r\n\t// while computing a closure operation. Don't make a DFA state from this.\r\n\tprivate _hasSemanticContext: boolean = false;\r\n\tprivate _dipsIntoOuterContext: boolean = false;\r\n\t/**\r\n\t * When `true`, this config set represents configurations where the entire\r\n\t * outer context has been consumed by the ATN interpreter. This prevents the\r\n\t * {@link ParserATNSimulator#closure} from pursuing the global FOLLOW when a\r\n\t * rule stop state is reached with an empty prediction context.\r\n\t *\r\n\t * Note: `outermostConfigSet` and {@link #dipsIntoOuterContext} should never\r\n\t * be true at the same time.\r\n\t */\r\n\tprivate outermostConfigSet: boolean = false;\r\n\r\n\tprivate cachedHashCode: number = -1;\r\n\r\n\tconstructor();\r\n\tconstructor(set: ATNConfigSet, readonly: boolean);\r\n\tconstructor(set?: ATNConfigSet, readonly?: boolean) {\r\n\t\tif (!set) {\r\n\t\t\tthis.mergedConfigs = NewKeyedConfigMap();\r\n\t\t\tthis.unmerged = [];\r\n\t\t\tthis.configs = [];\r\n\r\n\t\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\t} else {\r\n\r\n\t\t\tif (readonly) {\r\n\t\t\t\tthis.mergedConfigs = undefined;\r\n\t\t\t\tthis.unmerged = undefined;\r\n\t\t\t} else if (!set.isReadOnly) {\r\n\t\t\t\tthis.mergedConfigs = NewKeyedConfigMap(set.mergedConfigs);\r\n\t\t\t\tthis.unmerged = (set.unmerged as ATNConfig[]).slice(0);\r\n\t\t\t} else {\r\n\t\t\t\tthis.mergedConfigs = NewKeyedConfigMap();\r\n\t\t\t\tthis.unmerged = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.configs = set.configs.slice(0);\r\n\r\n\t\t\tthis._dipsIntoOuterContext = set._dipsIntoOuterContext;\r\n\t\t\tthis._hasSemanticContext = set._hasSemanticContext;\r\n\t\t\tthis.outermostConfigSet = set.outermostConfigSet;\r\n\r\n\t\t\tif (readonly || !set.isReadOnly) {\r\n\t\t\t\tthis._uniqueAlt = set._uniqueAlt;\r\n\t\t\t\tthis._conflictInfo = set._conflictInfo;\r\n\t\t\t}\r\n\r\n\t\t\t// if (!readonly && set.isReadOnly) -> addAll is called from clone()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the set of all alternatives represented by configurations in this\r\n\t * set.\r\n\t */\r\n\t@NotNull\r\n\tpublic getRepresentedAlternatives(): BitSet {\r\n\t\tif (this._conflictInfo != null) {\r\n\t\t\treturn this._conflictInfo.conflictedAlts.clone();\r\n\t\t}\r\n\r\n\t\tlet alts: BitSet = new BitSet();\r\n\t\tfor (let config of this) {\r\n\t\t\talts.set(config.alt);\r\n\t\t}\r\n\r\n\t\treturn alts;\r\n\t}\r\n\r\n\tget isReadOnly(): boolean {\r\n\t\treturn this.mergedConfigs == null;\r\n\t}\r\n\r\n\tget isOutermostConfigSet(): boolean {\r\n\t\treturn this.outermostConfigSet;\r\n\t}\r\n\r\n\tset isOutermostConfigSet(outermostConfigSet: boolean) {\r\n\t\tif (this.outermostConfigSet && !outermostConfigSet) {\r\n\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t}\r\n\r\n\t\tassert(!outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t\tthis.outermostConfigSet = outermostConfigSet;\r\n\t}\r\n\r\n\tpublic getStates(): Array2DHashSet {\r\n\t\tlet states = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\tfor (let c of this.configs) {\r\n\t\t\tstates.add(c.state);\r\n\t\t}\r\n\r\n\t\treturn states;\r\n\t}\r\n\r\n\tpublic optimizeConfigs(interpreter: ATNSimulator): void {\r\n\t\tif (this.configs.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let config of this.configs) {\r\n\t\t\tconfig.context = interpreter.atn.getCachedContext(config.context);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clone(readonly: boolean): ATNConfigSet {\r\n\t\tlet copy: ATNConfigSet = new ATNConfigSet(this, readonly);\r\n\t\tif (!readonly && this.isReadOnly) {\r\n\t\t\tcopy.addAll(this.configs);\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.configs.length;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.configs.length === 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic contains(o: any): boolean {\r\n\t\tif (!(o instanceof ATNConfig)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.mergedConfigs && this.unmerged) {\r\n\t\t\tlet config: ATNConfig = o;\r\n\t\t\tlet configKey = this.getKey(config);\r\n\t\t\tlet mergedConfig = this.mergedConfigs.get(configKey);\r\n\t\t\tif (mergedConfig != null && this.canMerge(config, configKey, mergedConfig)) {\r\n\t\t\t\treturn mergedConfig.contains(config);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let c of this.unmerged) {\r\n\t\t\t\tif (c.contains(o)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (let c of this.configs) {\r\n\t\t\t\tif (c.contains(o)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic *[Symbol.iterator](): IterableIterator {\r\n\t\tyield* this.configs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toArray(): ATNConfig[] {\r\n\t\treturn this.configs;\r\n\t}\r\n\r\n\tpublic add(e: ATNConfig): boolean;\r\n\tpublic add(e: ATNConfig, contextCache: PredictionContextCache | undefined): boolean;\r\n\tpublic add(e: ATNConfig, contextCache?: PredictionContextCache): boolean {\r\n\t\tthis.ensureWritable();\r\n\t\tif (!this.mergedConfigs || !this.unmerged) {\r\n\t\t\tthrow new Error(\"Covered by ensureWritable but duplicated here for strict null check limitation\");\r\n\t\t}\r\n\r\n\t\tassert(!this.outermostConfigSet || !e.reachesIntoOuterContext);\r\n\r\n\t\tif (contextCache == null) {\r\n\t\t\tcontextCache = PredictionContextCache.UNCACHED;\r\n\t\t}\r\n\r\n\t\tlet addKey: boolean;\r\n\t\tlet key = this.getKey(e);\r\n\t\tlet mergedConfig = this.mergedConfigs.get(key);\r\n\t\taddKey = (mergedConfig == null);\r\n\t\tif (mergedConfig != null && this.canMerge(e, key, mergedConfig)) {\r\n\t\t\tmergedConfig.outerContextDepth = Math.max(mergedConfig.outerContextDepth, e.outerContextDepth);\r\n\t\t\tif (e.isPrecedenceFilterSuppressed) {\r\n\t\t\t\tmergedConfig.isPrecedenceFilterSuppressed = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet joined: PredictionContext = PredictionContext.join(mergedConfig.context, e.context, contextCache);\r\n\t\t\tthis.updatePropertiesForMergedConfig(e);\r\n\t\t\tif (mergedConfig.context === joined) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tmergedConfig.context = joined;\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.unmerged.length; i++) {\r\n\t\t\tlet unmergedConfig: ATNConfig = this.unmerged[i];\r\n\t\t\tif (this.canMerge(e, key, unmergedConfig)) {\r\n\t\t\t\tunmergedConfig.outerContextDepth = Math.max(unmergedConfig.outerContextDepth, e.outerContextDepth);\r\n\t\t\t\tif (e.isPrecedenceFilterSuppressed) {\r\n\t\t\t\t\tunmergedConfig.isPrecedenceFilterSuppressed = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet joined: PredictionContext = PredictionContext.join(unmergedConfig.context, e.context, contextCache);\r\n\t\t\t\tthis.updatePropertiesForMergedConfig(e);\r\n\t\t\t\tif (unmergedConfig.context === joined) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tunmergedConfig.context = joined;\r\n\r\n\t\t\t\tif (addKey) {\r\n\t\t\t\t\tthis.mergedConfigs.put(key, unmergedConfig);\r\n\t\t\t\t\tthis.unmerged.splice(i, 1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.configs.push(e);\r\n\t\tif (addKey) {\r\n\t\t\tthis.mergedConfigs.put(key, e);\r\n\t\t} else {\r\n\t\t\tthis.unmerged.push(e);\r\n\t\t}\r\n\r\n\t\tthis.updatePropertiesForAddedConfig(e);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate updatePropertiesForMergedConfig(config: ATNConfig): void {\r\n\t\t// merged configs can't change the alt or semantic context\r\n\t\tthis._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext;\r\n\t\tassert(!this.outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t}\r\n\r\n\tprivate updatePropertiesForAddedConfig(config: ATNConfig): void {\r\n\t\tif (this.configs.length === 1) {\r\n\t\t\tthis._uniqueAlt = config.alt;\r\n\t\t} else if (this._uniqueAlt !== config.alt) {\r\n\t\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\t}\r\n\r\n\t\tthis._hasSemanticContext = this._hasSemanticContext || !SemanticContext.NONE.equals(config.semanticContext);\r\n\t\tthis._dipsIntoOuterContext = this._dipsIntoOuterContext || config.reachesIntoOuterContext;\r\n\t\tassert(!this.outermostConfigSet || !this._dipsIntoOuterContext);\r\n\t}\r\n\r\n\tprotected canMerge(left: ATNConfig, leftKey: { state: number, alt: number }, right: ATNConfig): boolean {\r\n\t\tif (left.state.stateNumber !== right.state.stateNumber) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (leftKey.alt !== right.alt) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn left.semanticContext.equals(right.semanticContext);\r\n\t}\r\n\r\n\tprotected getKey(e: ATNConfig): { state: number, alt: number } {\r\n\t\treturn { state: e.state.stateNumber, alt: e.alt };\r\n\t}\r\n\r\n\t@Override\r\n\tpublic containsAll(c: Iterable): boolean {\r\n\t\tfor (let o of c) {\r\n\t\t\tif (!(o instanceof ATNConfig)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.contains(o)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic addAll(c: Iterable): boolean;\r\n\tpublic addAll(c: Iterable, contextCache: PredictionContextCache): boolean;\r\n\tpublic addAll(c: Iterable, contextCache?: PredictionContextCache): boolean {\r\n\t\tthis.ensureWritable();\r\n\r\n\t\tlet changed: boolean = false;\r\n\t\tfor (let group of c) {\r\n\t\t\tif (this.add(group, contextCache)) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clear(): void {\r\n\t\tthis.ensureWritable();\r\n\t\tif (!this.mergedConfigs || !this.unmerged) {\r\n\t\t\tthrow new Error(\"Covered by ensureWritable but duplicated here for strict null check limitation\");\r\n\t\t}\r\n\r\n\t\tthis.mergedConfigs.clear();\r\n\t\tthis.unmerged.length = 0;\r\n\t\tthis.configs.length = 0;\r\n\r\n\t\tthis._dipsIntoOuterContext = false;\r\n\t\tthis._hasSemanticContext = false;\r\n\t\tthis._uniqueAlt = ATN.INVALID_ALT_NUMBER;\r\n\t\tthis._conflictInfo = undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (this === obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(obj instanceof ATNConfigSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.outermostConfigSet === obj.outermostConfigSet\r\n\t\t\t&& Utils.equals(this._conflictInfo, obj._conflictInfo)\r\n\t\t\t&& ArrayEqualityComparator.INSTANCE.equals(this.configs, obj.configs);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tif (this.isReadOnly && this.cachedHashCode !== -1) {\r\n\t\t\treturn this.cachedHashCode;\r\n\t\t}\r\n\r\n\t\tlet hashCode: number = 1;\r\n\t\thashCode = 5 * hashCode ^ (this.outermostConfigSet ? 1 : 0);\r\n\t\thashCode = 5 * hashCode ^ ArrayEqualityComparator.INSTANCE.hashCode(this.configs);\r\n\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthis.cachedHashCode = hashCode;\r\n\t\t}\r\n\r\n\t\treturn hashCode;\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(showContext: boolean): string;\r\n\tpublic toString(showContext?: boolean): string {\r\n\t\tif (showContext == null) {\r\n\t\t\tshowContext = false;\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\t\tlet sortedConfigs = this.configs.slice(0);\r\n\t\tsortedConfigs.sort((o1, o2) => {\r\n\t\t\tif (o1.alt !== o2.alt) {\r\n\t\t\t\treturn o1.alt - o2.alt;\r\n\t\t\t}\r\n\t\t\telse if (o1.state.stateNumber !== o2.state.stateNumber) {\r\n\t\t\t\treturn o1.state.stateNumber - o2.state.stateNumber;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn o1.semanticContext.toString().localeCompare(o2.semanticContext.toString());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tbuf += (\"[\");\r\n\t\tfor (let i = 0; i < sortedConfigs.length; i++) {\r\n\t\t\tif (i > 0) {\r\n\t\t\t\tbuf += (\", \");\r\n\t\t\t}\r\n\t\t\tbuf += (sortedConfigs[i].toString(undefined, true, showContext));\r\n\t\t}\r\n\t\tbuf += (\"]\");\r\n\r\n\t\tif (this._hasSemanticContext) {\r\n\t\t\tbuf += (\",hasSemanticContext=\") + (this._hasSemanticContext);\r\n\t\t}\r\n\t\tif (this._uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tbuf += (\",uniqueAlt=\") + (this._uniqueAlt);\r\n\t\t}\r\n\t\tif (this._conflictInfo != null) {\r\n\t\t\tbuf += (\",conflictingAlts=\") + (this._conflictInfo.conflictedAlts);\r\n\t\t\tif (!this._conflictInfo.isExact) {\r\n\t\t\t\tbuf += (\"*\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._dipsIntoOuterContext) {\r\n\t\t\tbuf += (\",dipsIntoOuterContext\");\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n\r\n\tget uniqueAlt(): number {\r\n\t\treturn this._uniqueAlt;\r\n\t}\r\n\r\n\tget hasSemanticContext(): boolean {\r\n\t\treturn this._hasSemanticContext;\r\n\t}\r\n\r\n\tset hasSemanticContext(value: boolean) {\r\n\t\tthis.ensureWritable();\r\n\t\tthis._hasSemanticContext = value;\r\n\t}\r\n\r\n\tget conflictInfo(): ConflictInfo | undefined {\r\n\t\treturn this._conflictInfo;\r\n\t}\r\n\r\n\tset conflictInfo(conflictInfo: ConflictInfo | undefined) {\r\n\t\tthis.ensureWritable();\r\n\t\tthis._conflictInfo = conflictInfo;\r\n\t}\r\n\r\n\tget conflictingAlts(): BitSet | undefined {\r\n\t\tif (this._conflictInfo == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this._conflictInfo.conflictedAlts;\r\n\t}\r\n\r\n\tget isExactConflict(): boolean {\r\n\t\tif (this._conflictInfo == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._conflictInfo.isExact;\r\n\t}\r\n\r\n\tget dipsIntoOuterContext(): boolean {\r\n\t\treturn this._dipsIntoOuterContext;\r\n\t}\r\n\r\n\tpublic get(index: number): ATNConfig {\r\n\t\treturn this.configs[index];\r\n\t}\r\n\r\n\tprotected ensureWritable(): void {\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthrow new Error(\"This ATNConfigSet is read only.\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.7771056-07:00\r\n\r\nimport { AcceptStateInfo } from \"./AcceptStateInfo\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNConfigSet } from \"../atn/ATNConfigSet\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { LexerActionExecutor } from \"../atn/LexerActionExecutor\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { PredictionContext } from \"../atn/PredictionContext\";\r\nimport { SemanticContext } from \"../atn/SemanticContext\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/** A DFA state represents a set of possible ATN configurations.\r\n * As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\r\n * to keep track of all possible states the ATN can be in after\r\n * reading each input symbol. That is to say, after reading\r\n * input a1a2..an, the DFA is in a state that represents the\r\n * subset T of the states of the ATN that are reachable from the\r\n * ATN's start state along some path labeled a1a2..an.\"\r\n * In conventional NFA→DFA conversion, therefore, the subset T\r\n * would be a bitset representing the set of states the\r\n * ATN could be in. We need to track the alt predicted by each\r\n * state as well, however. More importantly, we need to maintain\r\n * a stack of states, tracking the closure operations as they\r\n * jump from rule to rule, emulating rule invocations (method calls).\r\n * I have to add a stack to simulate the proper lookahead sequences for\r\n * the underlying LL grammar from which the ATN was derived.\r\n *\r\n * I use a set of ATNConfig objects not simple states. An ATNConfig\r\n * is both a state (ala normal conversion) and a RuleContext describing\r\n * the chain of rules (if any) followed to arrive at that state.\r\n *\r\n * A DFA state may have multiple references to a particular state,\r\n * but with different ATN contexts (with same or different alts)\r\n * meaning that state was reached via a different set of rule invocations.\r\n */\r\nexport class DFAState {\r\n\tpublic stateNumber: number = -1;\r\n\r\n\t@NotNull\r\n\tpublic configs: ATNConfigSet;\r\n\r\n\t/** `edges.get(symbol)` points to target of symbol.\r\n\t */\r\n\t@NotNull\r\n\tprivate readonly edges: Map;\r\n\r\n\tprivate _acceptStateInfo: AcceptStateInfo | undefined;\r\n\r\n\t/** These keys for these edges are the top level element of the global context. */\r\n\t@NotNull\r\n\tprivate readonly contextEdges: Map;\r\n\r\n\t/** Symbols in this set require a global context transition before matching an input symbol. */\r\n\tprivate contextSymbols: BitSet | undefined;\r\n\r\n\t/**\r\n\t * This list is computed by {@link ParserATNSimulator#predicateDFAState}.\r\n\t */\r\n\tpublic predicates: DFAState.PredPrediction[] | undefined;\r\n\r\n\t/**\r\n\t * Constructs a new `DFAState`.\r\n\t *\r\n\t * @param configs The set of ATN configurations defining this state.\r\n\t */\r\n\tconstructor(configs: ATNConfigSet) {\r\n\t\tthis.configs = configs;\r\n\t\tthis.edges = new Map();\r\n\t\tthis.contextEdges = new Map();\r\n\t}\r\n\r\n\tget isContextSensitive(): boolean {\r\n\t\treturn !!this.contextSymbols;\r\n\t}\r\n\r\n\tpublic isContextSymbol(symbol: number): boolean {\r\n\t\tif (!this.isContextSensitive) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.contextSymbols!.get(symbol);\r\n\t}\r\n\r\n\tpublic setContextSymbol(symbol: number): void {\r\n\t\tassert(this.isContextSensitive);\r\n\t\tthis.contextSymbols!.set(symbol);\r\n\t}\r\n\r\n\tpublic setContextSensitive(atn: ATN): void {\r\n\t\tassert(!this.configs.isOutermostConfigSet);\r\n\t\tif (this.isContextSensitive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.contextSymbols) {\r\n\t\t\tthis.contextSymbols = new BitSet();\r\n\t\t}\r\n\t}\r\n\r\n\tget acceptStateInfo(): AcceptStateInfo | undefined {\r\n\t\treturn this._acceptStateInfo;\r\n\t}\r\n\r\n\tset acceptStateInfo(acceptStateInfo: AcceptStateInfo | undefined) {\r\n\t\tthis._acceptStateInfo = acceptStateInfo;\r\n\t}\r\n\r\n\tget isAcceptState(): boolean {\r\n\t\treturn !!this._acceptStateInfo;\r\n\t}\r\n\r\n\tget prediction(): number {\r\n\t\tif (!this._acceptStateInfo) {\r\n\t\t\treturn ATN.INVALID_ALT_NUMBER;\r\n\t\t}\r\n\r\n\t\treturn this._acceptStateInfo.prediction;\r\n\t}\r\n\r\n\tget lexerActionExecutor(): LexerActionExecutor | undefined {\r\n\t\tif (!this._acceptStateInfo) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this._acceptStateInfo.lexerActionExecutor;\r\n\t}\r\n\r\n\tpublic getTarget(symbol: number): DFAState | undefined {\r\n\t\treturn this.edges.get(symbol);\r\n\t}\r\n\r\n\tpublic setTarget(symbol: number, target: DFAState): void {\r\n\t\tthis.edges.set(symbol, target);\r\n\t}\r\n\r\n\tpublic getEdgeMap(): Map {\r\n\t\treturn this.edges;\r\n\t}\r\n\r\n\tpublic getContextTarget(invokingState: number): DFAState | undefined {\r\n\t\tif (invokingState === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tinvokingState = -1;\r\n\t\t}\r\n\r\n\t\treturn this.contextEdges.get(invokingState);\r\n\t}\r\n\r\n\tpublic setContextTarget(invokingState: number, target: DFAState): void {\r\n\t\tif (!this.isContextSensitive) {\r\n\t\t\tthrow new Error(\"The state is not context sensitive.\");\r\n\t\t}\r\n\r\n\t\tif (invokingState === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tinvokingState = -1;\r\n\t\t}\r\n\r\n\t\tthis.contextEdges.set(invokingState, target);\r\n\t}\r\n\r\n\tpublic getContextEdgeMap(): Map {\r\n\t\tlet map = new Map(this.contextEdges);\r\n\t\tlet existing = map.get(-1);\r\n\t\tif (existing !== undefined) {\r\n\t\t\tif (map.size === 1) {\r\n\t\t\t\tlet result = new Map();\r\n\t\t\t\tresult.set(PredictionContext.EMPTY_FULL_STATE_KEY, existing);\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmap.delete(-1);\r\n\t\t\t\tmap.set(PredictionContext.EMPTY_FULL_STATE_KEY, existing);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn map;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize(7);\r\n\t\thash = MurmurHash.update(hash, this.configs.hashCode());\r\n\t\thash = MurmurHash.finish(hash, 1);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Two {@link DFAState} instances are equal if their ATN configuration sets\r\n\t * are the same. This method is used to see if a state already exists.\r\n\t *\r\n\t * Because the number of alternatives and number of ATN configurations are\r\n\t * finite, there is a finite number of DFA states that can be processed.\r\n\t * This is necessary to show that the algorithm terminates.\r\n\t *\r\n\t * Cannot test the DFA state numbers here because in\r\n\t * {@link ParserATNSimulator#addDFAState} we need to know if any other state\r\n\t * exists that has this exact set of ATN configurations. The\r\n\t * {@link #stateNumber} is irrelevant.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\t// compare set of ATN configurations in this set with other\r\n\t\tif (this === o) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!(o instanceof DFAState)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet other: DFAState = o;\r\n\t\tlet sameSet: boolean = this.configs.equals(other.configs);\r\n//\t\tSystem.out.println(\"DFAState.equals: \"+configs+(sameSet?\"==\":\"!=\")+other.configs);\r\n\t\treturn sameSet;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet buf = \"\";\r\n\t\tbuf += (this.stateNumber) + (\":\") + (this.configs);\r\n\t\tif (this.isAcceptState) {\r\n\t\t\tbuf += (\"=>\");\r\n\t\t\tif (this.predicates) {\r\n\t\t\t\tbuf += this.predicates;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbuf += (this.prediction);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n\r\nexport namespace DFAState {\r\n\t/** Map a predicate to a predicted alternative. */\r\n\texport class PredPrediction {\r\n\t\t@NotNull\r\n\t\tpublic pred: SemanticContext; // never null; at least SemanticContext.NONE\r\n\t\tpublic alt: number;\r\n\t\tconstructor(@NotNull pred: SemanticContext, alt: number) {\r\n\t\t\tthis.alt = alt;\r\n\t\t\tthis.pred = pred;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic toString(): string {\r\n\t\t\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.3184311-07:00\r\n\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\n\r\nexport abstract class ATNSimulator {\r\n\t/** Must distinguish between missing edge and edge we know leads nowhere */\r\n\tprivate static _ERROR: DFAState;\r\n\t@NotNull\r\n\tstatic get ERROR(): DFAState {\r\n\t\tif (!ATNSimulator._ERROR) {\r\n\t\t\tATNSimulator._ERROR = new DFAState(new ATNConfigSet());\r\n\t\t\tATNSimulator._ERROR.stateNumber = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t}\r\n\r\n\t\treturn ATNSimulator._ERROR;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tconstructor(@NotNull atn: ATN) {\r\n\t\tthis.atn = atn;\r\n\t}\r\n\r\n\tpublic abstract reset(): void;\r\n\r\n\t/**\r\n\t * Clear the DFA cache used by the current instance. Since the DFA cache may\r\n\t * be shared by multiple ATN simulators, this method may affect the\r\n\t * performance (but not accuracy) of other parsers which are being used\r\n\t * concurrently.\r\n\t *\r\n\t * @ if the current instance does not\r\n\t * support clearing the DFA.\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tpublic clearDFA(): void {\r\n\t\tthis.atn.clearDFA();\r\n\t}\r\n}\r\n\r\nexport namespace ATNSimulator {\r\n\tconst RULE_VARIANT_DELIMITER: string = \"$\";\r\n\tconst RULE_LF_VARIANT_MARKER: string = \"$lf$\";\r\n\tconst RULE_NOLF_VARIANT_MARKER: string = \"$nolf$\";\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.5479602-07:00\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ConsoleErrorListener implements ANTLRErrorListener {\r\n\t/**\r\n\t * Provides a default instance of {@link ConsoleErrorListener}.\r\n\t */\r\n\tpublic static readonly INSTANCE: ConsoleErrorListener = new ConsoleErrorListener();\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This implementation prints messages to {@link System#err} containing the\r\n\t * values of `line`, `charPositionInLine`, and `msg` using\r\n\t * the following format.\r\n\t *\r\n\t *
        \r\n\t * line *line*:*charPositionInLine* *msg*\r\n\t * 
        \r\n\t */\r\n\tpublic syntaxError(\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\tconsole.error(`line ${line}:${charPositionInLine} ${msg}`);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.8126690-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorListener} dispatches all calls to a\r\n * collection of delegate listeners. This reduces the effort required to support multiple\r\n * listeners.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ProxyErrorListener> implements ANTLRErrorListener {\r\n\r\n\tconstructor(private delegates: TListener[]) {\r\n\t\tif (!delegates) {\r\n\t\t\tthrow new Error(\"Invalid delegates\");\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getDelegates(): ReadonlyArray {\r\n\t\treturn this.delegates;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\t@NotNull recognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t@NotNull msg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\tthis.delegates.forEach((listener) => {\r\n\t\t\tif (listener.syntaxError) {\r\n\t\t\t\tlistener.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.1954441-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { ConsoleErrorListener } from \"./ConsoleErrorListener\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { ParseInfo } from \"./atn/ParseInfo\";\r\nimport { ProxyErrorListener } from \"./ProxyErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { SuppressWarnings, NotNull } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\nimport { VocabularyImpl } from \"./VocabularyImpl\";\r\n\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nexport abstract class Recognizer {\r\n\tpublic static readonly EOF: number = -1;\r\n\r\n\tprivate static tokenTypeMapCache =\r\n\t\tnew WeakMap>();\r\n\tprivate static ruleIndexMapCache =\r\n\t\tnew WeakMap>();\r\n\r\n\t@SuppressWarnings(\"serial\")\r\n\t@NotNull\r\n\tprivate readonly _listeners: Array> = [ConsoleErrorListener.INSTANCE];\r\n\r\n\tprotected _interp!: ATNInterpreter;\r\n\r\n\tprivate _stateNumber = -1;\r\n\r\n\tpublic abstract readonly ruleNames: string[];\r\n\r\n\t/**\r\n\t * Get the vocabulary used by the recognizer.\r\n\t *\r\n\t * @returns A {@link Vocabulary} instance providing information about the\r\n\t * vocabulary used by the grammar.\r\n\t */\r\n\tpublic abstract readonly vocabulary: Vocabulary;\r\n\r\n\t/**\r\n\t * Get a map from token names to token types.\r\n\t *\r\n\t * Used for XPath and tree pattern compilation.\r\n\t */\r\n\t@NotNull\r\n\tpublic getTokenTypeMap(): ReadonlyMap {\r\n\t\tlet vocabulary: Vocabulary = this.vocabulary;\r\n\t\tlet result = Recognizer.tokenTypeMapCache.get(vocabulary);\r\n\t\tif (result == null) {\r\n\t\t\tlet intermediateResult = new Map();\r\n\t\t\tfor (let i = 0; i <= this.atn.maxTokenType; i++) {\r\n\t\t\t\tlet literalName = vocabulary.getLiteralName(i);\r\n\t\t\t\tif (literalName != null) {\r\n\t\t\t\t\tintermediateResult.set(literalName, i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet symbolicName = vocabulary.getSymbolicName(i);\r\n\t\t\t\tif (symbolicName != null) {\r\n\t\t\t\t\tintermediateResult.set(symbolicName, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tintermediateResult.set(\"EOF\", Token.EOF);\r\n\t\t\tresult = intermediateResult;\r\n\t\t\tRecognizer.tokenTypeMapCache.set(vocabulary, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Get a map from rule names to rule indexes.\r\n\t *\r\n\t * Used for XPath and tree pattern compilation.\r\n\t */\r\n\t@NotNull\r\n\tpublic getRuleIndexMap(): ReadonlyMap {\r\n\t\tlet ruleNames: string[] = this.ruleNames;\r\n\t\tif (ruleNames == null) {\r\n\t\t\tthrow new Error(\"The current recognizer does not provide a list of rule names.\");\r\n\t\t}\r\n\r\n\t\tlet result: ReadonlyMap | undefined = Recognizer.ruleIndexMapCache.get(ruleNames);\r\n\t\tif (result == null) {\r\n\t\t\tresult = Utils.toMap(ruleNames);\r\n\t\t\tRecognizer.ruleIndexMapCache.set(ruleNames, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic getTokenType(tokenName: string): number {\r\n\t\tlet ttype = this.getTokenTypeMap().get(tokenName);\r\n\t\tif (ttype != null) {\r\n\t\t\treturn ttype;\r\n\t\t}\r\n\t\treturn Token.INVALID_TYPE;\r\n\t}\r\n\r\n\t/**\r\n\t * If this recognizer was generated, it will have a serialized ATN\r\n\t * representation of the grammar.\r\n\t *\r\n\t * For interpreters, we don't know their serialized ATN despite having\r\n\t * created the interpreter from it.\r\n\t */\r\n\t@NotNull\r\n\tget serializedATN(): string {\r\n\t\tthrow new Error(\"there is no serialized ATN\");\r\n\t}\r\n\r\n\t/** For debugging and other purposes, might want the grammar name.\r\n\t * Have ANTLR generate an implementation for this method.\r\n\t */\r\n\tpublic abstract readonly grammarFileName: string;\r\n\r\n\t/**\r\n\t * Get the {@link ATN} used by the recognizer for prediction.\r\n\t *\r\n\t * @returns The {@link ATN} used by the recognizer for prediction.\r\n\t */\r\n\t@NotNull\r\n\tget atn(): ATN {\r\n\t\treturn this._interp.atn;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the ATN interpreter used by the recognizer for prediction.\r\n\t *\r\n\t * @returns The ATN interpreter used by the recognizer for prediction.\r\n\t */\r\n\t@NotNull\r\n\tget interpreter(): ATNInterpreter {\r\n\t\treturn this._interp;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the ATN interpreter used by the recognizer for prediction.\r\n\t *\r\n\t * @param interpreter The ATN interpreter used by the recognizer for\r\n\t * prediction.\r\n\t */\r\n\tset interpreter(@NotNull interpreter: ATNInterpreter) {\r\n\t\tthis._interp = interpreter;\r\n\t}\r\n\r\n\t/** If profiling during the parse/lex, this will return DecisionInfo records\r\n\t * for each decision in recognizer in a ParseInfo object.\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tget parseInfo(): Promise {\r\n\t\treturn Promise.resolve(undefined);\r\n\t}\r\n\r\n\t/** What is the error header, normally line/character position information? */\r\n\t@NotNull\r\n\tpublic getErrorHeader(@NotNull e: RecognitionException): string {\r\n\t\tlet token = e.getOffendingToken();\r\n\t\tif (!token) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\tlet line = token.line;\r\n\t\tlet charPositionInLine: number = token.charPositionInLine;\r\n\t\treturn \"line \" + line + \":\" + charPositionInLine;\r\n\t}\r\n\r\n\t/**\r\n\t * @exception NullPointerException if `listener` is `undefined`.\r\n\t */\r\n\tpublic addErrorListener(@NotNull listener: ANTLRErrorListener): void {\r\n\t\tif (!listener) {\r\n\t\t\tthrow new TypeError(\"listener must not be null\");\r\n\t\t}\r\n\t\tthis._listeners.push(listener);\r\n\t}\r\n\r\n\tpublic removeErrorListener(@NotNull listener: ANTLRErrorListener): void {\r\n\t\tlet position = this._listeners.indexOf(listener);\r\n\t\tif (position !== -1) {\r\n\t\t\tthis._listeners.splice(position, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeErrorListeners(): void {\r\n\t\tthis._listeners.length = 0;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getErrorListeners(): Array> {\r\n\t\treturn this._listeners.slice(0);\r\n\t}\r\n\r\n\tpublic getErrorListenerDispatch(): ANTLRErrorListener {\r\n\t\treturn new ProxyErrorListener>(this.getErrorListeners());\r\n\t}\r\n\r\n\t// subclass needs to override these if there are sempreds or actions\r\n\t// that the ATN interp needs to execute\r\n\tpublic sempred(\r\n\t\t_localctx: RuleContext | undefined,\r\n\t\truleIndex: number,\r\n\t\tactionIndex: number): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic precpred(\r\n\t\tlocalctx: RuleContext | undefined,\r\n\t\tprecedence: number): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic action(\r\n\t\t_localctx: RuleContext | undefined,\r\n\t\truleIndex: number,\r\n\t\tactionIndex: number): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\tget state(): number {\r\n\t\treturn this._stateNumber;\r\n\t}\r\n\r\n\t/** Indicate that the recognizer has changed internal state that is\r\n\t * consistent with the ATN state passed in. This way we always know\r\n\t * where we are in the ATN as the parser goes along. The rule\r\n\t * context objects form a stack that lets us see the stack of\r\n\t * invoking rules. Combine this and we have complete ATN\r\n\t * configuration information.\r\n\t */\r\n\tset state(atnState: number) {\r\n//\t\tSystem.err.println(\"setState \"+atnState);\r\n\t\tthis._stateNumber = atnState;\r\n//\t\tif ( traceATNStates ) _ctx.trace(atnState);\r\n\t}\r\n\r\n\tpublic abstract readonly inputStream: IntStream | undefined;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.5829654-07:00\r\n\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\n/**\r\n * This class provides a default implementation of the {@link Vocabulary}\r\n * interface.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class VocabularyImpl implements Vocabulary {\r\n\t/**\r\n\t * Gets an empty {@link Vocabulary} instance.\r\n\t *\r\n\t * No literal or symbol names are assigned to token types, so\r\n\t * {@link #getDisplayName(int)} returns the numeric value for all tokens\r\n\t * except {@link Token#EOF}.\r\n\t */\r\n\t@NotNull\r\n\tpublic static readonly EMPTY_VOCABULARY: VocabularyImpl = new VocabularyImpl([], [], []);\r\n\r\n\t@NotNull\r\n\tprivate readonly literalNames: Array;\r\n\t@NotNull\r\n\tprivate readonly symbolicNames: Array;\r\n\t@NotNull\r\n\tprivate readonly displayNames: Array;\r\n\r\n\tprivate _maxTokenType: number;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link VocabularyImpl} from the specified\r\n\t * literal, symbolic, and display token names.\r\n\t *\r\n\t * @param literalNames The literal names assigned to tokens, or an empty array\r\n\t * if no literal names are assigned.\r\n\t * @param symbolicNames The symbolic names assigned to tokens, or\r\n\t * an empty array if no symbolic names are assigned.\r\n\t * @param displayNames The display names assigned to tokens, or an empty array\r\n\t * to use the values in `literalNames` and `symbolicNames` as\r\n\t * the source of display names, as described in\r\n\t * {@link #getDisplayName(int)}.\r\n\t *\r\n\t * @see #getLiteralName(int)\r\n\t * @see #getSymbolicName(int)\r\n\t * @see #getDisplayName(int)\r\n\t */\r\n\tconstructor(literalNames: Array, symbolicNames: Array, displayNames: Array) {\r\n\t\tthis.literalNames = literalNames;\r\n\t\tthis.symbolicNames = symbolicNames;\r\n\t\tthis.displayNames = displayNames;\r\n\t\t// See note here on -1 part: https://github.com/antlr/antlr4/pull/1146\r\n\t\tthis._maxTokenType =\r\n\t\t\tMath.max(this.displayNames.length,\r\n\t\t\t\tMath.max(this.literalNames.length, this.symbolicNames.length)) - 1;\r\n\t}\r\n\r\n\t@Override\r\n\tget maxTokenType(): number {\r\n\t\treturn this._maxTokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getLiteralName(tokenType: number): string | undefined {\r\n\t\tif (tokenType >= 0 && tokenType < this.literalNames.length) {\r\n\t\t\treturn this.literalNames[tokenType];\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getSymbolicName(tokenType: number): string | undefined {\r\n\t\tif (tokenType >= 0 && tokenType < this.symbolicNames.length) {\r\n\t\t\treturn this.symbolicNames[tokenType];\r\n\t\t}\r\n\r\n\t\tif (tokenType === Token.EOF) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic getDisplayName(tokenType: number): string {\r\n\t\tif (tokenType >= 0 && tokenType < this.displayNames.length) {\r\n\t\t\tlet displayName = this.displayNames[tokenType];\r\n\t\t\tif (displayName) {\r\n\t\t\t\treturn displayName;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet literalName = this.getLiteralName(tokenType);\r\n\t\tif (literalName) {\r\n\t\t\treturn literalName;\r\n\t\t}\r\n\r\n\t\tlet symbolicName = this.getSymbolicName(tokenType);\r\n\t\tif (symbolicName) {\r\n\t\t\treturn symbolicName;\r\n\t\t}\r\n\r\n\t\treturn String(tokenType);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.5097925-07:00\r\n\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNSimulator } from \"../atn/ATNSimulator\";\r\nimport { ATNState } from \"../atn/ATNState\";\r\nimport { DFA } from \"./DFA\";\r\nimport { DFAState } from \"./DFAState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { PredictionContext } from \"../atn/PredictionContext\";\r\nimport { Recognizer } from \"../Recognizer\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\n/** A DFA walker that knows how to dump them to serialized strings. */\r\nexport class DFASerializer {\r\n\t@NotNull\r\n\tprivate dfa: DFA;\r\n\t@NotNull\r\n\tprivate vocabulary: Vocabulary;\r\n\r\n\tpublic ruleNames?: string[];\r\n\r\n\tpublic atn?: ATN;\r\n\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@NotNull*/ vocabulary: Vocabulary);\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@Nullable*/ parser: Recognizer | undefined);\r\n\tconstructor(/*@NotNull*/ dfa: DFA, /*@NotNull*/ vocabulary: Vocabulary, /*@Nullable*/ ruleNames: string[] | undefined, /*@Nullable*/ atn: ATN | undefined);\r\n\tconstructor(dfa: DFA, vocabulary: Vocabulary | Recognizer | undefined, ruleNames?: string[], atn?: ATN) {\r\n\t\tif (vocabulary instanceof Recognizer) {\r\n\t\t\truleNames = vocabulary.ruleNames;\r\n\t\t\tatn = vocabulary.atn;\r\n\t\t\tvocabulary = vocabulary.vocabulary;\r\n\t\t} else if (!vocabulary) {\r\n\t\t\tvocabulary = VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\t}\r\n\r\n\t\tthis.dfa = dfa;\r\n\t\tthis.vocabulary = vocabulary;\r\n\t\tthis.ruleNames = ruleNames;\r\n\t\tthis.atn = atn;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (!this.dfa.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet buf = \"\";\r\n\r\n\t\tif (this.dfa.states) {\r\n\t\t\tlet states: DFAState[] = new Array(...this.dfa.states.toArray());\r\n\t\t\tstates.sort((o1, o2) => o1.stateNumber - o2.stateNumber);\r\n\r\n\t\t\tfor (let s of states) {\r\n\t\t\t\tlet edges: Map = s.getEdgeMap();\r\n\t\t\t\tlet edgeKeys = [...edges.keys()].sort((a, b) => a - b);\r\n\t\t\t\tlet contextEdges: Map = s.getContextEdgeMap();\r\n\t\t\t\tlet contextEdgeKeys = [...contextEdges.keys()].sort((a, b) => a - b);\r\n\t\t\t\tfor (let entry of edgeKeys) {\r\n\t\t\t\t\tlet value = edges.get(entry);\r\n\t\t\t\t\tif ((value == null || value === ATNSimulator.ERROR) && !s.isContextSymbol(entry)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet contextSymbol: boolean = false;\r\n\t\t\t\t\tbuf += (this.getStateString(s)) + (\"-\") + (this.getEdgeLabel(entry)) + (\"->\");\r\n\t\t\t\t\tif (s.isContextSymbol(entry)) {\r\n\t\t\t\t\t\tbuf += (\"!\");\r\n\t\t\t\t\t\tcontextSymbol = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet t: DFAState | undefined = value;\r\n\t\t\t\t\tif (t && t.stateNumber !== ATNSimulator.ERROR.stateNumber) {\r\n\t\t\t\t\t\tbuf += (this.getStateString(t)) + (\"\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (contextSymbol) {\r\n\t\t\t\t\t\tbuf += (\"ctx\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (s.isContextSensitive) {\r\n\t\t\t\t\tfor (let entry of contextEdgeKeys) {\r\n\t\t\t\t\t\tbuf += (this.getStateString(s))\r\n\t\t\t\t\t\t\t+ (\"-\")\r\n\t\t\t\t\t\t\t+ (this.getContextLabel(entry))\r\n\t\t\t\t\t\t\t+ (\"->\")\r\n\t\t\t\t\t\t\t+ (this.getStateString(contextEdges.get(entry)!))\r\n\t\t\t\t\t\t\t+ (\"\\n\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet output: string = buf;\r\n\t\tif (output.length === 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\t//return Utils.sortLinesInString(output);\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprotected getContextLabel(i: number): string {\r\n\t\tif (i === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\treturn \"ctx:EMPTY_FULL\";\r\n\t\t}\r\n\t\telse if (i === PredictionContext.EMPTY_LOCAL_STATE_KEY) {\r\n\t\t\treturn \"ctx:EMPTY_LOCAL\";\r\n\t\t}\r\n\r\n\t\tif (this.atn && i > 0 && i <= this.atn.states.length) {\r\n\t\t\tlet state: ATNState = this.atn.states[i];\r\n\t\t\tlet ruleIndex: number = state.ruleIndex;\r\n\t\t\tif (this.ruleNames && ruleIndex >= 0 && ruleIndex < this.ruleNames.length) {\r\n\t\t\t\treturn \"ctx:\" + String(i) + \"(\" + this.ruleNames[ruleIndex] + \")\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn \"ctx:\" + String(i);\r\n\t}\r\n\r\n\tprotected getEdgeLabel(i: number): string {\r\n\t\treturn this.vocabulary.getDisplayName(i);\r\n\t}\r\n\r\n\tpublic getStateString(s: DFAState): string {\r\n\t\tif (s === ATNSimulator.ERROR) {\r\n\t\t\treturn \"ERROR\";\r\n\t\t}\r\n\r\n\t\tlet n: number = s.stateNumber;\r\n\t\tlet stateStr: string = \"s\" + n;\r\n\t\tif (s.isAcceptState) {\r\n\t\t\tif (s.predicates) {\r\n\t\t\t\tstateStr = \":s\" + n + \"=>\" + s.predicates;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tstateStr = \":s\" + n + \"=>\" + s.prediction;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s.isContextSensitive) {\r\n\t\t\tstateStr += \"*\";\r\n\t\t\tfor (let config of s.configs) {\r\n\t\t\t\tif (config.reachesIntoOuterContext) {\r\n\t\t\t\t\tstateStr += \"*\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stateStr;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:39.2167238-07:00\r\n\r\nimport { DFA } from \"./DFA\";\r\nimport { DFASerializer } from \"./DFASerializer\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nexport class LexerDFASerializer extends DFASerializer {\r\n\tconstructor( @NotNull dfa: DFA) {\r\n\t\tsuper(dfa, VocabularyImpl.EMPTY_VOCABULARY);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tprotected getEdgeLabel(i: number): string {\r\n\t\treturn \"'\" + String.fromCodePoint(i) + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.7099201-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\nimport { StarLoopbackState } from \"./StarLoopbackState\";\r\n\r\nexport class StarLoopEntryState extends DecisionState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: StarLoopbackState;\r\n\r\n\t/**\r\n\t * Indicates whether this state can benefit from a precedence DFA during SLL\r\n\t * decision making.\r\n\t *\r\n\t * This is a computed property that is calculated during ATN deserialization\r\n\t * and stored for use in {@link ParserATNSimulator} and\r\n\t * {@link ParserInterpreter}.\r\n\t *\r\n\t * @see `DFA.isPrecedenceDfa`\r\n\t */\r\n\tpublic precedenceRuleDecision: boolean = false;\r\n\r\n\t/**\r\n\t * For precedence decisions, this set marks states *S* which have all\r\n\t * of the following characteristics:\r\n\t *\r\n\t * * One or more invocation sites of the current rule returns to\r\n\t * *S*.\r\n\t * * The closure from *S* includes the current decision without\r\n\t * passing through any rule invocations or stepping out of the current\r\n\t * rule.\r\n\t *\r\n\t * This field is not used when {@link #precedenceRuleDecision} is\r\n\t * `false`.\r\n\t */\r\n\tpublic precedenceLoopbackStates: BitSet = new BitSet();\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_LOOP_ENTRY;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:38.3567094-07:00\r\n\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { ATNConfigSet } from \"../atn/ATNConfigSet\";\r\nimport { ATNState } from \"../atn/ATNState\";\r\nimport { ATNType } from \"../atn/ATNType\";\r\nimport { DecisionState } from \"../atn/DecisionState\";\r\nimport { DFASerializer } from \"./DFASerializer\";\r\nimport { DFAState } from \"./DFAState\";\r\nimport { LexerATNSimulator } from \"../atn/LexerATNSimulator\";\r\nimport { LexerDFASerializer } from \"./LexerDFASerializer\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { StarLoopEntryState } from \"../atn/StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"../atn/TokensStartState\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nexport class DFA {\r\n\t/**\r\n\t * A set of all states in the `DFA`.\r\n\t *\r\n\t * Note that this collection of states holds the DFA states for both SLL and LL prediction. Only the start state\r\n\t * needs to be differentiated for these cases, which is tracked by the `s0` and `s0full` fields.\r\n\t */\r\n\t@NotNull\r\n\tpublic readonly states: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\r\n\tpublic s0: DFAState | undefined;\r\n\r\n\tpublic s0full: DFAState | undefined;\r\n\r\n\tpublic readonly decision: number;\r\n\r\n\t/** From which ATN state did we create this DFA? */\r\n\t@NotNull\r\n\tpublic atnStartState: ATNState;\r\n\t/**\r\n\t * Note: this field is accessed as `atnStartState.atn` in other targets. The TypeScript target keeps a separate copy\r\n\t * to avoid a number of additional null/undefined checks each time the ATN is accessed.\r\n\t */\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tprivate nextStateNumber: number = 0;\r\n\r\n\t/**\r\n\t * `true` if this DFA is for a precedence decision; otherwise,\r\n\t * `false`. This is the backing field for {@link #isPrecedenceDfa}.\r\n\t */\r\n\tprivate precedenceDfa: boolean;\r\n\r\n\t/**\r\n\t * Constructs a `DFA` instance associated with a lexer mode.\r\n\t *\r\n\t * The start state for a `DFA` constructed with this constructor should be a `TokensStartState`, which is the start\r\n\t * state for a lexer mode. The prediction made by this DFA determines the lexer rule which matches the current\r\n\t * input.\r\n\t *\r\n\t * @param atnStartState The start state for the mode.\r\n\t */\r\n\tconstructor(atnStartState: TokensStartState);\r\n\t/**\r\n\t * Constructs a `DFA` instance associated with a decision.\r\n\t *\r\n\t * @param atnStartState The decision associated with this DFA.\r\n\t * @param decision The decision number.\r\n\t */\r\n\tconstructor(atnStartState: DecisionState, decision: number);\r\n\tconstructor(@NotNull atnStartState: ATNState, decision: number = 0) {\r\n\t\tif (!atnStartState.atn) {\r\n\t\t\tthrow new Error(\"The ATNState must be associated with an ATN\");\r\n\t\t}\r\n\r\n\t\tthis.atnStartState = atnStartState;\r\n\t\tthis.atn = atnStartState.atn;\r\n\t\tthis.decision = decision;\r\n\r\n\t\t// Precedence DFAs are associated with the special precedence decision created for left-recursive rules which\r\n\t\t// evaluate their alternatives using a precedence hierarchy. When such a decision is encountered, we mark this\r\n\t\t// DFA instance as a precedence DFA and initialize the initial states s0 and s0full to special DFAState\r\n\t\t// instances which use outgoing edges to link to the actual start state used for each precedence level.\r\n\t\tlet isPrecedenceDfa: boolean = false;\r\n\t\tif (atnStartState instanceof StarLoopEntryState) {\r\n\t\t\tif (atnStartState.precedenceRuleDecision) {\r\n\t\t\t\tisPrecedenceDfa = true;\r\n\t\t\t\tthis.s0 = new DFAState(new ATNConfigSet());\r\n\t\t\t\tthis.s0full = new DFAState(new ATNConfigSet());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.precedenceDfa = isPrecedenceDfa;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether this DFA is a precedence DFA. Precedence DFAs use a special\r\n\t * start state {@link #s0} which is not stored in {@link #states}. The\r\n\t * {@link DFAState#edges} array for this start state contains outgoing edges\r\n\t * supplying individual start states corresponding to specific precedence\r\n\t * values.\r\n\t *\r\n\t * @returns `true` if this is a precedence DFA; otherwise,\r\n\t * `false`.\r\n\t * @see Parser.precedence\r\n\t */\r\n\tget isPrecedenceDfa(): boolean {\r\n\t\treturn this.precedenceDfa;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the start state for a specific precedence value.\r\n\t *\r\n\t * @param precedence The current precedence.\r\n\t * @returns The start state corresponding to the specified precedence, or\r\n\t * `undefined` if no start state exists for the specified precedence.\r\n\t *\r\n\t * @ if this is not a precedence DFA.\r\n\t * @see `isPrecedenceDfa`\r\n\t */\r\n\tpublic getPrecedenceStartState(precedence: number, fullContext: boolean): DFAState | undefined {\r\n\t\tif (!this.isPrecedenceDfa) {\r\n\t\t\tthrow new Error(\"Only precedence DFAs may contain a precedence start state.\");\r\n\t\t}\r\n\r\n\t\t// s0 and s0full are never null for a precedence DFA\r\n\t\tif (fullContext) {\r\n\t\t\treturn (this.s0full as DFAState).getTarget(precedence);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn (this.s0 as DFAState).getTarget(precedence);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set the start state for a specific precedence value.\r\n\t *\r\n\t * @param precedence The current precedence.\r\n\t * @param startState The start state corresponding to the specified\r\n\t * precedence.\r\n\t *\r\n\t * @ if this is not a precedence DFA.\r\n\t * @see `isPrecedenceDfa`\r\n\t */\r\n\tpublic setPrecedenceStartState(precedence: number, fullContext: boolean, startState: DFAState): void {\r\n\t\tif (!this.isPrecedenceDfa) {\r\n\t\t\tthrow new Error(\"Only precedence DFAs may contain a precedence start state.\");\r\n\t\t}\r\n\r\n\t\tif (precedence < 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (fullContext) {\r\n\t\t\t// s0full is never null for a precedence DFA\r\n\t\t\t(this.s0full as DFAState).setTarget(precedence, startState);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// s0 is never null for a precedence DFA\r\n\t\t\t(this.s0 as DFAState).setTarget(precedence, startState);\r\n\t\t}\r\n\t}\r\n\r\n\tget isEmpty(): boolean {\r\n\t\tif (this.isPrecedenceDfa) {\r\n\t\t\t// s0 and s0full are never null for a precedence DFA\r\n\t\t\treturn this.s0!.getEdgeMap().size === 0 && this.s0full!.getEdgeMap().size === 0;\r\n\t\t}\r\n\r\n\t\treturn this.s0 == null && this.s0full == null;\r\n\t}\r\n\r\n\tget isContextSensitive(): boolean {\r\n\t\tif (this.isPrecedenceDfa) {\r\n\t\t\t// s0full is never null for a precedence DFA\r\n\t\t\treturn (this.s0full as DFAState).getEdgeMap().size > 0;\r\n\t\t}\r\n\r\n\t\treturn this.s0full != null;\r\n\t}\r\n\r\n\tpublic addState(state: DFAState): DFAState {\r\n\t\tstate.stateNumber = this.nextStateNumber++;\r\n\t\treturn this.states.getOrAdd(state);\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(/*@NotNull*/ vocabulary: Vocabulary): string;\r\n\tpublic toString(/*@NotNull*/ vocabulary: Vocabulary, ruleNames: string[] | undefined): string;\r\n\tpublic toString(vocabulary?: Vocabulary, ruleNames?: string[]): string {\r\n\t\tif (!vocabulary) {\r\n\t\t\tvocabulary = VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\t}\r\n\r\n\t\tif (!this.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet serializer: DFASerializer;\r\n\t\tif (ruleNames) {\r\n\t\t\tserializer = new DFASerializer(this, vocabulary, ruleNames, this.atnStartState.atn);\r\n\t\t} else {\r\n\t\t\tserializer = new DFASerializer(this, vocabulary);\r\n\t\t}\r\n\r\n\t\treturn serializer.toString();\r\n\t}\r\n\r\n\tpublic toLexerString(): string {\r\n\t\tif (!this.s0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet serializer: DFASerializer = new LexerDFASerializer(this);\r\n\t\treturn serializer.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.8389930-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class BasicState extends ATNState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BASIC;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BasicState } from \"./BasicState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class InvalidState extends BasicState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.INVALID_TYPE;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.3060135-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull, Nullable } from \"../Decorators\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** A transition containing a set of values. */\r\nexport class SetTransition extends Transition {\r\n\t@NotNull\r\n\tpublic set: IntervalSet;\r\n\r\n\t// TODO (sam): should we really allow undefined here?\r\n\tconstructor(@NotNull target: ATNState, @Nullable set: IntervalSet) {\r\n\t\tsuper(target);\r\n\t\tif (set == null) {\r\n\t\t\tset = IntervalSet.of(Token.INVALID_TYPE);\r\n\t\t}\r\n\r\n\t\tthis.set = set;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.SET;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn this.set;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn this.set.contains(symbol);\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn this.set.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.8483617-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull, Nullable } from \"../Decorators\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class NotSetTransition extends SetTransition {\r\n\tconstructor(@NotNull target: ATNState, @Nullable set: IntervalSet) {\r\n\t\tsuper(target, set);\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.NOT_SET;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= minVocabSymbol\r\n\t\t\t&& symbol <= maxVocabSymbol\r\n\t\t\t&& !super.matches(symbol, minVocabSymbol, maxVocabSymbol);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"~\" + super.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.7513856-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The last node in the ATN for a rule, unless that rule is the start symbol.\r\n * In that case, there is one transition to EOF. Later, we might encode\r\n * references to all calls to this rule to compute FOLLOW sets for\r\n * error handling.\r\n */\r\nexport class RuleStopState extends ATNState {\r\n\r\n\t@Override\r\n\tget nonStopStateNumber(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.RULE_STOP;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.8294453-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** */\r\nexport class RuleTransition extends Transition {\r\n\t/** Ptr to the rule definition object for this rule ref */\r\n\tpublic ruleIndex: number; // no Rule object at runtime\r\n\r\n\tpublic precedence: number;\r\n\r\n\t/** What node to begin computations following ref to rule */\r\n\t@NotNull\r\n\tpublic followState: ATNState;\r\n\r\n\tpublic tailCall: boolean = false;\r\n\tpublic optimizedTailCall: boolean = false;\r\n\r\n\tconstructor(@NotNull ruleStart: RuleStartState, ruleIndex: number, precedence: number, @NotNull followState: ATNState) {\r\n\t\tsuper(ruleStart);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.precedence = precedence;\r\n\t\tthis.followState = followState;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.RULE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.9456839-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class WildcardTransition extends Transition {\r\n\tconstructor(@NotNull target: ATNState) {\r\n\t\tsuper(target);\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.WILDCARD;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \".\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.4445360-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { WildcardTransition } from \"./WildcardTransition\";\r\n\r\nexport class LL1Analyzer {\r\n\t/** Special value added to the lookahead sets to indicate that we hit\r\n\t * a predicate during analysis if `seeThruPreds==false`.\r\n\t */\r\n\tpublic static readonly HIT_PRED: number = Token.INVALID_TYPE;\r\n\r\n\t@NotNull\r\n\tpublic atn: ATN;\r\n\r\n\tconstructor(@NotNull atn: ATN) { this.atn = atn; }\r\n\r\n\t/**\r\n\t * Calculates the SLL(1) expected lookahead set for each outgoing transition\r\n\t * of an {@link ATNState}. The returned array has one element for each\r\n\t * outgoing transition in `s`. If the closure from transition\r\n\t * *i* leads to a semantic predicate before matching a symbol, the\r\n\t * element at index *i* of the result will be `undefined`.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @returns the expected symbols for each outgoing transition of `s`.\r\n\t */\r\n\tpublic getDecisionLookahead(s: ATNState | undefined): Array | undefined {\r\n//\t\tSystem.out.println(\"LOOK(\"+s.stateNumber+\")\");\r\n\t\tif (s == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet look: Array = new Array(s.numberOfTransitions);\r\n\t\tfor (let alt = 0; alt < s.numberOfTransitions; alt++) {\r\n\t\t\tlet current: IntervalSet | undefined = new IntervalSet();\r\n\t\t\tlook[alt] = current;\r\n\t\t\tlet lookBusy: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\t\tlet seeThruPreds: boolean = false; // fail to get lookahead upon pred\r\n\t\t\tthis._LOOK(s.transition(alt).target, undefined, PredictionContext.EMPTY_LOCAL,\r\n\t\t\t\tcurrent, lookBusy, new BitSet(), seeThruPreds, false);\r\n\t\t\t// Wipe out lookahead for this alternative if we found nothing\r\n\t\t\t// or we had a predicate when we !seeThruPreds\r\n\t\t\tif (current.size === 0 || current.contains(LL1Analyzer.HIT_PRED)) {\r\n\t\t\t\tcurrent = undefined;\r\n\t\t\t\tlook[alt] = current;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn look;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *\r\n\t * If `ctx` is `undefined` and the end of the rule containing\r\n\t * `s` is reached, {@link Token#EPSILON} is added to the result set.\r\n\t * If `ctx` is not `undefined` and the end of the outermost rule is\r\n\t * reached, {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @param ctx the complete parser context, or `undefined` if the context\r\n\t * should be ignored\r\n\t *\r\n\t * @returns The set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t */\r\n\t// @NotNull\r\n\tpublic LOOK(/*@NotNull*/ s: ATNState, /*@NotNull*/ ctx: PredictionContext): IntervalSet;\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *\r\n\t * If `ctx` is `undefined` and the end of the rule containing\r\n\t * `s` is reached, {@link Token#EPSILON} is added to the result set.\r\n\t * If `ctx` is not `PredictionContext#EMPTY_LOCAL` and the end of the outermost rule is\r\n\t * reached, {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state\r\n\t * @param stopState the ATN state to stop at. This can be a\r\n\t * {@link BlockEndState} to detect epsilon paths through a closure.\r\n\t * @param ctx the complete parser context, or `undefined` if the context\r\n\t * should be ignored\r\n\t *\r\n\t * @returns The set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t */\r\n\t// @NotNull\r\n\tpublic LOOK(/*@NotNull*/ s: ATNState, /*@NotNull*/ ctx: PredictionContext, stopState: ATNState | null): IntervalSet;\r\n\r\n\t@NotNull\r\n\tpublic LOOK(@NotNull s: ATNState, @NotNull ctx: PredictionContext, stopState?: ATNState | null): IntervalSet {\r\n\t\tif (stopState === undefined) {\r\n\t\t\tif (s.atn == null) {\r\n\t\t\t\tthrow new Error(\"Illegal state\");\r\n\t\t\t}\r\n\r\n\t\t\tstopState = s.atn.ruleToStopState[s.ruleIndex];\r\n\t\t} else if (stopState === null) {\r\n\t\t\t// This is an explicit request to pass undefined as the stopState to _LOOK. Used to distinguish an overload\r\n\t\t\t// from the method which simply omits the stopState parameter.\r\n\t\t\tstopState = undefined;\r\n\t\t}\r\n\r\n\t\tlet r: IntervalSet = new IntervalSet();\r\n\t\tlet seeThruPreds: boolean = true; // ignore preds; get all lookahead\r\n\t\tlet addEOF: boolean = true;\r\n\t\tthis._LOOK(s, stopState, ctx, r, new Array2DHashSet(), new BitSet(), seeThruPreds, addEOF);\r\n\t\treturn r;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute set of tokens that can follow `s` in the ATN in the\r\n\t * specified `ctx`.\r\n\t *

        \r\n\t * If `ctx` is {@link PredictionContext#EMPTY_LOCAL} and\r\n\t * `stopState` or the end of the rule containing `s` is reached,\r\n\t * {@link Token#EPSILON} is added to the result set. If `ctx` is not\r\n\t * {@link PredictionContext#EMPTY_LOCAL} and `addEOF` is `true`\r\n\t * and `stopState` or the end of the outermost rule is reached,\r\n\t * {@link Token#EOF} is added to the result set.\r\n\t *\r\n\t * @param s the ATN state.\r\n\t * @param stopState the ATN state to stop at. This can be a\r\n\t * {@link BlockEndState} to detect epsilon paths through a closure.\r\n\t * @param ctx The outer context, or {@link PredictionContext#EMPTY_LOCAL} if\r\n\t * the outer context should not be used.\r\n\t * @param look The result lookahead set.\r\n\t * @param lookBusy A set used for preventing epsilon closures in the ATN\r\n\t * from causing a stack overflow. Outside code should pass\r\n\t * `new HashSet` for this argument.\r\n\t * @param calledRuleStack A set used for preventing left recursion in the\r\n\t * ATN from causing a stack overflow. Outside code should pass\r\n\t * `new BitSet()` for this argument.\r\n\t * @param seeThruPreds `true` to true semantic predicates as\r\n\t * implicitly `true` and \"see through them\", otherwise `false`\r\n\t * to treat semantic predicates as opaque and add {@link #HIT_PRED} to the\r\n\t * result if one is encountered.\r\n\t * @param addEOF Add {@link Token#EOF} to the result if the end of the\r\n\t * outermost context is reached. This parameter has no effect if `ctx`\r\n\t * is {@link PredictionContext#EMPTY_LOCAL}.\r\n\t */\r\n\tprotected _LOOK(\r\n\t\t@NotNull s: ATNState,\r\n\t\tstopState: ATNState | undefined,\r\n\t\t@NotNull ctx: PredictionContext,\r\n\t\t@NotNull look: IntervalSet,\r\n\t\t@NotNull lookBusy: Array2DHashSet,\r\n\t\t@NotNull calledRuleStack: BitSet,\r\n\t\tseeThruPreds: boolean,\r\n\t\taddEOF: boolean): void {\r\n//\t\tSystem.out.println(\"_LOOK(\"+s.stateNumber+\", ctx=\"+ctx);\r\n\t\tlet c: ATNConfig = ATNConfig.create(s, 0, ctx);\r\n\t\tif (!lookBusy.add(c)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (s === stopState) {\r\n\t\t\tif (PredictionContext.isEmptyLocal(ctx)) {\r\n\t\t\t\tlook.add(Token.EPSILON);\r\n\t\t\t\treturn;\r\n\t\t\t} else if (ctx.isEmpty) {\r\n\t\t\t\tif (addEOF) {\r\n\t\t\t\t\tlook.add(Token.EOF);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s instanceof RuleStopState) {\r\n\t\t\tif (ctx.isEmpty && !PredictionContext.isEmptyLocal(ctx)) {\r\n\t\t\t\tif (addEOF) {\r\n\t\t\t\t\tlook.add(Token.EOF);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet removed: boolean = calledRuleStack.get(s.ruleIndex);\r\n\t\t\ttry {\r\n\t\t\t\tcalledRuleStack.clear(s.ruleIndex);\r\n\t\t\t\tfor (let i = 0; i < ctx.size; i++) {\r\n\t\t\t\t\tif (ctx.getReturnState(i) === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet returnState: ATNState = this.atn.states[ctx.getReturnState(i)];\r\n//\t\t\t\t\tSystem.out.println(\"popping back to \"+retState);\r\n\t\t\t\t\tthis._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfinally {\r\n\t\t\t\tif (removed) {\r\n\t\t\t\t\tcalledRuleStack.set(s.ruleIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet n: number = s.numberOfTransitions;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet t: Transition = s.transition(i);\r\n\t\t\tif (t instanceof RuleTransition) {\r\n\t\t\t\tif (calledRuleStack.get(t.ruleIndex)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newContext: PredictionContext = ctx.getChild(t.followState.stateNumber);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcalledRuleStack.set(t.ruleIndex);\r\n\t\t\t\t\tthis._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t\tfinally {\r\n\t\t\t\t\tcalledRuleStack.clear(t.ruleIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (t instanceof AbstractPredicateTransition) {\r\n\t\t\t\tif (seeThruPreds) {\r\n\t\t\t\t\tthis._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlook.add(LL1Analyzer.HIT_PRED);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (t.isEpsilon) {\r\n\t\t\t\tthis._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\r\n\t\t\t}\r\n\t\t\telse if (t instanceof WildcardTransition) {\r\n\t\t\t\tlook.addAll(IntervalSet.of(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType));\r\n\t\t\t}\r\n\t\t\telse {\r\n//\t\t\t\tSystem.out.println(\"adding \"+ t);\r\n\t\t\t\tlet set: IntervalSet | undefined = t.label;\r\n\t\t\t\tif (set != null) {\r\n\t\t\t\t\tif (t instanceof NotSetTransition) {\r\n\t\t\t\t\t\tset = set.complement(IntervalSet.of(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlook.addAll(set);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.1063510-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNType } from \"./ATNType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { InvalidState } from \"./InvalidState\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LL1Analyzer } from \"./LL1Analyzer\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"./TokensStartState\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\n/** */\r\nexport class ATN {\r\n\t@NotNull\r\n\tpublic readonly states: ATNState[] = [];\r\n\r\n\t/** Each subrule/rule is a decision point and we must track them so we\r\n\t * can go back later and build DFA predictors for them. This includes\r\n\t * all the rules, subrules, optional blocks, ()+, ()* etc...\r\n\t */\r\n\t@NotNull\r\n\tpublic decisionToState: DecisionState[] = [];\r\n\r\n\t/**\r\n\t * Maps from rule index to starting state number.\r\n\t */\r\n\tpublic ruleToStartState!: RuleStartState[];\r\n\r\n\t/**\r\n\t * Maps from rule index to stop state number.\r\n\t */\r\n\tpublic ruleToStopState!: RuleStopState[];\r\n\r\n\t@NotNull\r\n\tpublic modeNameToStartState: Map =\r\n\t\tnew Map();\r\n\r\n\t/**\r\n\t * The type of the ATN.\r\n\t */\r\n\tpublic grammarType: ATNType;\r\n\r\n\t/**\r\n\t * The maximum value for any symbol recognized by a transition in the ATN.\r\n\t */\r\n\tpublic maxTokenType: number;\r\n\r\n\t/**\r\n\t * For lexer ATNs, this maps the rule index to the resulting token type.\r\n\t * For parser ATNs, this maps the rule index to the generated bypass token\r\n\t * type if the\r\n\t * {@link ATNDeserializationOptions#isGenerateRuleBypassTransitions}\r\n\t * deserialization option was specified; otherwise, this is `undefined`.\r\n\t */\r\n\tpublic ruleToTokenType!: Int32Array;\r\n\r\n\t/**\r\n\t * For lexer ATNs, this is an array of {@link LexerAction} objects which may\r\n\t * be referenced by action transitions in the ATN.\r\n\t */\r\n\tpublic lexerActions!: LexerAction[];\r\n\r\n\t@NotNull\r\n\tpublic modeToStartState: TokensStartState[] = [];\r\n\r\n\tprivate contextCache: Array2DHashMap =\r\n\t\tnew Array2DHashMap(ObjectEqualityComparator.INSTANCE);\r\n\r\n\t@NotNull\r\n\tpublic decisionToDFA: DFA[] = [];\r\n\t@NotNull\r\n\tpublic modeToDFA: DFA[] = [];\r\n\r\n\tpublic LL1Table: Map = new Map();\r\n\r\n\t/** Used for runtime deserialization of ATNs from strings */\r\n\tconstructor(@NotNull grammarType: ATNType, maxTokenType: number) {\r\n\t\tthis.grammarType = grammarType;\r\n\t\tthis.maxTokenType = maxTokenType;\r\n\t}\r\n\r\n\tpublic clearDFA(): void {\r\n\t\tthis.decisionToDFA = new Array(this.decisionToState.length);\r\n\t\tfor (let i = 0; i < this.decisionToDFA.length; i++) {\r\n\t\t\tthis.decisionToDFA[i] = new DFA(this.decisionToState[i], i);\r\n\t\t}\r\n\r\n\t\tthis.modeToDFA = new Array(this.modeToStartState.length);\r\n\t\tfor (let i = 0; i < this.modeToDFA.length; i++) {\r\n\t\t\tthis.modeToDFA[i] = new DFA(this.modeToStartState[i]);\r\n\t\t}\r\n\r\n\t\tthis.contextCache.clear();\r\n\t\tthis.LL1Table.clear();\r\n\t}\r\n\r\n\tget contextCacheSize(): number {\r\n\t\treturn this.contextCache.size;\r\n\t}\r\n\r\n\tpublic getCachedContext(context: PredictionContext): PredictionContext {\r\n\t\treturn PredictionContext.getCachedContext(context, this.contextCache, new PredictionContext.IdentityHashMap());\r\n\t}\r\n\r\n\tpublic getDecisionToDFA(): DFA[] {\r\n\t\tassert(this.decisionToDFA != null && this.decisionToDFA.length === this.decisionToState.length);\r\n\t\treturn this.decisionToDFA;\r\n\t}\r\n\r\n\t/** Compute the set of valid tokens that can occur starting in state `s`.\r\n\t * If `ctx` is {@link PredictionContext#EMPTY_LOCAL}, the set of tokens will not include what can follow\r\n\t * the rule surrounding `s`. In other words, the set will be\r\n\t * restricted to tokens reachable staying within `s`'s rule.\r\n\t */\r\n\t// @NotNull\r\n\tpublic nextTokens(s: ATNState, /*@NotNull*/ ctx: PredictionContext): IntervalSet;\r\n\r\n\t/**\r\n\t * Compute the set of valid tokens that can occur starting in `s` and\r\n\t * staying in same rule. {@link Token#EPSILON} is in set if we reach end of\r\n\t * rule.\r\n\t */\r\n\t// @NotNull\r\n\tpublic nextTokens(/*@NotNull*/ s: ATNState): IntervalSet;\r\n\r\n\t@NotNull\r\n\tpublic nextTokens(s: ATNState, ctx?: PredictionContext): IntervalSet {\r\n\t\tif (ctx) {\r\n\t\t\tlet anal: LL1Analyzer = new LL1Analyzer(this);\r\n\t\t\tlet next: IntervalSet = anal.LOOK(s, ctx);\r\n\t\t\treturn next;\r\n\t\t} else {\r\n\t\t\tif (s.nextTokenWithinRule) {\r\n\t\t\t\treturn s.nextTokenWithinRule;\r\n\t\t\t}\r\n\r\n\t\t\ts.nextTokenWithinRule = this.nextTokens(s, PredictionContext.EMPTY_LOCAL);\r\n\t\t\ts.nextTokenWithinRule.setReadonly(true);\r\n\t\t\treturn s.nextTokenWithinRule;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic addState(state: ATNState): void {\r\n\t\tstate.atn = this;\r\n\t\tstate.stateNumber = this.states.length;\r\n\t\tthis.states.push(state);\r\n\t}\r\n\r\n\tpublic removeState(@NotNull state: ATNState): void {\r\n\t\t// just replace the state, don't shift states in list\r\n\t\tlet invalidState = new InvalidState();\r\n\t\tinvalidState.atn = this;\r\n\t\tinvalidState.stateNumber = state.stateNumber;\r\n\t\tthis.states[state.stateNumber] = invalidState;\r\n\t}\r\n\r\n\tpublic defineMode(@NotNull name: string, @NotNull s: TokensStartState): void {\r\n\t\tthis.modeNameToStartState.set(name, s);\r\n\t\tthis.modeToStartState.push(s);\r\n\t\tthis.modeToDFA.push(new DFA(s));\r\n\t\tthis.defineDecisionState(s);\r\n\t}\r\n\r\n\tpublic defineDecisionState(@NotNull s: DecisionState): number {\r\n\t\tthis.decisionToState.push(s);\r\n\t\ts.decision = this.decisionToState.length - 1;\r\n\t\tthis.decisionToDFA.push(new DFA(s, s.decision));\r\n\t\treturn s.decision;\r\n\t}\r\n\r\n\tpublic getDecisionState(decision: number): DecisionState | undefined {\r\n\t\tif (this.decisionToState.length > 0) {\r\n\t\t\treturn this.decisionToState[decision];\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tget numberOfDecisions(): number {\r\n\t\treturn this.decisionToState.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of input symbols which could follow ATN state number\r\n\t * `stateNumber` in the specified full `context`. This method\r\n\t * considers the complete parser context, but does not evaluate semantic\r\n\t * predicates (i.e. all predicates encountered during the calculation are\r\n\t * assumed true). If a path in the ATN exists from the starting state to the\r\n\t * {@link RuleStopState} of the outermost context without matching any\r\n\t * symbols, {@link Token#EOF} is added to the returned set.\r\n\t *\r\n\t * If `context` is `undefined`, it is treated as\r\n\t * {@link ParserRuleContext#EMPTY}.\r\n\t *\r\n\t * Note that this does NOT give you the set of all tokens that could\r\n\t * appear at a given token position in the input phrase. In other words, it\r\n\t * does not answer:\r\n\t *\r\n\t * > Given a specific partial input phrase, return the set of all\r\n\t * > tokens that can follow the last token in the input phrase.\r\n\t *\r\n\t * The big difference is that with just the input, the parser could land\r\n\t * right in the middle of a lookahead decision. Getting all\r\n\t * *possible* tokens given a partial input stream is a separate\r\n\t * computation. See https://github.com/antlr/antlr4/issues/1428\r\n\t *\r\n\t * For this function, we are specifying an ATN state and call stack to\r\n\t * compute what token(s) can come next and specifically: outside of a\r\n\t * lookahead decision. That is what you want for error reporting and\r\n\t * recovery upon parse error.\r\n\t *\r\n\t * @param stateNumber the ATN state number\r\n\t * @param context the full parse context\r\n\t * @returns The set of potentially valid input symbols which could follow the\r\n\t * specified state in the specified context.\r\n\t * @ if the ATN does not contain a state with\r\n\t * number `stateNumber`\r\n\t */\r\n\t@NotNull\r\n\tpublic getExpectedTokens(stateNumber: number, context: RuleContext | undefined): IntervalSet {\r\n\t\tif (stateNumber < 0 || stateNumber >= this.states.length) {\r\n\t\t\tthrow new RangeError(\"Invalid state number.\");\r\n\t\t}\r\n\r\n\t\tlet ctx: RuleContext | undefined = context;\r\n\t\tlet s: ATNState = this.states[stateNumber];\r\n\t\tlet following: IntervalSet = this.nextTokens(s);\r\n\t\tif (!following.contains(Token.EPSILON)) {\r\n\t\t\treturn following;\r\n\t\t}\r\n\r\n\t\tlet expected: IntervalSet = new IntervalSet();\r\n\t\texpected.addAll(following);\r\n\t\texpected.remove(Token.EPSILON);\r\n\t\twhile (ctx != null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\r\n\t\t\tlet invokingState: ATNState = this.states[ctx.invokingState];\r\n\t\t\tlet rt: RuleTransition = invokingState.transition(0) as RuleTransition;\r\n\t\t\tfollowing = this.nextTokens(rt.followState);\r\n\t\t\texpected.addAll(following);\r\n\t\t\texpected.remove(Token.EPSILON);\r\n\t\t\tctx = ctx._parent;\r\n\t\t}\r\n\r\n\t\tif (following.contains(Token.EPSILON)) {\r\n\t\t\texpected.add(Token.EOF);\r\n\t\t}\r\n\r\n\t\treturn expected;\r\n\t}\r\n}\r\n\r\nexport namespace ATN {\r\n\texport const INVALID_ALT_NUMBER: number = 0;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.7613038-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * This implementation of {@link LexerAction} is used for tracking input offsets\r\n * for position-dependent actions within a {@link LexerActionExecutor}.\r\n *\r\n * This action is not serialized as part of the ATN, and is only required for\r\n * position-dependent lexer actions which appear at a location other than the\r\n * end of a rule. For more information about DFA optimizations employed for\r\n * lexer actions, see {@link LexerActionExecutor#append} and\r\n * {@link LexerActionExecutor#fixOffsetBeforeMatch}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerIndexedCustomAction implements LexerAction {\r\n\tprivate readonly _offset: number;\r\n\tprivate readonly _action: LexerAction;\r\n\r\n\t/**\r\n\t * Constructs a new indexed custom action by associating a character offset\r\n\t * with a {@link LexerAction}.\r\n\t *\r\n\t * Note: This class is only required for lexer actions for which\r\n\t * {@link LexerAction#isPositionDependent} returns `true`.\r\n\t *\r\n\t * @param offset The offset into the input {@link CharStream}, relative to\r\n\t * the token start index, at which the specified lexer action should be\r\n\t * executed.\r\n\t * @param action The lexer action to execute at a particular offset in the\r\n\t * input {@link CharStream}.\r\n\t */\r\n\tconstructor(offset: number, @NotNull action: LexerAction) {\r\n\t\tthis._offset = offset;\r\n\t\tthis._action = action;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the location in the input {@link CharStream} at which the lexer\r\n\t * action should be executed. The value is interpreted as an offset relative\r\n\t * to the token start index.\r\n\t *\r\n\t * @returns The location in the input {@link CharStream} at which the lexer\r\n\t * action should be executed.\r\n\t */\r\n\tget offset(): number {\r\n\t\treturn this._offset;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the lexer action to execute.\r\n\t *\r\n\t * @returns A {@link LexerAction} object which executes the lexer action.\r\n\t */\r\n\t@NotNull\r\n\tget action(): LexerAction {\r\n\t\treturn this._action;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * @returns This method returns the result of calling {@link #getActionType}\r\n\t * on the {@link LexerAction} returned by {@link #getAction}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn this._action.actionType;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `true`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This method calls {@link #execute} on the result of {@link #getAction}\r\n\t * using the provided `lexer`.\r\n\t */\r\n\t@Override\r\n\tpublic execute(lexer: Lexer): void {\r\n\t\t// assume the input stream position was properly set by the calling code\r\n\t\tthis._action.execute(lexer);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this._offset);\r\n\t\thash = MurmurHash.update(hash, this._action);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerIndexedCustomAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._offset === obj._offset\r\n\t\t\t&& this._action.equals(obj._action);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.8810453-07:00\r\n\r\nimport { ArrayEqualityComparator } from \"../misc/ArrayEqualityComparator\";\r\nimport { CharStream } from \"../CharStream\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerIndexedCustomAction } from \"./LexerIndexedCustomAction\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Represents an executor for a sequence of lexer actions which traversed during\r\n * the matching operation of a lexer rule (token).\r\n *\r\n * The executor tracks position information for position-dependent lexer actions\r\n * efficiently, ensuring that actions appearing only at the end of the rule do\r\n * not cause bloating of the {@link DFA} created for the lexer.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerActionExecutor {\r\n\t@NotNull\r\n\tprivate _lexerActions: LexerAction[];\r\n\r\n\t/**\r\n\t * Caches the result of {@link #hashCode} since the hash code is an element\r\n\t * of the performance-critical {@link LexerATNConfig#hashCode} operation.\r\n\t */\r\n\tprivate cachedHashCode: number;\r\n\r\n\t/**\r\n\t * Constructs an executor for a sequence of {@link LexerAction} actions.\r\n\t * @param lexerActions The lexer actions to execute.\r\n\t */\r\n\tconstructor(@NotNull lexerActions: LexerAction[]) {\r\n\t\tthis._lexerActions = lexerActions;\r\n\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let lexerAction of lexerActions) {\r\n\t\t\thash = MurmurHash.update(hash, lexerAction);\r\n\t\t}\r\n\r\n\t\tthis.cachedHashCode = MurmurHash.finish(hash, lexerActions.length);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a {@link LexerActionExecutor} which executes the actions for\r\n\t * the input `lexerActionExecutor` followed by a specified\r\n\t * `lexerAction`.\r\n\t *\r\n\t * @param lexerActionExecutor The executor for actions already traversed by\r\n\t * the lexer while matching a token within a particular\r\n\t * {@link ATNConfig}. If this is `undefined`, the method behaves as though\r\n\t * it were an empty executor.\r\n\t * @param lexerAction The lexer action to execute after the actions\r\n\t * specified in `lexerActionExecutor`.\r\n\t *\r\n\t * @returns A {@link LexerActionExecutor} for executing the combine actions\r\n\t * of `lexerActionExecutor` and `lexerAction`.\r\n\t */\r\n\t@NotNull\r\n\tpublic static append(lexerActionExecutor: LexerActionExecutor | undefined, @NotNull lexerAction: LexerAction): LexerActionExecutor {\r\n\t\tif (!lexerActionExecutor) {\r\n\t\t\treturn new LexerActionExecutor([lexerAction]);\r\n\t\t}\r\n\r\n\t\tlet lexerActions = lexerActionExecutor._lexerActions.slice(0);\r\n\t\tlexerActions.push(lexerAction);\r\n\t\treturn new LexerActionExecutor(lexerActions);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a {@link LexerActionExecutor} which encodes the current offset\r\n\t * for position-dependent lexer actions.\r\n\t *\r\n\t * Normally, when the executor encounters lexer actions where\r\n\t * {@link LexerAction#isPositionDependent} returns `true`, it calls\r\n\t * {@link IntStream#seek} on the input {@link CharStream} to set the input\r\n\t * position to the *end* of the current token. This behavior provides\r\n\t * for efficient DFA representation of lexer actions which appear at the end\r\n\t * of a lexer rule, even when the lexer rule matches a variable number of\r\n\t * characters.\r\n\t *\r\n\t * Prior to traversing a match transition in the ATN, the current offset\r\n\t * from the token start index is assigned to all position-dependent lexer\r\n\t * actions which have not already been assigned a fixed offset. By storing\r\n\t * the offsets relative to the token start index, the DFA representation of\r\n\t * lexer actions which appear in the middle of tokens remains efficient due\r\n\t * to sharing among tokens of the same length, regardless of their absolute\r\n\t * position in the input stream.\r\n\t *\r\n\t * If the current executor already has offsets assigned to all\r\n\t * position-dependent lexer actions, the method returns `this`.\r\n\t *\r\n\t * @param offset The current offset to assign to all position-dependent\r\n\t * lexer actions which do not already have offsets assigned.\r\n\t *\r\n\t * @returns A {@link LexerActionExecutor} which stores input stream offsets\r\n\t * for all position-dependent lexer actions.\r\n\t */\r\n\tpublic fixOffsetBeforeMatch(offset: number): LexerActionExecutor {\r\n\t\tlet updatedLexerActions: LexerAction[] | undefined;\r\n\t\tfor (let i = 0; i < this._lexerActions.length; i++) {\r\n\t\t\tif (this._lexerActions[i].isPositionDependent && !(this._lexerActions[i] instanceof LexerIndexedCustomAction)) {\r\n\t\t\t\tif (!updatedLexerActions) {\r\n\t\t\t\t\tupdatedLexerActions = this._lexerActions.slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset, this._lexerActions[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!updatedLexerActions) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\treturn new LexerActionExecutor(updatedLexerActions);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the lexer actions to be executed by this executor.\r\n\t * @returns The lexer actions to be executed by this executor.\r\n\t */\r\n\t@NotNull\r\n\tget lexerActions(): LexerAction[] {\r\n\t\treturn this._lexerActions;\r\n\t}\r\n\r\n\t/**\r\n\t * Execute the actions encapsulated by this executor within the context of a\r\n\t * particular {@link Lexer}.\r\n\t *\r\n\t * This method calls {@link IntStream#seek} to set the position of the\r\n\t * `input` {@link CharStream} prior to calling\r\n\t * {@link LexerAction#execute} on a position-dependent action. Before the\r\n\t * method returns, the input position will be restored to the same position\r\n\t * it was in when the method was invoked.\r\n\t *\r\n\t * @param lexer The lexer instance.\r\n\t * @param input The input stream which is the source for the current token.\r\n\t * When this method is called, the current {@link IntStream#index} for\r\n\t * `input` should be the start of the following token, i.e. 1\r\n\t * character past the end of the current token.\r\n\t * @param startIndex The token start index. This value may be passed to\r\n\t * {@link IntStream#seek} to set the `input` position to the beginning\r\n\t * of the token.\r\n\t */\r\n\tpublic execute(@NotNull lexer: Lexer, input: CharStream, startIndex: number): void {\r\n\t\tlet requiresSeek: boolean = false;\r\n\t\tlet stopIndex: number = input.index;\r\n\t\ttry {\r\n\t\t\tfor (let lexerAction of this._lexerActions) {\r\n\t\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\r\n\t\t\t\t\tlet offset: number = lexerAction.offset;\r\n\t\t\t\t\tinput.seek(startIndex + offset);\r\n\t\t\t\t\tlexerAction = lexerAction.action;\r\n\t\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\r\n\t\t\t\t} else if (lexerAction.isPositionDependent) {\r\n\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t\trequiresSeek = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlexerAction.execute(lexer);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tif (requiresSeek) {\r\n\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.cachedHashCode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerActionExecutor)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.cachedHashCode === obj.cachedHashCode\r\n\t\t\t&& ArrayEqualityComparator.INSTANCE.equals(this._lexerActions, obj._lexerActions);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.0961136-07:00\r\n\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nexport class LexerNoViableAltException extends RecognitionException {\r\n\t//private static serialVersionUID: number = -730999203913001726L;\r\n\r\n\t/** Matching attempted at what input index? */\r\n\tprivate _startIndex: number;\r\n\r\n\t/** Which configurations did we try at input.index that couldn't match input.LA(1)? */\r\n\tprivate _deadEndConfigs?: ATNConfigSet;\r\n\r\n\tconstructor(\r\n\t\tlexer: Lexer | undefined,\r\n\t\t@NotNull input: CharStream,\r\n\t\tstartIndex: number,\r\n\t\tdeadEndConfigs: ATNConfigSet | undefined) {\r\n\t\tsuper(lexer, input);\r\n\t\tthis._startIndex = startIndex;\r\n\t\tthis._deadEndConfigs = deadEndConfigs;\r\n\t}\r\n\r\n\tget startIndex(): number {\r\n\t\treturn this._startIndex;\r\n\t}\r\n\r\n\tget deadEndConfigs(): ATNConfigSet | undefined {\r\n\t\treturn this._deadEndConfigs;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream {\r\n\t\treturn super.inputStream as CharStream;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet symbol = \"\";\r\n\t\tif (this._startIndex >= 0 && this._startIndex < this.inputStream.size) {\r\n\t\t\tsymbol = this.inputStream.getText(Interval.of(this._startIndex, this._startIndex));\r\n\t\t\tsymbol = Utils.escapeWhitespace(symbol, false);\r\n\t\t}\r\n\r\n\t\t// return String.format(Locale.getDefault(), \"%s('%s')\", LexerNoViableAltException.class.getSimpleName(), symbol);\r\n\t\treturn `LexerNoViableAltException('${symbol}')`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.9444556-07:00\r\n\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class OrderedATNConfigSet extends ATNConfigSet {\r\n\r\n\tconstructor();\r\n\tconstructor(set: ATNConfigSet, readonly: boolean);\r\n\tconstructor(set?: ATNConfigSet, readonly?: boolean) {\r\n\t\tif (set != null && readonly != null) {\r\n\t\t\tsuper(set, readonly);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic clone(readonly: boolean): ATNConfigSet {\r\n\t\tlet copy: OrderedATNConfigSet = new OrderedATNConfigSet(this, readonly);\r\n\t\tif (!readonly && this.isReadOnly) {\r\n\t\t\tcopy.addAll(this);\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getKey(e: ATNConfig): { state: number, alt: number } {\r\n\t\t// This is a specially crafted key to ensure configurations are only merged if they are equal\r\n\t\treturn { state: 0, alt: e.hashCode() };\r\n\t}\r\n\r\n\t@Override\r\n\tprotected canMerge(left: ATNConfig, leftKey: { state: number, alt: number }, right: ATNConfig): boolean {\r\n\t\treturn left.equals(right);\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.1083066-07:00\r\n\r\nimport { AcceptStateInfo } from \"../dfa/AcceptStateInfo\";\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { CharStream } from \"../CharStream\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntStream } from \"../IntStream\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerActionExecutor } from \"./LexerActionExecutor\";\r\nimport { LexerNoViableAltException } from \"../LexerNoViableAltException\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { OrderedATNConfigSet } from \"./OrderedATNConfigSet\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { Token } from \"../Token\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport * as assert from \"assert\";\r\n\r\n/** \"dup\" of ParserInterpreter */\r\nexport class LexerATNSimulator extends ATNSimulator {\r\n\tpublic optimize_tail_calls: boolean = true;\r\n\r\n\tprotected recog: Lexer | undefined;\r\n\r\n\t/** The current token's starting index into the character stream.\r\n\t * Shared across DFA to ATN simulation in case the ATN fails and the\r\n\t * DFA did not have a previous accept state. In this case, we use the\r\n\t * ATN-generated exception object.\r\n\t */\r\n\tprotected startIndex: number = -1;\r\n\r\n\t/** line number 1..n within the input */\r\n\tprivate _line: number = 1;\r\n\r\n\t/** The index of the character relative to the beginning of the line 0..n-1 */\r\n\tprivate _charPositionInLine: number = 0;\r\n\r\n\tprotected mode: number = Lexer.DEFAULT_MODE;\r\n\r\n\t/** Used during DFA/ATN exec to record the most recent accept configuration info */\r\n\t@NotNull\r\n\tprotected prevAccept: LexerATNSimulator.SimState = new LexerATNSimulator.SimState();\r\n\r\n\tconstructor(/*@NotNull*/ atn: ATN);\r\n\tconstructor(/*@NotNull*/ atn: ATN, recog: Lexer | undefined);\r\n\tconstructor(@NotNull atn: ATN, recog?: Lexer) {\r\n\t\tsuper(atn);\r\n\t\tthis.recog = recog;\r\n\t}\r\n\r\n\tpublic copyState(@NotNull simulator: LexerATNSimulator): void {\r\n\t\tthis._charPositionInLine = simulator.charPositionInLine;\r\n\t\tthis._line = simulator._line;\r\n\t\tthis.mode = simulator.mode;\r\n\t\tthis.startIndex = simulator.startIndex;\r\n\t}\r\n\r\n\tpublic match(@NotNull input: CharStream, mode: number): number {\r\n\t\tthis.mode = mode;\r\n\t\tlet mark: number = input.mark();\r\n\t\ttry {\r\n\t\t\tthis.startIndex = input.index;\r\n\t\t\tthis.prevAccept.reset();\r\n\t\t\tlet s0: DFAState | undefined = this.atn.modeToDFA[mode].s0;\r\n\t\t\tif (s0 == null) {\r\n\t\t\t\treturn this.matchATN(input);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.execATN(input, s0);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tinput.release(mark);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(): void {\r\n\t\tthis.prevAccept.reset();\r\n\t\tthis.startIndex = -1;\r\n\t\tthis._line = 1;\r\n\t\tthis._charPositionInLine = 0;\r\n\t\tthis.mode = Lexer.DEFAULT_MODE;\r\n\t}\r\n\r\n\tprotected matchATN(@NotNull input: CharStream): number {\r\n\t\tlet startState: ATNState = this.atn.modeToStartState[this.mode];\r\n\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`matchATN mode ${this.mode} start: ${startState}`);\r\n\t\t}\r\n\r\n\t\tlet old_mode: number = this.mode;\r\n\r\n\t\tlet s0_closure: ATNConfigSet = this.computeStartState(input, startState);\r\n\t\tlet suppressEdge: boolean = s0_closure.hasSemanticContext;\r\n\t\tif (suppressEdge) {\r\n\t\t\ts0_closure.hasSemanticContext = false;\r\n\t\t}\r\n\r\n\t\tlet next: DFAState = this.addDFAState(s0_closure);\r\n\t\tif (!suppressEdge) {\r\n\t\t\tlet dfa = this.atn.modeToDFA[this.mode];\r\n\t\t\tif (!dfa.s0) {\r\n\t\t\t\tdfa.s0 = next;\r\n\t\t\t} else {\r\n\t\t\t\tnext = dfa.s0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet predict: number = this.execATN(input, next);\r\n\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`DFA after matchATN: ${this.atn.modeToDFA[old_mode].toLexerString()}`);\r\n\t\t}\r\n\r\n\t\treturn predict;\r\n\t}\r\n\r\n\tprotected execATN(@NotNull input: CharStream, @NotNull ds0: DFAState): number {\r\n\t\t// console.log(\"enter exec index \"+input.index+\" from \"+ds0.configs);\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`start state closure=${ds0.configs}`);\r\n\t\t}\r\n\r\n\t\tif (ds0.isAcceptState) {\r\n\t\t\t// allow zero-length tokens\r\n\t\t\tthis.captureSimState(this.prevAccept, input, ds0);\r\n\t\t}\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\t\t// @NotNull\r\n\t\tlet s: DFAState = ds0; // s is current/from DFA state\r\n\r\n\t\twhile (true) { // while more work\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(`execATN loop starting closure: ${s.configs}`);\r\n\t\t\t}\r\n\r\n\t\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\r\n\t\t\t// avoid looking up the DFA state again, which is expensive.\r\n\t\t\t// If the previous target was already part of the DFA, we might\r\n\t\t\t// be able to avoid doing a reach operation upon t. If s!=null,\r\n\t\t\t// it means that semantic predicates didn't prevent us from\r\n\t\t\t// creating a DFA state. Once we know s!=null, we check to see if\r\n\t\t\t// the DFA state has an edge already for t. If so, we can just reuse\r\n\t\t\t// it's configuration set; there's no point in re-computing it.\r\n\t\t\t// This is kind of like doing DFA simulation within the ATN\r\n\t\t\t// simulation because DFA simulation is really just a way to avoid\r\n\t\t\t// computing reach/closure sets. Technically, once we know that\r\n\t\t\t// we have a previously added DFA state, we could jump over to\r\n\t\t\t// the DFA simulator. But, that would mean popping back and forth\r\n\t\t\t// a lot and making things more complicated algorithmically.\r\n\t\t\t// This optimization makes a lot of sense for loops within DFA.\r\n\t\t\t// A character will take us back to an existing DFA state\r\n\t\t\t// that already has lots of edges out of it. e.g., .* in comments.\r\n\t\t\tlet target: DFAState | undefined = this.getExistingTargetState(s, t);\r\n\t\t\tif (target == null) {\r\n\t\t\t\ttarget = this.computeTargetState(input, s, t);\r\n\t\t\t}\r\n\r\n\t\t\tif (target === ATNSimulator.ERROR) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a consumable input element, make sure to consume before\r\n\t\t\t// capturing the accept state so the input index, line, and char\r\n\t\t\t// position accurately reflect the state of the interpreter at the\r\n\t\t\t// end of the token.\r\n\t\t\tif (t !== IntStream.EOF) {\r\n\t\t\t\tthis.consume(input);\r\n\t\t\t}\r\n\r\n\t\t\tif (target.isAcceptState) {\r\n\t\t\t\tthis.captureSimState(this.prevAccept, input, target);\r\n\t\t\t\tif (t === IntStream.EOF) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tt = input.LA(1);\r\n\t\t\ts = target; // flip; current DFA target becomes new src/from state\r\n\t\t}\r\n\r\n\t\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\r\n\t}\r\n\r\n\t/**\r\n\t * Get an existing target state for an edge in the DFA. If the target state\r\n\t * for the edge has not yet been computed or is otherwise not available,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t * @returns The existing target DFA state for the given input symbol\r\n\t * `t`, or `undefined` if the target state for this edge is not\r\n\t * already cached\r\n\t */\r\n\tprotected getExistingTargetState(@NotNull s: DFAState, t: number): DFAState | undefined {\r\n\t\tlet target: DFAState | undefined = s.getTarget(t);\r\n\t\tif (LexerATNSimulator.debug && target != null) {\r\n\t\t\tconsole.log(\"reuse state \" + s.stateNumber +\r\n\t\t\t\t\" edge to \" + target.stateNumber);\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\t/**\r\n\t * Compute a target state for an edge in the DFA, and attempt to add the\r\n\t * computed state and corresponding edge to the DFA.\r\n\t *\r\n\t * @param input The input stream\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t *\r\n\t * @returns The computed target DFA state for the given input symbol\r\n\t * `t`. If `t` does not lead to a valid DFA state, this method\r\n\t * returns {@link #ERROR}.\r\n\t */\r\n\t@NotNull\r\n\tprotected computeTargetState(@NotNull input: CharStream, @NotNull s: DFAState, t: number): DFAState {\r\n\t\tlet reach: ATNConfigSet = new OrderedATNConfigSet();\r\n\r\n\t\t// if we don't find an existing DFA state\r\n\t\t// Fill reach starting from closure, following t transitions\r\n\t\tthis.getReachableConfigSet(input, s.configs, reach, t);\r\n\r\n\t\tif (reach.isEmpty) { // we got nowhere on t from s\r\n\t\t\tif (!reach.hasSemanticContext) {\r\n\t\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\r\n\t\t\t\t// cause a failover from DFA later.\r\n\t\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\r\n\t\t\t}\r\n\r\n\t\t\t// stop when we can't match any more char\r\n\t\t\treturn ATNSimulator.ERROR;\r\n\t\t}\r\n\r\n\t\t// Add an edge from s to target DFA found/created for reach\r\n\t\treturn this.addDFAEdge(s, t, reach);\r\n\t}\r\n\r\n\tprotected failOrAccept(\r\n\t\tprevAccept: LexerATNSimulator.SimState, input: CharStream,\r\n\t\treach: ATNConfigSet, t: number): number {\r\n\t\tif (prevAccept.dfaState != null) {\r\n\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = prevAccept.dfaState.lexerActionExecutor;\r\n\t\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\r\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.charPos);\r\n\t\t\treturn prevAccept.dfaState.prediction;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// if no accept and EOF is first char, return EOF\r\n\t\t\tif (t === IntStream.EOF && input.index === this.startIndex) {\r\n\t\t\t\treturn Token.EOF;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Given a starting configuration set, figure out all ATN configurations\r\n\t * we can reach upon input `t`. Parameter `reach` is a return\r\n\t * parameter.\r\n\t */\r\n\tprotected getReachableConfigSet(@NotNull input: CharStream, @NotNull closure: ATNConfigSet, @NotNull reach: ATNConfigSet, t: number): void {\r\n\t\t// this is used to skip processing for configs which have a lower priority\r\n\t\t// than a config that already reached an accept state for the same rule\r\n\t\tlet skipAlt: number = ATN.INVALID_ALT_NUMBER;\r\n\t\tfor (let c of closure) {\r\n\t\t\tlet currentAltReachedAcceptState: boolean = c.alt === skipAlt;\r\n\t\t\tif (currentAltReachedAcceptState && c.hasPassedThroughNonGreedyDecision) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(`testing ${this.getTokenName(t)} at ${c.toString(this.recog, true)}`);\r\n\t\t\t}\r\n\r\n\t\t\tlet n: number = c.state.numberOfOptimizedTransitions;\r\n\t\t\tfor (let ti = 0; ti < n; ti++) { // for each optimized transition\r\n\t\t\t\tlet trans: Transition = c.state.getOptimizedTransition(ti);\r\n\t\t\t\tlet target: ATNState | undefined = this.getReachableTarget(trans, t);\r\n\t\t\t\tif (target != null) {\r\n\t\t\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = c.lexerActionExecutor;\r\n\t\t\t\t\tlet config: ATNConfig;\r\n\t\t\t\t\tif (lexerActionExecutor != null) {\r\n\t\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\r\n\t\t\t\t\t\tconfig = c.transform(target, true, lexerActionExecutor);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tassert(c.lexerActionExecutor == null);\r\n\t\t\t\t\t\tconfig = c.transform(target, true);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet treatEofAsEpsilon: boolean = t === IntStream.EOF;\r\n\t\t\t\t\tif (this.closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) {\r\n\t\t\t\t\t\t// any remaining configs for this alt have a lower priority than\r\n\t\t\t\t\t\t// the one that just reached an accept state.\r\n\t\t\t\t\t\tskipAlt = c.alt;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected accept(\r\n\t\t@NotNull input: CharStream, lexerActionExecutor: LexerActionExecutor | undefined,\r\n\t\tstartIndex: number, index: number, line: number, charPos: number): void {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(`ACTION ${lexerActionExecutor}`);\r\n\t\t}\r\n\r\n\t\t// seek to after last char in token\r\n\t\tinput.seek(index);\r\n\t\tthis._line = line;\r\n\t\tthis._charPositionInLine = charPos;\r\n\r\n\t\tif (lexerActionExecutor != null && this.recog != null) {\r\n\t\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getReachableTarget(trans: Transition, t: number): ATNState | undefined {\r\n\t\tif (trans.matches(t, Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE)) {\r\n\t\t\treturn trans.target;\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected computeStartState(\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull p: ATNState): ATNConfigSet {\r\n\t\tlet initialContext: PredictionContext = PredictionContext.EMPTY_FULL;\r\n\t\tlet configs: ATNConfigSet = new OrderedATNConfigSet();\r\n\t\tfor (let i = 0; i < p.numberOfTransitions; i++) {\r\n\t\t\tlet target: ATNState = p.transition(i).target;\r\n\t\t\tlet c: ATNConfig = ATNConfig.create(target, i + 1, initialContext);\r\n\t\t\tthis.closure(input, c, configs, false, false, false);\r\n\t\t}\r\n\t\treturn configs;\r\n\t}\r\n\r\n\t/**\r\n\t * Since the alternatives within any lexer decision are ordered by\r\n\t * preference, this method stops pursuing the closure as soon as an accept\r\n\t * state is reached. After the first accept state is reached by depth-first\r\n\t * search from `config`, all other (potentially reachable) states for\r\n\t * this rule would have a lower priority.\r\n\t *\r\n\t * @returns `true` if an accept state is reached, otherwise\r\n\t * `false`.\r\n\t */\r\n\tprotected closure(@NotNull input: CharStream, @NotNull config: ATNConfig, @NotNull configs: ATNConfigSet, currentAltReachedAcceptState: boolean, speculative: boolean, treatEofAsEpsilon: boolean): boolean {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\r\n\t\t}\r\n\r\n\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tif (this.recog != null) {\r\n\t\t\t\t\tconsole.log(`closure at ${this.recog.ruleNames[config.state.ruleIndex]} rule stop ${config}`);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log(`closure at rule stop ${config}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet context: PredictionContext = config.context;\r\n\t\t\tif (context.isEmpty) {\r\n\t\t\t\tconfigs.add(config);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse if (context.hasEmpty) {\r\n\t\t\t\tconfigs.add(config.transform(config.state, true, PredictionContext.EMPTY_FULL));\r\n\t\t\t\tcurrentAltReachedAcceptState = true;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < context.size; i++) {\r\n\t\t\t\tlet returnStateNumber: number = context.getReturnState(i);\r\n\t\t\t\tif (returnStateNumber === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newContext: PredictionContext = context.getParent(i); // \"pop\" return state\r\n\t\t\t\tlet returnState: ATNState = this.atn.states[returnStateNumber];\r\n\t\t\t\tlet c: ATNConfig = config.transform(returnState, false, newContext);\r\n\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentAltReachedAcceptState;\r\n\t\t}\r\n\r\n\t\t// optimization\r\n\t\tif (!config.state.onlyHasEpsilonTransitions) {\r\n\t\t\tif (!currentAltReachedAcceptState || !config.hasPassedThroughNonGreedyDecision) {\r\n\t\t\t\tconfigs.add(config);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet p: ATNState = config.state;\r\n\t\tfor (let i = 0; i < p.numberOfOptimizedTransitions; i++) {\r\n\t\t\tlet t: Transition = p.getOptimizedTransition(i);\r\n\t\t\tlet c: ATNConfig | undefined = this.getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon);\r\n\t\t\tif (c != null) {\r\n\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn currentAltReachedAcceptState;\r\n\t}\r\n\r\n\t// side-effect: can alter configs.hasSemanticContext\r\n\tprotected getEpsilonTarget(\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull t: Transition,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tspeculative: boolean,\r\n\t\ttreatEofAsEpsilon: boolean): ATNConfig | undefined {\r\n\t\tlet c: ATNConfig | undefined;\r\n\r\n\t\tswitch (t.serializationType) {\r\n\t\tcase TransitionType.RULE:\r\n\t\t\tlet ruleTransition: RuleTransition = t as RuleTransition;\r\n\t\t\tif (this.optimize_tail_calls && ruleTransition.optimizedTailCall && !config.context.hasEmpty) {\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet newContext: PredictionContext = config.context.getChild(ruleTransition.followState.stateNumber);\r\n\t\t\t\tc = config.transform(t.target, true, newContext);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\tthrow new Error(\"Precedence predicates are not supported in lexers.\");\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\t/* Track traversing semantic predicates. If we traverse,\r\n\t\t\t\twe cannot add a DFA state for this \"reach\" computation\r\n\t\t\t\tbecause the DFA would not test the predicate again in the\r\n\t\t\t\tfuture. Rather than creating collections of semantic predicates\r\n\t\t\t\tlike v3 and testing them on prediction, v4 will test them on the\r\n\t\t\t\tfly all the time using the ATN not the DFA. This is slower but\r\n\t\t\t\tsemantically it's not used that often. One of the key elements to\r\n\t\t\t\tthis predicate mechanism is not adding DFA states that see\r\n\t\t\t\tpredicates immediately afterwards in the ATN. For example,\r\n\r\n\t\t\t\ta : ID {p1}? | ID {p2}? ;\r\n\r\n\t\t\t\tshould create the start state for rule 'a' (to save start state\r\n\t\t\t\tcompetition), but should not create target of ID state. The\r\n\t\t\t\tcollection of ATN states the following ID references includes\r\n\t\t\t\tstates reached by traversing predicates. Since this is when we\r\n\t\t\t\ttest them, we cannot cash the DFA state target of ID.\r\n\t\t\t*/\r\n\t\t\tlet pt: PredicateTransition = t as PredicateTransition;\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"EVAL rule \" + pt.ruleIndex + \":\" + pt.predIndex);\r\n\t\t\t}\r\n\t\t\tconfigs.hasSemanticContext = true;\r\n\t\t\tif (this.evaluatePredicate(input, pt.ruleIndex, pt.predIndex, speculative)) {\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tc = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\tif (config.context.hasEmpty) {\r\n\t\t\t\t// execute actions anywhere in the start rule for a token.\r\n\t\t\t\t//\r\n\t\t\t\t// TODO: if the entry rule is invoked recursively, some\r\n\t\t\t\t// actions may be executed during the recursive call. The\r\n\t\t\t\t// problem can appear when hasEmpty is true but\r\n\t\t\t\t// isEmpty is false. In this case, the config needs to be\r\n\t\t\t\t// split into two contexts - one with just the empty path\r\n\t\t\t\t// and another with everything but the empty path.\r\n\t\t\t\t// Unfortunately, the current algorithm does not allow\r\n\t\t\t\t// getEpsilonTarget to return two configurations, so\r\n\t\t\t\t// additional modifications are needed before we can support\r\n\t\t\t\t// the split operation.\r\n\t\t\t\tlet lexerActionExecutor: LexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor, this.atn.lexerActions[(t as ActionTransition).actionIndex]);\r\n\t\t\t\tc = config.transform(t.target, true, lexerActionExecutor);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// ignore actions in referenced rules\r\n\t\t\t\tc = config.transform(t.target, true);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\tc = config.transform(t.target, true);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\t\tif (treatEofAsEpsilon) {\r\n\t\t\t\tif (t.matches(IntStream.EOF, Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE)) {\r\n\t\t\t\t\tc = config.transform(t.target, false);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tc = undefined;\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tc = undefined;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn c;\r\n\t}\r\n\r\n\t/**\r\n\t * Evaluate a predicate specified in the lexer.\r\n\t *\r\n\t * If `speculative` is `true`, this method was called before\r\n\t * {@link #consume} for the matched character. This method should call\r\n\t * {@link #consume} before evaluating the predicate to ensure position\r\n\t * sensitive values, including {@link Lexer#getText}, {@link Lexer#getLine},\r\n\t * and {@link Lexer#getCharPositionInLine}, properly reflect the current\r\n\t * lexer state. This method should restore `input` and the simulator\r\n\t * to the original state before returning (i.e. undo the actions made by the\r\n\t * call to {@link #consume}.\r\n\t *\r\n\t * @param input The input stream.\r\n\t * @param ruleIndex The rule containing the predicate.\r\n\t * @param predIndex The index of the predicate within the rule.\r\n\t * @param speculative `true` if the current index in `input` is\r\n\t * one character before the predicate's location.\r\n\t *\r\n\t * @returns `true` if the specified predicate evaluates to\r\n\t * `true`.\r\n\t */\r\n\tprotected evaluatePredicate(@NotNull input: CharStream, ruleIndex: number, predIndex: number, speculative: boolean): boolean {\r\n\t\t// assume true if no recognizer was provided\r\n\t\tif (this.recog == null) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!speculative) {\r\n\t\t\treturn this.recog.sempred(undefined, ruleIndex, predIndex);\r\n\t\t}\r\n\r\n\t\tlet savedCharPositionInLine: number = this._charPositionInLine;\r\n\t\tlet savedLine: number = this._line;\r\n\t\tlet index: number = input.index;\r\n\t\tlet marker: number = input.mark();\r\n\t\ttry {\r\n\t\t\tthis.consume(input);\r\n\t\t\treturn this.recog.sempred(undefined, ruleIndex, predIndex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis._charPositionInLine = savedCharPositionInLine;\r\n\t\t\tthis._line = savedLine;\r\n\t\t\tinput.seek(index);\r\n\t\t\tinput.release(marker);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected captureSimState(\r\n\t\t@NotNull settings: LexerATNSimulator.SimState,\r\n\t\t@NotNull input: CharStream,\r\n\t\t@NotNull dfaState: DFAState): void {\r\n\t\tsettings.index = input.index;\r\n\t\tsettings.line = this._line;\r\n\t\tsettings.charPos = this._charPositionInLine;\r\n\t\tsettings.dfaState = dfaState;\r\n\t}\r\n\r\n\t// @NotNull\r\n\tprotected addDFAEdge(/*@NotNull*/ p: DFAState, t: number, /*@NotNull*/ q: ATNConfigSet): DFAState;\r\n\tprotected addDFAEdge(/*@NotNull*/ p: DFAState, t: number, /*@NotNull*/ q: DFAState): void;\r\n\tprotected addDFAEdge(p: DFAState, t: number, q: ATNConfigSet | DFAState): DFAState | void {\r\n\t\tif (q instanceof ATNConfigSet) {\r\n\t\t\t/* leading to this call, ATNConfigSet.hasSemanticContext is used as a\r\n\t\t\t* marker indicating dynamic predicate evaluation makes this edge\r\n\t\t\t* dependent on the specific input sequence, so the static edge in the\r\n\t\t\t* DFA should be omitted. The target DFAState is still created since\r\n\t\t\t* execATN has the ability to resynchronize with the DFA state cache\r\n\t\t\t* following the predicate evaluation step.\r\n\t\t\t*\r\n\t\t\t* TJP notes: next time through the DFA, we see a pred again and eval.\r\n\t\t\t* If that gets us to a previously created (but dangling) DFA\r\n\t\t\t* state, we can continue in pure DFA mode from there.\r\n\t\t\t*/\r\n\t\t\tlet suppressEdge: boolean = q.hasSemanticContext;\r\n\t\t\tif (suppressEdge) {\r\n\t\t\t\tq.hasSemanticContext = false;\r\n\t\t\t}\r\n\r\n\t\t\t// @NotNull\r\n\t\t\tlet to: DFAState = this.addDFAState(q);\r\n\r\n\t\t\tif (suppressEdge) {\r\n\t\t\t\treturn to;\r\n\t\t\t}\r\n\r\n\t\t\tthis.addDFAEdge(p, t, to);\r\n\t\t\treturn to;\r\n\t\t} else {\r\n\t\t\tif (LexerATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"EDGE \" + p + \" -> \" + q + \" upon \" + String.fromCharCode(t));\r\n\t\t\t}\r\n\r\n\t\t\tif (p != null) {\r\n\t\t\t\tp.setTarget(t, q);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** Add a new DFA state if there isn't one with this set of\r\n\t * \tconfigurations already. This method also detects the first\r\n\t * \tconfiguration containing an ATN rule stop state. Later, when\r\n\t * \ttraversing the DFA, we will know which rule to accept.\r\n\t */\r\n\t@NotNull\r\n\tprotected addDFAState(@NotNull configs: ATNConfigSet): DFAState {\r\n\t\t/* the lexer evaluates predicates on-the-fly; by this point configs\r\n\t\t * should not contain any configurations with unevaluated predicates.\r\n\t\t */\r\n\t\tassert(!configs.hasSemanticContext);\r\n\r\n\t\tlet proposed: DFAState = new DFAState(configs);\r\n\t\tlet existing: DFAState | undefined = this.atn.modeToDFA[this.mode].states.get(proposed);\r\n\t\tif (existing != null) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tconfigs.optimizeConfigs(this);\r\n\t\tlet newState: DFAState = new DFAState(configs.clone(true));\r\n\r\n\t\tlet firstConfigWithRuleStopState: ATNConfig | undefined;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\tfirstConfigWithRuleStopState = c;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (firstConfigWithRuleStopState != null) {\r\n\t\t\tlet prediction: number = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\r\n\t\t\tlet lexerActionExecutor: LexerActionExecutor | undefined = firstConfigWithRuleStopState.lexerActionExecutor;\r\n\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(prediction, lexerActionExecutor);\r\n\t\t}\r\n\r\n\t\treturn this.atn.modeToDFA[this.mode].addState(newState);\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getDFA(mode: number): DFA {\r\n\t\treturn this.atn.modeToDFA[mode];\r\n\t}\r\n\r\n\t/** Get the text matched so far for the current token.\r\n\t */\r\n\t@NotNull\r\n\tpublic getText(@NotNull input: CharStream): string {\r\n\t\t// index is first lookahead char, don't include.\r\n\t\treturn input.getText(Interval.of(this.startIndex, input.index - 1));\r\n\t}\r\n\r\n\tget line(): number {\r\n\t\treturn this._line;\r\n\t}\r\n\r\n\tset line(line: number) {\r\n\t\tthis._line = line;\r\n\t}\r\n\r\n\tget charPositionInLine(): number {\r\n\t\treturn this._charPositionInLine;\r\n\t}\r\n\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis._charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\tpublic consume(@NotNull input: CharStream): void {\r\n\t\tlet curChar: number = input.LA(1);\r\n\t\tif (curChar === \"\\n\".charCodeAt(0)) {\r\n\t\t\tthis._line++;\r\n\t\t\tthis._charPositionInLine = 0;\r\n\t\t} else {\r\n\t\t\tthis._charPositionInLine++;\r\n\t\t}\r\n\t\tinput.consume();\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getTokenName(t: number): string {\r\n\t\tif (t === -1) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\t\t//if ( atn.g!=null ) return atn.g.getTokenDisplayName(t);\r\n\t\treturn \"'\" + String.fromCharCode(t) + \"'\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerATNSimulator {\r\n\texport const debug: boolean = false;\r\n\texport const dfa_debug: boolean = false;\r\n\r\n\t/** When we hit an accept state in either the DFA or the ATN, we\r\n\t * have to notify the character stream to start buffering characters\r\n\t * via {@link IntStream#mark} and record the current state. The current sim state\r\n\t * includes the current index into the input, the current line,\r\n\t * and current character position in that line. Note that the Lexer is\r\n\t * tracking the starting line and characterization of the token. These\r\n\t * variables track the \"state\" of the simulator when it hits an accept state.\r\n\t *\r\n\t * We track these variables separately for the DFA and ATN simulation\r\n\t * because the DFA simulation often has to fail over to the ATN\r\n\t * simulation. If the ATN simulation fails, we need the DFA to fall\r\n\t * back to its previously accepted state, if any. If the ATN succeeds,\r\n\t * then the ATN does the accept and the DFA simulator that invoked it\r\n\t * can simply return the predicted token type.\r\n\t */\r\n\texport class SimState {\r\n\t\tpublic index: number = -1;\r\n\t\tpublic line: number = 0;\r\n\t\tpublic charPos: number = -1;\r\n\t\tpublic dfaState?: DFAState;\r\n\r\n\t\tpublic reset(): void {\r\n\t\t\tthis.index = -1;\r\n\t\t\tthis.line = 0;\r\n\t\t\tthis.charPos = -1;\r\n\t\t\tthis.dfaState = undefined;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.7913318-07:00\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonTokenFactory } from \"./CommonTokenFactory\";\r\nimport { IntegerStack } from \"./misc/IntegerStack\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { LexerATNSimulator } from \"./atn/LexerATNSimulator\";\r\nimport { LexerNoViableAltException } from \"./LexerNoViableAltException\";\r\nimport { Override } from \"./Decorators\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/** A lexer is recognizer that draws input symbols from a character stream.\r\n * lexer grammars result in a subclass of this object. A Lexer object\r\n * uses simplified match() and error recovery mechanisms in the interest\r\n * of speed.\r\n */\r\nexport abstract class Lexer extends Recognizer\r\n\timplements TokenSource {\r\n\tpublic static readonly DEFAULT_MODE: number = 0;\r\n\tpublic static readonly MORE: number = -2;\r\n\tpublic static readonly SKIP: number = -3;\r\n\r\n\tstatic get DEFAULT_TOKEN_CHANNEL(): number {\r\n\t\treturn Token.DEFAULT_CHANNEL;\r\n\t}\r\n\r\n\tstatic get HIDDEN(): number {\r\n\t\treturn Token.HIDDEN_CHANNEL;\r\n\t}\r\n\r\n\tpublic static readonly MIN_CHAR_VALUE: number = 0x0000;\r\n\tpublic static readonly MAX_CHAR_VALUE: number = 0x10FFFF;\r\n\r\n\tpublic _input: CharStream;\r\n\r\n\tprotected _tokenFactorySourcePair: { source: TokenSource, stream: CharStream };\r\n\r\n\t/** How to create token objects */\r\n\tprotected _factory: TokenFactory = CommonTokenFactory.DEFAULT;\r\n\r\n\t/** The goal of all lexer rules/methods is to create a token object.\r\n\t * This is an instance variable as multiple rules may collaborate to\r\n\t * create a single token. nextToken will return this object after\r\n\t * matching lexer rule(s). If you subclass to allow multiple token\r\n\t * emissions, then set this to the last token to be matched or\r\n\t * something non-undefined so that the auto token emit mechanism will not\r\n\t * emit another token.\r\n\t */\r\n\tpublic _token: Token | undefined;\r\n\r\n\t/** What character index in the stream did the current token start at?\r\n\t * Needed, for example, to get the text for current token. Set at\r\n\t * the start of nextToken.\r\n\t */\r\n\tpublic _tokenStartCharIndex: number = -1;\r\n\r\n\t/** The line on which the first character of the token resides */\r\n\tpublic _tokenStartLine: number = 0;\r\n\r\n\t/** The character position of first character within the line */\r\n\tpublic _tokenStartCharPositionInLine: number = 0;\r\n\r\n\t/** Once we see EOF on char stream, next token will be EOF.\r\n\t * If you have DONE : EOF ; then you see DONE EOF.\r\n\t */\r\n\tpublic _hitEOF: boolean = false;\r\n\r\n\t/** The channel number for the current token */\r\n\tpublic _channel: number = 0;\r\n\r\n\t/** The token type for the current token */\r\n\tpublic _type: number = 0;\r\n\r\n\tpublic readonly _modeStack: IntegerStack = new IntegerStack();\r\n\tpublic _mode: number = Lexer.DEFAULT_MODE;\r\n\r\n\t/** You can set the text for the current token to override what is in\r\n\t * the input char buffer. Set `text` or can set this instance var.\r\n\t */\r\n\tpublic _text: string | undefined;\r\n\r\n\tconstructor(input: CharStream) {\r\n\t\tsuper();\r\n\t\tthis._input = input;\r\n\t\tthis._tokenFactorySourcePair = { source: this, stream: input };\r\n\t}\r\n\r\n\tpublic reset(): void;\r\n\tpublic reset(resetInput: boolean): void;\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\t// wack Lexer state variables\r\n\t\tif (resetInput === undefined || resetInput) {\r\n\t\t\tthis._input.seek(0); // rewind the input\r\n\t\t}\r\n\r\n\t\tthis._token = undefined;\r\n\t\tthis._type = Token.INVALID_TYPE;\r\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\r\n\t\tthis._tokenStartCharIndex = -1;\r\n\t\tthis._tokenStartCharPositionInLine = -1;\r\n\t\tthis._tokenStartLine = -1;\r\n\t\tthis._text = undefined;\r\n\r\n\t\tthis._hitEOF = false;\r\n\t\tthis._mode = Lexer.DEFAULT_MODE;\r\n\t\tthis._modeStack.clear();\r\n\r\n\t\tthis.interpreter.reset();\r\n\t}\r\n\r\n\t/** Return a token from this source; i.e., match a token on the char\r\n\t * stream.\r\n\t */\r\n\t@Override\r\n\tpublic nextToken(): Token {\r\n\t\tif (this._input == null) {\r\n\t\t\tthrow new Error(\"nextToken requires a non-null input stream.\");\r\n\t\t}\r\n\r\n\t\t// Mark start location in char stream so unbuffered streams are\r\n\t\t// guaranteed at least have text of current token\r\n\t\tlet tokenStartMarker: number = this._input.mark();\r\n\t\ttry {\r\n\t\t\touter:\r\n\t\t\twhile (true) {\r\n\t\t\t\tif (this._hitEOF) {\r\n\t\t\t\t\treturn this.emitEOF();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._token = undefined;\r\n\t\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\r\n\t\t\t\tthis._tokenStartCharIndex = this._input.index;\r\n\t\t\t\tthis._tokenStartCharPositionInLine = this.interpreter.charPositionInLine;\r\n\t\t\t\tthis._tokenStartLine = this.interpreter.line;\r\n\t\t\t\tthis._text = undefined;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tthis._type = Token.INVALID_TYPE;\r\n//\t\t\t\tSystem.out.println(\"nextToken line \"+tokenStartLine+\" at \"+((char)input.LA(1))+\r\n//\t\t\t\t\t\t\t\t \" in mode \"+mode+\r\n//\t\t\t\t\t\t\t\t \" at index \"+input.index);\r\n\t\t\t\t\tlet ttype: number;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tttype = this.interpreter.match(this._input, this._mode);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\tif (e instanceof LexerNoViableAltException) {\r\n\t\t\t\t\t\t\tthis.notifyListeners(e);\t\t// report error\r\n\t\t\t\t\t\t\tthis.recover(e);\r\n\t\t\t\t\t\t\tttype = Lexer.SKIP;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._input.LA(1) === IntStream.EOF) {\r\n\t\t\t\t\t\tthis._hitEOF = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._type === Token.INVALID_TYPE) {\r\n\t\t\t\t\t\tthis._type = ttype;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._type === Lexer.SKIP) {\r\n\t\t\t\t\t\tcontinue outer;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (this._type === Lexer.MORE);\r\n\t\t\t\tif (this._token == null) {\r\n\t\t\t\t\treturn this.emit();\r\n\t\t\t\t}\r\n\t\t\t\treturn this._token;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\t// make sure we release marker after match or\r\n\t\t\t// unbuffered char stream will keep buffering\r\n\t\t\tthis._input.release(tokenStartMarker);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Instruct the lexer to skip creating a token for current lexer rule\r\n\t * and look for another token. nextToken() knows to keep looking when\r\n\t * a lexer rule finishes with token set to SKIP_TOKEN. Recall that\r\n\t * if token==undefined at end of any token rule, it creates one for you\r\n\t * and emits it.\r\n\t */\r\n\tpublic skip(): void {\r\n\t\tthis._type = Lexer.SKIP;\r\n\t}\r\n\r\n\tpublic more(): void {\r\n\t\tthis._type = Lexer.MORE;\r\n\t}\r\n\r\n\tpublic mode(m: number): void {\r\n\t\tthis._mode = m;\r\n\t}\r\n\r\n\tpublic pushMode(m: number): void {\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"pushMode \" + m);\r\n\t\t}\r\n\t\tthis._modeStack.push(this._mode);\r\n\t\tthis.mode(m);\r\n\t}\r\n\r\n\tpublic popMode(): number {\r\n\t\tif (this._modeStack.isEmpty) {\r\n\t\t\tthrow new Error(\"EmptyStackException\");\r\n\t\t}\r\n\t\tif (LexerATNSimulator.debug) {\r\n\t\t\tconsole.log(\"popMode back to \" + this._modeStack.peek());\r\n\t\t}\r\n\t\tthis.mode(this._modeStack.pop());\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._factory;\r\n\t}\r\n\r\n\t// @Override\r\n\tset tokenFactory(factory: TokenFactory) {\r\n\t\tthis._factory = factory;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): CharStream {\r\n\t\treturn this._input;\r\n\t}\r\n\r\n\t/** Set the char stream and reset the lexer */\r\n\tset inputStream(input: CharStream) {\r\n\t\tthis.reset(false);\r\n\t\tthis._input = input;\r\n\t\tthis._tokenFactorySourcePair = { source: this, stream: this._input };\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\treturn this._input.sourceName;\r\n\t}\r\n\r\n\r\n\t/** The standard method called to automatically emit a token at the\r\n\t * outermost lexical rule. The token object should point into the\r\n\t * char buffer start..stop. If there is a text override in 'text',\r\n\t * use that to set the token's text. Override this method to emit\r\n\t * custom Token objects or provide a new factory.\r\n\t */\r\n\tpublic emit(token: Token): Token;\r\n\r\n\t/** By default does not support multiple emits per nextToken invocation\r\n\t * for efficiency reasons. Subclass and override this method, nextToken,\r\n\t * and getToken (to push tokens into a list and pull from that list\r\n\t * rather than a single variable as this implementation does).\r\n\t */\r\n\tpublic emit(): Token;\r\n\r\n\tpublic emit(token?: Token): Token {\r\n\t\tif (!token) {\r\n\t\t\ttoken = this._factory.create(\r\n\t\t\t\tthis._tokenFactorySourcePair, this._type, this._text, this._channel,\r\n\t\t\t\tthis._tokenStartCharIndex, this.charIndex - 1, this._tokenStartLine,\r\n\t\t\t\tthis._tokenStartCharPositionInLine);\r\n\t\t}\r\n\t\tthis._token = token;\r\n\t\treturn token;\r\n\t}\r\n\r\n\tpublic emitEOF(): Token {\r\n\t\tlet cpos: number = this.charPositionInLine;\r\n\t\tlet line: number = this.line;\r\n\t\tlet eof: Token = this._factory.create(\r\n\t\t\tthis._tokenFactorySourcePair, Token.EOF, undefined,\r\n\t\t\tToken.DEFAULT_CHANNEL, this._input.index, this._input.index - 1,\r\n\t\t\tline, cpos);\r\n\t\tthis.emit(eof);\r\n\t\treturn eof;\r\n\t}\r\n\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn this.interpreter.line;\r\n\t}\r\n\r\n\tset line(line: number) {\r\n\t\tthis.interpreter.line = line;\r\n\t}\r\n\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn this.interpreter.charPositionInLine;\r\n\t}\r\n\r\n\tset charPositionInLine(charPositionInLine: number) {\r\n\t\tthis.interpreter.charPositionInLine = charPositionInLine;\r\n\t}\r\n\r\n\t/** What is the index of the current character of lookahead? */\r\n\tget charIndex(): number {\r\n\t\treturn this._input.index;\r\n\t}\r\n\r\n\t/** Return the text matched so far for the current token or any\r\n\t * text override.\r\n\t */\r\n\tget text(): string {\r\n\t\tif (this._text != null) {\r\n\t\t\treturn this._text;\r\n\t\t}\r\n\t\treturn this.interpreter.getText(this._input);\r\n\t}\r\n\r\n\t/** Set the complete text of this token; it wipes any previous\r\n\t * changes to the text.\r\n\t */\r\n\tset text(text: string) {\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t/** Override if emitting multiple tokens. */\r\n\tget token(): Token | undefined { return this._token; }\r\n\r\n\tset token(_token: Token | undefined) {\r\n\t\tthis._token = _token;\r\n\t}\r\n\r\n\tset type(ttype: number) {\r\n\t\tthis._type = ttype;\r\n\t}\r\n\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\tset channel(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\tpublic abstract readonly channelNames: string[];\r\n\r\n\tpublic abstract readonly modeNames: string[];\r\n\r\n\t/** Return a list of all Token objects in input char stream.\r\n\t * Forces load of all tokens. Does not include EOF token.\r\n\t */\r\n\tpublic getAllTokens(): Token[] {\r\n\t\tlet tokens: Token[] = [];\r\n\t\tlet t: Token = this.nextToken();\r\n\t\twhile (t.type !== Token.EOF) {\r\n\t\t\ttokens.push(t);\r\n\t\t\tt = this.nextToken();\r\n\t\t}\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\tpublic notifyListeners(e: LexerNoViableAltException): void {\r\n\t\tlet text: string = this._input.getText(\r\n\t\t\tInterval.of(this._tokenStartCharIndex, this._input.index));\r\n\t\tlet msg: string = \"token recognition error at: '\" +\r\n\t\t\tthis.getErrorDisplay(text) + \"'\";\r\n\r\n\t\tlet listener: ANTLRErrorListener = this.getErrorListenerDispatch();\r\n\t\tif (listener.syntaxError) {\r\n\t\t\tlistener.syntaxError(this, undefined, this._tokenStartLine, this._tokenStartCharPositionInLine, msg, e);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getErrorDisplay(s: string | number): string {\r\n\t\tif (typeof s === \"number\") {\r\n\t\t\tswitch (s) {\r\n\t\t\tcase Token.EOF:\r\n\t\t\t\treturn \"\";\r\n\t\t\tcase 0x0a:\r\n\t\t\t\treturn \"\\\\n\";\r\n\t\t\tcase 0x09:\r\n\t\t\t\treturn \"\\\\t\";\r\n\t\t\tcase 0x0d:\r\n\t\t\t\treturn \"\\\\r\";\r\n\t\t\t}\r\n\t\t\treturn String.fromCharCode(s);\r\n\t\t}\r\n\t\treturn s.replace(/\\n/g, \"\\\\n\")\r\n\t\t\t.replace(/\\t/g, \"\\\\t\")\r\n\t\t\t.replace(/\\r/g, \"\\\\r\");\r\n\t}\r\n\r\n\tpublic getCharErrorDisplay(c: number): string {\r\n\t\tlet s: string = this.getErrorDisplay(c);\r\n\t\treturn \"'\" + s + \"'\";\r\n\t}\r\n\r\n\t/** Lexers can normally match any char in it's vocabulary after matching\r\n\t * a token, so do the easy thing and just kill a character and hope\r\n\t * it all works out. You can instead use the rule invocation stack\r\n\t * to do sophisticated error recovery if you are in a fragment rule.\r\n\t */\r\n\tpublic recover(re: RecognitionException): void;\r\n\tpublic recover(re: LexerNoViableAltException): void;\r\n\tpublic recover(re: RecognitionException): void {\r\n\t\tif (re instanceof LexerNoViableAltException) {\r\n\t\t\tif (this._input.LA(1) !== IntStream.EOF) {\r\n\t\t\t\t// skip a char and try again\r\n\t\t\t\tthis.interpreter.consume(this._input);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//System.out.println(\"consuming char \"+(char)input.LA(1)+\" during recovery\");\r\n\t\t\t//re.printStackTrace();\r\n\t\t\t// TODO: Do we lose character or line position information?\r\n\t\t\tthis._input.consume();\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:40.8683480-07:00\r\n\r\nimport { ArrayEqualityComparator } from \"./ArrayEqualityComparator\";\r\nimport { IntegerList } from \"./IntegerList\";\r\nimport { Interval } from \"./Interval\";\r\nimport { IntSet } from \"./IntSet\";\r\nimport { Lexer } from \"../Lexer\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Token } from \"../Token\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\n\r\n/**\r\n * This class implements the {@link IntSet} backed by a sorted array of\r\n * non-overlapping intervals. It is particularly efficient for representing\r\n * large collections of numbers, where the majority of elements appear as part\r\n * of a sequential range of numbers that are all part of the set. For example,\r\n * the set { 1, 2, 3, 4, 7, 8 } may be represented as { [1, 4], [7, 8] }.\r\n *\r\n * This class is able to represent sets containing any combination of values in\r\n * the range {@link Integer#MIN_VALUE} to {@link Integer#MAX_VALUE}\r\n * (inclusive).\r\n */\r\nexport class IntervalSet implements IntSet {\r\n\tprivate static _COMPLETE_CHAR_SET: IntervalSet;\r\n\tstatic get COMPLETE_CHAR_SET(): IntervalSet {\r\n\t\tif (IntervalSet._COMPLETE_CHAR_SET === undefined) {\r\n\t\t\tIntervalSet._COMPLETE_CHAR_SET = IntervalSet.of(Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE);\r\n\t\t\tIntervalSet._COMPLETE_CHAR_SET.setReadonly(true);\r\n\t\t}\r\n\r\n\t\treturn IntervalSet._COMPLETE_CHAR_SET;\r\n\t}\r\n\r\n\tprivate static _EMPTY_SET: IntervalSet;\r\n\tstatic get EMPTY_SET(): IntervalSet {\r\n\t\tif (IntervalSet._EMPTY_SET == null) {\r\n\t\t\tIntervalSet._EMPTY_SET = new IntervalSet();\r\n\t\t\tIntervalSet._EMPTY_SET.setReadonly(true);\r\n\t\t}\r\n\r\n\t\treturn IntervalSet._EMPTY_SET;\r\n\t}\r\n\r\n\t/** The list of sorted, disjoint intervals. */\r\n\tprivate _intervals: Interval[];\r\n\r\n\tprivate readonly: boolean = false;\r\n\r\n\tconstructor(intervals?: Interval[]) {\r\n\t\tif (intervals != null) {\r\n\t\t\tthis._intervals = intervals.slice(0);\r\n\t\t} else {\r\n\t\t\tthis._intervals = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Create a set with all ints within range [a..b] (inclusive). If b is omitted, the set contains the single element\r\n\t * a.\r\n\t */\r\n\t@NotNull\r\n\tpublic static of(a: number, b: number = a): IntervalSet {\r\n\t\tlet s: IntervalSet = new IntervalSet();\r\n\t\ts.add(a, b);\r\n\t\treturn s;\r\n\t}\r\n\r\n\tpublic clear(): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tthis._intervals.length = 0;\r\n\t}\r\n\r\n\t/** Add interval; i.e., add all integers from a to b to set.\r\n\t * If b<a, do nothing.\r\n\t * Keep list in sorted order (by left range value).\r\n\t * If overlap, combine ranges. For example,\r\n\t * If this is {1..5, 10..20}, adding 6..7 yields\r\n\t * {1..5, 6..7, 10..20}. Adding 4..8 yields {1..8, 10..20}.\r\n\t */\r\n\tpublic add(a: number, b: number = a): void {\r\n\t\tthis.addRange(Interval.of(a, b));\r\n\t}\r\n\r\n\t// copy on write so we can cache a..a intervals and sets of that\r\n\tprotected addRange(addition: Interval): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\t//System.out.println(\"add \"+addition+\" to \"+intervals.toString());\r\n\t\tif (addition.b < addition.a) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find position in list\r\n\t\t// Use iterators as we modify list in place\r\n\t\tfor (let i: number = 0; i < this._intervals.length; i++) {\r\n\t\t\tlet r: Interval = this._intervals[i];\r\n\t\t\tif (addition.equals(r)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (addition.adjacent(r) || !addition.disjoint(r)) {\r\n\t\t\t\t// next to each other, make a single larger interval\r\n\t\t\t\tlet bigger: Interval = addition.union(r);\r\n\t\t\t\tthis._intervals[i] = bigger;\r\n\t\t\t\t// make sure we didn't just create an interval that\r\n\t\t\t\t// should be merged with next interval in list\r\n\t\t\t\twhile (i < this._intervals.length - 1) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tlet next: Interval = this._intervals[i];\r\n\t\t\t\t\tif (!bigger.adjacent(next) && bigger.disjoint(next)) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if we bump up against or overlap next, merge\r\n\t\t\t\t\t// remove this one\r\n\t\t\t\t\tthis._intervals.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t\t// move backwards to what we just set\r\n\t\t\t\t\tthis._intervals[i] = bigger.union(next);\r\n\t\t\t\t\t// set to 3 merged ones\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// first call to next after previous duplicates the result\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (addition.startsBeforeDisjoint(r)) {\r\n\t\t\t\t// insert before r\r\n\t\t\t\tthis._intervals.splice(i, 0, addition);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if disjoint and after r, a future iteration will handle it\r\n\t\t}\r\n\r\n\t\t// ok, must be after last interval (and disjoint from last interval)\r\n\t\t// just add it\r\n\t\tthis._intervals.push(addition);\r\n\t}\r\n\r\n\t/** combine all sets in the array returned the or'd value */\r\n\tpublic static or(sets: IntervalSet[]): IntervalSet {\r\n\t\tlet r: IntervalSet = new IntervalSet();\r\n\t\tfor (let s of sets) {\r\n\t\t\tr.addAll(s);\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic addAll(set: IntSet): IntervalSet {\r\n\t\tif (set == null) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (set instanceof IntervalSet) {\r\n\t\t\tlet other: IntervalSet = set;\r\n\t\t\t// walk set and add each interval\r\n\t\t\tlet n: number = other._intervals.length;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\tlet I: Interval = other._intervals[i];\r\n\t\t\t\tthis.add(I.a, I.b);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let value of set.toArray()) {\r\n\t\t\t\tthis.add(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic complementRange(minElement: number, maxElement: number): IntervalSet {\r\n\t\treturn this.complement(IntervalSet.of(minElement, maxElement));\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic complement(vocabulary: IntSet): IntervalSet {\r\n\t\tif (vocabulary.isNil) {\r\n\t\t\t// nothing in common with null set\r\n\t\t\treturn IntervalSet.EMPTY_SET;\r\n\t\t}\r\n\r\n\t\tlet vocabularyIS: IntervalSet;\r\n\t\tif (vocabulary instanceof IntervalSet) {\r\n\t\t\tvocabularyIS = vocabulary;\r\n\t\t} else {\r\n\t\t\tvocabularyIS = new IntervalSet();\r\n\t\t\tvocabularyIS.addAll(vocabulary);\r\n\t\t}\r\n\r\n\t\treturn vocabularyIS.subtract(this);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic subtract(a: IntSet): IntervalSet {\r\n\t\tif (a == null || a.isNil) {\r\n\t\t\treturn new IntervalSet(this._intervals);\r\n\t\t}\r\n\r\n\t\tif (a instanceof IntervalSet) {\r\n\t\t\treturn IntervalSet.subtract(this, a);\r\n\t\t}\r\n\r\n\t\tlet other: IntervalSet = new IntervalSet();\r\n\t\tother.addAll(a);\r\n\t\treturn IntervalSet.subtract(this, other);\r\n\t}\r\n\r\n\t/**\r\n\t * Compute the set difference between two interval sets. The specific\r\n\t * operation is `left - right`.\r\n\t */\r\n\t@NotNull\r\n\tpublic static subtract(left: IntervalSet, right: IntervalSet): IntervalSet {\r\n\t\tif (left.isNil) {\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\tlet result: IntervalSet = new IntervalSet(left._intervals);\r\n\t\tif (right.isNil) {\r\n\t\t\t// right set has no elements; just return the copy of the current set\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet resultI: number = 0;\r\n\t\tlet rightI: number = 0;\r\n\t\twhile (resultI < result._intervals.length && rightI < right._intervals.length) {\r\n\t\t\tlet resultInterval: Interval = result._intervals[resultI];\r\n\t\t\tlet rightInterval: Interval = right._intervals[rightI];\r\n\r\n\t\t\t// operation: (resultInterval - rightInterval) and update indexes\r\n\r\n\t\t\tif (rightInterval.b < resultInterval.a) {\r\n\t\t\t\trightI++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (rightInterval.a > resultInterval.b) {\r\n\t\t\t\tresultI++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet beforeCurrent: Interval | undefined;\r\n\t\t\tlet afterCurrent: Interval | undefined;\r\n\t\t\tif (rightInterval.a > resultInterval.a) {\r\n\t\t\t\tbeforeCurrent = new Interval(resultInterval.a, rightInterval.a - 1);\r\n\t\t\t}\r\n\r\n\t\t\tif (rightInterval.b < resultInterval.b) {\r\n\t\t\t\tafterCurrent = new Interval(rightInterval.b + 1, resultInterval.b);\r\n\t\t\t}\r\n\r\n\t\t\tif (beforeCurrent) {\r\n\t\t\t\tif (afterCurrent) {\r\n\t\t\t\t\t// split the current interval into two\r\n\t\t\t\t\tresult._intervals[resultI] = beforeCurrent;\r\n\t\t\t\t\tresult._intervals.splice(resultI + 1, 0, afterCurrent);\r\n\t\t\t\t\tresultI++;\r\n\t\t\t\t\trightI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// replace the current interval\r\n\t\t\t\t\tresult._intervals[resultI] = beforeCurrent;\r\n\t\t\t\t\tresultI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (afterCurrent) {\r\n\t\t\t\t\t// replace the current interval\r\n\t\t\t\t\tresult._intervals[resultI] = afterCurrent;\r\n\t\t\t\t\trightI++;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// remove the current interval (thus no need to increment resultI)\r\n\t\t\t\t\tresult._intervals.splice(resultI, 1);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If rightI reached right.intervals.size, no more intervals to subtract from result.\r\n\t\t// If resultI reached result.intervals.size, we would be subtracting from an empty set.\r\n\t\t// Either way, we are done.\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic or(a: IntSet): IntervalSet {\r\n\t\tlet o: IntervalSet = new IntervalSet();\r\n\t\to.addAll(this);\r\n\t\to.addAll(a);\r\n\t\treturn o;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic and(other: IntSet): IntervalSet {\r\n\t\tif (other.isNil) { //|| !(other instanceof IntervalSet) ) {\r\n\t\t\t// nothing in common with null set\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\tlet myIntervals: Interval[] = this._intervals;\r\n\t\tlet theirIntervals: Interval[] = (other as IntervalSet)._intervals;\r\n\t\tlet intersection: IntervalSet | undefined;\r\n\t\tlet mySize: number = myIntervals.length;\r\n\t\tlet theirSize: number = theirIntervals.length;\r\n\t\tlet i: number = 0;\r\n\t\tlet j: number = 0;\r\n\t\t// iterate down both interval lists looking for nondisjoint intervals\r\n\t\twhile (i < mySize && j < theirSize) {\r\n\t\t\tlet mine: Interval = myIntervals[i];\r\n\t\t\tlet theirs: Interval = theirIntervals[j];\r\n\t\t\t//System.out.println(\"mine=\"+mine+\" and theirs=\"+theirs);\r\n\t\t\tif (mine.startsBeforeDisjoint(theirs)) {\r\n\t\t\t\t// move this iterator looking for interval that might overlap\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\telse if (theirs.startsBeforeDisjoint(mine)) {\r\n\t\t\t\t// move other iterator looking for interval that might overlap\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\telse if (mine.properlyContains(theirs)) {\r\n\t\t\t\t// overlap, add intersection, get next theirs\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\telse if (theirs.properlyContains(mine)) {\r\n\t\t\t\t// overlap, add intersection, get next mine\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\telse if (!mine.disjoint(theirs)) {\r\n\t\t\t\t// overlap, add intersection\r\n\t\t\t\tif (!intersection) {\r\n\t\t\t\t\tintersection = new IntervalSet();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintersection.addRange(mine.intersection(theirs));\r\n\t\t\t\t// Move the iterator of lower range [a..b], but not\r\n\t\t\t\t// the upper range as it may contain elements that will collide\r\n\t\t\t\t// with the next iterator. So, if mine=[0..115] and\r\n\t\t\t\t// theirs=[115..200], then intersection is 115 and move mine\r\n\t\t\t\t// but not theirs as theirs may collide with the next range\r\n\t\t\t\t// in thisIter.\r\n\t\t\t\t// move both iterators to next ranges\r\n\t\t\t\tif (mine.startsAfterNonDisjoint(theirs)) {\r\n\t\t\t\t\tj++;\r\n\t\t\t\t}\r\n\t\t\t\telse if (theirs.startsAfterNonDisjoint(mine)) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!intersection) {\r\n\t\t\treturn new IntervalSet();\r\n\t\t}\r\n\r\n\t\treturn intersection;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tpublic contains(el: number): boolean {\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tlet l: number = 0;\r\n\t\tlet r: number = n - 1;\r\n\t\t// Binary search for the element in the (sorted, disjoint) array of intervals.\r\n\t\twhile (l <= r) {\r\n\t\t\tlet m: number = (l + r) >> 1;\r\n\t\t\tlet I: Interval = this._intervals[m];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (b < el) {\r\n\t\t\t\tl = m + 1;\r\n\t\t\t} else if (a > el) {\r\n\t\t\t\tr = m - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// el >= a && el <= b\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/** {@inheritDoc} */\r\n\t@Override\r\n\tget isNil(): boolean {\r\n\t\treturn this._intervals == null || this._intervals.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the maximum value contained in the set if not isNil.\r\n\t *\r\n\t * @return the maximum value contained in the set.\r\n\t * @throws RangeError if set is empty\r\n\t */\r\n\tget maxElement(): number {\r\n\t\tif (this.isNil) {\r\n\t\t\tthrow new RangeError(\"set is empty\");\r\n\t\t}\r\n\r\n\t\tlet last: Interval = this._intervals[this._intervals.length - 1];\r\n\t\treturn last.b;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the minimum value contained in the set if not isNil.\r\n\t *\r\n\t * @return the minimum value contained in the set.\r\n\t * @throws RangeError if set is empty\r\n\t */\r\n\tget minElement(): number {\r\n\t\tif (this.isNil) {\r\n\t\t\tthrow new RangeError(\"set is empty\");\r\n\t\t}\r\n\r\n\t\treturn this._intervals[0].a;\r\n\t}\r\n\r\n\t/** Return a list of Interval objects. */\r\n\tget intervals(): Interval[] {\r\n\t\treturn this._intervals;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\thash = MurmurHash.update(hash, I.a);\r\n\t\t\thash = MurmurHash.update(hash, I.b);\r\n\t\t}\r\n\r\n\t\thash = MurmurHash.finish(hash, this._intervals.length * 2);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t/** Are two IntervalSets equal? Because all intervals are sorted\r\n\t * and disjoint, equals is a simple linear walk over both lists\r\n\t * to make sure they are the same. Interval.equals() is used\r\n\t * by the List.equals() method to check the ranges.\r\n\t */\r\n\t@Override\r\n\tpublic equals(o: any): boolean {\r\n\t\tif (o == null || !(o instanceof IntervalSet)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn ArrayEqualityComparator.INSTANCE.equals(this._intervals, o._intervals);\r\n\t}\r\n\r\n\tpublic toString(elemAreChar: boolean = false): string {\r\n\t\tlet buf: string = \"\";\r\n\t\tif (this._intervals == null || this._intervals.length === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"{\";\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuf += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (a === b) {\r\n\t\t\t\tif (a === Token.EOF) {\r\n\t\t\t\t\tbuf += \"\";\r\n\t\t\t\t} else if (elemAreChar) {\r\n\t\t\t\t\tbuf += \"'\" + String.fromCodePoint(a) + \"'\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += a;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (elemAreChar) {\r\n\t\t\t\t\tbuf += \"'\" + String.fromCodePoint(a) + \"'..'\" + String.fromCodePoint(b) + \"'\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuf += a + \"..\" + b;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"}\";\r\n\t\t}\r\n\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic toStringVocabulary( @NotNull vocabulary: Vocabulary): string {\r\n\t\tif (this._intervals == null || this._intervals.length === 0) {\r\n\t\t\treturn \"{}\";\r\n\t\t}\r\n\r\n\t\tlet buf: string = \"\";\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"{\";\r\n\t\t}\r\n\r\n\t\tlet first: boolean = true;\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuf += \", \";\r\n\t\t\t}\r\n\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (a === b) {\r\n\t\t\t\tbuf += this.elementName(vocabulary, a);\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = a; i <= b; i++) {\r\n\t\t\t\t\tif (i > a) {\r\n\t\t\t\t\t\tbuf += \", \";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbuf += this.elementName(vocabulary, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.size > 1) {\r\n\t\t\tbuf += \"}\";\r\n\t\t}\r\n\r\n\t\treturn buf;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected elementName( @NotNull vocabulary: Vocabulary, a: number): string {\r\n\t\tif (a === Token.EOF) {\r\n\t\t\treturn \"\";\r\n\t\t} else if (a === Token.EPSILON) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn vocabulary.getDisplayName(a);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\tlet n: number = 0;\r\n\t\tlet numIntervals: number = this._intervals.length;\r\n\t\tif (numIntervals === 1) {\r\n\t\t\tlet firstInterval: Interval = this._intervals[0];\r\n\t\t\treturn firstInterval.b - firstInterval.a + 1;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < numIntervals; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tn += (I.b - I.a + 1);\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n\r\n\tpublic toIntegerList(): IntegerList {\r\n\t\tlet values: IntegerList = new IntegerList(this.size);\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\tvalues.add(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\tpublic toSet(): Set {\r\n\t\tlet s: Set = new Set();\r\n\t\tfor (let I of this._intervals) {\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\ts.add(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn s;\r\n\t}\r\n\r\n\tpublic toArray(): number[] {\r\n\t\tlet values: number[] = new Array();\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tfor (let v = a; v <= b; v++) {\r\n\t\t\t\tvalues.push(v);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic remove(el: number): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tlet n: number = this._intervals.length;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet I: Interval = this._intervals[i];\r\n\t\t\tlet a: number = I.a;\r\n\t\t\tlet b: number = I.b;\r\n\t\t\tif (el < a) {\r\n\t\t\t\tbreak; // list is sorted and el is before this interval; not here\r\n\t\t\t}\r\n\t\t\t// if whole interval x..x, rm\r\n\t\t\tif (el === a && el === b) {\r\n\t\t\t\tthis._intervals.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if on left edge x..b, adjust left\r\n\t\t\tif (el === a) {\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a + 1, I.b);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if on right edge a..x, adjust right\r\n\t\t\tif (el === b) {\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a, I.b - 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// if in middle a..x..b, split interval\r\n\t\t\tif (el > a && el < b) { // found in this interval\r\n\t\t\t\tlet oldb: number = I.b;\r\n\t\t\t\tthis._intervals[i] = Interval.of(I.a, el - 1); // [a..x-1]\r\n\t\t\t\tthis.add(el + 1, oldb); // add [x+1..b]\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget isReadonly(): boolean {\r\n\t\treturn this.readonly;\r\n\t}\r\n\r\n\tpublic setReadonly(readonly: boolean): void {\r\n\t\tif (this.readonly && !readonly) {\r\n\t\t\tthrow new Error(\"can't alter readonly IntervalSet\");\r\n\t\t}\r\n\r\n\t\tthis.readonly = readonly;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.8187912-07:00\r\n\r\nimport { NotNull } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNDeserializationOptions {\r\n\tprivate static _defaultOptions?: ATNDeserializationOptions;\r\n\r\n\tprivate readOnly: boolean = false;\r\n\tprivate verifyATN: boolean;\r\n\tprivate generateRuleBypassTransitions: boolean;\r\n\tprivate optimize: boolean;\r\n\r\n\tconstructor(options?: ATNDeserializationOptions) {\r\n\t\tif (options) {\r\n\t\t\tthis.verifyATN = options.verifyATN;\r\n\t\t\tthis.generateRuleBypassTransitions = options.generateRuleBypassTransitions;\r\n\t\t\tthis.optimize = options.optimize;\r\n\t\t} else {\r\n\t\t\tthis.verifyATN = true;\r\n\t\t\tthis.generateRuleBypassTransitions = false;\r\n\t\t\tthis.optimize = true;\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tstatic get defaultOptions(): ATNDeserializationOptions {\r\n\t\tif (ATNDeserializationOptions._defaultOptions == null) {\r\n\t\t\tATNDeserializationOptions._defaultOptions = new ATNDeserializationOptions();\r\n\t\t\tATNDeserializationOptions._defaultOptions.makeReadOnly();\r\n\t\t}\r\n\r\n\t\treturn ATNDeserializationOptions._defaultOptions;\r\n\t}\r\n\r\n\tget isReadOnly(): boolean {\r\n\t\treturn this.readOnly;\r\n\t}\r\n\r\n\tpublic makeReadOnly(): void {\r\n\t\tthis.readOnly = true;\r\n\t}\r\n\r\n\tget isVerifyATN(): boolean {\r\n\t\treturn this.verifyATN;\r\n\t}\r\n\r\n\tset isVerifyATN(verifyATN: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.verifyATN = verifyATN;\r\n\t}\r\n\r\n\tget isGenerateRuleBypassTransitions(): boolean {\r\n\t\treturn this.generateRuleBypassTransitions;\r\n\t}\r\n\r\n\tset isGenerateRuleBypassTransitions(generateRuleBypassTransitions: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.generateRuleBypassTransitions = generateRuleBypassTransitions;\r\n\t}\r\n\r\n\tget isOptimize(): boolean {\r\n\t\treturn this.optimize;\r\n\t}\r\n\r\n\tset isOptimize(optimize: boolean) {\r\n\t\tthis.throwIfReadOnly();\r\n\t\tthis.optimize = optimize;\r\n\t}\r\n\r\n\tprotected throwIfReadOnly(): void {\r\n\t\tif (this.isReadOnly) {\r\n\t\t\tthrow new Error(\"The object is read only.\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.7363448-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class ActionTransition extends Transition {\r\n\tpublic ruleIndex: number;\r\n\tpublic actionIndex: number;\r\n\tpublic isCtxDependent: boolean; // e.g., $i ref in action\r\n\r\n\tconstructor(@NotNull target: ATNState, ruleIndex: number, actionIndex: number = -1, isCtxDependent: boolean = false) {\r\n\t\tsuper(target);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t\tthis.actionIndex = actionIndex;\r\n\t\tthis.isCtxDependent = isCtxDependent;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.ACTION;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true; // we are to be ignored by analysis 'cept for predicates\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.6769122-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/** TODO: make all transitions sets? no, should remove set edges */\r\nexport class AtomTransition extends Transition {\r\n\t/** The token type or character value; or, signifies special label. */\r\n\tpublic _label: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, label: number) {\r\n\t\tsuper(target);\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.ATOM;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn IntervalSet.of(this._label);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn this._label === symbol;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn String(this.label);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.9930394-07:00\r\n\r\nimport { BlockEndState } from \"./BlockEndState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The start of a regular `(...)` block. */\r\nexport abstract class BlockStartState extends DecisionState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic endState!: BlockEndState;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.7669801-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class BasicBlockStartState extends BlockStartState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BLOCK_START;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:27.9125304-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Terminal node of a simple `(a|b|c)` block. */\r\nexport class BlockEndState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic startState!: BlockStartState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.BLOCK_END;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.6283213-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class EpsilonTransition extends Transition {\r\n\r\n\tprivate _outermostPrecedenceReturn: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, outermostPrecedenceReturn: number = -1) {\r\n\t\tsuper(target);\r\n\t\tthis._outermostPrecedenceReturn = outermostPrecedenceReturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @returns the rule index of a precedence rule for which this transition is\r\n\t * returning from, where the precedence value is 0; otherwise, -1.\r\n\t *\r\n\t * @see ATNConfig.isPrecedenceFilterSuppressed\r\n\t * @see ParserATNSimulator#applyPrecedenceFilter(ATNConfigSet, ParserRuleContext, PredictionContextCache)\r\n\t * @since 4.4.1\r\n\t */\r\n\tget outermostPrecedenceReturn(): number {\r\n\t\treturn this._outermostPrecedenceReturn;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.EPSILON;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"epsilon\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.5634388-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `channel` lexer action by calling\r\n * {@link Lexer#setChannel} with the assigned channel.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerChannelAction implements LexerAction {\r\n\tprivate readonly _channel: number;\r\n\r\n\t/**\r\n\t * Constructs a new `channel` action with the specified channel value.\r\n\t * @param channel The channel value to pass to {@link Lexer#setChannel}.\r\n\t */\r\n\tconstructor(channel: number) {\r\n\t\tthis._channel = channel;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the channel to use for the {@link Token} created by the lexer.\r\n\t *\r\n\t * @returns The channel to use for the {@link Token} created by the lexer.\r\n\t */\r\n\tget channel(): number {\r\n\t\treturn this._channel;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#CHANNEL}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.CHANNEL;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#setChannel} with the\r\n\t * value provided by {@link #getChannel}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.channel = this._channel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._channel);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerChannelAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._channel === obj._channel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `channel(${this._channel})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.6567992-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Executes a custom lexer action by calling {@link Recognizer#action} with the\r\n * rule and action indexes assigned to the custom action. The implementation of\r\n * a custom action is added to the generated code for the lexer in an override\r\n * of {@link Recognizer#action} when the grammar is compiled.\r\n *\r\n * This class may represent embedded actions created with the `{...}`\r\n * syntax in ANTLR 4, as well as actions created for lexer commands where the\r\n * command argument could not be evaluated when the grammar was compiled.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerCustomAction implements LexerAction {\r\n\tprivate readonly _ruleIndex: number;\r\n\tprivate readonly _actionIndex: number;\r\n\r\n\t/**\r\n\t * Constructs a custom lexer action with the specified rule and action\r\n\t * indexes.\r\n\t *\r\n\t * @param ruleIndex The rule index to use for calls to\r\n\t * {@link Recognizer#action}.\r\n\t * @param actionIndex The action index to use for calls to\r\n\t * {@link Recognizer#action}.\r\n\t */\r\n\tconstructor(ruleIndex: number, actionIndex: number) {\r\n\t\tthis._ruleIndex = ruleIndex;\r\n\t\tthis._actionIndex = actionIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the rule index to use for calls to {@link Recognizer#action}.\r\n\t *\r\n\t * @returns The rule index for the custom action.\r\n\t */\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the action index to use for calls to {@link Recognizer#action}.\r\n\t *\r\n\t * @returns The action index for the custom action.\r\n\t */\r\n\tget actionIndex(): number {\r\n\t\treturn this._actionIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * @returns This method returns {@link LexerActionType#CUSTOM}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.CUSTOM;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether the lexer action is position-dependent. Position-dependent\r\n\t * actions may have different semantics depending on the {@link CharStream}\r\n\t * index at the time the action is executed.\r\n\t *\r\n\t * Custom actions are position-dependent since they may represent a\r\n\t * user-defined embedded action which makes calls to methods like\r\n\t * {@link Lexer#getText}.\r\n\t *\r\n\t * @returns This method returns `true`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Custom actions are implemented by calling {@link Lexer#action} with the\r\n\t * appropriate rule and action indexes.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.action(undefined, this._ruleIndex, this._actionIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._ruleIndex);\r\n\t\thash = MurmurHash.update(hash, this._actionIndex);\r\n\t\treturn MurmurHash.finish(hash, 3);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerCustomAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._ruleIndex === obj._ruleIndex\r\n\t\t\t&& this._actionIndex === obj._actionIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.8653427-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `mode` lexer action by calling {@link Lexer#mode} with\r\n * the assigned mode.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerModeAction implements LexerAction {\r\n\tprivate readonly _mode: number;\r\n\r\n\t/**\r\n\t * Constructs a new `mode` action with the specified mode value.\r\n\t * @param mode The mode value to pass to {@link Lexer#mode}.\r\n\t */\r\n\tconstructor(mode: number) {\r\n\t\tthis._mode = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the lexer mode this action should transition the lexer to.\r\n\t *\r\n\t * @returns The lexer mode for this `mode` command.\r\n\t */\r\n\tget mode(): number {\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#mode} with the\r\n\t * value provided by {@link #getMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.mode(this._mode);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._mode);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerModeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._mode === obj._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `mode(${this._mode})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:29.9613221-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `more` lexer action by calling {@link Lexer#more}.\r\n *\r\n * The `more` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerMoreAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `more` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#MORE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.MORE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#more}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.more();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"more\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerMoreAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerMoreAction = new LexerMoreAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.0449220-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `popMode` lexer action by calling {@link Lexer#popMode}.\r\n *\r\n * The `popMode` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerPopModeAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `popMode` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#POP_MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.POP_MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#popMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.popMode();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"popMode\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerPopModeAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerPopModeAction = new LexerPopModeAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.1378801-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `pushMode` lexer action by calling\r\n * {@link Lexer#pushMode} with the assigned mode.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerPushModeAction implements LexerAction {\r\n\tprivate readonly _mode: number;\r\n\r\n\t/**\r\n\t * Constructs a new `pushMode` action with the specified mode value.\r\n\t * @param mode The mode value to pass to {@link Lexer#pushMode}.\r\n\t */\r\n\tconstructor(mode: number) {\r\n\t\tthis._mode = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the lexer mode this action should transition the lexer to.\r\n\t *\r\n\t * @returns The lexer mode for this `pushMode` command.\r\n\t */\r\n\tget mode(): number {\r\n\t\treturn this._mode;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#PUSH_MODE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.PUSH_MODE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#pushMode} with the\r\n\t * value provided by {@link #getMode}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.pushMode(this._mode);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._mode);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerPushModeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._mode === obj._mode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `pushMode(${this._mode})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.2324460-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `skip` lexer action by calling {@link Lexer#skip}.\r\n *\r\n * The `skip` command does not have any parameters, so this action is\r\n * implemented as a singleton instance exposed by {@link #INSTANCE}.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerSkipAction implements LexerAction {\r\n\t/**\r\n\t * Constructs the singleton instance of the lexer `skip` command.\r\n\t */\r\n\tconstructor() {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#SKIP}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.SKIP;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by calling {@link Lexer#skip}.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.skip();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\treturn MurmurHash.finish(hash, 1);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\treturn obj === this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"skip\";\r\n\t}\r\n}\r\n\r\nexport namespace LexerSkipAction {\r\n\t/**\r\n\t * Provides a singleton instance of this parameterless lexer action.\r\n\t */\r\n\texport const INSTANCE: LexerSkipAction = new LexerSkipAction();\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.3204839-07:00\r\n\r\nimport { Lexer } from \"../Lexer\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\n\r\n/**\r\n * Implements the `type` lexer action by setting `Lexer.type`\r\n * with the assigned type.\r\n *\r\n * @author Sam Harwell\r\n * @since 4.2\r\n */\r\nexport class LexerTypeAction implements LexerAction {\r\n\tprivate readonly _type: number;\r\n\r\n\t/**\r\n\t * Constructs a new `type` action with the specified token type value.\r\n\t * @param type The type to assign to the token using `Lexer.type`.\r\n\t */\r\n\tconstructor(type: number) {\r\n\t\tthis._type = type;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the type to assign to a token created by the lexer.\r\n\t * @returns The type to assign to a token created by the lexer.\r\n\t */\r\n\tget type(): number {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns {@link LexerActionType#TYPE}.\r\n\t */\r\n\t@Override\r\n\tget actionType(): LexerActionType {\r\n\t\treturn LexerActionType.TYPE;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t * @returns This method returns `false`.\r\n\t */\r\n\t@Override\r\n\tget isPositionDependent(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This action is implemented by setting `Lexer.type` with the\r\n\t * value provided by `type`.\r\n\t */\r\n\t@Override\r\n\tpublic execute(@NotNull lexer: Lexer): void {\r\n\t\tlexer.type = this._type;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\tlet hash: number = MurmurHash.initialize();\r\n\t\thash = MurmurHash.update(hash, this.actionType);\r\n\t\thash = MurmurHash.update(hash, this._type);\r\n\t\treturn MurmurHash.finish(hash, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof LexerTypeAction)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._type === obj._type;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `type(${this._type})`;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.7737978-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Mark the end of a * or + loop. */\r\nexport class LoopEndState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: ATNState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.LOOP_END;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.0710131-07:00\r\n\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { Override } from \"../Decorators\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\n/**\r\n * This class stores information about a configuration conflict.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ConflictInfo {\r\n\tprivate _conflictedAlts: BitSet;\r\n\r\n\tprivate exact: boolean;\r\n\r\n\tconstructor(conflictedAlts: BitSet, exact: boolean) {\r\n\t\tthis._conflictedAlts = conflictedAlts;\r\n\t\tthis.exact = exact;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of conflicting alternatives for the configuration set.\r\n\t */\r\n\tget conflictedAlts(): BitSet {\r\n\t\treturn this._conflictedAlts;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether or not the configuration conflict is an exact conflict.\r\n\t * An exact conflict occurs when the prediction algorithm determines that\r\n\t * the represented alternatives for a particular configuration set cannot be\r\n\t * further reduced by consuming additional input. After reaching an exact\r\n\t * conflict during an SLL prediction, only switch to full-context prediction\r\n\t * could reduce the set of viable alternatives. In LL prediction, an exact\r\n\t * conflict indicates a true ambiguity in the input.\r\n\t *\r\n\t * For the {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} prediction mode,\r\n\t * accept states are conflicting but not exact are treated as non-accept\r\n\t * states.\r\n\t */\r\n\tget isExact(): boolean {\r\n\t\treturn this.exact;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof ConflictInfo)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.isExact === obj.isExact\r\n\t\t\t&& Utils.equals(this.conflictedAlts, obj.conflictedAlts);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic hashCode(): number {\r\n\t\treturn this.conflictedAlts.hashCode();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.1433686-07:00\r\n\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { Override } from \"../Decorators\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { Token } from \"../Token\";\r\n\r\nexport class TerminalNode implements ParseTree {\r\n\tpublic _symbol: Token;\r\n\tpublic _parent: RuleNode | undefined;\r\n\r\n\tconstructor(symbol: Token) {\r\n\t\tthis._symbol = symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getChild(i: number): never {\r\n\t\tthrow new RangeError(\"Terminal Node has no children.\");\r\n\t}\r\n\r\n\tget symbol(): Token {\r\n\t\treturn this._symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tget parent(): RuleNode | undefined {\r\n\t\treturn this._parent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic setParent(parent: RuleContext): void {\r\n\t\tthis._parent = parent;\r\n\t}\r\n\r\n\t@Override\r\n\tget payload(): Token {\r\n\t\treturn this._symbol;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\tlet tokenIndex: number = this._symbol.tokenIndex;\r\n\t\treturn new Interval(tokenIndex, tokenIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitTerminal(this);\r\n\t}\r\n\r\n\t@Override\r\n\tget text(): string {\r\n\t\treturn this._symbol.text || \"\";\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toStringTree(parser?: Parser): string {\r\n\t\treturn this.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this._symbol.type === Token.EOF) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\treturn this._symbol.text || \"\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.4646355-07:00\r\n\r\nimport { Override } from \"../Decorators\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\nimport { Token } from \"../Token\";\r\n\r\n/** Represents a token that was consumed during resynchronization\r\n * rather than during a valid match operation. For example,\r\n * we will create this kind of a node during single token insertion\r\n * and deletion as well as during \"consume until error recovery set\"\r\n * upon no viable alternative exceptions.\r\n */\r\nexport class ErrorNode extends TerminalNode {\r\n\tconstructor(token: Token) {\r\n\t\tsuper(token);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitErrorNode(this);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.9232756-07:00\r\n\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { Parser } from \"../Parser\";\r\nimport { Interval } from \"../misc/Interval\";\r\n\r\nexport abstract class RuleNode implements ParseTree {\r\n\tpublic abstract readonly ruleContext: RuleContext;\r\n\r\n\t//@Override\r\n\tpublic abstract readonly parent: RuleNode | undefined;\r\n\r\n\tpublic abstract setParent(parent: RuleContext): void;\r\n\r\n\tpublic abstract getChild(i: number): ParseTree;\r\n\r\n\tpublic abstract accept(visitor: ParseTreeVisitor): T;\r\n\r\n\tpublic abstract readonly text: string;\r\n\r\n\tpublic abstract toStringTree(parser?: Parser | undefined): string;\r\n\r\n\tpublic abstract readonly sourceInterval: Interval;\r\n\r\n\tpublic abstract readonly payload: any;\r\n\r\n\tpublic abstract readonly childCount: number;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:48.3187865-07:00\r\n\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"../atn/ATN\";\r\nimport { CommonToken } from \"../CommonToken\";\r\nimport { ErrorNode } from \"./ErrorNode\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\nimport { Token } from \"../Token\";\r\nimport { Tree } from \"./Tree\";\r\nimport * as Utils from \"../misc/Utils\";\r\n\r\n/** A set of utility routines useful for all kinds of ANTLR trees. */\r\nexport class Trees {\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes. Detect\r\n\t * parse trees and extract data appropriately.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree): string;\r\n\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes. Detect\r\n\t * parse trees and extract data appropriately.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, recog: Parser | undefined): string;\r\n\r\n\t/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the\r\n\t * node payloads to get the text for the nodes.\r\n\t */\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, /*@Nullable*/ ruleNames: string[] | undefined): string;\r\n\r\n\tpublic static toStringTree(/*@NotNull*/ t: Tree, arg2?: Parser | string[]): string;\r\n\tpublic static toStringTree(@NotNull t: Tree, arg2?: Parser | string[]): string {\r\n\t\tlet ruleNames: string[] | undefined;\r\n\t\tif (arg2 instanceof Parser) {\r\n\t\t\truleNames = arg2.ruleNames;\r\n\t\t} else {\r\n\t\t\truleNames = arg2;\r\n\t\t}\r\n\r\n\t\tlet s: string = Utils.escapeWhitespace(this.getNodeText(t, ruleNames), false);\r\n\t\tif (t.childCount === 0) {\r\n\t\t\treturn s;\r\n\t\t}\r\n\t\tlet buf = \"\";\r\n\t\tbuf += (\"(\");\r\n\t\ts = Utils.escapeWhitespace(this.getNodeText(t, ruleNames), false);\r\n\t\tbuf += (s);\r\n\t\tbuf += (\" \");\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tif (i > 0) {\r\n\t\t\t\tbuf += (\" \");\r\n\t\t\t}\r\n\t\t\tbuf += (this.toStringTree(t.getChild(i), ruleNames));\r\n\t\t}\r\n\t\tbuf += (\")\");\r\n\t\treturn buf;\r\n\t}\r\n\r\n\tpublic static getNodeText(/*@NotNull*/ t: Tree, recog: Parser | undefined): string;\r\n\tpublic static getNodeText(/*@NotNull*/ t: Tree, ruleNames: string[] | undefined): string;\r\n\tpublic static getNodeText(t: Tree, arg2: Parser | string[] | undefined): string {\r\n\t\tlet ruleNames: string[] | undefined;\r\n\t\tif (arg2 instanceof Parser) {\r\n\t\t\truleNames = arg2.ruleNames;\r\n\t\t} else if (arg2) {\r\n\t\t\truleNames = arg2;\r\n\t\t} else {\r\n\t\t\t// no recog or rule names\r\n\t\t\tlet payload = t.payload;\r\n\t\t\tif (typeof payload.text === \"string\") {\r\n\t\t\t\treturn payload.text;\r\n\t\t\t}\r\n\t\t\treturn t.payload.toString();\r\n\t\t}\r\n\r\n\t\tif (t instanceof RuleNode) {\r\n\t\t\tlet ruleContext: RuleContext = t.ruleContext;\r\n\t\t\tlet ruleIndex: number = ruleContext.ruleIndex;\r\n\t\t\tlet ruleName: string = ruleNames[ruleIndex];\r\n\t\t\tlet altNumber: number = ruleContext.altNumber;\r\n\t\t\tif (altNumber !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\treturn ruleName + \":\" + altNumber;\r\n\t\t\t}\r\n\t\t\treturn ruleName;\r\n\t\t}\r\n\t\telse if (t instanceof ErrorNode) {\r\n\t\t\treturn t.toString();\r\n\t\t}\r\n\t\telse if (t instanceof TerminalNode) {\r\n\t\t\tlet symbol = t.symbol;\r\n\t\t\treturn symbol.text || \"\";\r\n\t\t}\r\n\t\tthrow new TypeError(\"Unexpected node type\");\r\n\t}\r\n\r\n\t/** Return ordered list of all children of this node */\r\n\tpublic static getChildren(t: ParseTree): ParseTree[];\r\n\tpublic static getChildren(t: Tree): Tree[];\r\n\tpublic static getChildren(t: Tree): Tree[] {\r\n\t\tlet kids: Tree[] = [];\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tkids.push(t.getChild(i));\r\n\t\t}\r\n\t\treturn kids;\r\n\t}\r\n\r\n\t/** Return a list of all ancestors of this node. The first node of\r\n\t * list is the root and the last is the parent of this node.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static getAncestors(t: ParseTree): ParseTree[];\r\n\tpublic static getAncestors(t: Tree): Tree[];\r\n\t@NotNull\r\n\tpublic static getAncestors(@NotNull t: Tree): Tree[] {\r\n\t\tlet ancestors: Tree[] = [];\r\n\t\tlet p = t.parent;\r\n\t\twhile (p) {\r\n\t\t\tancestors.unshift(p); // insert at start\r\n\t\t\tp = p.parent;\r\n\t\t}\r\n\t\treturn ancestors;\r\n\t}\r\n\r\n\t/** Return true if t is u's parent or a node on path to root from u.\r\n\t * Use === not equals().\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static isAncestorOf(t: Tree, u: Tree): boolean {\r\n\t\tif (!t || !u || !t.parent) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tlet p = u.parent;\r\n\t\twhile (p) {\r\n\t\t\tif (t === p) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tp = p.parent;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic static findAllTokenNodes(t: ParseTree, ttype: number): ParseTree[] {\r\n\t\treturn Trees.findAllNodes(t, ttype, true);\r\n\t}\r\n\r\n\tpublic static findAllRuleNodes(t: ParseTree, ruleIndex: number): ParseTree[] {\r\n\t\treturn Trees.findAllNodes(t, ruleIndex, false);\r\n\t}\r\n\r\n\tpublic static findAllNodes(t: ParseTree, index: number, findTokens: boolean): ParseTree[] {\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tTrees._findAllNodes(t, index, findTokens, nodes);\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\tpublic static _findAllNodes(t: ParseTree, index: number, findTokens: boolean, nodes: ParseTree[]): void {\r\n\t\t// check this node (the root) first\r\n\t\tif (findTokens && t instanceof TerminalNode) {\r\n\t\t\tif (t.symbol.type === index) {\r\n\t\t\t\tnodes.push(t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (!findTokens && t instanceof ParserRuleContext) {\r\n\t\t\tif (t.ruleIndex === index) {\r\n\t\t\t\tnodes.push(t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// check children\r\n\t\tfor (let i = 0; i < t.childCount; i++) {\r\n\t\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Get all descendents; includes t itself.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static getDescendants(t: ParseTree): ParseTree[] {\r\n\t\tlet nodes: ParseTree[] = [];\r\n\r\n\t\tfunction recurse(e: ParseTree): void {\r\n\t\t\tnodes.push(e);\r\n\t\t\tconst n = e.childCount;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\trecurse(e.getChild(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trecurse(t);\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\t/** Find smallest subtree of t enclosing range startTokenIndex..stopTokenIndex\r\n\t * inclusively using postorder traversal. Recursive depth-first-search.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic static getRootOfSubtreeEnclosingRegion(\r\n\t\t@NotNull t: ParseTree,\r\n\t\tstartTokenIndex: number, // inclusive\r\n\t\tstopTokenIndex: number, // inclusive\r\n\t): ParserRuleContext | undefined {\r\n\t\tlet n: number = t.childCount;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet child: ParseTree = t.getChild(i);\r\n\t\t\tlet r = Trees.getRootOfSubtreeEnclosingRegion(child, startTokenIndex, stopTokenIndex);\r\n\t\t\tif (r) {\r\n\t\t\t\treturn r;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (t instanceof ParserRuleContext) {\r\n\t\t\tlet stopToken = t.stop;\r\n\t\t\tif (startTokenIndex >= t.start.tokenIndex && // is range fully contained in t?\r\n\t\t\t\t(stopToken == null || stopTokenIndex <= stopToken.tokenIndex)) {\r\n\t\t\t\t// note: r.stop==null likely implies that we bailed out of parser and there's nothing to the right\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** Replace any subtree siblings of root that are completely to left\r\n\t * or right of lookahead range with a CommonToken(Token.INVALID_TYPE,\"...\")\r\n\t * node. The source interval for t is not altered to suit smaller range!\r\n\t *\r\n\t * WARNING: destructive to t.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static stripChildrenOutOfRange(\r\n\t\tt: ParserRuleContext,\r\n\t\troot: ParserRuleContext,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number): void {\r\n\t\tif (!t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet count = t.childCount;\r\n\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\tlet child = t.getChild(i);\r\n\t\t\tlet range: Interval = child.sourceInterval;\r\n\t\t\tif (child instanceof ParserRuleContext && (range.b < startIndex || range.a > stopIndex)) {\r\n\t\t\t\tif (Trees.isAncestorOf(child, root)) { // replace only if subtree doesn't have displayed root\r\n\t\t\t\t\tlet abbrev: CommonToken = new CommonToken(Token.INVALID_TYPE, \"...\");\r\n\t\t\t\t\tt.children![i] = new TerminalNode(abbrev); // HACK access to private\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** Return first node satisfying the pred\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tpublic static findNodeSuchThat(t: ParseTree, pred: (tree: ParseTree) => boolean): ParseTree | undefined;\r\n\tpublic static findNodeSuchThat(t: Tree, pred: (tree: Tree) => boolean): Tree | undefined;\r\n\tpublic static findNodeSuchThat(t: Tree, pred: (tree: ParseTree) => boolean): Tree | undefined {\r\n\t\t// No type check needed as long as users only use one of the available overloads\r\n\t\tif (pred(t as ParseTree)) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\r\n\t\tlet n: number = t.childCount;\r\n\t\tfor (let i = 0 ; i < n ; i++){\r\n\t\t\tlet u = Trees.findNodeSuchThat(t.getChild(i), pred as (tree: Tree) => boolean);\r\n\t\t\tif (u !== undefined) {\r\n\t\t\t\treturn u;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.3490837-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { Parser } from \"./Parser\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleNode } from \"./tree/RuleNode\";\r\nimport { ParseTree } from \"./tree/ParseTree\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Trees } from \"./tree/Trees\";\r\nimport { ParseTreeVisitor } from \"./tree/ParseTreeVisitor\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** A rule context is a record of a single rule invocation.\r\n *\r\n * We form a stack of these context objects using the parent\r\n * pointer. A parent pointer of `undefined` indicates that the current\r\n * context is the bottom of the stack. The ParserRuleContext subclass\r\n * as a children list so that we can turn this data structure into a\r\n * tree.\r\n *\r\n * The root node always has a `undefined` pointer and invokingState of -1.\r\n *\r\n * Upon entry to parsing, the first invoked rule function creates a\r\n * context object (a subclass specialized for that rule such as\r\n * SContext) and makes it the root of a parse tree, recorded by field\r\n * Parser._ctx.\r\n *\r\n * public final SContext s() throws RecognitionException {\r\n * SContext _localctx = new SContext(_ctx, state); <-- create new node\r\n * enterRule(_localctx, 0, RULE_s); <-- push it\r\n * ...\r\n * exitRule(); <-- pop back to _localctx\r\n * return _localctx;\r\n * }\r\n *\r\n * A subsequent rule invocation of r from the start rule s pushes a\r\n * new context object for r whose parent points at s and use invoking\r\n * state is the state with r emanating as edge label.\r\n *\r\n * The invokingState fields from a context object to the root\r\n * together form a stack of rule indication states where the root\r\n * (bottom of the stack) has a -1 sentinel value. If we invoke start\r\n * symbol s then call r1, which calls r2, the would look like\r\n * this:\r\n *\r\n * SContext[-1] <- root node (bottom of the stack)\r\n * R1Context[p] <- p in rule s called r1\r\n * R2Context[q] <- q in rule r1 called r2\r\n *\r\n * So the top of the stack, _ctx, represents a call to the current\r\n * rule and it holds the return address from another rule that invoke\r\n * to this rule. To invoke a rule, we must always have a current context.\r\n *\r\n * The parent contexts are useful for computing lookahead sets and\r\n * getting error information.\r\n *\r\n * These objects are used during parsing and prediction.\r\n * For the special case of parsers, we use the subclass\r\n * ParserRuleContext.\r\n *\r\n * @see ParserRuleContext\r\n */\r\nexport class RuleContext extends RuleNode {\r\n\tpublic _parent: RuleContext | undefined;\r\n\tpublic invokingState: number;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: RuleContext | undefined, invokingState: number);\r\n\tconstructor(parent?: RuleContext, invokingState?: number) {\r\n\t\tsuper();\r\n\t\tthis._parent = parent;\r\n\t\tthis.invokingState = invokingState != null ? invokingState : -1;\r\n\t}\r\n\r\n\tpublic static getChildContext(parent: RuleContext, invokingState: number): RuleContext {\r\n\t\treturn new RuleContext(parent, invokingState);\r\n\t}\r\n\r\n\tpublic depth(): number {\r\n\t\tlet n = 0;\r\n\t\tlet p: RuleContext | undefined = this;\r\n\t\twhile (p) {\r\n\t\t\tp = p._parent;\r\n\t\t\tn++;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\t/** A context is empty if there is no invoking state; meaning nobody called\r\n\t * current context.\r\n\t */\r\n\tget isEmpty(): boolean {\r\n\t\treturn this.invokingState === -1;\r\n\t}\r\n\r\n\t// satisfy the ParseTree / SyntaxTree interface\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\treturn Interval.INVALID;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleContext(): RuleContext { return this; }\r\n\r\n\t@Override\r\n\tget parent(): RuleContext | undefined { return this._parent; }\r\n\r\n\t/** @since 4.7. {@see ParseTree#setParent} comment */\r\n\t@Override\r\n\tpublic setParent(parent: RuleContext): void {\r\n\t\tthis._parent = parent;\r\n\t}\r\n\r\n\t@Override\r\n\tget payload(): RuleContext { return this; }\r\n\r\n\t/** Return the combined text of all child nodes. This method only considers\r\n\t * tokens which have been added to the parse tree.\r\n\t *\r\n\t * Since tokens on hidden channels (e.g. whitespace or comments) are not\r\n\t * added to the parse trees, they will not appear in the output of this\r\n\t * method.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this.childCount === 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet builder = \"\";\r\n\t\tfor (let i = 0; i < this.childCount; i++) {\r\n\t\t\tbuilder += this.getChild(i).text;\r\n\t\t}\r\n\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tget ruleIndex(): number { return -1; }\r\n\r\n\t/** For rule associated with this parse tree internal node, return\r\n\t * the outer alternative number used to match the input. Default\r\n\t * implementation does not compute nor store this alt num. Create\r\n\t * a subclass of ParserRuleContext with backing field and set\r\n\t * option contextSuperClass.\r\n\t * to set it.\r\n\t *\r\n\t * @since 4.5.3\r\n\t */\r\n\tget altNumber(): number { return ATN.INVALID_ALT_NUMBER; }\r\n\r\n\t/** Set the outer alternative number for this context node. Default\r\n\t * implementation does nothing to avoid backing field overhead for\r\n\t * trees that don't need it. Create\r\n\t * a subclass of ParserRuleContext with backing field and set\r\n\t * option contextSuperClass.\r\n\t *\r\n\t * @since 4.5.3\r\n\t */\r\n\tset altNumber(altNumber: number) {\r\n\t\t// intentionally ignored by the base implementation\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getChild(i: number): ParseTree {\r\n\t\tthrow new RangeError(\"i must be greater than or equal to 0 and less than childCount\");\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic accept(visitor: ParseTreeVisitor): T {\r\n\t\treturn visitor.visitChildren(this);\r\n\t}\r\n\r\n\t/** Print out a whole tree, not just a node, in LISP format\r\n\t * (root child1 .. childN). Print just a node if this is a leaf.\r\n\t * We have to know the recognizer so we can get rule names.\r\n\t */\r\n\tpublic toStringTree(recog: Parser): string;\r\n\r\n\t/** Print out a whole tree, not just a node, in LISP format\r\n\t * (root child1 .. childN). Print just a node if this is a leaf.\r\n\t */\r\n\tpublic toStringTree(ruleNames: string[] | undefined): string;\r\n\r\n\tpublic toStringTree(): string;\r\n\r\n\t@Override\r\n\tpublic toStringTree(recog?: Parser | string[]): string {\r\n\t\treturn Trees.toStringTree(this, recog);\r\n\t}\r\n\r\n\tpublic toString(): string;\r\n\tpublic toString(recog: Recognizer | undefined): string;\r\n\tpublic toString(ruleNames: string[] | undefined): string;\r\n\r\n\t// // recog undefined unless ParserRuleContext, in which case we use subclass toString(...)\r\n\tpublic toString(recog: Recognizer | undefined, stop: RuleContext | undefined): string;\r\n\r\n\tpublic toString(ruleNames: string[] | undefined, stop: RuleContext | undefined): string;\r\n\r\n\tpublic toString(\r\n\t\targ1?: Recognizer | string[],\r\n\t\tstop?: RuleContext)\r\n\t\t: string {\r\n\t\tconst ruleNames = (arg1 instanceof Recognizer) ? arg1.ruleNames : arg1;\r\n\t\tstop = stop || ParserRuleContext.emptyContext();\r\n\r\n\t\tlet buf = \"\";\r\n\t\tlet p: RuleContext | undefined = this;\r\n\t\tbuf += (\"[\");\r\n\t\twhile (p && p !== stop) {\r\n\t\t\tif (!ruleNames) {\r\n\t\t\t\tif (!p.isEmpty) {\r\n\t\t\t\t\tbuf += (p.invokingState);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlet ruleIndex: number = p.ruleIndex;\r\n\t\t\t\tlet ruleName: string = (ruleIndex >= 0 && ruleIndex < ruleNames.length)\r\n\t\t\t\t\t? ruleNames[ruleIndex] : ruleIndex.toString();\r\n\t\t\t\tbuf += (ruleName);\r\n\t\t\t}\r\n\r\n\t\t\tif (p._parent && (ruleNames || !p._parent.isEmpty)) {\r\n\t\t\t\tbuf += (\" \");\r\n\t\t\t}\r\n\r\n\t\t\tp = p._parent;\r\n\t\t}\r\n\r\n\t\tbuf += (\"]\");\r\n\t\treturn buf.toString();\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.6285494-07:00\r\nimport { ErrorNode } from \"./tree/ErrorNode\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParseTree } from \"./tree/ParseTree\";\r\nimport { ParseTreeListener } from \"./tree/ParseTreeListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { TerminalNode } from \"./tree/TerminalNode\";\r\nimport { Token } from \"./Token\";\r\n\r\n/** A rule invocation record for parsing.\r\n *\r\n * Contains all of the information about the current rule not stored in the\r\n * RuleContext. It handles parse tree children list, Any ATN state\r\n * tracing, and the default values available for rule invocations:\r\n * start, stop, rule index, current alt number.\r\n *\r\n * Subclasses made for each rule and grammar track the parameters,\r\n * return values, locals, and labels specific to that rule. These\r\n * are the objects that are returned from rules.\r\n *\r\n * Note text is not an actual field of a rule return value; it is computed\r\n * from start and stop using the input stream's toString() method. I\r\n * could add a ctor to this so that we can pass in and store the input\r\n * stream, but I'm not sure we want to do that. It would seem to be undefined\r\n * to get the .text property anyway if the rule matches tokens from multiple\r\n * input streams.\r\n *\r\n * I do not use getters for fields of objects that are used simply to\r\n * group values such as this aggregate. The getters/setters are there to\r\n * satisfy the superclass interface.\r\n */\r\nexport class ParserRuleContext extends RuleContext {\r\n\tprivate static readonly EMPTY: ParserRuleContext = new ParserRuleContext();\r\n\r\n\t/** If we are debugging or building a parse tree for a visitor,\r\n\t * we need to track all of the tokens and rule invocations associated\r\n\t * with this rule's context. This is empty for parsing w/o tree constr.\r\n\t * operation because we don't the need to track the details about\r\n\t * how we parse this rule.\r\n\t */\r\n\tpublic children?: ParseTree[];\r\n\r\n\t/** For debugging/tracing purposes, we want to track all of the nodes in\r\n\t * the ATN traversed by the parser for a particular rule.\r\n\t * This list indicates the sequence of ATN nodes used to match\r\n\t * the elements of the children list. This list does not include\r\n\t * ATN nodes and other rules used to match rule invocations. It\r\n\t * traces the rule invocation node itself but nothing inside that\r\n\t * other rule's ATN submachine.\r\n\t *\r\n\t * There is NOT a one-to-one correspondence between the children and\r\n\t * states list. There are typically many nodes in the ATN traversed\r\n\t * for each element in the children list. For example, for a rule\r\n\t * invocation there is the invoking state and the following state.\r\n\t *\r\n\t * The parser state property updates field s and adds it to this list\r\n\t * if we are debugging/tracing.\r\n\t *\r\n\t * This does not trace states visited during prediction.\r\n\t */\r\n//\tpublic Array states;\r\n\r\n\tpublic _start!: Token;\r\n\tpublic _stop: Token | undefined;\r\n\r\n\t/**\r\n\t * The exception that forced this rule to return. If the rule successfully\r\n\t * completed, this is `undefined`.\r\n\t */\r\n\tpublic exception?: RecognitionException;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\tconstructor(parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber == null) {\r\n\t\t\tsuper();\r\n\t\t} else {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static emptyContext(): ParserRuleContext {\r\n\t\treturn ParserRuleContext.EMPTY;\r\n\t}\r\n\r\n\t/**\r\n\t * COPY a ctx (I'm deliberately not using copy constructor) to avoid\r\n\t * confusion with creating node with parent. Does not copy children\r\n\t * (except error leaves).\r\n\t *\r\n\t * This is used in the generated parser code to flip a generic XContext\r\n\t * node for rule X to a YContext for alt label Y. In that sense, it is not\r\n\t * really a generic copy function.\r\n\t *\r\n\t * If we do an error sync() at start of a rule, we might add error nodes\r\n\t * to the generic XContext so this function must copy those nodes to the\r\n\t * YContext as well else they are lost!\r\n\t */\r\n\tpublic copyFrom(ctx: ParserRuleContext): void {\r\n\t\tthis._parent = ctx._parent;\r\n\t\tthis.invokingState = ctx.invokingState;\r\n\r\n\t\tthis._start = ctx._start;\r\n\t\tthis._stop = ctx._stop;\r\n\r\n\t\t// copy any error nodes to alt label node\r\n\t\tif (ctx.children) {\r\n\t\t\tthis.children = [];\r\n\t\t\t// reset parent pointer for any error nodes\r\n\t\t\tfor (let child of ctx.children) {\r\n\t\t\t\tif (child instanceof ErrorNode) {\r\n\t\t\t\t\tthis.addChild(child);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Double dispatch methods for listeners\r\n\r\n\tpublic enterRule(listener: ParseTreeListener): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\tpublic exitRule(listener: ParseTreeListener): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t/** Add a parse tree node to this as a child. Works for\r\n\t * internal and leaf nodes. Does not set parent link;\r\n\t * other add methods must do that. Other addChild methods\r\n\t * call this.\r\n\t *\r\n\t * We cannot set the parent pointer of the incoming node\r\n\t * because the existing interfaces do not have a setParent()\r\n\t * method and I don't want to break backward compatibility for this.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic addAnyChild(t: T): T {\r\n\t\tif (!this.children) {\r\n\t\t\tthis.children = [t];\r\n\t\t} else {\r\n\t\t\tthis.children.push(t);\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/** Add a token leaf node child and force its parent to be this node. */\r\n\tpublic addChild(t: TerminalNode): void;\r\n\tpublic addChild(ruleInvocation: RuleContext): void;\r\n\t/**\r\n\t * Add a child to this node based upon matchedToken. It\r\n\t * creates a TerminalNodeImpl rather than using\r\n\t * {@link Parser#createTerminalNode(ParserRuleContext, Token)}. I'm leaving this\r\n\t * in for compatibility but the parser doesn't use this anymore.\r\n\t *\r\n\t * @deprecated Use another overload instead.\r\n\t */\r\n\tpublic addChild(matchedToken: Token): TerminalNode;\r\n\tpublic addChild(t: TerminalNode | RuleContext | Token): TerminalNode | void {\r\n\t\tlet result: TerminalNode | void;\r\n\t\tif (t instanceof TerminalNode) {\r\n\t\t\tt.setParent(this);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\treturn;\r\n\t\t} else if (t instanceof RuleContext) {\r\n\t\t\t// Does not set parent link\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\t// Deprecated code path\r\n\t\t\tt = new TerminalNode(t);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\tt.setParent(this);\r\n\t\t\treturn t;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Add an error node child and force its parent to be this node.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic addErrorNode(errorNode: ErrorNode): ErrorNode;\r\n\r\n\t/**\r\n\t * Add a child to this node based upon badToken. It\r\n\t * creates a ErrorNode rather than using\r\n\t * {@link Parser#createErrorNode(ParserRuleContext, Token)}. I'm leaving this\r\n\t * in for compatibility but the parser doesn't use this anymore.\r\n\t *\r\n\t * @deprecated Use another overload instead.\r\n\t */\r\n\tpublic addErrorNode(badToken: Token): ErrorNode;\r\n\tpublic addErrorNode(node: ErrorNode | Token): ErrorNode {\r\n\t\tif (node instanceof ErrorNode) {\r\n\t\t\tconst errorNode: ErrorNode = node;\r\n\t\t\terrorNode.setParent(this);\r\n\t\t\treturn this.addAnyChild(errorNode);\r\n\t\t} else {\r\n\t\t\t// deprecated path\r\n\t\t\tconst badToken: Token = node;\r\n\t\t\tlet t = new ErrorNode(badToken);\r\n\t\t\tthis.addAnyChild(t);\r\n\t\t\tt.setParent(this);\r\n\t\t\treturn t;\r\n\t\t}\r\n\t}\r\n\r\n//\tpublic void trace(int s) {\r\n//\t\tif ( states==null ) states = new ArrayList();\r\n//\t\tstates.add(s);\r\n//\t}\r\n\r\n\t/** Used by enterOuterAlt to toss out a RuleContext previously added as\r\n\t * we entered a rule. If we have # label, we will need to remove\r\n\t * generic ruleContext object.\r\n\t */\r\n\tpublic removeLastChild(): void {\r\n\t\tif (this.children) {\r\n\t\t\tthis.children.pop();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\t/** Override to make type more specific */\r\n\tget parent(): ParserRuleContext | undefined {\r\n\t\tlet parent = super.parent;\r\n\t\tif (parent === undefined || parent instanceof ParserRuleContext) {\r\n\t\t\treturn parent;\r\n\t\t}\r\n\r\n\t\tthrow new TypeError(\"Invalid parent type for ParserRuleContext\");\r\n\t}\r\n\r\n\tpublic getChild(i: number): ParseTree;\r\n\tpublic getChild(i: number, ctxType: { new (...args: any[]): T; }): T;\r\n\t// Note: in TypeScript, order or arguments reversed\r\n\tpublic getChild(i: number, ctxType?: { new (...args: any[]): T; }): ParseTree {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\tthrow new RangeError(\"index parameter must be between >= 0 and <= number of children.\");\r\n\t\t}\r\n\r\n\t\tif (ctxType == null) {\r\n\t\t\treturn this.children[i];\r\n\t\t}\r\n\r\n\t\tlet result = this.tryGetChild(i, ctxType);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new Error(\"The specified node does not exist\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryGetChild(i: number, ctxType: { new (...args: any[]): T; }): T | undefined {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet j: number = -1; // what node with ctxType have we found?\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof ctxType) {\r\n\t\t\t\tj++;\r\n\t\t\t\tif (j === i) {\r\n\t\t\t\t\treturn o;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic getToken(ttype: number, i: number): TerminalNode {\r\n\t\tlet result = this.tryGetToken(ttype, i);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new Error(\"The specified token does not exist\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryGetToken(ttype: number, i: number): TerminalNode | undefined {\r\n\t\tif (!this.children || i < 0 || i >= this.children.length) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet j: number = -1; // what token with ttype have we found?\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof TerminalNode) {\r\n\t\t\t\tlet symbol: Token = o.symbol;\r\n\t\t\t\tif (symbol.type === ttype) {\r\n\t\t\t\t\tj++;\r\n\t\t\t\t\tif (j === i) {\r\n\t\t\t\t\t\treturn o;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic getTokens(ttype: number): TerminalNode[] {\r\n\t\tlet tokens: TerminalNode[] = [];\r\n\r\n\t\tif (!this.children) {\r\n\t\t\treturn tokens;\r\n\t\t}\r\n\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof TerminalNode) {\r\n\t\t\t\tlet symbol = o.symbol;\r\n\t\t\t\tif (symbol.type === ttype) {\r\n\t\t\t\t\ttokens.push(o);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\tget ruleContext(): this {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// NOTE: argument order change from Java version\r\n\tpublic getRuleContext(i: number, ctxType: { new (...args: any[]): T; }): T {\r\n\t\treturn this.getChild(i, ctxType);\r\n\t}\r\n\r\n\tpublic tryGetRuleContext(i: number, ctxType: { new (...args: any[]): T; }): T | undefined {\r\n\t\treturn this.tryGetChild(i, ctxType);\r\n\t}\r\n\r\n\tpublic getRuleContexts(ctxType: { new (...args: any[]): T; }): T[] {\r\n\t\tlet contexts: T[] = [];\r\n\t\tif (!this.children) {\r\n\t\t\treturn contexts;\r\n\t\t}\r\n\r\n\t\tfor (let o of this.children) {\r\n\t\t\tif (o instanceof ctxType) {\r\n\t\t\t\tcontexts.push(o);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn contexts;\r\n\t}\r\n\r\n\t@Override\r\n\tget childCount() {\r\n\t\treturn this.children ? this.children.length : 0;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceInterval(): Interval {\r\n\t\tif (!this._start) {\r\n\t\t\treturn Interval.INVALID;\r\n\t\t}\r\n\t\tif (!this._stop || this._stop.tokenIndex < this._start.tokenIndex) {\r\n\t\t\treturn Interval.of(this._start.tokenIndex, this._start.tokenIndex - 1); // empty\r\n\t\t}\r\n\t\treturn Interval.of(this._start.tokenIndex, this._stop.tokenIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the initial token in this context.\r\n\t * Note that the range from start to stop is inclusive, so for rules that do not consume anything\r\n\t * (for example, zero length or error productions) this token may exceed stop.\r\n\t */\r\n\tget start(): Token { return this._start; }\r\n\t/**\r\n\t * Get the final token in this context.\r\n\t * Note that the range from start to stop is inclusive, so for rules that do not consume anything\r\n\t * (for example, zero length or error productions) this token may precede start.\r\n\t */\r\n\tget stop(): Token | undefined { return this._stop; }\r\n\r\n\t/** Used for rule context info debugging during parse-time, not so much for ATN debugging */\r\n\tpublic toInfoString(recognizer: Parser): string {\r\n\t\tlet rules: string[] =\r\n\t\t\trecognizer.getRuleInvocationStack(this).reverse();\r\n\t\treturn \"ParserRuleContext\" + rules + \"{\" +\r\n\t\t\t\"start=\" + this._start +\r\n\t\t\t\", stop=\" + this._stop +\r\n\t\t\t\"}\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.2673893-07:00\r\n\r\nimport { Array2DHashMap } from \"../misc/Array2DHashMap\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { EqualityComparator } from \"../misc/EqualityComparator\";\r\nimport { MurmurHash } from \"../misc/MurmurHash\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Override } from \"../Decorators\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\n\r\n/**\r\n * This enumeration defines the prediction modes available in ANTLR 4 along with\r\n * utility methods for analyzing configuration sets for conflicts and/or\r\n * ambiguities.\r\n */\r\nexport enum PredictionMode {\r\n\t/**\r\n\t * The SLL(*) prediction mode. This prediction mode ignores the current\r\n\t * parser context when making predictions. This is the fastest prediction\r\n\t * mode, and provides correct results for many grammars. This prediction\r\n\t * mode is more powerful than the prediction mode provided by ANTLR 3, but\r\n\t * may result in syntax errors for grammar and input combinations which are\r\n\t * not SLL.\r\n\t *\r\n\t * When using this prediction mode, the parser will either return a correct\r\n\t * parse tree (i.e. the same parse tree that would be returned with the\r\n\t * {@link #LL} prediction mode), or it will report a syntax error. If a\r\n\t * syntax error is encountered when using the {@link #SLL} prediction mode,\r\n\t * it may be due to either an actual syntax error in the input or indicate\r\n\t * that the particular combination of grammar and input requires the more\r\n\t * powerful {@link #LL} prediction abilities to complete successfully.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tSLL,\r\n\t/**\r\n\t * The LL(*) prediction mode. This prediction mode allows the current parser\r\n\t * context to be used for resolving SLL conflicts that occur during\r\n\t * prediction. This is the fastest prediction mode that guarantees correct\r\n\t * parse results for all combinations of grammars with syntactically correct\r\n\t * inputs.\r\n\t *\r\n\t * When using this prediction mode, the parser will make correct decisions\r\n\t * for all syntactically-correct grammar and input combinations. However, in\r\n\t * cases where the grammar is truly ambiguous this prediction mode might not\r\n\t * report a precise answer for *exactly which* alternatives are\r\n\t * ambiguous.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tLL,\r\n\t/**\r\n\t * The LL(*) prediction mode with exact ambiguity detection. In addition to\r\n\t * the correctness guarantees provided by the {@link #LL} prediction mode,\r\n\t * this prediction mode instructs the prediction algorithm to determine the\r\n\t * complete and exact set of ambiguous alternatives for every ambiguous\r\n\t * decision encountered while parsing.\r\n\t *\r\n\t * This prediction mode may be used for diagnosing ambiguities during\r\n\t * grammar development. Due to the performance overhead of calculating sets\r\n\t * of ambiguous alternatives, this prediction mode should be avoided when\r\n\t * the exact results are not necessary.\r\n\t *\r\n\t * This prediction mode does not provide any guarantees for prediction\r\n\t * behavior for syntactically-incorrect inputs.\r\n\t */\r\n\tLL_EXACT_AMBIG_DETECTION,\r\n}\r\n\r\nexport namespace PredictionMode {\r\n\t/** A Map that uses just the state and the stack context as the key. */\r\n\t// NOTE: Base type used to be FlexibleHashMap\r\n\tclass AltAndContextMap extends Array2DHashMap {\r\n\t\tconstructor() {\r\n\t\t\tsuper(AltAndContextConfigEqualityComparator.INSTANCE);\r\n\t\t}\r\n\t}\r\n\r\n\tclass AltAndContextConfigEqualityComparator implements EqualityComparator {\r\n\t\tpublic static readonly INSTANCE: AltAndContextConfigEqualityComparator = new AltAndContextConfigEqualityComparator();\r\n\r\n\t\tprivate AltAndContextConfigEqualityComparator() {\r\n\t\t\t// intentionally empty\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The hash code is only a function of the {@link ATNState#stateNumber}\r\n\t\t * and {@link ATNConfig#context}.\r\n\t\t */\r\n\t\t@Override\r\n\t\tpublic hashCode(o: ATNConfig): number {\r\n\t\t\tlet hashCode: number = MurmurHash.initialize(7);\r\n\t\t\thashCode = MurmurHash.update(hashCode, o.state.stateNumber);\r\n\t\t\thashCode = MurmurHash.update(hashCode, o.context);\r\n\t\t\thashCode = MurmurHash.finish(hashCode, 2);\r\n\t\t\treturn hashCode;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic equals(a: ATNConfig, b: ATNConfig): boolean {\r\n\t\t\tif (a === b) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (a == null || b == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn a.state.stateNumber === b.state.stateNumber\r\n\t\t\t\t&& a.context.equals(b.context);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if any configuration in `configs` is in a\r\n\t * {@link RuleStopState}. Configurations meeting this condition have reached\r\n\t * the end of the decision rule (local context) or end of start rule (full\r\n\t * context).\r\n\t *\r\n\t * @param configs the configuration set to test\r\n\t * @returns `true` if any configuration in `configs` is in a\r\n\t * {@link RuleStopState}, otherwise `false`\r\n\t */\r\n\texport function hasConfigInRuleStopState(configs: ATNConfigSet): boolean {\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all configurations in `configs` are in a\r\n\t * {@link RuleStopState}. Configurations meeting this condition have reached\r\n\t * the end of the decision rule (local context) or end of start rule (full\r\n\t * context).\r\n\t *\r\n\t * @param configs the configuration set to test\r\n\t * @returns `true` if all configurations in `configs` are in a\r\n\t * {@link RuleStopState}, otherwise `false`\r\n\t */\r\n\texport function allConfigsInRuleStopStates(/*@NotNull*/ configs: ATNConfigSet): boolean {\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (!(config.state instanceof RuleStopState)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.3871984-07:00\r\n\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class SimulatorState {\r\n\tpublic outerContext: ParserRuleContext;\r\n\r\n\tpublic s0: DFAState;\r\n\r\n\tpublic useContext: boolean;\r\n\tpublic remainingOuterContext: ParserRuleContext | undefined;\r\n\r\n\tconstructor(outerContext: ParserRuleContext, @NotNull s0: DFAState, useContext: boolean, remainingOuterContext: ParserRuleContext | undefined) {\r\n\t\tthis.outerContext = outerContext != null ? outerContext : ParserRuleContext.emptyContext();\r\n\t\tthis.s0 = s0;\r\n\t\tthis.useContext = useContext;\r\n\t\tthis.remainingOuterContext = remainingOuterContext;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:31.1989835-07:00\r\n\r\nimport { AcceptStateInfo } from \"../dfa/AcceptStateInfo\";\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { Arrays } from \"../misc/Arrays\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfig } from \"./ATNConfig\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { AtomTransition } from \"./AtomTransition\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ConflictInfo } from \"./ConflictInfo\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { EpsilonTransition } from \"./EpsilonTransition\";\r\nimport { IntegerList } from \"../misc/IntegerList\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntStream } from \"../IntStream\";\r\nimport { NotNull, Nullable, Override } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { NoViableAltException } from \"../NoViableAltException\";\r\nimport { ObjectEqualityComparator } from \"../misc/ObjectEqualityComparator\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { PrecedencePredicateTransition } from \"./PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { PredictionContext } from \"./PredictionContext\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { PredictionMode } from \"./PredictionMode\";\r\nimport { RuleContext } from \"../RuleContext\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokenStream } from \"../TokenStream\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport { Vocabulary } from \"../Vocabulary\";\r\nimport { VocabularyImpl } from \"../VocabularyImpl\";\r\n\r\nimport * as assert from \"assert\";\r\n\r\nconst MAX_SHORT_VALUE = 0xFFFF;\r\nconst MIN_INTEGER_VALUE = -((1 << 31) >>> 0);\r\n\r\n/**\r\n * The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\r\n *\r\n * The basic complexity of the adaptive strategy makes it harder to understand.\r\n * We begin with ATN simulation to build paths in a DFA. Subsequent prediction\r\n * requests go through the DFA first. If they reach a state without an edge for\r\n * the current symbol, the algorithm fails over to the ATN simulation to\r\n * complete the DFA path for the current input (until it finds a conflict state\r\n * or uniquely predicting state).\r\n *\r\n * All of that is done without using the outer context because we want to create\r\n * a DFA that is not dependent upon the rule invocation stack when we do a\r\n * prediction. One DFA works in all contexts. We avoid using context not\r\n * necessarily because it's slower, although it can be, but because of the DFA\r\n * caching problem. The closure routine only considers the rule invocation stack\r\n * created during prediction beginning in the decision rule. For example, if\r\n * prediction occurs without invoking another rule's ATN, there are no context\r\n * stacks in the configurations. When lack of context leads to a conflict, we\r\n * don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\r\n * strategy (versus full LL(*)).\r\n *\r\n * When SLL yields a configuration set with conflict, we rewind the input and\r\n * retry the ATN simulation, this time using full outer context without adding\r\n * to the DFA. Configuration context stacks will be the full invocation stacks\r\n * from the start rule. If we get a conflict using full context, then we can\r\n * definitively say we have a true ambiguity for that input sequence. If we\r\n * don't get a conflict, it implies that the decision is sensitive to the outer\r\n * context. (It is not context-sensitive in the sense of context-sensitive\r\n * grammars.)\r\n *\r\n * The next time we reach this DFA state with an SLL conflict, through DFA\r\n * simulation, we will again retry the ATN simulation using full context mode.\r\n * This is slow because we can't save the results and have to \"interpret\" the\r\n * ATN each time we get that input.\r\n *\r\n * **CACHING FULL CONTEXT PREDICTIONS**\r\n *\r\n * We could cache results from full context to predicted alternative easily and\r\n * that saves a lot of time but doesn't work in presence of predicates. The set\r\n * of visible predicates from the ATN start state changes depending on the\r\n * context, because closure can fall off the end of a rule. I tried to cache\r\n * tuples (stack context, semantic context, predicted alt) but it was slower\r\n * than interpreting and much more complicated. Also required a huge amount of\r\n * memory. The goal is not to create the world's fastest parser anyway. I'd like\r\n * to keep this algorithm simple. By launching multiple threads, we can improve\r\n * the speed of parsing across a large number of files.\r\n *\r\n * There is no strict ordering between the amount of input used by SLL vs LL,\r\n * which makes it really hard to build a cache for full context. Let's say that\r\n * we have input A B C that leads to an SLL conflict with full context X. That\r\n * implies that using X we might only use A B but we could also use A B C D to\r\n * resolve conflict. Input A B C D could predict alternative 1 in one position\r\n * in the input and A B C E could predict alternative 2 in another position in\r\n * input. The conflicting SLL configurations could still be non-unique in the\r\n * full context prediction, which would lead us to requiring more input than the\r\n * original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\r\n * input\tused during the previous prediction. That amounts to a cache that maps\r\n * X to a specific DFA for that context.\r\n *\r\n * Something should be done for left-recursive expression predictions. They are\r\n * likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\r\n * with full LL thing Sam does.\r\n *\r\n * **AVOIDING FULL CONTEXT PREDICTION**\r\n *\r\n * We avoid doing full context retry when the outer context is empty, we did not\r\n * dip into the outer context by falling off the end of the decision state rule,\r\n * or when we force SLL mode.\r\n *\r\n * As an example of the not dip into outer context case, consider as super\r\n * constructor calls versus function calls. One grammar might look like\r\n * this:\r\n *\r\n * ```antlr\r\n * ctorBody\r\n * : '{' superCall? stat* '}'\r\n * ;\r\n * ```\r\n *\r\n * Or, you might see something like\r\n *\r\n * ```antlr\r\n * stat\r\n * : superCall ';'\r\n * | expression ';'\r\n * | ...\r\n * ;\r\n * ```\r\n *\r\n * In both cases I believe that no closure operations will dip into the outer\r\n * context. In the first case ctorBody in the worst case will stop at the '}'.\r\n * In the 2nd case it should stop at the ';'. Both cases should stay within the\r\n * entry rule and not dip into the outer context.\r\n *\r\n * **PREDICATES**\r\n *\r\n * Predicates are always evaluated if present in either SLL or LL both. SLL and\r\n * LL simulation deals with predicates differently. SLL collects predicates as\r\n * it performs closure operations like ANTLR v3 did. It delays predicate\r\n * evaluation until it reaches and accept state. This allows us to cache the SLL\r\n * ATN simulation whereas, if we had evaluated predicates on-the-fly during\r\n * closure, the DFA state configuration sets would be different and we couldn't\r\n * build up a suitable DFA.\r\n *\r\n * When building a DFA accept state during ATN simulation, we evaluate any\r\n * predicates and return the sole semantically valid alternative. If there is\r\n * more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\r\n * we throw an exception. Alternatives without predicates act like they have\r\n * true predicates. The simple way to think about it is to strip away all\r\n * alternatives with false predicates and choose the minimum alternative that\r\n * remains.\r\n *\r\n * When we start in the DFA and reach an accept state that's predicated, we test\r\n * those and return the minimum semantically viable alternative. If no\r\n * alternatives are viable, we throw an exception.\r\n *\r\n * During full LL ATN simulation, closure always evaluates predicates and\r\n * on-the-fly. This is crucial to reducing the configuration set size during\r\n * closure. It hits a landmine when parsing with the Java grammar, for example,\r\n * without this on-the-fly evaluation.\r\n *\r\n * **SHARING DFA**\r\n *\r\n * All instances of the same parser share the same decision DFAs through a\r\n * static field. Each instance gets its own ATN simulator but they share the\r\n * same {@link ATN#decisionToDFA} field. They also share a\r\n * {@link PredictionContextCache} object that makes sure that all\r\n * {@link PredictionContext} objects are shared among the DFA states. This makes\r\n * a big size difference.\r\n *\r\n * **THREAD SAFETY**\r\n *\r\n * The {@link ParserATNSimulator} locks on the {@link ATN#decisionToDFA} field when\r\n * it adds a new DFA object to that array. {@link #addDFAEdge}\r\n * locks on the DFA for the current decision when setting the\r\n * {@link DFAState#edges} field. {@link #addDFAState} locks on\r\n * the DFA for the current decision when looking up a DFA state to see if it\r\n * already exists. We must make sure that all requests to add DFA states that\r\n * are equivalent result in the same shared DFA object. This is because lots of\r\n * threads will be trying to update the DFA at once. The\r\n * {@link #addDFAState} method also locks inside the DFA lock\r\n * but this time on the shared context cache when it rebuilds the\r\n * configurations' {@link PredictionContext} objects using cached\r\n * subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\r\n * safe as long as we can guarantee that all threads referencing\r\n * `s.edge[t]` get the same physical target {@link DFAState}, or\r\n * `undefined`. Once into the DFA, the DFA simulation does not reference the\r\n * {@link DFA#states} map. It follows the {@link DFAState#edges} field to new\r\n * targets. The DFA simulator will either find {@link DFAState#edges} to be\r\n * `undefined`, to be non-`undefined` and `dfa.edges[t]` undefined, or\r\n * `dfa.edges[t]` to be non-undefined. The\r\n * {@link #addDFAEdge} method could be racing to set the field\r\n * but in either case the DFA simulator works; if `undefined`, and requests ATN\r\n * simulation. It could also race trying to get `dfa.edges[t]`, but either\r\n * way it will work because it's not doing a test and set operation.\r\n *\r\n * **Starting with SLL then failing to combined SLL/LL (Two-Stage\r\n * Parsing)**\r\n *\r\n * Sam pointed out that if SLL does not give a syntax error, then there is no\r\n * point in doing full LL, which is slower. We only have to try LL if we get a\r\n * syntax error. For maximum speed, Sam starts the parser set to pure SLL\r\n * mode with the {@link BailErrorStrategy}:\r\n *\r\n * ```\r\n * parser.interpreter.{@link #setPredictionMode setPredictionMode}`(`{@link PredictionMode#SLL}`)`;\r\n * parser.{@link Parser#setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\r\n * ```\r\n *\r\n * If it does not get a syntax error, then we're done. If it does get a syntax\r\n * error, we need to retry with the combined SLL/LL strategy.\r\n *\r\n * The reason this works is as follows. If there are no SLL conflicts, then the\r\n * grammar is SLL (at least for that input set). If there is an SLL conflict,\r\n * the full LL analysis must yield a set of viable alternatives which is a\r\n * subset of the alternatives reported by SLL. If the LL set is a singleton,\r\n * then the grammar is LL but not SLL. If the LL set is the same size as the SLL\r\n * set, the decision is SLL. If the LL set has size > 1, then that decision\r\n * is truly ambiguous on the current input. If the LL set is smaller, then the\r\n * SLL conflict resolution might choose an alternative that the full LL would\r\n * rule out as a possibility based upon better context information. If that's\r\n * the case, then the SLL parse will definitely get an error because the full LL\r\n * analysis says it's not viable. If SLL conflict resolution chooses an\r\n * alternative within the LL set, them both SLL and LL would choose the same\r\n * alternative because they both choose the minimum of multiple conflicting\r\n * alternatives.\r\n *\r\n * Let's say we have a set of SLL conflicting alternatives `{1, 2, 3}` and\r\n * a smaller LL set called *s*. If *s* is `{2, 3}`, then SLL\r\n * parsing will get an error because SLL will pursue alternative 1. If\r\n * *s* is `{1, 2}` or `{1, 3}` then both SLL and LL will\r\n * choose the same alternative because alternative one is the minimum of either\r\n * set. If *s* is `{2}` or `{3}` then SLL will get a syntax\r\n * error. If *s* is `{1}` then SLL will succeed.\r\n *\r\n * Of course, if the input is invalid, then we will get an error for sure in\r\n * both SLL and LL parsing. Erroneous input will therefore require 2 passes over\r\n * the input.\r\n */\r\nexport class ParserATNSimulator extends ATNSimulator {\r\n\tpublic static debug: boolean = false;\r\n\tpublic static dfa_debug: boolean = false;\r\n\tpublic static retry_debug: boolean = false;\r\n\r\n\t@NotNull\r\n\tprivate predictionMode: PredictionMode = PredictionMode.LL;\r\n\tpublic force_global_context: boolean = false;\r\n\tpublic always_try_local_context: boolean = true;\r\n\r\n\t/**\r\n\t * Determines whether the DFA is used for full-context predictions. When\r\n\t * `true`, the DFA stores transition information for both full-context\r\n\t * and SLL parsing; otherwise, the DFA only stores SLL transition\r\n\t * information.\r\n\t *\r\n\t * For some grammars, enabling the full-context DFA can result in a\r\n\t * substantial performance improvement. However, this improvement typically\r\n\t * comes at the expense of memory used for storing the cached DFA states,\r\n\t * configuration sets, and prediction contexts.\r\n\t *\r\n\t * The default value is `false`.\r\n\t */\r\n\tpublic enable_global_context_dfa: boolean = false;\r\n\tpublic optimize_unique_closure: boolean = true;\r\n\tpublic optimize_ll1: boolean = true;\r\n\tpublic optimize_tail_calls: boolean = true;\r\n\tpublic tail_call_preserves_sll: boolean = true;\r\n\tpublic treat_sllk1_conflict_as_ambiguity: boolean = false;\r\n\r\n\tprotected _parser: Parser;\r\n\r\n\t/**\r\n\t * When `true`, ambiguous alternatives are reported when they are\r\n\t * encountered within {@link #execATN}. When `false`, these messages\r\n\t * are suppressed. The default is `false`.\r\n\t *\r\n\t * When messages about ambiguous alternatives are not required, setting this\r\n\t * to `false` enables additional internal optimizations which may lose\r\n\t * this information.\r\n\t */\r\n\tpublic reportAmbiguities: boolean = false;\r\n\r\n\t/** By default we do full context-sensitive LL(*) parsing not\r\n\t * Strong LL(*) parsing. If we fail with Strong LL(*) we\r\n\t * try full LL(*). That means we rewind and use context information\r\n\t * when closure operations fall off the end of the rule that\r\n\t * holds the decision were evaluating.\r\n\t */\r\n\tprotected userWantsCtxSensitive: boolean = true;\r\n\r\n\tprivate dfa?: DFA;\r\n\r\n\tconstructor(@NotNull atn: ATN, parser: Parser) {\r\n\t\tsuper(atn);\r\n\t\tthis._parser = parser;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getPredictionMode(): PredictionMode {\r\n\t\treturn this.predictionMode;\r\n\t}\r\n\r\n\tpublic setPredictionMode(@NotNull predictionMode: PredictionMode): void {\r\n\t\tthis.predictionMode = predictionMode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined): number;\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined, useContext: boolean): number;\r\n\tpublic adaptivePredict(\r\n\t\t@NotNull input: TokenStream,\r\n\t\tdecision: number,\r\n\t\touterContext: ParserRuleContext | undefined,\r\n\t\tuseContext?: boolean): number {\r\n\t\tif (useContext === undefined) {\r\n\t\t\tuseContext = false;\r\n\t\t}\r\n\r\n\t\tlet dfa: DFA = this.atn.decisionToDFA[decision];\r\n\t\tassert(dfa != null);\r\n\t\tif (this.optimize_ll1 && !dfa.isPrecedenceDfa && !dfa.isEmpty) {\r\n\t\t\tlet ll_1: number = input.LA(1);\r\n\t\t\tif (ll_1 >= 0 && ll_1 <= 0xFFFF) {\r\n\t\t\t\tlet key: number = ((decision << 16) >>> 0) + ll_1;\r\n\t\t\t\tlet alt: number | undefined = this.atn.LL1Table.get(key);\r\n\t\t\t\tif (alt != null) {\r\n\t\t\t\t\treturn alt;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dfa = dfa;\r\n\r\n\t\tif (this.force_global_context) {\r\n\t\t\tuseContext = true;\r\n\t\t}\r\n\t\telse if (!this.always_try_local_context) {\r\n\t\t\tuseContext = useContext || dfa.isContextSensitive;\r\n\t\t}\r\n\r\n\t\tthis.userWantsCtxSensitive = useContext || (this.predictionMode !== PredictionMode.SLL && outerContext != null && !this.atn.decisionToState[decision].sll);\r\n\t\tif (outerContext == null) {\r\n\t\t\touterContext = ParserRuleContext.emptyContext();\r\n\t\t}\r\n\r\n\t\tlet state: SimulatorState | undefined;\r\n\t\tif (!dfa.isEmpty) {\r\n\t\t\tstate = this.getStartState(dfa, input, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\tif (state == null) {\r\n\t\t\tif (outerContext == null) {\r\n\t\t\t\touterContext = ParserRuleContext.emptyContext();\r\n\t\t\t}\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"ATN decision \" + dfa.decision +\r\n\t\t\t\t\t\" exec LA(1)==\" + this.getLookaheadName(input) +\r\n\t\t\t\t\t\", outerContext=\" + outerContext.toString(this._parser));\r\n\t\t\t}\r\n\r\n\t\t\tstate = this.computeStartState(dfa, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\tlet m: number = input.mark();\r\n\t\tlet index: number = input.index;\r\n\t\ttry {\r\n\t\t\tlet alt: number = this.execDFA(dfa, input, index, state);\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"DFA after predictATN: \" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t\t}\r\n\t\t\treturn alt;\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.dfa = undefined;\r\n\t\t\tinput.seek(index);\r\n\t\t\tinput.release(m);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getStartState(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream,\r\n\t\t@NotNull outerContext: ParserRuleContext,\r\n\t\tuseContext: boolean): SimulatorState | undefined {\r\n\r\n\t\tif (!useContext) {\r\n\t\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\t\t// the start state for a precedence DFA depends on the current\r\n\t\t\t\t// parser precedence, and is provided by a DFA method.\r\n\t\t\t\tlet state: DFAState | undefined = dfa.getPrecedenceStartState(this._parser.precedence, false);\r\n\t\t\t\tif (state == null) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn new SimulatorState(outerContext, state, false, outerContext);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (dfa.s0 == null) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn new SimulatorState(outerContext, dfa.s0, false, outerContext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.enable_global_context_dfa) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet remainingContext: ParserRuleContext | undefined = outerContext;\r\n\t\tassert(outerContext != null);\r\n\t\tlet s0: DFAState | undefined;\r\n\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\ts0 = dfa.getPrecedenceStartState(this._parser.precedence, true);\r\n\t\t}\r\n\t\telse {\r\n\t\t\ts0 = dfa.s0full;\r\n\t\t}\r\n\r\n\t\twhile (remainingContext != null && s0 != null && s0.isContextSensitive) {\r\n\t\t\tremainingContext = this.skipTailCalls(remainingContext);\r\n\t\t\ts0 = s0.getContextTarget(this.getReturnState(remainingContext));\r\n\t\t\tif (remainingContext.isEmpty) {\r\n\t\t\t\tassert(s0 == null || !s0.isContextSensitive);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tremainingContext = remainingContext.parent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s0 == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn new SimulatorState(outerContext, s0, useContext, remainingContext);\r\n\t}\r\n\r\n\tprotected execDFA(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream, startIndex: number,\r\n\t\t@NotNull state: SimulatorState): number {\r\n\t\tlet outerContext: ParserRuleContext = state.outerContext;\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\" exec LA(1)==\" + this.getLookaheadName(input) +\r\n\t\t\t\t\", outerContext=\" + outerContext.toString(this._parser));\r\n\t\t}\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t}\r\n\t\tlet s: DFAState = state.s0;\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\t\tlet remainingOuterContext: ParserRuleContext | undefined = state.remainingOuterContext;\r\n\r\n\t\twhile (true) {\r\n\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\tconsole.log(\"DFA state \" + s.stateNumber + \" LA(1)==\" + this.getLookaheadName(input));\r\n\t\t\t}\r\n\t\t\tif (state.useContext) {\r\n\t\t\t\twhile (s.isContextSymbol(t)) {\r\n\t\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\t\tif (remainingOuterContext != null) {\r\n\t\t\t\t\t\tremainingOuterContext = this.skipTailCalls(remainingOuterContext);\r\n\t\t\t\t\t\tnext = s.getContextTarget(this.getReturnState(remainingOuterContext));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (next == null) {\r\n\t\t\t\t\t\t// fail over to ATN\r\n\t\t\t\t\t\tlet initialState: SimulatorState = new SimulatorState(state.outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\t\t\treturn this.execATN(dfa, input, startIndex, initialState);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tassert(remainingOuterContext != null);\r\n\t\t\t\t\tremainingOuterContext = remainingOuterContext.parent;\r\n\t\t\t\t\ts = next;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isAcceptState(s, state.useContext)) {\r\n\t\t\t\tif (s.predicates != null) {\r\n\t\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\t\tconsole.log(\"accept \" + s);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\t\tconsole.log(\"accept; predict \" + s.prediction + \" in state \" + s.stateNumber);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// keep going unless we're at EOF or state only has one alt number\r\n\t\t\t\t// mentioned in configs; check if something else could match\r\n\t\t\t\t// TODO: don't we always stop? only lexer would keep going\r\n\t\t\t\t// TODO: v3 dfa don't do this.\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// t is not updated if one of these states is reached\r\n\t\t\tassert(!this.isAcceptState(s, state.useContext));\r\n\r\n\t\t\t// if no edge, pop over to ATN interpreter, update DFA and return\r\n\t\t\tlet target: DFAState | undefined = this.getExistingTargetState(s, t);\r\n\t\t\tif (target == null) {\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug && t >= 0) {\r\n\t\t\t\t\tconsole.log(\"no edge for \" + this._parser.vocabulary.getDisplayName(t));\r\n\t\t\t\t}\r\n\t\t\t\tlet alt: number;\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tlet interval: Interval = Interval.of(startIndex, this._parser.inputStream.index);\r\n\t\t\t\t\tconsole.log(\"ATN exec upon \" +\r\n\t\t\t\t\t\tthis._parser.inputStream.getText(interval) +\r\n\t\t\t\t\t\t\" at DFA state \" + s.stateNumber);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet initialState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\talt = this.execATN(dfa, input, startIndex, initialState);\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"back from DFA update, alt=\" + alt + \", dfa=\\n\" + dfa.toString(this._parser.vocabulary, this._parser.ruleNames));\r\n\t\t\t\t\t//dump(dfa);\r\n\t\t\t\t}\r\n\t\t\t\t// action already executed\r\n\t\t\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\t\t\" predicts \" + alt);\r\n\t\t\t\t}\r\n\t\t\t\treturn alt; // we've updated DFA, exec'd action, and have our deepest answer\r\n\t\t\t}\r\n\t\t\telse if (target === ATNSimulator.ERROR) {\r\n\t\t\t\tlet errorState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\treturn this.handleNoViableAlt(input, startIndex, errorState);\r\n\t\t\t}\r\n\t\t\ts = target;\r\n\t\t\tif (!this.isAcceptState(s, state.useContext) && t !== IntStream.EOF) {\r\n\t\t\t\tinput.consume();\r\n\t\t\t\tt = input.LA(1);\r\n\t\t\t}\r\n\t\t}\r\n//\t\tif ( acceptState==null ) {\r\n//\t\t\tif ( debug ) System.out.println(\"!!! no viable alt in dfa\");\r\n//\t\t\treturn -1;\r\n//\t\t}\r\n\r\n\t\tif (!state.useContext && s.configs.conflictInfo != null) {\r\n\t\t\tif (dfa.atnStartState instanceof DecisionState) {\r\n\t\t\t\tif (!this.userWantsCtxSensitive ||\r\n\t\t\t\t\t(!s.configs.dipsIntoOuterContext && s.configs.isExactConflict) ||\r\n\t\t\t\t\t(this.treat_sllk1_conflict_as_ambiguity && input.index === startIndex)) {\r\n\t\t\t\t\t// we don't report the ambiguity again\r\n\t\t\t\t\t//if ( !this.acceptState.configset.hasSemanticContext ) {\r\n\t\t\t\t\t// \tthis.reportAmbiguity(dfa, acceptState, startIndex, input.index, acceptState.configset.conflictingAlts, acceptState.configset);\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tassert(!state.useContext);\r\n\r\n\t\t\t\t\t// Before attempting full context prediction, check to see if there are\r\n\t\t\t\t\t// disambiguating or validating predicates to evaluate which allow an\r\n\t\t\t\t\t// immediate decision\r\n\t\t\t\t\tlet conflictingAlts: BitSet | undefined;\r\n\t\t\t\t\tlet predicates: DFAState.PredPrediction[] | undefined = s.predicates;\r\n\t\t\t\t\tif (predicates != null) {\r\n\t\t\t\t\t\tlet conflictIndex: number = input.index;\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconflictingAlts = this.evalSemanticContext(predicates, outerContext, true);\r\n\t\t\t\t\t\tif (conflictingAlts.cardinality() === 1) {\r\n\t\t\t\t\t\t\treturn conflictingAlts.nextSetBit(0);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\t// restore the index so reporting the fallback to full\r\n\t\t\t\t\t\t\t// context occurs with the index at the correct spot\r\n\t\t\t\t\t\t\tinput.seek(conflictIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.reportAmbiguities) {\r\n\t\t\t\t\t\tlet conflictState: SimulatorState = new SimulatorState(outerContext, s, state.useContext, remainingOuterContext);\r\n\t\t\t\t\t\tthis.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\treturn this.adaptivePredict(input, dfa.decision, outerContext, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Before jumping to prediction, check to see if there are\r\n\t\t// disambiguating or validating predicates to evaluate\r\n\t\tlet predicates: DFAState.PredPrediction[] | undefined = s.predicates;\r\n\t\tif (predicates != null) {\r\n\t\t\tlet stopIndex: number = input.index;\r\n\t\t\tif (startIndex !== stopIndex) {\r\n\t\t\t\tinput.seek(startIndex);\r\n\t\t\t}\r\n\r\n\t\t\tlet alts: BitSet = this.evalSemanticContext(predicates, outerContext, this.reportAmbiguities && this.predictionMode === PredictionMode.LL_EXACT_AMBIG_DETECTION);\r\n\t\t\tswitch (alts.cardinality()) {\r\n\t\t\tcase 0:\r\n\t\t\t\tthrow this.noViableAlt(input, outerContext, s.configs, startIndex);\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\t// report ambiguity after predicate evaluation to make sure the correct\r\n\t\t\t\t// set of ambig alts is reported.\r\n\t\t\t\tif (startIndex !== stopIndex) {\r\n\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.reportAmbiguity(dfa, s, startIndex, stopIndex, s.configs.isExactConflict, alts, s.configs);\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.dfa_debug) {\r\n\t\t\tconsole.log(\"DFA decision \" + dfa.decision +\r\n\t\t\t\t\" predicts \" + s.prediction);\r\n\t\t}\r\n\t\treturn s.prediction;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if a particular DFA state should be treated as an accept state\r\n\t * for the current prediction mode. In addition to the `useContext`\r\n\t * parameter, the {@link #getPredictionMode()} method provides the\r\n\t * prediction mode controlling the prediction algorithm as a whole.\r\n\t *\r\n\t * The default implementation simply returns the value of\r\n\t * `DFAState.isAcceptState` except for conflict states when\r\n\t * `useContext` is `true` and {@link #getPredictionMode()} is\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}. In that case, only\r\n\t * conflict states where {@link ATNConfigSet#isExactConflict} is\r\n\t * `true` are considered accept states.\r\n\t *\r\n\t * @param state The DFA state to check.\r\n\t * @param useContext `true` if the prediction algorithm is currently\r\n\t * considering the full parser context; otherwise, `false` if the\r\n\t * algorithm is currently performing a local context prediction.\r\n\t *\r\n\t * @returns `true` if the specified `state` is an accept state;\r\n\t * otherwise, `false`.\r\n\t */\r\n\tprotected isAcceptState(state: DFAState, useContext: boolean): boolean {\r\n\t\tif (!state.isAcceptState) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (state.configs.conflictingAlts == null) {\r\n\t\t\t// unambiguous\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// More picky when we need exact conflicts\r\n\t\tif (useContext && this.predictionMode === PredictionMode.LL_EXACT_AMBIG_DETECTION) {\r\n\t\t\treturn state.configs.isExactConflict;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** Performs ATN simulation to compute a predicted alternative based\r\n\t * upon the remaining input, but also updates the DFA cache to avoid\r\n\t * having to traverse the ATN again for the same input sequence.\r\n\t *\r\n\t * There are some key conditions we're looking for after computing a new\r\n\t * set of ATN configs (proposed DFA state):\r\n\t *\r\n\t * * if the set is empty, there is no viable alternative for current symbol\r\n\t * * does the state uniquely predict an alternative?\r\n\t * * does the state have a conflict that would prevent us from\r\n\t * putting it on the work list?\r\n\t * * if in non-greedy decision is there a config at a rule stop state?\r\n\t *\r\n\t * We also have some key operations to do:\r\n\t *\r\n\t * * add an edge from previous DFA state to potentially new DFA state, D,\r\n\t * upon current symbol but only if adding to work list, which means in all\r\n\t * cases except no viable alternative (and possibly non-greedy decisions?)\r\n\t * * collecting predicates and adding semantic context to DFA accept states\r\n\t * * adding rule context to context-sensitive DFA accept states\r\n\t * * consuming an input symbol\r\n\t * * reporting a conflict\r\n\t * * reporting an ambiguity\r\n\t * * reporting a context sensitivity\r\n\t * * reporting insufficient predicates\r\n\t *\r\n\t * We should isolate those operations, which are side-effecting, to the\r\n\t * main work loop. We can isolate lots of code into other functions, but\r\n\t * they should be side effect free. They can return package that\r\n\t * indicates whether we should report something, whether we need to add a\r\n\t * DFA edge, whether we need to augment accept state with semantic\r\n\t * context or rule invocation context. Actually, it seems like we always\r\n\t * add predicates if they exist, so that can simply be done in the main\r\n\t * loop for any accept state creation or modification request.\r\n\t *\r\n\t * cover these cases:\r\n\t * dead end\r\n\t * single alt\r\n\t * single alt + preds\r\n\t * conflict\r\n\t * conflict + preds\r\n\t *\r\n\t * TODO: greedy + those\r\n\t */\r\n\tprotected execATN(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull input: TokenStream, startIndex: number,\r\n\t\t@NotNull initialState: SimulatorState): number {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"execATN decision \" + dfa.decision + \" exec LA(1)==\" + this.getLookaheadName(input));\r\n\t\t}\r\n\r\n\t\tlet outerContext: ParserRuleContext = initialState.outerContext;\r\n\t\tlet useContext: boolean = initialState.useContext;\r\n\r\n\t\tlet t: number = input.LA(1);\r\n\r\n\t\tlet previous: SimulatorState = initialState;\r\n\r\n\t\tlet contextCache: PredictionContextCache = new PredictionContextCache();\r\n\t\twhile (true) { // while more work\r\n\t\t\tlet nextState: SimulatorState | undefined = this.computeReachSet(dfa, previous, t, contextCache);\r\n\t\t\tif (nextState == null) {\r\n\t\t\t\tthis.setDFAEdge(previous.s0, input.LA(1), ATNSimulator.ERROR);\r\n\t\t\t\treturn this.handleNoViableAlt(input, startIndex, previous);\r\n\t\t\t}\r\n\r\n\t\t\tlet D: DFAState = nextState.s0;\r\n\r\n\t\t\t// predicted alt => accept state\r\n\t\t\tassert(D.isAcceptState || D.prediction === ATN.INVALID_ALT_NUMBER);\r\n\t\t\t// conflicted => accept state\r\n\t\t\tassert(D.isAcceptState || D.configs.conflictInfo == null);\r\n\r\n\t\t\tif (this.isAcceptState(D, useContext)) {\r\n\t\t\t\tlet conflictingAlts: BitSet | undefined = D.configs.conflictingAlts;\r\n\t\t\t\tlet predictedAlt: number = conflictingAlts == null ? D.prediction : ATN.INVALID_ALT_NUMBER;\r\n\t\t\t\tif (predictedAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\t\tif (this.optimize_ll1\r\n\t\t\t\t\t\t&& input.index === startIndex\r\n\t\t\t\t\t\t&& !dfa.isPrecedenceDfa\r\n\t\t\t\t\t\t&& nextState.outerContext === nextState.remainingOuterContext\r\n\t\t\t\t\t\t&& dfa.decision >= 0\r\n\t\t\t\t\t\t&& !D.configs.hasSemanticContext) {\r\n\t\t\t\t\t\tif (t >= 0 && t <= MAX_SHORT_VALUE) {\r\n\t\t\t\t\t\t\tlet key: number = ((dfa.decision << 16) >>> 0) + t;\r\n\t\t\t\t\t\t\tthis.atn.LL1Table.set(key, predictedAlt);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (useContext && this.always_try_local_context) {\r\n\t\t\t\t\t\tthis.reportContextSensitivity(dfa, predictedAlt, nextState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpredictedAlt = D.prediction;\r\n//\t\t\t\tint k = input.index - startIndex + 1; // how much input we used\r\n//\t\t\t\tSystem.out.println(\"used k=\"+k);\r\n\t\t\t\tlet attemptFullContext: boolean = conflictingAlts != null && this.userWantsCtxSensitive;\r\n\t\t\t\tif (attemptFullContext) {\r\n\t\t\t\t\t// Only exact conflicts are known to be ambiguous when local\r\n\t\t\t\t\t// prediction does not step out of the decision rule.\r\n\t\t\t\t\tattemptFullContext = !useContext\r\n\t\t\t\t\t\t&& (D.configs.dipsIntoOuterContext || !D.configs.isExactConflict)\r\n\t\t\t\t\t\t&& (!this.treat_sllk1_conflict_as_ambiguity || input.index !== startIndex);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (D.configs.hasSemanticContext) {\r\n\t\t\t\t\tlet predPredictions: DFAState.PredPrediction[] | undefined = D.predicates;\r\n\t\t\t\t\tif (predPredictions != null) {\r\n\t\t\t\t\t\tlet conflictIndex: number = input.index;\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// use complete evaluation here if we'll want to retry with full context if still ambiguous\r\n\t\t\t\t\t\tconflictingAlts = this.evalSemanticContext(predPredictions, outerContext, attemptFullContext || this.reportAmbiguities);\r\n\t\t\t\t\t\tswitch (conflictingAlts.cardinality()) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\tthrow this.noViableAlt(input, outerContext, D.configs, startIndex);\r\n\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn conflictingAlts.nextSetBit(0);\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (conflictIndex !== startIndex) {\r\n\t\t\t\t\t\t\t// restore the index so reporting the fallback to full\r\n\t\t\t\t\t\t\t// context occurs with the index at the correct spot\r\n\t\t\t\t\t\t\tinput.seek(conflictIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!attemptFullContext) {\r\n\t\t\t\t\tif (conflictingAlts != null) {\r\n\t\t\t\t\t\tif (this.reportAmbiguities && conflictingAlts.cardinality() > 1) {\r\n\t\t\t\t\t\t\tthis.reportAmbiguity(dfa, D, startIndex, input.index, D.configs.isExactConflict, conflictingAlts, D.configs);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpredictedAlt = conflictingAlts.nextSetBit(0);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn predictedAlt;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tassert(!useContext);\r\n\t\t\t\t\tassert(this.isAcceptState(D, false));\r\n\r\n\t\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\t\tconsole.log(\"RETRY with outerContext=\" + outerContext);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet fullContextState: SimulatorState = this.computeStartState(dfa, outerContext, true);\r\n\t\t\t\t\tif (this.reportAmbiguities) {\r\n\t\t\t\t\t\tthis.reportAttemptingFullContext(dfa, conflictingAlts, nextState, startIndex, input.index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\treturn this.execATN(dfa, input, startIndex, fullContextState);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tprevious = nextState;\r\n\r\n\t\t\tif (t !== IntStream.EOF) {\r\n\t\t\t\tinput.consume();\r\n\t\t\t\tt = input.LA(1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method is used to improve the localization of error messages by\r\n\t * choosing an alternative rather than throwing a\r\n\t * {@link NoViableAltException} in particular prediction scenarios where the\r\n\t * {@link #ERROR} state was reached during ATN simulation.\r\n\t *\r\n\t * The default implementation of this method uses the following\r\n\t * algorithm to identify an ATN configuration which successfully parsed the\r\n\t * decision entry rule. Choosing such an alternative ensures that the\r\n\t * {@link ParserRuleContext} returned by the calling rule will be complete\r\n\t * and valid, and the syntax error will be reported later at a more\r\n\t * localized location.\r\n\t *\r\n\t * * If no configuration in `configs` reached the end of the\r\n\t * decision rule, return {@link ATN#INVALID_ALT_NUMBER}.\r\n\t * * If all configurations in `configs` which reached the end of the\r\n\t * decision rule predict the same alternative, return that alternative.\r\n\t * * If the configurations in `configs` which reached the end of the\r\n\t * decision rule predict multiple alternatives (call this *S*),\r\n\t * choose an alternative in the following order.\r\n\t *\r\n\t * 1. Filter the configurations in `configs` to only those\r\n\t * configurations which remain viable after evaluating semantic predicates.\r\n\t * If the set of these filtered configurations which also reached the end of\r\n\t * the decision rule is not empty, return the minimum alternative\r\n\t * represented in this set.\r\n\t * 1. Otherwise, choose the minimum alternative in *S*.\r\n\t *\r\n\t * In some scenarios, the algorithm described above could predict an\r\n\t * alternative which will result in a {@link FailedPredicateException} in\r\n\t * parser. Specifically, this could occur if the *only* configuration\r\n\t * capable of successfully parsing to the end of the decision rule is\r\n\t * blocked by a semantic predicate. By choosing this alternative within\r\n\t * {@link #adaptivePredict} instead of throwing a\r\n\t * {@link NoViableAltException}, the resulting\r\n\t * {@link FailedPredicateException} in the parser will identify the specific\r\n\t * predicate which is preventing the parser from successfully parsing the\r\n\t * decision rule, which helps developers identify and correct logic errors\r\n\t * in semantic predicates.\r\n\t *\r\n\t * @param input The input {@link TokenStream}\r\n\t * @param startIndex The start index for the current prediction, which is\r\n\t * the input index where any semantic context in `configs` should be\r\n\t * evaluated\r\n\t * @param previous The ATN simulation state immediately before the\r\n\t * {@link #ERROR} state was reached\r\n\t *\r\n\t * @returns The value to return from {@link #adaptivePredict}, or\r\n\t * {@link ATN#INVALID_ALT_NUMBER} if a suitable alternative was not\r\n\t * identified and {@link #adaptivePredict} should report an error instead.\r\n\t */\r\n\tprotected handleNoViableAlt(@NotNull input: TokenStream, startIndex: number, @NotNull previous: SimulatorState): number {\r\n\t\tif (previous.s0 != null) {\r\n\t\t\tlet alts: BitSet = new BitSet();\r\n\t\t\tlet maxAlt: number = 0;\r\n\t\t\tfor (let config of previous.s0.configs) {\r\n\t\t\t\tif (config.reachesIntoOuterContext || config.state instanceof RuleStopState) {\r\n\t\t\t\t\talts.set(config.alt);\r\n\t\t\t\t\tmaxAlt = Math.max(maxAlt, config.alt);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tswitch (alts.cardinality()) {\r\n\t\t\tcase 0:\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif (!previous.s0.configs.hasSemanticContext) {\r\n\t\t\t\t\t// configs doesn't contain any predicates, so the predicate\r\n\t\t\t\t\t// filtering code below would be pointless\r\n\t\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Try to find a configuration set that not only dipped into the outer\r\n\t\t\t\t * context, but also isn't eliminated by a predicate.\r\n\t\t\t\t */\r\n\t\t\t\tlet filteredConfigs: ATNConfigSet = new ATNConfigSet();\r\n\t\t\t\tfor (let config of previous.s0.configs) {\r\n\t\t\t\t\tif (config.reachesIntoOuterContext || config.state instanceof RuleStopState) {\r\n\t\t\t\t\t\tfilteredConfigs.add(config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* The following code blocks are adapted from predicateDFAState with\r\n\t\t\t\t * the following key changes.\r\n\t\t\t\t *\r\n\t\t\t\t * 1. The code operates on an ATNConfigSet rather than a DFAState.\r\n\t\t\t\t * 2. Predicates are collected for all alternatives represented in\r\n\t\t\t\t * filteredConfigs, rather than restricting the evaluation to\r\n\t\t\t\t * conflicting and/or unique configurations.\r\n\t\t\t\t */\r\n\t\t\t\tlet altToPred: SemanticContext[] | undefined = this.getPredsForAmbigAlts(alts, filteredConfigs, maxAlt);\r\n\t\t\t\tif (altToPred != null) {\r\n\t\t\t\t\tlet predicates: DFAState.PredPrediction[] | undefined = this.getPredicatePredictions(alts, altToPred);\r\n\t\t\t\t\tif (predicates != null) {\r\n\t\t\t\t\t\tlet stopIndex: number = input.index;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tinput.seek(startIndex);\r\n\t\t\t\t\t\t\tlet filteredAlts: BitSet = this.evalSemanticContext(predicates, previous.outerContext, false);\r\n\t\t\t\t\t\t\tif (!filteredAlts.isEmpty) {\r\n\t\t\t\t\t\t\t\treturn filteredAlts.nextSetBit(0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfinally {\r\n\t\t\t\t\t\t\tinput.seek(stopIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn alts.nextSetBit(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow this.noViableAlt(input, previous.outerContext, previous.s0.configs, startIndex);\r\n\t}\r\n\r\n\tprotected computeReachSet(dfa: DFA, previous: SimulatorState, t: number, contextCache: PredictionContextCache): SimulatorState | undefined {\r\n\t\tlet useContext: boolean = previous.useContext;\r\n\t\tlet remainingGlobalContext: ParserRuleContext | undefined = previous.remainingOuterContext;\r\n\r\n\t\tlet s: DFAState = previous.s0;\r\n\t\tif (useContext) {\r\n\t\t\twhile (s.isContextSymbol(t)) {\r\n\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\tif (remainingGlobalContext != null) {\r\n\t\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\t\tnext = s.getContextTarget(this.getReturnState(remainingGlobalContext));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (next == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tassert(remainingGlobalContext != null);\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\ts = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tassert(!this.isAcceptState(s, useContext));\r\n\t\tif (this.isAcceptState(s, useContext)) {\r\n\t\t\treturn new SimulatorState(previous.outerContext, s, useContext, remainingGlobalContext);\r\n\t\t}\r\n\r\n\t\tlet s0: DFAState = s;\r\n\r\n\t\tlet target: DFAState | undefined = this.getExistingTargetState(s0, t);\r\n\t\tif (target == null) {\r\n\t\t\tlet result: [DFAState, ParserRuleContext | undefined] = this.computeTargetState(dfa, s0, remainingGlobalContext, t, useContext, contextCache);\r\n\t\t\ttarget = result[0];\r\n\t\t\tremainingGlobalContext = result[1];\r\n\t\t}\r\n\r\n\t\tif (target === ATNSimulator.ERROR) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tassert(!useContext || !target.configs.dipsIntoOuterContext);\r\n\t\treturn new SimulatorState(previous.outerContext, target, useContext, remainingGlobalContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Get an existing target state for an edge in the DFA. If the target state\r\n\t * for the edge has not yet been computed or is otherwise not available,\r\n\t * this method returns `undefined`.\r\n\t *\r\n\t * @param s The current DFA state\r\n\t * @param t The next input symbol\r\n\t * @returns The existing target DFA state for the given input symbol\r\n\t * `t`, or `undefined` if the target state for this edge is not\r\n\t * already cached\r\n\t */\r\n\tprotected getExistingTargetState(@NotNull s: DFAState, t: number): DFAState | undefined {\r\n\t\treturn s.getTarget(t);\r\n\t}\r\n\r\n\t/**\r\n\t * Compute a target state for an edge in the DFA, and attempt to add the\r\n\t * computed state and corresponding edge to the DFA.\r\n\t *\r\n\t * @param dfa\r\n\t * @param s The current DFA state\r\n\t * @param remainingGlobalContext\r\n\t * @param t The next input symbol\r\n\t * @param useContext\r\n\t * @param contextCache\r\n\t *\r\n\t * @returns The computed target DFA state for the given input symbol\r\n\t * `t`. If `t` does not lead to a valid DFA state, this method\r\n\t * returns {@link #ERROR}.\r\n\t */\r\n\t@NotNull\r\n\tprotected computeTargetState(@NotNull dfa: DFA, @NotNull s: DFAState, remainingGlobalContext: ParserRuleContext | undefined, t: number, useContext: boolean, contextCache: PredictionContextCache): [DFAState, ParserRuleContext | undefined] {\r\n\t\tlet closureConfigs: ATNConfig[] = s.configs.toArray();\r\n\t\tlet contextElements: IntegerList | undefined;\r\n\t\tlet reach: ATNConfigSet = new ATNConfigSet();\r\n\t\tlet stepIntoGlobal: boolean;\r\n\t\tdo {\r\n\t\t\tlet hasMoreContext: boolean = !useContext || remainingGlobalContext != null;\r\n\t\t\tif (!hasMoreContext) {\r\n\t\t\t\treach.isOutermostConfigSet = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet reachIntermediate: ATNConfigSet = new ATNConfigSet();\r\n\r\n\t\t\t/* Configurations already in a rule stop state indicate reaching the end\r\n\t\t\t * of the decision rule (local context) or end of the start rule (full\r\n\t\t\t * context). Once reached, these configurations are never updated by a\r\n\t\t\t * closure operation, so they are handled separately for the performance\r\n\t\t\t * advantage of having a smaller intermediate set when calling closure.\r\n\t\t\t *\r\n\t\t\t * For full-context reach operations, separate handling is required to\r\n\t\t\t * ensure that the alternative matching the longest overall sequence is\r\n\t\t\t * chosen when multiple such configurations can match the input.\r\n\t\t\t */\r\n\t\t\tlet skippedStopStates: ATNConfig[] | undefined;\r\n\r\n\t\t\tfor (let c of closureConfigs) {\r\n\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\tconsole.log(\"testing \" + this.getTokenName(t) + \" at \" + c.toString());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\t\tassert(c.context.isEmpty);\r\n\t\t\t\t\tif (useContext && !c.reachesIntoOuterContext || t === IntStream.EOF) {\r\n\t\t\t\t\t\tif (skippedStopStates == null) {\r\n\t\t\t\t\t\t\tskippedStopStates = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tskippedStopStates.push(c);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet n: number = c.state.numberOfOptimizedTransitions;\r\n\t\t\t\tfor (let ti = 0; ti < n; ti++) { // for each optimized transition\r\n\t\t\t\t\tlet trans: Transition = c.state.getOptimizedTransition(ti);\r\n\t\t\t\t\tlet target: ATNState | undefined = this.getReachableTarget(c, trans, t);\r\n\t\t\t\t\tif (target != null) {\r\n\t\t\t\t\t\treachIntermediate.add(c.transform(target, false), contextCache);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* This block optimizes the reach operation for intermediate sets which\r\n\t\t\t * trivially indicate a termination state for the overall\r\n\t\t\t * adaptivePredict operation.\r\n\t\t\t *\r\n\t\t\t * The conditions assume that intermediate\r\n\t\t\t * contains all configurations relevant to the reach set, but this\r\n\t\t\t * condition is not true when one or more configurations have been\r\n\t\t\t * withheld in skippedStopStates, or when the current symbol is EOF.\r\n\t\t\t */\r\n\t\t\tif (this.optimize_unique_closure && skippedStopStates == null && t !== Token.EOF && reachIntermediate.uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\treachIntermediate.isOutermostConfigSet = reach.isOutermostConfigSet;\r\n\t\t\t\treach = reachIntermediate;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t/* If the reach set could not be trivially determined, perform a closure\r\n\t\t\t * operation on the intermediate set to compute its initial value.\r\n\t\t\t */\r\n\t\t\tlet collectPredicates: boolean = false;\r\n\t\t\tlet treatEofAsEpsilon: boolean = t === Token.EOF;\r\n\t\t\tthis.closure(reachIntermediate, reach, collectPredicates, hasMoreContext, contextCache, treatEofAsEpsilon);\r\n\t\t\tstepIntoGlobal = reach.dipsIntoOuterContext;\r\n\r\n\t\t\tif (t === IntStream.EOF) {\r\n\t\t\t\t/* After consuming EOF no additional input is possible, so we are\r\n\t\t\t\t * only interested in configurations which reached the end of the\r\n\t\t\t\t * decision rule (local context) or end of the start rule (full\r\n\t\t\t\t * context). Update reach to contain only these configurations. This\r\n\t\t\t\t * handles both explicit EOF transitions in the grammar and implicit\r\n\t\t\t\t * EOF transitions following the end of the decision or start rule.\r\n\t\t\t\t *\r\n\t\t\t\t * This is handled before the configurations in skippedStopStates,\r\n\t\t\t\t * because any configurations potentially added from that list are\r\n\t\t\t\t * already guaranteed to meet this condition whether or not it's\r\n\t\t\t\t * required.\r\n\t\t\t\t */\r\n\t\t\t\treach = this.removeAllConfigsNotInRuleStopState(reach, contextCache);\r\n\t\t\t}\r\n\r\n\t\t\t/* If skippedStopStates is not undefined, then it contains at least one\r\n\t\t\t * configuration. For full-context reach operations, these\r\n\t\t\t * configurations reached the end of the start rule, in which case we\r\n\t\t\t * only add them back to reach if no configuration during the current\r\n\t\t\t * closure operation reached such a state. This ensures adaptivePredict\r\n\t\t\t * chooses an alternative matching the longest overall sequence when\r\n\t\t\t * multiple alternatives are viable.\r\n\t\t\t */\r\n\t\t\tif (skippedStopStates != null && (!useContext || !PredictionMode.hasConfigInRuleStopState(reach))) {\r\n\t\t\t\tassert(skippedStopStates.length > 0);\r\n\t\t\t\tfor (let c of skippedStopStates) {\r\n\t\t\t\t\treach.add(c, contextCache);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (useContext && stepIntoGlobal) {\r\n\t\t\t\treach.clear();\r\n\r\n\t\t\t\t// We know remainingGlobalContext is not undefined at this point (why?)\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext as ParserRuleContext;\r\n\r\n\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\tlet nextContextElement: number = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\tif (contextElements == null) {\r\n\t\t\t\t\tcontextElements = new IntegerList();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontextElements.add(nextContextElement);\r\n\t\t\t\tif (nextContextElement !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tfor (let i = 0; i < closureConfigs.length; i++) {\r\n\t\t\t\t\t\tclosureConfigs[i] = closureConfigs[i].appendContext(nextContextElement, contextCache);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} while (useContext && stepIntoGlobal);\r\n\r\n\t\tif (reach.isEmpty) {\r\n\t\t\tthis.setDFAEdge(s, t, ATNSimulator.ERROR);\r\n\t\t\treturn [ATNSimulator.ERROR, remainingGlobalContext];\r\n\t\t}\r\n\r\n\t\tlet result: DFAState = this.addDFAEdge(dfa, s, t, contextElements, reach, contextCache);\r\n\t\treturn [result, remainingGlobalContext];\r\n\t}\r\n\r\n\t/**\r\n\t * Return a configuration set containing only the configurations from\r\n\t * `configs` which are in a {@link RuleStopState}. If all\r\n\t * configurations in `configs` are already in a rule stop state, this\r\n\t * method simply returns `configs`.\r\n\t *\r\n\t * @param configs the configuration set to update\r\n\t * @param contextCache the {@link PredictionContext} cache\r\n\t *\r\n\t * @returns `configs` if all configurations in `configs` are in a\r\n\t * rule stop state, otherwise return a new configuration set containing only\r\n\t * the configurations from `configs` which are in a rule stop state\r\n\t */\r\n\t@NotNull\r\n\tprotected removeAllConfigsNotInRuleStopState(@NotNull configs: ATNConfigSet, contextCache: PredictionContextCache): ATNConfigSet {\r\n\t\tif (PredictionMode.allConfigsInRuleStopStates(configs)) {\r\n\t\t\treturn configs;\r\n\t\t}\r\n\r\n\t\tlet result: ATNConfigSet = new ATNConfigSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (!(config.state instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tresult.add(config, contextCache);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected computeStartState(\r\n\t\tdfa: DFA,\r\n\t\tglobalContext: ParserRuleContext,\r\n\t\tuseContext: boolean): SimulatorState {\r\n\t\tlet s0: DFAState | undefined =\r\n\t\t\tdfa.isPrecedenceDfa ? dfa.getPrecedenceStartState(this._parser.precedence, useContext) :\r\n\t\t\t\tuseContext ? dfa.s0full :\r\n\t\t\t\t\tdfa.s0;\r\n\r\n\t\tif (s0 != null) {\r\n\t\t\tif (!useContext) {\r\n\t\t\t\treturn new SimulatorState(globalContext, s0, useContext, globalContext);\r\n\t\t\t}\r\n\r\n\t\t\ts0.setContextSensitive(this.atn);\r\n\t\t}\r\n\r\n\t\tlet decision: number = dfa.decision;\r\n\t\t// @NotNull\r\n\t\tlet p: ATNState = dfa.atnStartState;\r\n\r\n\t\tlet previousContext: number = 0;\r\n\t\tlet remainingGlobalContext: ParserRuleContext | undefined = globalContext;\r\n\t\tlet initialContext: PredictionContext = useContext ? PredictionContext.EMPTY_FULL : PredictionContext.EMPTY_LOCAL; // always at least the implicit call to start rule\r\n\t\tlet contextCache: PredictionContextCache = new PredictionContextCache();\r\n\t\tif (useContext) {\r\n\t\t\tif (!this.enable_global_context_dfa) {\r\n\t\t\t\twhile (remainingGlobalContext != null) {\r\n\t\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\t\tpreviousContext = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpreviousContext = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\t\t\tinitialContext = initialContext.appendSingleContext(previousContext, contextCache);\r\n\t\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile (s0 != null && s0.isContextSensitive && remainingGlobalContext != null) {\r\n\t\t\t\tlet next: DFAState | undefined;\r\n\t\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\t\tnext = s0.getContextTarget(PredictionContext.EMPTY_FULL_STATE_KEY);\r\n\t\t\t\t\tpreviousContext = PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tpreviousContext = this.getReturnState(remainingGlobalContext);\r\n\t\t\t\t\tnext = s0.getContextTarget(previousContext);\r\n\t\t\t\t\tinitialContext = initialContext.appendSingleContext(previousContext, contextCache);\r\n\t\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (next == null) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts0 = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (s0 != null && !s0.isContextSensitive) {\r\n\t\t\treturn new SimulatorState(globalContext, s0, useContext, remainingGlobalContext);\r\n\t\t}\r\n\r\n\t\tlet configs: ATNConfigSet = new ATNConfigSet();\r\n\t\twhile (true) {\r\n\t\t\tlet reachIntermediate: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tlet n: number = p.numberOfTransitions;\r\n\t\t\tfor (let ti = 0; ti < n; ti++) {\r\n\t\t\t\t// for each transition\r\n\t\t\t\tlet target: ATNState = p.transition(ti).target;\r\n\t\t\t\treachIntermediate.add(ATNConfig.create(target, ti + 1, initialContext));\r\n\t\t\t}\r\n\r\n\t\t\tlet hasMoreContext: boolean = remainingGlobalContext != null;\r\n\t\t\tif (!hasMoreContext) {\r\n\t\t\t\tconfigs.isOutermostConfigSet = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet collectPredicates: boolean = true;\r\n\t\t\tthis.closure(reachIntermediate, configs, collectPredicates, hasMoreContext, contextCache, false);\r\n\t\t\tlet stepIntoGlobal: boolean = configs.dipsIntoOuterContext;\r\n\r\n\t\t\tlet next: DFAState;\r\n\t\t\tif (useContext && !this.enable_global_context_dfa) {\r\n\t\t\t\ts0 = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse if (s0 == null) {\r\n\t\t\t\tif (!dfa.isPrecedenceDfa) {\r\n\t\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\t\tif (useContext) {\r\n\t\t\t\t\t\tif (!dfa.s0full) {\r\n\t\t\t\t\t\t\tdfa.s0full = next;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnext = dfa.s0full;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!dfa.s0) {\r\n\t\t\t\t\t\t\tdfa.s0 = next;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnext = dfa.s0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t/* If this is a precedence DFA, we use applyPrecedenceFilter\r\n\t\t\t\t\t * to convert the computed start state to a precedence start\r\n\t\t\t\t\t * state. We then use DFA.setPrecedenceStartState to set the\r\n\t\t\t\t\t * appropriate start state for the precedence level rather\r\n\t\t\t\t\t * than simply setting DFA.s0.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tconfigs = this.applyPrecedenceFilter(configs, globalContext, contextCache);\r\n\t\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\t\tdfa.setPrecedenceStartState(this._parser.precedence, useContext, next);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (dfa.isPrecedenceDfa) {\r\n\t\t\t\t\tconfigs = this.applyPrecedenceFilter(configs, globalContext, contextCache);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext = this.addDFAState(dfa, configs, contextCache);\r\n\t\t\t\ts0.setContextTarget(previousContext, next);\r\n\t\t\t}\r\n\r\n\t\t\ts0 = next;\r\n\r\n\t\t\tif (!useContext || !stepIntoGlobal) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// TODO: make sure it distinguishes empty stack states\r\n\t\t\tnext.setContextSensitive(this.atn);\r\n\r\n\t\t\t// We know remainingGlobalContext is not undefined at this point (why?)\r\n\t\t\tremainingGlobalContext = remainingGlobalContext as ParserRuleContext;\r\n\r\n\t\t\tconfigs.clear();\r\n\t\t\tremainingGlobalContext = this.skipTailCalls(remainingGlobalContext);\r\n\t\t\tlet nextContextElement: number = this.getReturnState(remainingGlobalContext);\r\n\r\n\t\t\tif (remainingGlobalContext.isEmpty) {\r\n\t\t\t\tremainingGlobalContext = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tremainingGlobalContext = remainingGlobalContext.parent;\r\n\t\t\t}\r\n\r\n\t\t\tif (nextContextElement !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\tinitialContext = initialContext.appendSingleContext(nextContextElement, contextCache);\r\n\t\t\t}\r\n\r\n\t\t\tpreviousContext = nextContextElement;\r\n\t\t}\r\n\r\n\t\treturn new SimulatorState(globalContext, s0, useContext, remainingGlobalContext);\r\n\t}\r\n\r\n\t/**\r\n\t * This method transforms the start state computed by\r\n\t * {@link #computeStartState} to the special start state used by a\r\n\t * precedence DFA for a particular precedence value. The transformation\r\n\t * process applies the following changes to the start state's configuration\r\n\t * set.\r\n\t *\r\n\t * 1. Evaluate the precedence predicates for each configuration using\r\n\t * {@link SemanticContext#evalPrecedence}.\r\n\t * 1. When {@link ATNConfig#isPrecedenceFilterSuppressed} is `false`,\r\n\t * remove all configurations which predict an alternative greater than 1,\r\n\t * for which another configuration that predicts alternative 1 is in the\r\n\t * same ATN state with the same prediction context. This transformation is\r\n\t * valid for the following reasons:\r\n\t *\r\n\t * * The closure block cannot contain any epsilon transitions which bypass\r\n\t * the body of the closure, so all states reachable via alternative 1 are\r\n\t * part of the precedence alternatives of the transformed left-recursive\r\n\t * rule.\r\n\t * * The \"primary\" portion of a left recursive rule cannot contain an\r\n\t * epsilon transition, so the only way an alternative other than 1 can exist\r\n\t * in a state that is also reachable via alternative 1 is by nesting calls\r\n\t * to the left-recursive rule, with the outer calls not being at the\r\n\t * preferred precedence level. The\r\n\t * {@link ATNConfig#isPrecedenceFilterSuppressed} property marks ATN\r\n\t * configurations which do not meet this condition, and therefore are not\r\n\t * eligible for elimination during the filtering process.\r\n\t *\r\n\t * The prediction context must be considered by this filter to address\r\n\t * situations like the following.\r\n\t *\r\n\t * ```antlr\r\n\t * grammar TA;\r\n\t * prog: statement* EOF;\r\n\t * statement: letterA | statement letterA 'b' ;\r\n\t * letterA: 'a';\r\n\t * ```\r\n\t *\r\n\t * If the above grammar, the ATN state immediately before the token\r\n\t * reference `'a'` in `letterA` is reachable from the left edge\r\n\t * of both the primary and closure blocks of the left-recursive rule\r\n\t * `statement`. The prediction context associated with each of these\r\n\t * configurations distinguishes between them, and prevents the alternative\r\n\t * which stepped out to `prog` (and then back in to `statement`\r\n\t * from being eliminated by the filter.\r\n\t *\r\n\t * @param configs The configuration set computed by\r\n\t * {@link #computeStartState} as the start state for the DFA.\r\n\t * @returns The transformed configuration set representing the start state\r\n\t * for a precedence DFA at a particular precedence level (determined by\r\n\t * calling {@link Parser#getPrecedence}).\r\n\t */\r\n\t@NotNull\r\n\tprotected applyPrecedenceFilter(@NotNull configs: ATNConfigSet, globalContext: ParserRuleContext, contextCache: PredictionContextCache): ATNConfigSet {\r\n\t\tlet statesFromAlt1: Map = new Map();\r\n\t\tlet configSet: ATNConfigSet = new ATNConfigSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\t// handle alt 1 first\r\n\t\t\tif (config.alt !== 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet updatedContext: SemanticContext | undefined = config.semanticContext.evalPrecedence(this._parser, globalContext);\r\n\t\t\tif (updatedContext == null) {\r\n\t\t\t\t// the configuration was eliminated\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tstatesFromAlt1.set(config.state.stateNumber, config.context);\r\n\t\t\tif (updatedContext !== config.semanticContext) {\r\n\t\t\t\tconfigSet.add(config.transform(config.state, false, updatedContext), contextCache);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconfigSet.add(config, contextCache);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let config of configs) {\r\n\t\t\tif (config.alt === 1) {\r\n\t\t\t\t// already handled\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (!config.isPrecedenceFilterSuppressed) {\r\n\t\t\t\t/* In the future, this elimination step could be updated to also\r\n\t\t\t\t * filter the prediction context for alternatives predicting alt>1\r\n\t\t\t\t * (basically a graph subtraction algorithm).\r\n\t\t\t\t */\r\n\t\t\t\tlet context: PredictionContext | undefined = statesFromAlt1.get(config.state.stateNumber);\r\n\t\t\t\tif (context != null && context.equals(config.context)) {\r\n\t\t\t\t\t// eliminated\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconfigSet.add(config, contextCache);\r\n\t\t}\r\n\r\n\t\treturn configSet;\r\n\t}\r\n\r\n\tprotected getReachableTarget(@NotNull source: ATNConfig, @NotNull trans: Transition, ttype: number): ATNState | undefined {\r\n\t\tif (trans.matches(ttype, 0, this.atn.maxTokenType)) {\r\n\t\t\treturn trans.target;\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** collect and set D's semantic context */\r\n\tprotected predicateDFAState(\r\n\t\tD: DFAState,\r\n\t\tconfigs: ATNConfigSet,\r\n\t\tnalts: number): DFAState.PredPrediction[] | undefined {\r\n\t\tlet conflictingAlts: BitSet | undefined = this.getConflictingAltsFromConfigSet(configs);\r\n\t\tif (!conflictingAlts) {\r\n\t\t\tthrow new Error(\"This unhandled scenario is intended to be unreachable, but I'm currently not sure of why we know that's the case.\");\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"predicateDFAState \" + D);\r\n\t\t}\r\n\t\tlet altToPred: SemanticContext[] | undefined = this.getPredsForAmbigAlts(conflictingAlts, configs, nalts);\r\n\t\t// altToPred[uniqueAlt] is now our validating predicate (if any)\r\n\t\tlet predPredictions: DFAState.PredPrediction[] | undefined;\r\n\t\tif (altToPred != null) {\r\n\t\t\t// we have a validating predicate; test it\r\n\t\t\t// Update DFA so reach becomes accept state with predicate\r\n\t\t\tpredPredictions = this.getPredicatePredictions(conflictingAlts, altToPred);\r\n\t\t\tD.predicates = predPredictions;\r\n\t\t}\r\n\t\treturn predPredictions;\r\n\t}\r\n\r\n\tprotected getPredsForAmbigAlts(\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tnalts: number): SemanticContext[] | undefined {\r\n\t\t// REACH=[1|1|[]|0:0, 1|2|[]|0:1]\r\n\r\n\t\t/* altToPred starts as an array of all undefined contexts. The entry at index i\r\n\t\t * corresponds to alternative i. altToPred[i] may have one of three values:\r\n\t\t * 1. undefined: no ATNConfig c is found such that c.alt===i\r\n\t\t * 2. SemanticContext.NONE: At least one ATNConfig c exists such that\r\n\t\t * c.alt===i and c.semanticContext===SemanticContext.NONE. In other words,\r\n\t\t * alt i has at least one unpredicated config.\r\n\t\t * 3. Non-NONE Semantic Context: There exists at least one, and for all\r\n\t\t * ATNConfig c such that c.alt===i, c.semanticContext!==SemanticContext.NONE.\r\n\t\t *\r\n\t\t * From this, it is clear that NONE||anything==NONE.\r\n\t\t */\r\n\t\tlet altToPred: Array | undefined = new Array(nalts + 1);\r\n\t\tlet n: number = altToPred.length;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (ambigAlts.get(c.alt)) {\r\n\t\t\t\taltToPred[c.alt] = SemanticContext.or(altToPred[c.alt], c.semanticContext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet nPredAlts: number = 0;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tif (altToPred[i] == null) {\r\n\t\t\t\taltToPred[i] = SemanticContext.NONE;\r\n\t\t\t}\r\n\t\t\telse if (altToPred[i] !== SemanticContext.NONE) {\r\n\t\t\t\tnPredAlts++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// At this point we know `altToPred` doesn't contain any undefined entries\r\n\t\tlet result: SemanticContext[] | undefined = altToPred as SemanticContext[];\r\n\r\n\t\t// nonambig alts are undefined in result\r\n\t\tif (nPredAlts === 0) {\r\n\t\t\tresult = undefined;\r\n\t\t}\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"getPredsForAmbigAlts result \" + (result ? Arrays.toString(result) : \"undefined\"));\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getPredicatePredictions(ambigAlts: BitSet | undefined, altToPred: SemanticContext[]): DFAState.PredPrediction[] | undefined {\r\n\t\tlet pairs: DFAState.PredPrediction[] = [];\r\n\t\tlet containsPredicate: boolean = false;\r\n\t\tfor (let i = 1; i < altToPred.length; i++) {\r\n\t\t\tlet pred: SemanticContext = altToPred[i];\r\n\r\n\t\t\t// unpredicated is indicated by SemanticContext.NONE\r\n\t\t\tassert(pred != null);\r\n\r\n\t\t\t// find first unpredicated but ambig alternative, if any.\r\n\t\t\t// Only ambiguous alternatives will have SemanticContext.NONE.\r\n\t\t\t// Any unambig alts or ambig naked alts after first ambig naked are ignored\r\n\t\t\t// (undefined, i) means alt i is the default prediction\r\n\t\t\t// if no (undefined, i), then no default prediction.\r\n\t\t\tif (ambigAlts != null && ambigAlts.get(i) && pred === SemanticContext.NONE) {\r\n\t\t\t\tpairs.push(new DFAState.PredPrediction(pred, i));\r\n\t\t\t}\r\n\t\t\telse if (pred !== SemanticContext.NONE) {\r\n\t\t\t\tcontainsPredicate = true;\r\n\t\t\t\tpairs.push(new DFAState.PredPrediction(pred, i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!containsPredicate) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(Arrays.toString(altToPred)+\"->\"+pairs);\r\n\t\treturn pairs;\r\n\t}\r\n\r\n\t/** Look through a list of predicate/alt pairs, returning alts for the\r\n\t * pairs that win. An `undefined` predicate indicates an alt containing an\r\n\t * unpredicated config which behaves as \"always true.\"\r\n\t */\r\n\tprotected evalSemanticContext(\r\n\t\t@NotNull predPredictions: DFAState.PredPrediction[],\r\n\t\touterContext: ParserRuleContext,\r\n\t\tcomplete: boolean): BitSet {\r\n\t\tlet predictions: BitSet = new BitSet();\r\n\t\tfor (let pair of predPredictions) {\r\n\t\t\tif (pair.pred === SemanticContext.NONE) {\r\n\t\t\t\tpredictions.set(pair.alt);\r\n\t\t\t\tif (!complete) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet evaluatedResult: boolean = this.evalSemanticContextImpl(pair.pred, outerContext, pair.alt);\r\n\t\t\tif (ParserATNSimulator.debug || ParserATNSimulator.dfa_debug) {\r\n\t\t\t\tconsole.log(\"eval pred \" + pair + \"=\" + evaluatedResult);\r\n\t\t\t}\r\n\r\n\t\t\tif (evaluatedResult) {\r\n\t\t\t\tif (ParserATNSimulator.debug || ParserATNSimulator.dfa_debug) {\r\n\t\t\t\t\tconsole.log(\"PREDICT \" + pair.alt);\r\n\t\t\t\t}\r\n\t\t\t\tpredictions.set(pair.alt);\r\n\t\t\t\tif (!complete) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn predictions;\r\n\t}\r\n\r\n\t/**\r\n\t * Evaluate a semantic context within a specific parser context.\r\n\t *\r\n\t * This method might not be called for every semantic context evaluated\r\n\t * during the prediction process. In particular, we currently do not\r\n\t * evaluate the following but it may change in the future:\r\n\t *\r\n\t * * Precedence predicates (represented by\r\n\t * {@link SemanticContext.PrecedencePredicate}) are not currently evaluated\r\n\t * through this method.\r\n\t * * Operator predicates (represented by {@link SemanticContext.AND} and\r\n\t * {@link SemanticContext.OR}) are evaluated as a single semantic\r\n\t * context, rather than evaluating the operands individually.\r\n\t * Implementations which require evaluation results from individual\r\n\t * predicates should override this method to explicitly handle evaluation of\r\n\t * the operands within operator predicates.\r\n\t *\r\n\t * @param pred The semantic context to evaluate\r\n\t * @param parserCallStack The parser context in which to evaluate the\r\n\t * semantic context\r\n\t * @param alt The alternative which is guarded by `pred`\r\n\t *\r\n\t * @since 4.3\r\n\t */\r\n\tprotected evalSemanticContextImpl(@NotNull pred: SemanticContext, parserCallStack: ParserRuleContext, alt: number): boolean {\r\n\t\treturn pred.eval(this._parser, parserCallStack);\r\n\t}\r\n\r\n\t/* TODO: If we are doing predicates, there is no point in pursuing\r\n\t\t closure operations if we reach a DFA state that uniquely predicts\r\n\t\t alternative. We will not be caching that DFA state and it is a\r\n\t\t waste to pursue the closure. Might have to advance when we do\r\n\t\t ambig detection thought :(\r\n\t\t */\r\n\r\n\tprotected closure(\r\n\t\tsourceConfigs: ATNConfigSet,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tcollectPredicates: boolean,\r\n\t\thasMoreContext: boolean,\r\n\t\t@Nullable contextCache: PredictionContextCache,\r\n\t\ttreatEofAsEpsilon: boolean): void {\r\n\t\tif (contextCache == null) {\r\n\t\t\tcontextCache = PredictionContextCache.UNCACHED;\r\n\t\t}\r\n\r\n\t\tlet currentConfigs: ATNConfigSet = sourceConfigs;\r\n\t\tlet closureBusy: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE);\r\n\t\twhile (currentConfigs.size > 0) {\r\n\t\t\tlet intermediate: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tfor (let config of currentConfigs) {\r\n\t\t\t\tthis.closureImpl(config, configs, intermediate, closureBusy, collectPredicates, hasMoreContext, contextCache, 0, treatEofAsEpsilon);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentConfigs = intermediate;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected closureImpl(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\t@Nullable intermediate: ATNConfigSet,\r\n\t\t@NotNull closureBusy: Array2DHashSet,\r\n\t\tcollectPredicates: boolean,\r\n\t\thasMoreContexts: boolean,\r\n\t\t@NotNull contextCache: PredictionContextCache,\r\n\t\tdepth: number,\r\n\t\ttreatEofAsEpsilon: boolean): void {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"closure(\" + config.toString(this._parser, true) + \")\");\r\n\t\t}\r\n\r\n\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\t// We hit rule end. If we have context info, use it\r\n\t\t\tif (!config.context.isEmpty) {\r\n\t\t\t\tlet hasEmpty: boolean = config.context.hasEmpty;\r\n\t\t\t\tlet nonEmptySize: number = config.context.size - (hasEmpty ? 1 : 0);\r\n\t\t\t\tfor (let i = 0; i < nonEmptySize; i++) {\r\n\t\t\t\t\tlet newContext: PredictionContext = config.context.getParent(i); // \"pop\" return state\r\n\t\t\t\t\tlet returnState: ATNState = this.atn.states[config.context.getReturnState(i)];\r\n\t\t\t\t\tlet c: ATNConfig = ATNConfig.create(returnState, config.alt, newContext, config.semanticContext);\r\n\t\t\t\t\t// While we have context to pop back from, we may have\r\n\t\t\t\t\t// gotten that context AFTER having fallen off a rule.\r\n\t\t\t\t\t// Make sure we track that we are now out of context.\r\n\t\t\t\t\tc.outerContextDepth = config.outerContextDepth;\r\n\t\t\t\t\tc.isPrecedenceFilterSuppressed = config.isPrecedenceFilterSuppressed;\r\n\t\t\t\t\tassert(depth > MIN_INTEGER_VALUE);\r\n\t\t\t\t\tthis.closureImpl(c, configs, intermediate, closureBusy, collectPredicates, hasMoreContexts, contextCache, depth - 1, treatEofAsEpsilon);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!hasEmpty || !hasMoreContexts) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig = config.transform(config.state, false, PredictionContext.EMPTY_LOCAL);\r\n\t\t\t}\r\n\t\t\telse if (!hasMoreContexts) {\r\n\t\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// else if we have no context info, just chase follow links (if greedy)\r\n\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\tconsole.log(\"FALLING off rule \" +\r\n\t\t\t\t\t\tthis.getRuleName(config.state.ruleIndex));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (config.context === PredictionContext.EMPTY_FULL) {\r\n\t\t\t\t\t// no need to keep full context overhead when we step out\r\n\t\t\t\t\tconfig = config.transform(config.state, false, PredictionContext.EMPTY_LOCAL);\r\n\t\t\t\t}\r\n\t\t\t\telse if (!config.reachesIntoOuterContext && PredictionContext.isEmptyLocal(config.context)) {\r\n\t\t\t\t\t// add stop state when leaving decision rule for the first time\r\n\t\t\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet p: ATNState = config.state;\r\n\t\t// optimization\r\n\t\tif (!p.onlyHasEpsilonTransitions) {\r\n\t\t\tconfigs.add(config, contextCache);\r\n\t\t\t// make sure to not return here, because EOF transitions can act as\r\n\t\t\t// both epsilon transitions and non-epsilon transitions.\r\n\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\tconsole.log(\"added config \" + configs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < p.numberOfOptimizedTransitions; i++) {\r\n\t\t\t// This block implements first-edge elimination of ambiguous LR\r\n\t\t\t// alternatives as part of dynamic disambiguation during prediction.\r\n\t\t\t// See antlr/antlr4#1398.\r\n\t\t\tif (i === 0\r\n\t\t\t\t&& p.stateType === ATNStateType.STAR_LOOP_ENTRY\r\n\t\t\t\t&& (p as StarLoopEntryState).precedenceRuleDecision\r\n\t\t\t\t&& !config.context.hasEmpty) {\r\n\r\n\t\t\t\tlet precedenceDecision = p as StarLoopEntryState;\r\n\r\n\t\t\t\t// When suppress is true, it means the outgoing edge i==0 is\r\n\t\t\t\t// ambiguous with the outgoing edge i==1, and thus the closure\r\n\t\t\t\t// operation can dynamically disambiguate by suppressing this\r\n\t\t\t\t// edge during the closure operation.\r\n\t\t\t\tlet suppress: boolean = true;\r\n\t\t\t\tfor (let j: number = 0; j < config.context.size; j++) {\r\n\t\t\t\t\tif (!precedenceDecision.precedenceLoopbackStates.get(config.context.getReturnState(j))) {\r\n\t\t\t\t\t\tsuppress = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (suppress) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet t: Transition = p.getOptimizedTransition(i);\r\n\t\t\tlet continueCollecting: boolean =\r\n\t\t\t\t!(t instanceof ActionTransition) && collectPredicates;\r\n\t\t\tlet c: ATNConfig | undefined = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, contextCache, treatEofAsEpsilon);\r\n\t\t\tif (c != null) {\r\n\t\t\t\tif (t instanceof RuleTransition) {\r\n\t\t\t\t\tif (intermediate != null && !collectPredicates) {\r\n\t\t\t\t\t\tintermediate.add(c, contextCache);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet newDepth: number = depth;\r\n\t\t\t\tif (config.state instanceof RuleStopState) {\r\n\t\t\t\t\t// target fell off end of rule; mark resulting c as having dipped into outer context\r\n\t\t\t\t\t// We can't get here if incoming config was rule stop and we had context\r\n\t\t\t\t\t// track how far we dip into outer context. Might\r\n\t\t\t\t\t// come in handy and we avoid evaluating context dependent\r\n\t\t\t\t\t// preds if this is > 0.\r\n\r\n\t\t\t\t\tif (this.dfa != null && this.dfa.isPrecedenceDfa) {\r\n\t\t\t\t\t\tlet outermostPrecedenceReturn: number = (t as EpsilonTransition).outermostPrecedenceReturn;\r\n\t\t\t\t\t\tif (outermostPrecedenceReturn === this.dfa.atnStartState.ruleIndex) {\r\n\t\t\t\t\t\t\tc.isPrecedenceFilterSuppressed = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tc.outerContextDepth = c.outerContextDepth + 1;\r\n\r\n\t\t\t\t\tif (!closureBusy.add(c)) {\r\n\t\t\t\t\t\t// avoid infinite recursion for right-recursive rules\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tassert(newDepth > MIN_INTEGER_VALUE);\r\n\t\t\t\t\tnewDepth--;\r\n\t\t\t\t\tif (ParserATNSimulator.debug) {\r\n\t\t\t\t\t\tconsole.log(\"dips into outer ctx: \" + c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (t instanceof RuleTransition) {\r\n\t\t\t\t\tif (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext.isEmptyLocal(config.context))) {\r\n\t\t\t\t\t\tassert(c.context === config.context);\r\n\t\t\t\t\t\tif (newDepth === 0) {\r\n\t\t\t\t\t\t\t// the pop/push of a tail call would keep the depth\r\n\t\t\t\t\t\t\t// constant, except we latch if it goes negative\r\n\t\t\t\t\t\t\tnewDepth--;\r\n\t\t\t\t\t\t\tif (!this.tail_call_preserves_sll && PredictionContext.isEmptyLocal(config.context)) {\r\n\t\t\t\t\t\t\t\t// make sure the SLL config \"dips into the outer context\" or prediction may not fall back to LL on conflict\r\n\t\t\t\t\t\t\t\tc.outerContextDepth = c.outerContextDepth + 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// latch when newDepth goes negative - once we step out of the entry context we can't return\r\n\t\t\t\t\t\tif (newDepth >= 0) {\r\n\t\t\t\t\t\t\tnewDepth++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!t.isEpsilon && !closureBusy.add(c)) {\r\n\t\t\t\t\t\t// avoid infinite recursion for EOF* and EOF+\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.closureImpl(c, configs, intermediate, closureBusy, continueCollecting, hasMoreContexts, contextCache, newDepth, treatEofAsEpsilon);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getRuleName(index: number): string {\r\n\t\tif (this._parser != null && index >= 0) {\r\n\t\t\treturn this._parser.ruleNames[index];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprotected getEpsilonTarget(@NotNull config: ATNConfig, @NotNull t: Transition, collectPredicates: boolean, inContext: boolean, contextCache: PredictionContextCache, treatEofAsEpsilon: boolean): ATNConfig | undefined {\r\n\t\tswitch (t.serializationType) {\r\n\t\tcase TransitionType.RULE:\r\n\t\t\treturn this.ruleTransition(config, t as RuleTransition, contextCache);\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\treturn this.precedenceTransition(config, t as PrecedencePredicateTransition, collectPredicates, inContext);\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\treturn this.predTransition(config, t as PredicateTransition, collectPredicates, inContext);\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\treturn this.actionTransition(config, t as ActionTransition);\r\n\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\treturn config.transform(t.target, false);\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\t\t// EOF transitions act like epsilon transitions after the first EOF\r\n\t\t\t// transition is traversed\r\n\t\t\tif (treatEofAsEpsilon) {\r\n\t\t\t\tif (t.matches(Token.EOF, 0, 1)) {\r\n\t\t\t\t\treturn config.transform(t.target, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\r\n\t\tdefault:\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected actionTransition(@NotNull config: ATNConfig, @NotNull t: ActionTransition): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ACTION edge \" + t.ruleIndex + \":\" + t.actionIndex);\r\n\t\t}\r\n\t\treturn config.transform(t.target, false);\r\n\t}\r\n\r\n\t@Nullable\r\n\tprotected precedenceTransition(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull pt: PrecedencePredicateTransition,\r\n\t\tcollectPredicates: boolean,\r\n\t\tinContext: boolean): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\r\n\t\t\t\tpt.precedence + \">=_p\" +\r\n\t\t\t\t\", ctx dependent=true\");\r\n\t\t\tif (this._parser != null) {\r\n\t\t\t\tconsole.log(\"context surrounding pred is \" +\r\n\t\t\t\t\tthis._parser.getRuleInvocationStack());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet c: ATNConfig;\r\n\t\tif (collectPredicates && inContext) {\r\n\t\t\tlet newSemCtx: SemanticContext = SemanticContext.and(config.semanticContext, pt.predicate);\r\n\t\t\tc = config.transform(pt.target, false, newSemCtx);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tc = config.transform(pt.target, false);\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"config from pred transition=\" + c);\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\r\n\t@Nullable\r\n\tprotected predTransition(\r\n\t\t@NotNull config: ATNConfig,\r\n\t\t@NotNull pt: PredicateTransition,\r\n\t\tcollectPredicates: boolean,\r\n\t\tinContext: boolean): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\r\n\t\t\t\tpt.ruleIndex + \":\" + pt.predIndex +\r\n\t\t\t\t\", ctx dependent=\" + pt.isCtxDependent);\r\n\t\t\tif (this._parser != null) {\r\n\t\t\t\tconsole.log(\"context surrounding pred is \" +\r\n\t\t\t\t\tthis._parser.getRuleInvocationStack());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet c: ATNConfig;\r\n\t\tif (collectPredicates &&\r\n\t\t\t(!pt.isCtxDependent || (pt.isCtxDependent && inContext))) {\r\n\t\t\tlet newSemCtx: SemanticContext = SemanticContext.and(config.semanticContext, pt.predicate);\r\n\t\t\tc = config.transform(pt.target, false, newSemCtx);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tc = config.transform(pt.target, false);\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"config from pred transition=\" + c);\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected ruleTransition(@NotNull config: ATNConfig, @NotNull t: RuleTransition, @Nullable contextCache: PredictionContextCache): ATNConfig {\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) +\r\n\t\t\t\t\", ctx=\" + config.context);\r\n\t\t}\r\n\r\n\t\tlet returnState: ATNState = t.followState;\r\n\t\tlet newContext: PredictionContext;\r\n\r\n\t\tif (this.optimize_tail_calls && t.optimizedTailCall && (!this.tail_call_preserves_sll || !PredictionContext.isEmptyLocal(config.context))) {\r\n\t\t\tnewContext = config.context;\r\n\t\t}\r\n\t\telse if (contextCache != null) {\r\n\t\t\tnewContext = contextCache.getChild(config.context, returnState.stateNumber);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnewContext = config.context.getChild(returnState.stateNumber);\r\n\t\t}\r\n\r\n\t\treturn config.transform(t.target, false, newContext);\r\n\t}\r\n\r\n\tprivate static STATE_ALT_SORT_COMPARATOR: (o1: ATNConfig, o2: ATNConfig) => number =\r\n\t\t(o1: ATNConfig, o2: ATNConfig): number => {\r\n\t\t\tlet diff: number = o1.state.nonStopStateNumber - o2.state.nonStopStateNumber;\r\n\t\t\tif (diff !== 0) {\r\n\t\t\t\treturn diff;\r\n\t\t\t}\r\n\r\n\t\t\tdiff = o1.alt - o2.alt;\r\n\t\t\tif (diff !== 0) {\r\n\t\t\t\treturn diff;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\tprivate isConflicted(@NotNull configset: ATNConfigSet, contextCache: PredictionContextCache): ConflictInfo | undefined {\r\n\t\tif (configset.uniqueAlt !== ATN.INVALID_ALT_NUMBER || configset.size <= 1) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet configs: ATNConfig[] = configset.toArray();\r\n\t\tconfigs.sort(ParserATNSimulator.STATE_ALT_SORT_COMPARATOR);\r\n\r\n\t\tlet exact: boolean = !configset.dipsIntoOuterContext;\r\n\t\tlet alts: BitSet = new BitSet();\r\n\t\tlet minAlt: number = configs[0].alt;\r\n\t\talts.set(minAlt);\r\n\r\n\t\t/* Quick checks come first (single pass, no context joining):\r\n\t\t * 1. Make sure first config in the sorted list predicts the minimum\r\n\t\t * represented alternative.\r\n\t\t * 2. Make sure every represented state has at least one configuration\r\n\t\t * which predicts the minimum represented alternative.\r\n\t\t * 3. (exact only) make sure every represented state has at least one\r\n\t\t * configuration which predicts each represented alternative.\r\n\t\t */\r\n\r\n\t\t// quick check 1 & 2 => if we assume #1 holds and check #2 against the\r\n\t\t// minAlt from the first state, #2 will fail if the assumption was\r\n\t\t// incorrect\r\n\t\tlet currentState: number = configs[0].state.nonStopStateNumber;\r\n\t\tfor (let config of configs) {\r\n\t\t\tlet stateNumber: number = config.state.nonStopStateNumber;\r\n\t\t\tif (stateNumber !== currentState) {\r\n\t\t\t\tif (config.alt !== minAlt) {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentState = stateNumber;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet representedAlts: BitSet;\r\n\t\tif (exact) {\r\n\t\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\r\n\t\t\t// get the represented alternatives of the first state\r\n\t\t\trepresentedAlts = new BitSet();\r\n\t\t\tlet maxAlt: number = minAlt;\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tif (config.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet alt: number = config.alt;\r\n\t\t\t\trepresentedAlts.set(alt);\r\n\t\t\t\tmaxAlt = alt;\r\n\t\t\t}\r\n\r\n\t\t\t// quick check #3:\r\n\t\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\t\t\tlet currentAlt: number = minAlt;\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tlet stateNumber: number = config.state.nonStopStateNumber;\r\n\t\t\t\tlet alt: number = config.alt;\r\n\t\t\t\tif (stateNumber !== currentState) {\r\n\t\t\t\t\tif (currentAlt !== maxAlt) {\r\n\t\t\t\t\t\texact = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentState = stateNumber;\r\n\t\t\t\t\tcurrentAlt = minAlt;\r\n\t\t\t\t}\r\n\t\t\t\telse if (alt !== currentAlt) {\r\n\t\t\t\t\tif (alt !== representedAlts.nextSetBit(currentAlt + 1)) {\r\n\t\t\t\t\t\texact = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentAlt = alt;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcurrentState = configs[0].state.nonStopStateNumber;\r\n\t\tlet firstIndexCurrentState: number = 0;\r\n\t\tlet lastIndexCurrentStateMinAlt: number = 0;\r\n\t\tlet joinedCheckContext: PredictionContext = configs[0].context;\r\n\t\tfor (let i = 1; i < configs.length; i++) {\r\n\t\t\tlet config: ATNConfig = configs[i];\r\n\t\t\tif (config.alt !== minAlt) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlastIndexCurrentStateMinAlt = i;\r\n\t\t\tjoinedCheckContext = contextCache.join(joinedCheckContext, configs[i].context);\r\n\t\t}\r\n\r\n\t\tfor (let i = lastIndexCurrentStateMinAlt + 1; i < configs.length; i++) {\r\n\t\t\tlet config: ATNConfig = configs[i];\r\n\t\t\tlet state: ATNState = config.state;\r\n\t\t\talts.set(config.alt);\r\n\t\t\tif (state.nonStopStateNumber !== currentState) {\r\n\t\t\t\tcurrentState = state.nonStopStateNumber;\r\n\t\t\t\tfirstIndexCurrentState = i;\r\n\t\t\t\tlastIndexCurrentStateMinAlt = i;\r\n\t\t\t\tjoinedCheckContext = config.context;\r\n\t\t\t\tfor (let j = firstIndexCurrentState + 1; j < configs.length; j++) {\r\n\t\t\t\t\tlet config2: ATNConfig = configs[j];\r\n\t\t\t\t\tif (config2.alt !== minAlt) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (config2.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlastIndexCurrentStateMinAlt = j;\r\n\t\t\t\t\tjoinedCheckContext = contextCache.join(joinedCheckContext, config2.context);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti = lastIndexCurrentStateMinAlt;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet joinedCheckContext2: PredictionContext = config.context;\r\n\t\t\tlet currentAlt: number = config.alt;\r\n\t\t\tlet lastIndexCurrentStateCurrentAlt: number = i;\r\n\t\t\tfor (let j = lastIndexCurrentStateCurrentAlt + 1; j < configs.length; j++) {\r\n\t\t\t\tlet config2: ATNConfig = configs[j];\r\n\t\t\t\tif (config2.alt !== currentAlt) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (config2.state.nonStopStateNumber !== currentState) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlastIndexCurrentStateCurrentAlt = j;\r\n\t\t\t\tjoinedCheckContext2 = contextCache.join(joinedCheckContext2, config2.context);\r\n\t\t\t}\r\n\r\n\t\t\ti = lastIndexCurrentStateCurrentAlt;\r\n\r\n\t\t\tlet check: PredictionContext = contextCache.join(joinedCheckContext, joinedCheckContext2);\r\n\t\t\tif (!joinedCheckContext.equals(check)) {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\r\n\t\t\t// update exact if necessary\r\n\t\t\texact = exact && joinedCheckContext.equals(joinedCheckContext2);\r\n\t\t}\r\n\r\n\t\treturn new ConflictInfo(alts, exact);\r\n\t}\r\n\r\n\tprotected getConflictingAltsFromConfigSet(configs: ATNConfigSet): BitSet | undefined {\r\n\t\tlet conflictingAlts: BitSet | undefined = configs.conflictingAlts;\r\n\t\tif (conflictingAlts == null && configs.uniqueAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tconflictingAlts = new BitSet();\r\n\t\t\tconflictingAlts.set(configs.uniqueAlt);\r\n\t\t}\r\n\r\n\t\treturn conflictingAlts;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getTokenName(t: number): string {\r\n\t\tif (t === Token.EOF) {\r\n\t\t\treturn \"EOF\";\r\n\t\t}\r\n\r\n\t\tlet vocabulary: Vocabulary = this._parser != null ? this._parser.vocabulary : VocabularyImpl.EMPTY_VOCABULARY;\r\n\t\tlet displayName: string = vocabulary.getDisplayName(t);\r\n\t\tif (displayName === String(t)) {\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\treturn displayName + \"<\" + t + \">\";\r\n\t}\r\n\r\n\tpublic getLookaheadName(input: TokenStream): string {\r\n\t\treturn this.getTokenName(input.LA(1));\r\n\t}\r\n\r\n\tpublic dumpDeadEndConfigs(@NotNull nvae: NoViableAltException): void {\r\n\t\tconsole.log(\"dead end configs: \");\r\n\t\tlet deadEndConfigs = nvae.deadEndConfigs;\r\n\t\tif (!deadEndConfigs) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let c of deadEndConfigs) {\r\n\t\t\tlet trans: string = \"no edges\";\r\n\t\t\tif (c.state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\tlet t: Transition = c.state.getOptimizedTransition(0);\r\n\t\t\t\tif (t instanceof AtomTransition) {\r\n\t\t\t\t\ttrans = \"Atom \" + this.getTokenName(t._label);\r\n\t\t\t\t}\r\n\t\t\t\telse if (t instanceof SetTransition) {\r\n\t\t\t\t\tlet not: boolean = t instanceof NotSetTransition;\r\n\t\t\t\t\ttrans = (not ? \"~\" : \"\") + \"Set \" + t.set.toString();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.log(c.toString(this._parser, true) + \":\" + trans);\r\n\t\t}\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected noViableAlt(\r\n\t\t@NotNull input: TokenStream,\r\n\t\t@NotNull outerContext: ParserRuleContext,\r\n\t\t@NotNull configs: ATNConfigSet,\r\n\t\tstartIndex: number): NoViableAltException {\r\n\t\treturn new NoViableAltException(this._parser, input,\r\n\t\t\tinput.get(startIndex),\r\n\t\t\tinput.LT(1),\r\n\t\t\tconfigs, outerContext);\r\n\t}\r\n\r\n\tprotected getUniqueAlt(@NotNull configs: Iterable): number {\r\n\t\tlet alt: number = ATN.INVALID_ALT_NUMBER;\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (alt === ATN.INVALID_ALT_NUMBER) {\r\n\t\t\t\talt = c.alt; // found first alt\r\n\t\t\t}\r\n\t\t\telse if (c.alt !== alt) {\r\n\t\t\t\treturn ATN.INVALID_ALT_NUMBER;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn alt;\r\n\t}\r\n\r\n\tprotected configWithAltAtStopState(@NotNull configs: Iterable, alt: number): boolean {\r\n\t\tfor (let c of configs) {\r\n\t\t\tif (c.alt === alt) {\r\n\t\t\t\tif (c.state instanceof RuleStopState) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected addDFAEdge(\r\n\t\t@NotNull dfa: DFA,\r\n\t\t@NotNull fromState: DFAState,\r\n\t\tt: number,\r\n\t\tcontextTransitions: IntegerList | undefined,\r\n\t\t@NotNull toConfigs: ATNConfigSet,\r\n\t\tcontextCache: PredictionContextCache): DFAState {\r\n\t\tassert(contextTransitions == null || contextTransitions.isEmpty || dfa.isContextSensitive);\r\n\r\n\t\tlet from: DFAState = fromState;\r\n\t\tlet to: DFAState = this.addDFAState(dfa, toConfigs, contextCache);\r\n\r\n\t\tif (contextTransitions != null) {\r\n\t\t\tfor (let context of contextTransitions.toArray()) {\r\n\t\t\t\tif (context === PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\t\t\tif (from.configs.isOutermostConfigSet) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom.setContextSensitive(this.atn);\r\n\t\t\t\tfrom.setContextSymbol(t);\r\n\t\t\t\tlet next: DFAState | undefined = from.getContextTarget(context);\r\n\t\t\t\tif (next != null) {\r\n\t\t\t\t\tfrom = next;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext = this.addDFAContextState(dfa, from.configs, context, contextCache);\r\n\t\t\t\tassert(context !== PredictionContext.EMPTY_FULL_STATE_KEY || next.configs.isOutermostConfigSet);\r\n\t\t\t\tfrom.setContextTarget(context, next);\r\n\t\t\t\tfrom = next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"EDGE \" + from + \" -> \" + to + \" upon \" + this.getTokenName(t));\r\n\t\t}\r\n\t\tthis.setDFAEdge(from, t, to);\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"DFA=\\n\" + dfa.toString(this._parser != null ? this._parser.vocabulary : VocabularyImpl.EMPTY_VOCABULARY, this._parser != null ? this._parser.ruleNames : undefined));\r\n\t\t}\r\n\t\treturn to;\r\n\t}\r\n\r\n\tprotected setDFAEdge(@Nullable p: DFAState, t: number, @Nullable q: DFAState): void {\r\n\t\tif (p != null) {\r\n\t\t\tp.setTarget(t, q);\r\n\t\t}\r\n\t}\r\n\r\n\t/** See comment on LexerInterpreter.addDFAState. */\r\n\t@NotNull\r\n\tprotected addDFAContextState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet, returnContext: number, contextCache: PredictionContextCache): DFAState {\r\n\t\tif (returnContext !== PredictionContext.EMPTY_FULL_STATE_KEY) {\r\n\t\t\tlet contextConfigs: ATNConfigSet = new ATNConfigSet();\r\n\t\t\tfor (let config of configs) {\r\n\t\t\t\tcontextConfigs.add(config.appendContext(returnContext, contextCache));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.addDFAState(dfa, contextConfigs, contextCache);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tassert(!configs.isOutermostConfigSet, \"Shouldn't be adding a duplicate edge.\");\r\n\t\t\tconfigs = configs.clone(true);\r\n\t\t\tconfigs.isOutermostConfigSet = true;\r\n\t\t\treturn this.addDFAState(dfa, configs, contextCache);\r\n\t\t}\r\n\t}\r\n\r\n\t/** See comment on LexerInterpreter.addDFAState. */\r\n\t@NotNull\r\n\tprotected addDFAState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet, contextCache: PredictionContextCache): DFAState {\r\n\t\tlet enableDfa: boolean = this.enable_global_context_dfa || !configs.isOutermostConfigSet;\r\n\t\tif (enableDfa) {\r\n\t\t\tif (!configs.isReadOnly) {\r\n\t\t\t\tconfigs.optimizeConfigs(this);\r\n\t\t\t}\r\n\r\n\t\t\tlet proposed: DFAState = this.createDFAState(dfa, configs);\r\n\t\t\tlet existing: DFAState | undefined = dfa.states.get(proposed);\r\n\t\t\tif (existing != null) {\r\n\t\t\t\treturn existing;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!configs.isReadOnly) {\r\n\t\t\tif (configs.conflictInfo == null) {\r\n\t\t\t\tconfigs.conflictInfo = this.isConflicted(configs, contextCache);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet newState: DFAState = this.createDFAState(dfa, configs.clone(true));\r\n\t\t// getDecisionState won't return undefined when we request a known valid decision\r\n\t\tlet decisionState: DecisionState = this.atn.getDecisionState(dfa.decision) as DecisionState;\r\n\t\tlet predictedAlt: number = this.getUniqueAlt(configs);\r\n\t\tif (predictedAlt !== ATN.INVALID_ALT_NUMBER) {\r\n\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(predictedAlt);\r\n\t\t} else if (configs.conflictingAlts != null) {\r\n\t\t\tlet conflictingAlts = configs.conflictingAlts;\r\n\t\t\tif (conflictingAlts) {\r\n\t\t\t\tnewState.acceptStateInfo = new AcceptStateInfo(conflictingAlts.nextSetBit(0));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (newState.isAcceptState && configs.hasSemanticContext) {\r\n\t\t\tthis.predicateDFAState(newState, configs, decisionState.numberOfTransitions);\r\n\t\t}\r\n\r\n\t\tif (!enableDfa) {\r\n\t\t\treturn newState;\r\n\t\t}\r\n\r\n\t\tlet added: DFAState = dfa.addState(newState);\r\n\t\tif (ParserATNSimulator.debug && added === newState) {\r\n\t\t\tconsole.log(\"adding new DFA state: \" + newState);\r\n\t\t}\r\n\t\treturn added;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected createDFAState(@NotNull dfa: DFA, @NotNull configs: ATNConfigSet): DFAState {\r\n\t\treturn new DFAState(configs);\r\n\t}\r\n\r\n\tprotected reportAttemptingFullContext(@NotNull dfa: DFA, conflictingAlts: BitSet | undefined, @NotNull conflictState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + conflictState.s0.configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportAttemptingFullContext) {\r\n\t\t\t\tlistener.reportAttemptingFullContext(this._parser, dfa, startIndex, stopIndex, conflictingAlts, conflictState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected reportContextSensitivity(@NotNull dfa: DFA, prediction: number, @NotNull acceptState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + acceptState.s0.configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportContextSensitivity) {\r\n\t\t\t\tlistener.reportContextSensitivity(this._parser, dfa, startIndex, stopIndex, prediction, acceptState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** If context sensitive parsing, we know it's ambiguity not conflict */\r\n\tprotected reportAmbiguity(\r\n\t\t@NotNull dfa: DFA,\r\n\t\tD: DFAState, // the DFA state from execATN(): void that had SLL conflicts\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull configs: ATNConfigSet) // configs that LL not SLL considered conflicting\r\n\t{\r\n\t\tif (ParserATNSimulator.debug || ParserATNSimulator.retry_debug) {\r\n\t\t\tlet interval: Interval = Interval.of(startIndex, stopIndex);\r\n\t\t\tconsole.log(\"reportAmbiguity \" +\r\n\t\t\t\tambigAlts + \":\" + configs +\r\n\t\t\t\t\", input=\" + this._parser.inputStream.getText(interval));\r\n\t\t}\r\n\t\tif (this._parser != null) {\r\n\t\t\tlet listener = this._parser.getErrorListenerDispatch();\r\n\t\t\tif (listener.reportAmbiguity) {\r\n\t\t\t\tlistener.reportAmbiguity(this._parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getReturnState(context: RuleContext): number {\r\n\t\tif (context.isEmpty) {\r\n\t\t\treturn PredictionContext.EMPTY_FULL_STATE_KEY;\r\n\t\t}\r\n\r\n\t\tlet state: ATNState = this.atn.states[context.invokingState];\r\n\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\treturn transition.followState.stateNumber;\r\n\t}\r\n\r\n\tprotected skipTailCalls(context: ParserRuleContext): ParserRuleContext {\r\n\t\tif (!this.optimize_tail_calls) {\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\twhile (!context.isEmpty) {\r\n\t\t\tlet state: ATNState = this.atn.states[context.invokingState];\r\n\t\t\tassert(state.numberOfTransitions === 1 && state.transition(0).serializationType === TransitionType.RULE);\r\n\t\t\tlet transition: RuleTransition = state.transition(0) as RuleTransition;\r\n\t\t\tif (!transition.tailCall) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// This method requires that the root ancestor of the ParserRuleContext be empty. If we make it to this\r\n\t\t\t// line, we know the current node is not empty, which means it does have a parent.\r\n\t\t\tcontext = context.parent as ParserRuleContext;\r\n\t\t}\r\n\r\n\t\treturn context;\r\n\t}\r\n\r\n\t/**\r\n\t * @since 4.3\r\n\t */\r\n\tget parser(): Parser {\r\n\t\treturn this._parser;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:34.9572142-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\nimport { PlusLoopbackState } from \"./PlusLoopbackState\";\r\n\r\n/** Start of `(A|B|...)+` loop. Technically a decision state, but\r\n * we don't use for code generation; somebody might need it, so I'm defining\r\n * it for completeness. In reality, the {@link PlusLoopbackState} node is the\r\n * real decision-making note for `A+`.\r\n */\r\nexport class PlusBlockStartState extends BlockStartState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic loopBackState!: PlusLoopbackState;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.PLUS_BLOCK_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.0257730-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** Decision state for `A+` and `(A|B)+`. It has two transitions:\r\n * one to the loop back to start of the block and one to exit.\r\n */\r\nexport class PlusLoopbackState extends DecisionState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.PLUS_LOOP_BACK;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.0994191-07:00\r\n\r\nimport { AbstractPredicateTransition } from \"./AbstractPredicateTransition\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class PrecedencePredicateTransition extends AbstractPredicateTransition {\r\n\tpublic precedence: number;\r\n\r\n\tconstructor( @NotNull target: ATNState, precedence: number) {\r\n\t\tsuper(target);\r\n\t\tthis.precedence = precedence;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.PRECEDENCE;\r\n\t}\r\n\r\n\t@Override\r\n\tget isEpsilon(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget predicate(): SemanticContext.PrecedencePredicate {\r\n\t\treturn new SemanticContext.PrecedencePredicate(this.precedence);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.precedence + \" >= _p\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.5959980-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { Override, NotNull } from \"../Decorators\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\n\r\nexport class RangeTransition extends Transition {\r\n\tpublic from: number;\r\n\tpublic to: number;\r\n\r\n\tconstructor(@NotNull target: ATNState, from: number, to: number) {\r\n\t\tsuper(target);\r\n\t\tthis.from = from;\r\n\t\tthis.to = to;\r\n\t}\r\n\r\n\t@Override\r\n\tget serializationType(): TransitionType {\r\n\t\treturn TransitionType.RANGE;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tget label(): IntervalSet {\r\n\t\treturn IntervalSet.of(this.from, this.to);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic matches(symbol: number, minVocabSymbol: number, maxVocabSymbol: number): boolean {\r\n\t\treturn symbol >= this.from && symbol <= this.to;\r\n\t}\r\n\r\n\t@Override\r\n\t@NotNull\r\n\tpublic toString(): string {\r\n\t\treturn \"'\" + String.fromCodePoint(this.from) + \"'..'\" + String.fromCodePoint(this.to) + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.6806851-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\n\r\nexport class RuleStartState extends ATNState {\r\n\t// This is always set during ATN deserialization\r\n\tpublic stopState!: RuleStopState;\r\n\tpublic isPrecedenceRule: boolean = false;\r\n\tpublic leftFactored: boolean = false;\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.RULE_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.5657409-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The block that begins a closure loop. */\r\nexport class StarBlockStartState extends BlockStartState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_BLOCK_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.6368726-07:00\r\n\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { Override } from \"../Decorators\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\n\r\nexport class StarLoopbackState extends ATNState {\r\n\tget loopEntryState(): StarLoopEntryState {\r\n\t\treturn this.transition(0).target as StarLoopEntryState;\r\n\t}\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.STAR_LOOP_BACK;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:37.7814046-07:00\r\n\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { Override } from \"../Decorators\";\r\n\r\n/** The Tokens rule start state linking to each lexer rule start state */\r\nexport class TokensStartState extends DecisionState {\r\n\r\n\t@Override\r\n\tget stateType(): ATNStateType {\r\n\t\treturn ATNStateType.TOKEN_START;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { Equatable } from \"./Stubs\";\r\nimport { MurmurHash } from \"./MurmurHash\";\r\n\r\nexport class UUID implements Equatable {\r\n\tprivate readonly data: Uint32Array;\r\n\r\n\tconstructor(mostSigBits: number, moreSigBits: number, lessSigBits: number, leastSigBits: number) {\r\n\t\tthis.data = new Uint32Array(4);\r\n\t\tthis.data[0] = mostSigBits;\r\n\t\tthis.data[1] = moreSigBits;\r\n\t\tthis.data[2] = lessSigBits;\r\n\t\tthis.data[3] = leastSigBits;\r\n\t}\r\n\r\n\tpublic static fromString(data: string): UUID {\r\n\t\tif (!/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/.test(data)) {\r\n\t\t\tthrow new Error(\"Incorrectly formatted UUID\");\r\n\t\t}\r\n\r\n\t\tlet segments = data.split(\"-\");\r\n\t\tlet mostSigBits = parseInt(segments[0], 16);\r\n\t\tlet moreSigBits = ((parseInt(segments[1], 16) << 16) >>> 0) + parseInt(segments[2], 16);\r\n\t\tlet lessSigBits = ((parseInt(segments[3], 16) << 16) >>> 0) + parseInt(segments[4].substr(0, 4), 16);\r\n\t\tlet leastSigBits = parseInt(segments[4].substr(-8), 16);\r\n\t\treturn new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits);\r\n\t}\r\n\r\n\tpublic hashCode(): number {\r\n\t\treturn MurmurHash.hashCode([this.data[0], this.data[1], this.data[2], this.data[3]]);\r\n\t}\r\n\r\n\tpublic equals(obj: any): boolean {\r\n\t\tif (obj === this) {\r\n\t\t\treturn true;\r\n\t\t} else if (!(obj instanceof UUID)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.data[0] === obj.data[0]\r\n\t\t\t&& this.data[1] === obj.data[1]\r\n\t\t\t&& this.data[2] === obj.data[2]\r\n\t\t\t&& this.data[3] === obj.data[3];\r\n\t}\r\n\r\n\tpublic toString(): string {\r\n\t\treturn (\"00000000\" + this.data[0].toString(16)).substr(-8)\r\n\t\t\t+ \"-\" + (\"0000\" + (this.data[1] >>> 16).toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + this.data[1].toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + (this.data[2] >>> 16).toString(16)).substr(-4)\r\n\t\t\t+ \"-\" + (\"0000\" + this.data[2].toString(16)).substr(-4)\r\n\t\t\t+ (\"00000000\" + this.data[3].toString(16)).substr(-8);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:25.9683447-07:00\r\n\r\nimport { ActionTransition } from \"./ActionTransition\";\r\nimport { Array2DHashSet } from \"../misc/Array2DHashSet\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNDeserializationOptions } from \"./ATNDeserializationOptions\";\r\nimport { ATNState } from \"./ATNState\";\r\nimport { ATNStateType } from \"./ATNStateType\";\r\nimport { ATNType } from \"./ATNType\";\r\nimport { AtomTransition } from \"./AtomTransition\";\r\nimport { BasicBlockStartState } from \"./BasicBlockStartState\";\r\nimport { BasicState } from \"./BasicState\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { BlockEndState } from \"./BlockEndState\";\r\nimport { BlockStartState } from \"./BlockStartState\";\r\nimport { DecisionState } from \"./DecisionState\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { EpsilonTransition } from \"./EpsilonTransition\";\r\nimport { Interval } from \"../misc/Interval\";\r\nimport { IntervalSet } from \"../misc/IntervalSet\";\r\nimport { InvalidState } from \"./InvalidState\";\r\nimport { LexerAction } from \"./LexerAction\";\r\nimport { LexerActionType } from \"./LexerActionType\";\r\nimport { LexerChannelAction } from \"./LexerChannelAction\";\r\nimport { LexerCustomAction } from \"./LexerCustomAction\";\r\nimport { LexerModeAction } from \"./LexerModeAction\";\r\nimport { LexerMoreAction } from \"./LexerMoreAction\";\r\nimport { LexerPopModeAction } from \"./LexerPopModeAction\";\r\nimport { LexerPushModeAction } from \"./LexerPushModeAction\";\r\nimport { LexerSkipAction } from \"./LexerSkipAction\";\r\nimport { LexerTypeAction } from \"./LexerTypeAction\";\r\nimport { LoopEndState } from \"./LoopEndState\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { NotSetTransition } from \"./NotSetTransition\";\r\nimport { ParserATNSimulator } from \"./ParserATNSimulator\";\r\nimport { PlusBlockStartState } from \"./PlusBlockStartState\";\r\nimport { PlusLoopbackState } from \"./PlusLoopbackState\";\r\nimport { PrecedencePredicateTransition } from \"./PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./PredicateTransition\";\r\nimport { RangeTransition } from \"./RangeTransition\";\r\nimport { RuleStartState } from \"./RuleStartState\";\r\nimport { RuleStopState } from \"./RuleStopState\";\r\nimport { RuleTransition } from \"./RuleTransition\";\r\nimport { SetTransition } from \"./SetTransition\";\r\nimport { StarBlockStartState } from \"./StarBlockStartState\";\r\nimport { StarLoopbackState } from \"./StarLoopbackState\";\r\nimport { StarLoopEntryState } from \"./StarLoopEntryState\";\r\nimport { Token } from \"../Token\";\r\nimport { TokensStartState } from \"./TokensStartState\";\r\nimport { Transition } from \"./Transition\";\r\nimport { TransitionType } from \"./TransitionType\";\r\nimport { UUID } from \"../misc/UUID\";\r\nimport { WildcardTransition } from \"./WildcardTransition\";\r\n\r\ninterface UnicodeDeserializer {\r\n\t// Wrapper for readInt() or readInt32()\r\n\treadUnicode(data: Uint16Array, p: number): number;\r\n\r\n\t// Work around Java not allowing mutation of captured variables\r\n\t// by returning amount by which to increment p after each read\r\n\treadonly size: number;\r\n}\r\n\r\nconst enum UnicodeDeserializingMode {\r\n\tUNICODE_BMP,\r\n\tUNICODE_SMP,\r\n}\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ATNDeserializer {\r\n\tstatic get SERIALIZED_VERSION(): number {\r\n\t\t/* This value should never change. Updates following this version are\r\n\t\t * reflected as change in the unique ID SERIALIZED_UUID.\r\n\t\t */\r\n\t\treturn 3;\r\n\t}\r\n\r\n\t/* WARNING: DO NOT MERGE THESE LINES. If UUIDs differ during a merge,\r\n\t * resolve the conflict by generating a new ID!\r\n\t */\r\n\r\n\t/**\r\n\t * This is the earliest supported serialized UUID.\r\n\t */\r\n\tprivate static readonly BASE_SERIALIZED_UUID: UUID = UUID.fromString(\"E4178468-DF95-44D0-AD87-F22A5D5FB6D3\");\r\n\t/**\r\n\t * This UUID indicates an extension of {@link #ADDED_PRECEDENCE_TRANSITIONS}\r\n\t * for the addition of lexer actions encoded as a sequence of\r\n\t * {@link LexerAction} instances.\r\n\t */\r\n\tprivate static readonly ADDED_LEXER_ACTIONS: UUID = UUID.fromString(\"AB35191A-1603-487E-B75A-479B831EAF6D\");\r\n\t/**\r\n\t * This UUID indicates the serialized ATN contains two sets of\r\n\t * IntervalSets, where the second set's values are encoded as\r\n\t * 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\r\n\t */\r\n\tprivate static readonly ADDED_UNICODE_SMP: UUID = UUID.fromString(\"C23FEA89-0605-4f51-AFB8-058BCAB8C91B\");\r\n\t/**\r\n\t * This list contains all of the currently supported UUIDs, ordered by when\r\n\t * the feature first appeared in this branch.\r\n\t */\r\n\tprivate static readonly SUPPORTED_UUIDS: UUID[] = [\r\n\t\tATNDeserializer.BASE_SERIALIZED_UUID,\r\n\t\tATNDeserializer.ADDED_LEXER_ACTIONS,\r\n\t\tATNDeserializer.ADDED_UNICODE_SMP,\r\n\t];\r\n\r\n\t/**\r\n\t * This is the current serialized UUID.\r\n\t */\r\n\tprivate static readonly SERIALIZED_UUID: UUID = ATNDeserializer.ADDED_UNICODE_SMP;\r\n\r\n\t@NotNull\r\n\tprivate readonly deserializationOptions: ATNDeserializationOptions;\r\n\r\n\tconstructor(deserializationOptions?: ATNDeserializationOptions) {\r\n\t\tif (deserializationOptions === undefined) {\r\n\t\t\tdeserializationOptions = ATNDeserializationOptions.defaultOptions;\r\n\t\t}\r\n\r\n\t\tthis.deserializationOptions = deserializationOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if a particular serialized representation of an ATN supports\r\n\t * a particular feature, identified by the {@link UUID} used for serializing\r\n\t * the ATN at the time the feature was first introduced.\r\n\t *\r\n\t * @param feature The {@link UUID} marking the first time the feature was\r\n\t * supported in the serialized ATN.\r\n\t * @param actualUuid The {@link UUID} of the actual serialized ATN which is\r\n\t * currently being deserialized.\r\n\t * @returns `true` if the `actualUuid` value represents a\r\n\t * serialized ATN at or after the feature identified by `feature` was\r\n\t * introduced; otherwise, `false`.\r\n\t */\r\n\tprotected static isFeatureSupported(feature: UUID, actualUuid: UUID): boolean {\r\n\t\tlet featureIndex: number = ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(feature));\r\n\t\tif (featureIndex < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(actualUuid)) >= featureIndex;\r\n\t}\r\n\r\n\tprivate static getUnicodeDeserializer(mode: UnicodeDeserializingMode): UnicodeDeserializer {\r\n\t\tif (mode === UnicodeDeserializingMode.UNICODE_BMP) {\r\n\t\t\treturn {\r\n\t\t\t\treadUnicode: (data: Uint16Array, p: number): number => {\r\n\t\t\t\t\treturn ATNDeserializer.toInt(data[p]);\r\n\t\t\t\t},\r\n\t\t\t\tsize: 1,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\treadUnicode: (data: Uint16Array, p: number): number => {\r\n\t\t\t\t\treturn ATNDeserializer.toInt32(data, p);\r\n\t\t\t\t},\r\n\t\t\t\tsize: 2,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tpublic deserialize(@NotNull data: Uint16Array): ATN {\r\n\t\tdata = data.slice(0);\r\n\r\n\t\t// Each Uint16 value in data is shifted by +2 at the entry to this method. This is an encoding optimization\r\n\t\t// targeting the serialized values 0 and -1 (serialized to 0xFFFF), each of which are very common in the\r\n\t\t// serialized form of the ATN. In the modified UTF-8 that Java uses for compiled string literals, these two\r\n\t\t// character values have multi-byte forms. By shifting each value by +2, they become characters 2 and 1 prior to\r\n\t\t// writing the string, each of which have single-byte representations. Since the shift occurs in the tool during\r\n\t\t// ATN serialization, each target is responsible for adjusting the values during deserialization.\r\n\t\t//\r\n\t\t// As a special case, note that the first element of data is not adjusted because it contains the major version\r\n\t\t// number of the serialized ATN, which was fixed at 3 at the time the value shifting was implemented.\r\n\t\tfor (let i = 1; i < data.length; i++) {\r\n\t\t\tdata[i] = (data[i] - 2) & 0xFFFF;\r\n\t\t}\r\n\r\n\t\tlet p: number = 0;\r\n\t\tlet version: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tif (version !== ATNDeserializer.SERIALIZED_VERSION) {\r\n\t\t\tlet reason = `Could not deserialize ATN with version ${version} (expected ${ATNDeserializer.SERIALIZED_VERSION}).`;\r\n\t\t\tthrow new Error(reason);\r\n\t\t}\r\n\r\n\t\tlet uuid: UUID = ATNDeserializer.toUUID(data, p);\r\n\t\tp += 8;\r\n\t\tif (ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(uuid)) < 0) {\r\n\t\t\tlet reason = `Could not deserialize ATN with UUID ${uuid} (expected ${ATNDeserializer.SERIALIZED_UUID} or a legacy UUID).`;\r\n\t\t\tthrow new Error(reason);\r\n\t\t}\r\n\r\n\t\tlet supportsLexerActions: boolean = ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid);\r\n\r\n\t\tlet grammarType: ATNType = ATNDeserializer.toInt(data[p++]);\r\n\t\tlet maxTokenType: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tlet atn: ATN = new ATN(grammarType, maxTokenType);\r\n\r\n\t\t//\r\n\t\t// STATES\r\n\t\t//\r\n\t\tlet loopBackStateNumbers: Array<[LoopEndState, number]> = [];\r\n\t\tlet endStateNumbers: Array<[BlockStartState, number]> = [];\r\n\t\tlet nstates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nstates; i++) {\r\n\t\t\tlet stype: ATNStateType = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t// ignore bad type of states\r\n\t\t\tif (stype === ATNStateType.INVALID_TYPE) {\r\n\t\t\t\tatn.addState(new InvalidState());\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet ruleIndex: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tif (ruleIndex === 0xFFFF) {\r\n\t\t\t\truleIndex = -1;\r\n\t\t\t}\r\n\r\n\t\t\tlet s: ATNState = this.stateFactory(stype, ruleIndex);\r\n\t\t\tif (stype === ATNStateType.LOOP_END) { // special case\r\n\t\t\t\tlet loopBackStateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tloopBackStateNumbers.push([s as LoopEndState, loopBackStateNumber]);\r\n\t\t\t}\r\n\t\t\telse if (s instanceof BlockStartState) {\r\n\t\t\t\tlet endStateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tendStateNumbers.push([s, endStateNumber]);\r\n\t\t\t}\r\n\t\t\tatn.addState(s);\r\n\t\t}\r\n\r\n\t\t// delay the assignment of loop back and end states until we know all the state instances have been initialized\r\n\t\tfor (let pair of loopBackStateNumbers) {\r\n\t\t\tpair[0].loopBackState = atn.states[pair[1]];\r\n\t\t}\r\n\r\n\t\tfor (let pair of endStateNumbers) {\r\n\t\t\tpair[0].endState = atn.states[pair[1]] as BlockEndState;\r\n\t\t}\r\n\r\n\t\tlet numNonGreedyStates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numNonGreedyStates; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as DecisionState).nonGreedy = true;\r\n\t\t}\r\n\r\n\t\tlet numSllDecisions: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numSllDecisions; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as DecisionState).sll = true;\r\n\t\t}\r\n\r\n\t\tlet numPrecedenceStates: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < numPrecedenceStates; i++) {\r\n\t\t\tlet stateNumber: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t(atn.states[stateNumber] as RuleStartState).isPrecedenceRule = true;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// RULES\r\n\t\t//\r\n\t\tlet nrules: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\tatn.ruleToTokenType = new Int32Array(nrules);\r\n\t\t}\r\n\r\n\t\tatn.ruleToStartState = new Array(nrules);\r\n\t\tfor (let i = 0; i < nrules; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tlet startState: RuleStartState = atn.states[s] as RuleStartState;\r\n\t\t\tstartState.leftFactored = ATNDeserializer.toInt(data[p++]) !== 0;\r\n\t\t\tatn.ruleToStartState[i] = startState;\r\n\t\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\t\tlet tokenType: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\tif (tokenType === 0xFFFF) {\r\n\t\t\t\t\ttokenType = Token.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tatn.ruleToTokenType[i] = tokenType;\r\n\r\n\t\t\t\tif (!ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid)) {\r\n\t\t\t\t\t// this piece of unused metadata was serialized prior to the\r\n\t\t\t\t\t// addition of LexerAction\r\n\t\t\t\t\tlet actionIndexIgnored: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (actionIndexIgnored === 0xFFFF) {\r\n\t\t\t\t\t\tactionIndexIgnored = -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tatn.ruleToStopState = new Array(nrules);\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!(state instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tatn.ruleToStopState[state.ruleIndex] = state;\r\n\t\t\tatn.ruleToStartState[state.ruleIndex].stopState = state;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// MODES\r\n\t\t//\r\n\t\tlet nmodes: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nmodes; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tatn.modeToStartState.push(atn.states[s] as TokensStartState);\r\n\t\t}\r\n\r\n\t\tatn.modeToDFA = new Array(nmodes);\r\n\t\tfor (let i = 0; i < nmodes; i++) {\r\n\t\t\tatn.modeToDFA[i] = new DFA(atn.modeToStartState[i]);\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// SETS\r\n\t\t//\r\n\t\tlet sets: IntervalSet[] = [];\r\n\r\n\t\t// First, read all sets with 16-bit Unicode code points <= U+FFFF.\r\n\t\tp = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(UnicodeDeserializingMode.UNICODE_BMP));\r\n\r\n\t\t// Next, if the ATN was serialized with the Unicode SMP feature,\r\n\t\t// deserialize sets with 32-bit arguments <= U+10FFFF.\r\n\t\tif (ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_UNICODE_SMP, uuid)) {\r\n\t\t\tp = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(UnicodeDeserializingMode.UNICODE_SMP));\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// EDGES\r\n\t\t//\r\n\t\tlet nedges: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nedges; i++) {\r\n\t\t\tlet src: number = ATNDeserializer.toInt(data[p]);\r\n\t\t\tlet trg: number = ATNDeserializer.toInt(data[p + 1]);\r\n\t\t\tlet ttype: number = ATNDeserializer.toInt(data[p + 2]);\r\n\t\t\tlet arg1: number = ATNDeserializer.toInt(data[p + 3]);\r\n\t\t\tlet arg2: number = ATNDeserializer.toInt(data[p + 4]);\r\n\t\t\tlet arg3: number = ATNDeserializer.toInt(data[p + 5]);\r\n\t\t\tlet trans: Transition = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\r\n\t\t\t// console.log(`EDGE ${trans.constructor.name} ${src}->${trg} ${Transition.serializationNames[ttype]} ${arg1},${arg2},${arg3}`);\r\n\t\t\tlet srcState: ATNState = atn.states[src];\r\n\t\t\tsrcState.addTransition(trans);\r\n\t\t\tp += 6;\r\n\t\t}\r\n\r\n\t\t// edges for rule stop states can be derived, so they aren't serialized\r\n\t\tinterface T { stopState: number; returnState: number; outermostPrecedenceReturn: number; }\r\n\t\tlet returnTransitionsSet = new Array2DHashSet({\r\n\t\t\thashCode: (o: T) => o.stopState ^ o.returnState ^ o.outermostPrecedenceReturn,\r\n\r\n\t\t\tequals: (a: T, b: T): boolean => {\r\n\t\t\t\treturn a.stopState === b.stopState\r\n\t\t\t\t\t&& a.returnState === b.returnState\r\n\t\t\t\t\t&& a.outermostPrecedenceReturn === b.outermostPrecedenceReturn;\r\n\t\t\t},\r\n\t\t});\r\n\t\tlet returnTransitions: T[] = [];\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tlet returningToLeftFactored: boolean = state.ruleIndex >= 0 && atn.ruleToStartState[state.ruleIndex].leftFactored;\r\n\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\tlet t: Transition = state.transition(i);\r\n\t\t\t\tif (!(t instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet ruleTransition: RuleTransition = t;\r\n\t\t\t\tlet returningFromLeftFactored: boolean = atn.ruleToStartState[ruleTransition.target.ruleIndex].leftFactored;\r\n\t\t\t\tif (!returningFromLeftFactored && returningToLeftFactored) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet outermostPrecedenceReturn: number = -1;\r\n\t\t\t\tif (atn.ruleToStartState[ruleTransition.target.ruleIndex].isPrecedenceRule) {\r\n\t\t\t\t\tif (ruleTransition.precedence === 0) {\r\n\t\t\t\t\t\toutermostPrecedenceReturn = ruleTransition.target.ruleIndex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet current = { stopState: ruleTransition.target.ruleIndex, returnState: ruleTransition.followState.stateNumber, outermostPrecedenceReturn };\r\n\t\t\t\tif (returnTransitionsSet.add(current)) {\r\n\t\t\t\t\treturnTransitions.push(current);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add all elements from returnTransitions to the ATN\r\n\t\tfor (let returnTransition of returnTransitions) {\r\n\t\t\tlet transition = new EpsilonTransition(atn.states[returnTransition.returnState], returnTransition.outermostPrecedenceReturn);\r\n\t\t\tatn.ruleToStopState[returnTransition.stopState].addTransition(transition);\r\n\t\t}\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (state instanceof BlockStartState) {\r\n\t\t\t\t// we need to know the end state to set its start state\r\n\t\t\t\tif (state.endState === undefined) {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// block end states can only be associated to a single block start state\r\n\t\t\t\tif (state.endState.startState !== undefined) {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.endState.startState = state;\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof PlusLoopbackState) {\r\n\t\t\t\tlet loopbackState: PlusLoopbackState = state;\r\n\t\t\t\tfor (let i = 0; i < loopbackState.numberOfTransitions; i++) {\r\n\t\t\t\t\tlet target: ATNState = loopbackState.transition(i).target;\r\n\t\t\t\t\tif (target instanceof PlusBlockStartState) {\r\n\t\t\t\t\t\ttarget.loopBackState = loopbackState;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (state instanceof StarLoopbackState) {\r\n\t\t\t\tlet loopbackState: StarLoopbackState = state;\r\n\t\t\t\tfor (let i = 0; i < loopbackState.numberOfTransitions; i++) {\r\n\t\t\t\t\tlet target: ATNState = loopbackState.transition(i).target;\r\n\t\t\t\t\tif (target instanceof StarLoopEntryState) {\r\n\t\t\t\t\t\ttarget.loopBackState = loopbackState;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// DECISIONS\r\n\t\t//\r\n\t\tlet ndecisions: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 1; i <= ndecisions; i++) {\r\n\t\t\tlet s: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\tlet decState: DecisionState = atn.states[s] as DecisionState;\r\n\t\t\tatn.decisionToState.push(decState);\r\n\t\t\tdecState.decision = i - 1;\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// LEXER ACTIONS\r\n\t\t//\r\n\t\tif (atn.grammarType === ATNType.LEXER) {\r\n\t\t\tif (supportsLexerActions) {\r\n\t\t\t\tatn.lexerActions = new Array(ATNDeserializer.toInt(data[p++]));\r\n\t\t\t\tfor (let i = 0; i < atn.lexerActions.length; i++) {\r\n\t\t\t\t\tlet actionType: LexerActionType = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tlet data1: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (data1 === 0xFFFF) {\r\n\t\t\t\t\t\tdata1 = -1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet data2: number = ATNDeserializer.toInt(data[p++]);\r\n\t\t\t\t\tif (data2 === 0xFFFF) {\r\n\t\t\t\t\t\tdata2 = -1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet lexerAction: LexerAction = this.lexerActionFactory(actionType, data1, data2);\r\n\r\n\t\t\t\t\tatn.lexerActions[i] = lexerAction;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// for compatibility with older serialized ATNs, convert the old\r\n\t\t\t\t// serialized action index for action transitions to the new\r\n\t\t\t\t// form, which is the index of a LexerCustomAction\r\n\t\t\t\tlet legacyLexerActions: LexerAction[] = [];\r\n\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\t\t\tlet transition: Transition = state.transition(i);\r\n\t\t\t\t\t\tif (!(transition instanceof ActionTransition)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet ruleIndex: number = transition.ruleIndex;\r\n\t\t\t\t\t\tlet actionIndex: number = transition.actionIndex;\r\n\t\t\t\t\t\tlet lexerAction: LexerCustomAction = new LexerCustomAction(ruleIndex, actionIndex);\r\n\t\t\t\t\t\tstate.setTransition(i, new ActionTransition(transition.target, ruleIndex, legacyLexerActions.length, false));\r\n\t\t\t\t\t\tlegacyLexerActions.push(lexerAction);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tatn.lexerActions = legacyLexerActions;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markPrecedenceDecisions(atn);\r\n\r\n\t\tatn.decisionToDFA = new Array(ndecisions);\r\n\t\tfor (let i = 0; i < ndecisions; i++) {\r\n\t\t\tatn.decisionToDFA[i] = new DFA(atn.decisionToState[i], i);\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\tthis.verifyATN(atn);\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isGenerateRuleBypassTransitions && atn.grammarType === ATNType.PARSER) {\r\n\t\t\tatn.ruleToTokenType = new Int32Array(atn.ruleToStartState.length);\r\n\t\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\t\tatn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\t\tlet bypassStart: BasicBlockStartState = new BasicBlockStartState();\r\n\t\t\t\tbypassStart.ruleIndex = i;\r\n\t\t\t\tatn.addState(bypassStart);\r\n\r\n\t\t\t\tlet bypassStop: BlockEndState = new BlockEndState();\r\n\t\t\t\tbypassStop.ruleIndex = i;\r\n\t\t\t\tatn.addState(bypassStop);\r\n\r\n\t\t\t\tbypassStart.endState = bypassStop;\r\n\t\t\t\tatn.defineDecisionState(bypassStart);\r\n\r\n\t\t\t\tbypassStop.startState = bypassStart;\r\n\r\n\t\t\t\tlet endState: ATNState | undefined;\r\n\t\t\t\tlet excludeTransition: Transition | undefined;\r\n\t\t\t\tif (atn.ruleToStartState[i].isPrecedenceRule) {\r\n\t\t\t\t\t// wrap from the beginning of the rule to the StarLoopEntryState\r\n\t\t\t\t\tendState = undefined;\r\n\t\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\t\tif (state.ruleIndex !== i) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet maybeLoopEndState: ATNState = state.transition(state.numberOfTransitions - 1).target;\r\n\t\t\t\t\t\tif (!(maybeLoopEndState instanceof LoopEndState)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState) {\r\n\t\t\t\t\t\t\tendState = state;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!endState) {\r\n\t\t\t\t\t\tthrow new Error(\"Couldn't identify final state of the precedence rule prefix section.\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\texcludeTransition = (endState as StarLoopEntryState).loopBackState.transition(0);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tendState = atn.ruleToStopState[i];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// all non-excluded transitions that currently target end state need to target blockEnd instead\r\n\t\t\t\tfor (let state of atn.states) {\r\n\t\t\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\t\t\tlet transition = state.transition(i);\r\n\t\t\t\t\t\tif (transition === excludeTransition) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (transition.target === endState) {\r\n\t\t\t\t\t\t\ttransition.target = bypassStop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// all transitions leaving the rule start state need to leave blockStart instead\r\n\t\t\t\twhile (atn.ruleToStartState[i].numberOfTransitions > 0) {\r\n\t\t\t\t\tlet transition: Transition = atn.ruleToStartState[i].removeTransition(atn.ruleToStartState[i].numberOfTransitions - 1);\r\n\t\t\t\t\tbypassStart.addTransition(transition);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// link the new states\r\n\t\t\t\tatn.ruleToStartState[i].addTransition(new EpsilonTransition(bypassStart));\r\n\t\t\t\tbypassStop.addTransition(new EpsilonTransition(endState));\r\n\r\n\t\t\t\tlet matchState: ATNState = new BasicState();\r\n\t\t\t\tatn.addState(matchState);\r\n\t\t\t\tmatchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[i]));\r\n\t\t\t\tbypassStart.addTransition(new EpsilonTransition(matchState));\r\n\t\t\t}\r\n\r\n\t\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\t\t// reverify after modification\r\n\t\t\t\tthis.verifyATN(atn);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.deserializationOptions.isOptimize) {\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet optimizationCount: number = 0;\r\n\t\t\t\toptimizationCount += ATNDeserializer.inlineSetRules(atn);\r\n\t\t\t\toptimizationCount += ATNDeserializer.combineChainedEpsilons(atn);\r\n\t\t\t\tlet preserveOrder: boolean = atn.grammarType === ATNType.LEXER;\r\n\t\t\t\toptimizationCount += ATNDeserializer.optimizeSets(atn, preserveOrder);\r\n\t\t\t\tif (optimizationCount === 0) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.deserializationOptions.isVerifyATN) {\r\n\t\t\t\t// reverify after modification\r\n\t\t\t\tthis.verifyATN(atn);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tATNDeserializer.identifyTailCalls(atn);\r\n\r\n\t\treturn atn;\r\n\t}\r\n\r\n\tprivate deserializeSets(data: Uint16Array, p: number, sets: IntervalSet[], unicodeDeserializer: UnicodeDeserializer): number {\r\n\t\tlet nsets: number = ATNDeserializer.toInt(data[p++]);\r\n\t\tfor (let i = 0; i < nsets; i++) {\r\n\t\t\tlet nintervals: number = ATNDeserializer.toInt(data[p]);\r\n\t\t\tp++;\r\n\t\t\tlet set: IntervalSet = new IntervalSet();\r\n\t\t\tsets.push(set);\r\n\r\n\t\t\tlet containsEof: boolean = ATNDeserializer.toInt(data[p++]) !== 0;\r\n\t\t\tif (containsEof) {\r\n\t\t\t\tset.add(-1);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let j: number = 0; j < nintervals; j++) {\r\n\t\t\t\tlet a: number = unicodeDeserializer.readUnicode(data, p);\r\n\t\t\t\tp += unicodeDeserializer.size;\r\n\t\t\t\tlet b: number = unicodeDeserializer.readUnicode(data, p);\r\n\t\t\t\tp += unicodeDeserializer.size;\r\n\t\t\t\tset.add(a, b);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\t/**\r\n\t * Analyze the {@link StarLoopEntryState} states in the specified ATN to set\r\n\t * the {@link StarLoopEntryState#precedenceRuleDecision} field to the\r\n\t * correct value.\r\n\t *\r\n\t * @param atn The ATN.\r\n\t */\r\n\tprotected markPrecedenceDecisions(@NotNull atn: ATN): void {\r\n\t\t// Map rule index -> precedence decision for that rule\r\n\t\tlet rulePrecedenceDecisions = new Map();\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t/* We analyze the ATN to determine if this ATN decision state is the\r\n\t\t\t * decision for the closure block that determines whether a\r\n\t\t\t * precedence rule should continue or complete.\r\n\t\t\t */\r\n\t\t\tif (atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\r\n\t\t\t\tlet maybeLoopEndState: ATNState = state.transition(state.numberOfTransitions - 1).target;\r\n\t\t\t\tif (maybeLoopEndState instanceof LoopEndState) {\r\n\t\t\t\t\tif (maybeLoopEndState.epsilonOnlyTransitions && maybeLoopEndState.transition(0).target instanceof RuleStopState) {\r\n\t\t\t\t\t\trulePrecedenceDecisions.set(state.ruleIndex, state);\r\n\t\t\t\t\t\tstate.precedenceRuleDecision = true;\r\n\t\t\t\t\t\tstate.precedenceLoopbackStates = new BitSet(atn.states.length);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// After marking precedence decisions, we go back through and fill in\r\n\t\t// StarLoopEntryState.precedenceLoopbackStates.\r\n\t\tfor (let precedenceDecision of rulePrecedenceDecisions) {\r\n\t\t\tfor (let transition of atn.ruleToStopState[precedenceDecision[0]].getTransitions()) {\r\n\t\t\t\tif (transition.serializationType !== TransitionType.EPSILON) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet epsilonTransition = transition as EpsilonTransition;\r\n\t\t\t\tif (epsilonTransition.outermostPrecedenceReturn !== -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tprecedenceDecision[1].precedenceLoopbackStates.set(transition.target.stateNumber);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected verifyATN(atn: ATN): void {\r\n\t\t// verify assumptions\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tthis.checkCondition(state !== undefined, \"ATN states should not be undefined.\");\r\n\t\t\tif (state.stateType === ATNStateType.INVALID_TYPE) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tthis.checkCondition(state.onlyHasEpsilonTransitions || state.numberOfTransitions <= 1);\r\n\r\n\t\t\tif (state instanceof PlusBlockStartState) {\r\n\t\t\t\tthis.checkCondition(state.loopBackState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof StarLoopEntryState) {\r\n\t\t\t\tlet starLoopEntryState: StarLoopEntryState = state;\r\n\t\t\t\tthis.checkCondition(starLoopEntryState.loopBackState !== undefined);\r\n\t\t\t\tthis.checkCondition(starLoopEntryState.numberOfTransitions === 2);\r\n\r\n\t\t\t\tif (starLoopEntryState.transition(0).target instanceof StarBlockStartState) {\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.transition(1).target instanceof LoopEndState);\r\n\t\t\t\t\tthis.checkCondition(!starLoopEntryState.nonGreedy);\r\n\t\t\t\t}\r\n\t\t\t\telse if (starLoopEntryState.transition(0).target instanceof LoopEndState) {\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.transition(1).target instanceof StarBlockStartState);\r\n\t\t\t\t\tthis.checkCondition(starLoopEntryState.nonGreedy);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthrow new Error(\"IllegalStateException\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof StarLoopbackState) {\r\n\t\t\t\tthis.checkCondition(state.numberOfTransitions === 1);\r\n\t\t\t\tthis.checkCondition(state.transition(0).target instanceof StarLoopEntryState);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof LoopEndState) {\r\n\t\t\t\tthis.checkCondition(state.loopBackState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof RuleStartState) {\r\n\t\t\t\tthis.checkCondition(state.stopState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof BlockStartState) {\r\n\t\t\t\tthis.checkCondition(state.endState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof BlockEndState) {\r\n\t\t\t\tthis.checkCondition(state.startState !== undefined);\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof DecisionState) {\r\n\t\t\t\tlet decisionState: DecisionState = state;\r\n\t\t\t\tthis.checkCondition(decisionState.numberOfTransitions <= 1 || decisionState.decision >= 0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.checkCondition(state.numberOfTransitions <= 1 || state instanceof RuleStopState);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkCondition(condition: boolean, message?: string): void {\r\n\t\tif (!condition) {\r\n\t\t\tthrow new Error(\"IllegalStateException: \" + message);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static inlineSetRules(atn: ATN): number {\r\n\t\tlet inlinedCalls: number = 0;\r\n\r\n\t\tlet ruleToInlineTransition = new Array(atn.ruleToStartState.length);\r\n\t\tfor (let i = 0; i < atn.ruleToStartState.length; i++) {\r\n\t\t\tlet startState: RuleStartState = atn.ruleToStartState[i];\r\n\t\t\tlet middleState: ATNState = startState;\r\n\t\t\twhile (middleState.onlyHasEpsilonTransitions\r\n\t\t\t\t&& middleState.numberOfOptimizedTransitions === 1\r\n\t\t\t\t&& middleState.getOptimizedTransition(0).serializationType === TransitionType.EPSILON) {\r\n\t\t\t\tmiddleState = middleState.getOptimizedTransition(0).target;\r\n\t\t\t}\r\n\r\n\t\t\tif (middleState.numberOfOptimizedTransitions !== 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet matchTransition: Transition = middleState.getOptimizedTransition(0);\r\n\t\t\tlet matchTarget: ATNState = matchTransition.target;\r\n\t\t\tif (matchTransition.isEpsilon\r\n\t\t\t\t|| !matchTarget.onlyHasEpsilonTransitions\r\n\t\t\t\t|| matchTarget.numberOfOptimizedTransitions !== 1\r\n\t\t\t\t|| !(matchTarget.getOptimizedTransition(0).target instanceof RuleStopState)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (matchTransition.serializationType) {\r\n\t\t\tcase TransitionType.ATOM:\r\n\t\t\tcase TransitionType.RANGE:\r\n\t\t\tcase TransitionType.SET:\r\n\t\t\t\truleToInlineTransition[i] = matchTransition;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase TransitionType.NOT_SET:\r\n\t\t\tcase TransitionType.WILDCARD:\r\n\t\t\t\t// not implemented yet\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (state.ruleIndex < 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] | undefined;\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition: Transition = state.getOptimizedTransition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet ruleTransition: RuleTransition = transition;\r\n\t\t\t\tlet effective: Transition | undefined = ruleToInlineTransition[ruleTransition.target.ruleIndex];\r\n\t\t\t\tif (effective === undefined) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (optimizedTransitions === undefined) {\r\n\t\t\t\t\toptimizedTransitions = [];\r\n\t\t\t\t\tfor (let j = 0; j < i; j++) {\r\n\t\t\t\t\t\toptimizedTransitions.push(state.getOptimizedTransition(i));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinlinedCalls++;\r\n\t\t\t\tlet target: ATNState = ruleTransition.followState;\r\n\t\t\t\tlet intermediateState: ATNState = new BasicState();\r\n\t\t\t\tintermediateState.setRuleIndex(target.ruleIndex);\r\n\t\t\t\tatn.addState(intermediateState);\r\n\t\t\t\toptimizedTransitions.push(new EpsilonTransition(intermediateState));\r\n\r\n\t\t\t\tswitch (effective.serializationType) {\r\n\t\t\t\tcase TransitionType.ATOM:\r\n\t\t\t\t\tintermediateState.addTransition(new AtomTransition(target, (effective as AtomTransition)._label));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase TransitionType.RANGE:\r\n\t\t\t\t\tintermediateState.addTransition(new RangeTransition(target, (effective as RangeTransition).from, (effective as RangeTransition).to));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase TransitionType.SET:\r\n\t\t\t\t\tintermediateState.addTransition(new SetTransition(target, (effective as SetTransition).label));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(\"UnsupportedOperationException\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\tif (state.isOptimized) {\r\n\t\t\t\t\twhile (state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\t\tstate.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\t\tstate.addOptimizedTransition(transition);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + inlinedCalls + \" rule invocations by inlining sets.\");\r\n\t\t}\r\n\r\n\t\treturn inlinedCalls;\r\n\t}\r\n\r\n\tprivate static combineChainedEpsilons(atn: ATN): number {\r\n\t\tlet removedEdges: number = 0;\r\n\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tif (!state.onlyHasEpsilonTransitions || state instanceof RuleStopState) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] | undefined;\r\n\t\t\tnextTransition:\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition: Transition = state.getOptimizedTransition(i);\r\n\t\t\t\tlet intermediate: ATNState = transition.target;\r\n\t\t\t\tif (transition.serializationType !== TransitionType.EPSILON\r\n\t\t\t\t\t|| (transition as EpsilonTransition).outermostPrecedenceReturn !== -1\r\n\t\t\t\t\t|| intermediate.stateType !== ATNStateType.BASIC\r\n\t\t\t\t\t|| !intermediate.onlyHasEpsilonTransitions) {\r\n\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue nextTransition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) {\r\n\t\t\t\t\tif (intermediate.getOptimizedTransition(j).serializationType !== TransitionType.EPSILON\r\n\t\t\t\t\t\t|| (intermediate.getOptimizedTransition(j) as EpsilonTransition).outermostPrecedenceReturn !== -1) {\r\n\t\t\t\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\t\t\t\toptimizedTransitions.push(transition);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcontinue nextTransition;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tremovedEdges++;\r\n\t\t\t\tif (optimizedTransitions === undefined) {\r\n\t\t\t\t\toptimizedTransitions = [];\r\n\t\t\t\t\tfor (let j = 0; j < i; j++) {\r\n\t\t\t\t\t\toptimizedTransitions.push(state.getOptimizedTransition(j));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let j = 0; j < intermediate.numberOfOptimizedTransitions; j++) {\r\n\t\t\t\t\tlet target: ATNState = intermediate.getOptimizedTransition(j).target;\r\n\t\t\t\t\toptimizedTransitions.push(new EpsilonTransition(target));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (optimizedTransitions !== undefined) {\r\n\t\t\t\tif (state.isOptimized) {\r\n\t\t\t\t\twhile (state.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\t\tstate.removeOptimizedTransition(state.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\t\tstate.addOptimizedTransition(transition);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + removedEdges + \" transitions by combining chained epsilon transitions.\");\r\n\t\t}\r\n\r\n\t\treturn removedEdges;\r\n\t}\r\n\r\n\tprivate static optimizeSets(atn: ATN, preserveOrder: boolean): number {\r\n\t\tif (preserveOrder) {\r\n\t\t\t// this optimization currently doesn't preserve edge order.\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet removedPaths: number = 0;\r\n\t\tlet decisions: DecisionState[] = atn.decisionToState;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tlet setTransitions: IntervalSet = new IntervalSet();\r\n\t\t\tfor (let i = 0; i < decision.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet epsTransition: Transition = decision.getOptimizedTransition(i);\r\n\t\t\t\tif (!(epsTransition instanceof EpsilonTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (epsTransition.target.numberOfOptimizedTransitions !== 1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet transition: Transition = epsTransition.target.getOptimizedTransition(0);\r\n\t\t\t\tif (!(transition.target instanceof BlockEndState)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (transition instanceof NotSetTransition) {\r\n\t\t\t\t\t// TODO: not yet implemented\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (transition instanceof AtomTransition\r\n\t\t\t\t\t|| transition instanceof RangeTransition\r\n\t\t\t\t\t|| transition instanceof SetTransition) {\r\n\t\t\t\t\tsetTransitions.add(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setTransitions.size <= 1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet optimizedTransitions: Transition[] = [];\r\n\t\t\tfor (let i = 0; i < decision.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tif (!setTransitions.contains(i)) {\r\n\t\t\t\t\toptimizedTransitions.push(decision.getOptimizedTransition(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet blockEndState: ATNState = decision.getOptimizedTransition(setTransitions.minElement).target.getOptimizedTransition(0).target;\r\n\t\t\tlet matchSet: IntervalSet = new IntervalSet();\r\n\t\t\tfor (let interval of setTransitions.intervals) {\r\n\t\t\t\tfor (let j = interval.a; j <= interval.b; j++) {\r\n\t\t\t\t\tlet matchTransition: Transition = decision.getOptimizedTransition(j).target.getOptimizedTransition(0);\r\n\t\t\t\t\tif (matchTransition instanceof NotSetTransition) {\r\n\t\t\t\t\t\tthrow new Error(\"Not yet implemented.\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmatchSet.addAll(matchTransition.label as IntervalSet);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet newTransition: Transition;\r\n\t\t\tif (matchSet.intervals.length === 1) {\r\n\t\t\t\tif (matchSet.size === 1) {\r\n\t\t\t\t\tnewTransition = new AtomTransition(blockEndState, matchSet.minElement);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet matchInterval: Interval = matchSet.intervals[0];\r\n\t\t\t\t\tnewTransition = new RangeTransition(blockEndState, matchInterval.a, matchInterval.b);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnewTransition = new SetTransition(blockEndState, matchSet);\r\n\t\t\t}\r\n\r\n\t\t\tlet setOptimizedState: ATNState = new BasicState();\r\n\t\t\tsetOptimizedState.setRuleIndex(decision.ruleIndex);\r\n\t\t\tatn.addState(setOptimizedState);\r\n\r\n\t\t\tsetOptimizedState.addTransition(newTransition);\r\n\t\t\toptimizedTransitions.push(new EpsilonTransition(setOptimizedState));\r\n\r\n\t\t\tremovedPaths += decision.numberOfOptimizedTransitions - optimizedTransitions.length;\r\n\r\n\t\t\tif (decision.isOptimized) {\r\n\t\t\t\twhile (decision.numberOfOptimizedTransitions > 0) {\r\n\t\t\t\t\tdecision.removeOptimizedTransition(decision.numberOfOptimizedTransitions - 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (let transition of optimizedTransitions) {\r\n\t\t\t\tdecision.addOptimizedTransition(transition);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (ParserATNSimulator.debug) {\r\n\t\t\tconsole.log(\"ATN runtime optimizer removed \" + removedPaths + \" paths by collapsing sets.\");\r\n\t\t}\r\n\r\n\t\treturn removedPaths;\r\n\t}\r\n\r\n\tprivate static identifyTailCalls(atn: ATN): void {\r\n\t\tfor (let state of atn.states) {\r\n\t\t\tfor (let i = 0; i < state.numberOfTransitions; i++) {\r\n\t\t\t\tlet transition = state.transition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttransition.tailCall = this.testTailCall(atn, transition, false);\r\n\t\t\t\ttransition.optimizedTailCall = this.testTailCall(atn, transition, true);\r\n\t\t\t}\r\n\r\n\t\t\tif (!state.isOptimized) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < state.numberOfOptimizedTransitions; i++) {\r\n\t\t\t\tlet transition = state.getOptimizedTransition(i);\r\n\t\t\t\tif (!(transition instanceof RuleTransition)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttransition.tailCall = this.testTailCall(atn, transition, false);\r\n\t\t\t\ttransition.optimizedTailCall = this.testTailCall(atn, transition, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static testTailCall(atn: ATN, transition: RuleTransition, optimizedPath: boolean): boolean {\r\n\t\tif (!optimizedPath && transition.tailCall) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (optimizedPath && transition.optimizedTailCall) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet reachable: BitSet = new BitSet(atn.states.length);\r\n\t\tlet worklist: ATNState[] = [];\r\n\t\tworklist.push(transition.followState);\r\n\t\twhile (true) {\r\n\t\t\tlet state = worklist.pop();\r\n\t\t\tif (!state) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (reachable.get(state.stateNumber)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (state instanceof RuleStopState) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (!state.onlyHasEpsilonTransitions) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tlet transitionCount = optimizedPath ? state.numberOfOptimizedTransitions : state.numberOfTransitions;\r\n\t\t\tfor (let i = 0; i < transitionCount; i++) {\r\n\t\t\t\tlet t = optimizedPath ? state.getOptimizedTransition(i) : state.transition(i);\r\n\t\t\t\tif (t.serializationType !== TransitionType.EPSILON) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tworklist.push(t.target);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprotected static toInt(c: number): number {\r\n\t\treturn c;\r\n\t}\r\n\r\n\tprotected static toInt32(data: Uint16Array, offset: number): number {\r\n\t\treturn (data[offset] | (data[offset + 1] << 16)) >>> 0;\r\n\t}\r\n\r\n\tprotected static toUUID(data: Uint16Array, offset: number): UUID {\r\n\t\tlet leastSigBits: number = ATNDeserializer.toInt32(data, offset);\r\n\t\tlet lessSigBits: number = ATNDeserializer.toInt32(data, offset + 2);\r\n\t\tlet moreSigBits: number = ATNDeserializer.toInt32(data, offset + 4);\r\n\t\tlet mostSigBits: number = ATNDeserializer.toInt32(data, offset + 6);\r\n\t\treturn new UUID(mostSigBits, moreSigBits, lessSigBits, leastSigBits);\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected edgeFactory(\r\n\t\t@NotNull atn: ATN,\r\n\t\ttype: TransitionType, src: number, trg: number,\r\n\t\targ1: number, arg2: number, arg3: number,\r\n\t\tsets: IntervalSet[]): Transition {\r\n\t\tlet target: ATNState = atn.states[trg];\r\n\t\tswitch (type) {\r\n\t\t\tcase TransitionType.EPSILON: return new EpsilonTransition(target);\r\n\t\t\tcase TransitionType.RANGE:\r\n\t\t\t\tif (arg3 !== 0) {\r\n\t\t\t\t\treturn new RangeTransition(target, Token.EOF, arg2);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn new RangeTransition(target, arg1, arg2);\r\n\t\t\t\t}\r\n\t\t\tcase TransitionType.RULE:\r\n\t\t\t\tlet rt: RuleTransition = new RuleTransition(atn.states[arg1] as RuleStartState, arg2, arg3, target);\r\n\t\t\t\treturn rt;\r\n\t\t\tcase TransitionType.PREDICATE:\r\n\t\t\t\tlet pt: PredicateTransition = new PredicateTransition(target, arg1, arg2, arg3 !== 0);\r\n\t\t\t\treturn pt;\r\n\t\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\t\treturn new PrecedencePredicateTransition(target, arg1);\r\n\t\t\tcase TransitionType.ATOM:\r\n\t\t\t\tif (arg3 !== 0) {\r\n\t\t\t\t\treturn new AtomTransition(target, Token.EOF);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn new AtomTransition(target, arg1);\r\n\t\t\t\t}\r\n\t\t\tcase TransitionType.ACTION:\r\n\t\t\t\tlet a: ActionTransition = new ActionTransition(target, arg1, arg2, arg3 !== 0);\r\n\t\t\t\treturn a;\r\n\t\t\tcase TransitionType.SET: return new SetTransition(target, sets[arg1]);\r\n\t\t\tcase TransitionType.NOT_SET: return new NotSetTransition(target, sets[arg1]);\r\n\t\t\tcase TransitionType.WILDCARD: return new WildcardTransition(target);\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"The specified transition type is not valid.\");\r\n\t}\r\n\r\n\tprotected stateFactory(type: ATNStateType, ruleIndex: number): ATNState {\r\n\t\tlet s: ATNState;\r\n\t\tswitch (type) {\r\n\t\t\tcase ATNStateType.INVALID_TYPE: return new InvalidState();\r\n\t\t\tcase ATNStateType.BASIC: s = new BasicState(); break;\r\n\t\t\tcase ATNStateType.RULE_START: s = new RuleStartState(); break;\r\n\t\t\tcase ATNStateType.BLOCK_START: s = new BasicBlockStartState(); break;\r\n\t\t\tcase ATNStateType.PLUS_BLOCK_START: s = new PlusBlockStartState(); break;\r\n\t\t\tcase ATNStateType.STAR_BLOCK_START: s = new StarBlockStartState(); break;\r\n\t\t\tcase ATNStateType.TOKEN_START: s = new TokensStartState(); break;\r\n\t\t\tcase ATNStateType.RULE_STOP: s = new RuleStopState(); break;\r\n\t\t\tcase ATNStateType.BLOCK_END: s = new BlockEndState(); break;\r\n\t\t\tcase ATNStateType.STAR_LOOP_BACK: s = new StarLoopbackState(); break;\r\n\t\t\tcase ATNStateType.STAR_LOOP_ENTRY: s = new StarLoopEntryState(); break;\r\n\t\t\tcase ATNStateType.PLUS_LOOP_BACK: s = new PlusLoopbackState(); break;\r\n\t\t\tcase ATNStateType.LOOP_END: s = new LoopEndState(); break;\r\n\t\t\tdefault:\r\n\t\t\t\tlet message: string = `The specified state type ${type} is not valid.`;\r\n\t\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\ts.ruleIndex = ruleIndex;\r\n\t\treturn s;\r\n\t}\r\n\r\n\tprotected lexerActionFactory(type: LexerActionType, data1: number, data2: number): LexerAction {\r\n\t\tswitch (type) {\r\n\t\tcase LexerActionType.CHANNEL:\r\n\t\t\treturn new LexerChannelAction(data1);\r\n\r\n\t\tcase LexerActionType.CUSTOM:\r\n\t\t\treturn new LexerCustomAction(data1, data2);\r\n\r\n\t\tcase LexerActionType.MODE:\r\n\t\t\treturn new LexerModeAction(data1);\r\n\r\n\t\tcase LexerActionType.MORE:\r\n\t\t\treturn LexerMoreAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.POP_MODE:\r\n\t\t\treturn LexerPopModeAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.PUSH_MODE:\r\n\t\t\treturn new LexerPushModeAction(data1);\r\n\r\n\t\tcase LexerActionType.SKIP:\r\n\t\t\treturn LexerSkipAction.INSTANCE;\r\n\r\n\t\tcase LexerActionType.TYPE:\r\n\t\t\treturn new LexerTypeAction(data1);\r\n\r\n\t\tdefault:\r\n\t\t\tlet message: string = `The specified lexer action type ${type} is not valid.`;\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:31.0349605-07:00\r\n\r\nimport { DecisionInfo } from \"./DecisionInfo\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { ProfilingATNSimulator } from \"./ProfilingATNSimulator\";\r\n\r\n/**\r\n * This class provides access to specific and aggregate statistics gathered\r\n * during profiling of a parser.\r\n *\r\n * @since 4.3\r\n */\r\nexport class ParseInfo {\r\n\tprotected atnSimulator: ProfilingATNSimulator;\r\n\r\n\tconstructor(@NotNull atnSimulator: ProfilingATNSimulator) {\r\n\t\tthis.atnSimulator = atnSimulator;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an array of {@link DecisionInfo} instances containing the profiling\r\n\t * information gathered for each decision in the ATN.\r\n\t *\r\n\t * @returns An array of {@link DecisionInfo} instances, indexed by decision\r\n\t * number.\r\n\t */\r\n\t@NotNull\r\n\tpublic getDecisionInfo(): DecisionInfo[] {\r\n\t\treturn this.atnSimulator.getDecisionInfo();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the decision numbers for decisions that required one or more\r\n\t * full-context predictions during parsing. These are decisions for which\r\n\t * {@link DecisionInfo#LL_Fallback} is non-zero.\r\n\t *\r\n\t * @returns A list of decision numbers which required one or more\r\n\t * full-context predictions during parsing.\r\n\t */\r\n\t@NotNull\r\n\tpublic getLLDecisions(): number[] {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet LL: number[] = [];\r\n\t\tfor (let i = 0; i < decisions.length; i++) {\r\n\t\t\tlet fallBack: number = decisions[i].LL_Fallback;\r\n\t\t\tif (fallBack > 0) {\r\n\t\t\t\tLL.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn LL;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total time spent during prediction across all decisions made\r\n\t * during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#timeInPrediction} for all decisions.\r\n\t */\r\n\tpublic getTotalTimeInPrediction(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet t: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tt += decision.timeInPrediction;\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of SLL lookahead operations across all decisions\r\n\t * made during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#SLL_TotalLook} for all decisions.\r\n\t */\r\n\tpublic getTotalSLLLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_TotalLook;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of LL lookahead operations across all decisions\r\n\t * made during parsing. This value is the sum of\r\n\t * {@link DecisionInfo#LL_TotalLook} for all decisions.\r\n\t */\r\n\tpublic getTotalLLLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.LL_TotalLook;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for SLL prediction\r\n\t * across all decisions made during parsing.\r\n\t */\r\n\tpublic getTotalSLLATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for LL prediction\r\n\t * across all decisions made during parsing.\r\n\t */\r\n\tpublic getTotalLLATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.LL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of ATN lookahead operations for SLL and LL\r\n\t * prediction across all decisions made during parsing.\r\n\t *\r\n\t * This value is the sum of {@link #getTotalSLLATNLookaheadOps} and\r\n\t * {@link #getTotalLLATNLookaheadOps}.\r\n\t */\r\n\tpublic getTotalATNLookaheadOps(): number {\r\n\t\tlet decisions: DecisionInfo[] = this.atnSimulator.getDecisionInfo();\r\n\t\tlet k: number = 0;\r\n\t\tfor (let decision of decisions) {\r\n\t\t\tk += decision.SLL_ATNTransitions;\r\n\t\t\tk += decision.LL_ATNTransitions;\r\n\t\t}\r\n\r\n\t\treturn k;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total number of DFA states stored in the DFA cache for all\r\n\t * decisions in the ATN.\r\n\t */\r\n\tpublic getDFASize(): number;\r\n\r\n\t/**\r\n\t * Gets the total number of DFA states stored in the DFA cache for a\r\n\t * particular decision.\r\n\t */\r\n\tpublic getDFASize(decision: number): number;\r\n\r\n\tpublic getDFASize(decision?: number): number {\r\n\t\tif (decision) {\r\n\t\t\tlet decisionToDFA: DFA = this.atnSimulator.atn.decisionToDFA[decision];\r\n\t\t\treturn decisionToDFA.states.size;\r\n\t\t} else {\r\n\t\t\tlet n: number = 0;\r\n\t\t\tlet decisionToDFA: DFA[] = this.atnSimulator.atn.decisionToDFA;\r\n\t\t\tfor (let i = 0; i < decisionToDFA.length; i++) {\r\n\t\t\t\tn += this.getDFASize(i);\r\n\t\t\t}\r\n\r\n\t\t\treturn n;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:56.9812284-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { ProxyErrorListener } from \"./ProxyErrorListener\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport { Override } from \"./Decorators\";\r\n\r\n/**\r\n * @author Sam Harwell\r\n */\r\nexport class ProxyParserErrorListener extends ProxyErrorListener\r\n\timplements ParserErrorListener {\r\n\r\n\tconstructor(delegates: ParserErrorListener[]) {\r\n\t\tsuper(delegates);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAmbiguity(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\tconfigs: ATNConfigSet): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportAmbiguity) {\r\n\t\t\t\t\tlistener.reportAmbiguity(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\texact,\r\n\t\t\t\t\t\tambigAlts,\r\n\t\t\t\t\t\tconfigs);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAttemptingFullContext(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\tconflictState: SimulatorState): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportAttemptingFullContext) {\r\n\t\t\t\t\tlistener.reportAttemptingFullContext(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\tconflictingAlts,\r\n\t\t\t\t\t\tconflictState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportContextSensitivity(\r\n\t\trecognizer: Parser,\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\tacceptState: SimulatorState): void {\r\n\t\tthis.getDelegates()\r\n\t\t\t.forEach((listener) => {\r\n\t\t\t\tif (listener.reportContextSensitivity) {\r\n\t\t\t\t\tlistener.reportContextSensitivity(\r\n\t\t\t\t\t\trecognizer,\r\n\t\t\t\t\t\tdfa,\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tstopIndex,\r\n\t\t\t\t\t\tprediction,\r\n\t\t\t\t\t\tacceptState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport function isHighSurrogate(ch: number): boolean {\r\n\treturn ch >= 0xD800 && ch <= 0xDBFF;\r\n}\r\n\r\nexport function isLowSurrogate(ch: number): boolean {\r\n\treturn ch >= 0xDC00 && ch <= 0xDFFF;\r\n}\r\n\r\nexport function isSupplementaryCodePoint(ch: number): boolean {\r\n\treturn ch >= 0x10000;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Character from \"./misc/Character\";\r\n\r\n/**\r\n * Wrapper for `Uint8Array` / `Uint16Array` / `Int32Array`.\r\n */\r\nexport class CodePointBuffer {\r\n\tprivate readonly buffer: Uint8Array | Uint16Array | Int32Array;\r\n\tprivate _position: number;\r\n\tprivate _size: number;\r\n\r\n\tconstructor(buffer: Uint8Array | Uint16Array | Int32Array, size: number) {\r\n\t\tthis.buffer = buffer;\r\n\t\tthis._position = 0;\r\n\t\tthis._size = size;\r\n\t}\r\n\r\n\tpublic static withArray(buffer: Uint8Array | Uint16Array | Int32Array): CodePointBuffer {\r\n\t\treturn new CodePointBuffer(buffer, buffer.length);\r\n\t}\r\n\r\n\tpublic get position(): number {\r\n\t\treturn this._position;\r\n\t}\r\n\r\n\tpublic set position(newPosition: number) {\r\n\t\tif (newPosition < 0 || newPosition > this._size) {\r\n\t\t\tthrow new RangeError();\r\n\t\t}\r\n\r\n\t\tthis._position = newPosition;\r\n\t}\r\n\r\n\tpublic get remaining(): number {\r\n\t\treturn this._size - this.position;\r\n\t}\r\n\r\n\tpublic get(offset: number): number {\r\n\t\treturn this.buffer[offset];\r\n\t}\r\n\r\n\tpublic array(): Uint8Array | Uint16Array | Int32Array {\r\n\t\treturn this.buffer.slice(0, this._size);\r\n\t}\r\n\r\n\tpublic static builder(initialBufferSize: number): CodePointBuffer.Builder {\r\n\t\treturn new CodePointBuffer.Builder(initialBufferSize);\r\n\t}\r\n}\r\n\r\nexport namespace CodePointBuffer {\r\n\tconst enum Type {\r\n\t\tBYTE,\r\n\t\tCHAR,\r\n\t\tINT,\r\n\t}\r\n\r\n\texport class Builder {\r\n\t\tprivate type: Type;\r\n\t\tprivate buffer: Uint8Array | Uint16Array | Int32Array;\r\n\t\tprivate prevHighSurrogate: number;\r\n\t\tprivate position: number;\r\n\r\n\t\tconstructor(initialBufferSize: number) {\r\n\t\t\tthis.type = Type.BYTE;\r\n\t\t\tthis.buffer = new Uint8Array(initialBufferSize);\r\n\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\tthis.position = 0;\r\n\t\t}\r\n\r\n\t\tpublic build(): CodePointBuffer {\r\n\t\t\treturn new CodePointBuffer(this.buffer, this.position);\r\n\t\t}\r\n\r\n\t\tprivate static roundUpToNextPowerOfTwo(i: number): number {\r\n\t\t\tlet nextPowerOfTwo: number = 32 - Math.clz32(i - 1);\r\n\t\t\treturn Math.pow(2, nextPowerOfTwo);\r\n\t\t}\r\n\r\n\t\tpublic ensureRemaining(remainingNeeded: number): void {\r\n\t\t\tswitch (this.type) {\r\n\t\t\t\tcase Type.BYTE:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Uint8Array = new Uint8Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.CHAR:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Uint16Array = new Uint16Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.INT:\r\n\t\t\t\t\tif (this.buffer.length - this.position < remainingNeeded) {\r\n\t\t\t\t\t\tlet newCapacity: number = Builder.roundUpToNextPowerOfTwo(this.buffer.length + remainingNeeded);\r\n\t\t\t\t\t\tlet newBuffer: Int32Array = new Int32Array(newCapacity);\r\n\t\t\t\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\t\t\t\t\t\tthis.buffer = newBuffer;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic append(utf16In: Uint16Array): void {\r\n\t\t\tthis.ensureRemaining(utf16In.length);\r\n\t\t\tthis.appendArray(utf16In);\r\n\t\t}\r\n\r\n\t\tprivate appendArray(utf16In: Uint16Array): void {\r\n\t\t\tswitch (this.type) {\r\n\t\t\t\tcase Type.BYTE:\r\n\t\t\t\t\tthis.appendArrayByte(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.CHAR:\r\n\t\t\t\t\tthis.appendArrayChar(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Type.INT:\r\n\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate appendArrayByte(utf16In: Uint16Array): void {\r\n\t\t\tassert(this.prevHighSurrogate === -1);\r\n\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outByte = this.buffer;\r\n\t\t\tlet outOffset: number = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tif (c <= 0xFF) {\r\n\t\t\t\t\toutByte[outOffset] = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutf16In = utf16In.subarray(inOffset, inLimit);\r\n\t\t\t\t\tthis.position = outOffset;\r\n\t\t\t\t\tif (!Character.isHighSurrogate(c)) {\r\n\t\t\t\t\t\tthis.byteToCharBuffer(utf16In.length);\r\n\t\t\t\t\t\tthis.appendArrayChar(utf16In);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.byteToIntBuffer(utf16In.length);\r\n\t\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinOffset++;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate appendArrayChar(utf16In: Uint16Array): void {\r\n\t\t\tassert(this.prevHighSurrogate === -1);\r\n\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outChar = this.buffer;\r\n\t\t\tlet outOffset: number = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tif (!Character.isHighSurrogate(c)) {\r\n\t\t\t\t\toutChar[outOffset] = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tutf16In = utf16In.subarray(inOffset, inLimit);\r\n\t\t\t\t\tthis.position = outOffset;\r\n\t\t\t\t\tthis.charToIntBuffer(utf16In.length);\r\n\t\t\t\t\tthis.appendArrayInt(utf16In);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinOffset++;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate appendArrayInt(utf16In: Uint16Array): void {\r\n\t\t\tlet input: Uint16Array = utf16In;\r\n\t\t\tlet inOffset: number = 0;\r\n\t\t\tlet inLimit: number = utf16In.length;\r\n\r\n\t\t\tlet outInt = this.buffer;\r\n\t\t\tlet outOffset = this.position;\r\n\r\n\t\t\twhile (inOffset < inLimit) {\r\n\t\t\t\tlet c: number = input[inOffset];\r\n\t\t\t\tinOffset++;\r\n\t\t\t\tif (this.prevHighSurrogate !== -1) {\r\n\t\t\t\t\tif (Character.isLowSurrogate(c)) {\r\n\t\t\t\t\t\toutInt[outOffset] = String.fromCharCode(this.prevHighSurrogate, c).codePointAt(0)!;\r\n\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Dangling high surrogate\r\n\t\t\t\t\t\toutInt[outOffset] = this.prevHighSurrogate;\r\n\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\tif (Character.isHighSurrogate(c)) {\r\n\t\t\t\t\t\t\tthis.prevHighSurrogate = c;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toutInt[outOffset] = c;\r\n\t\t\t\t\t\t\toutOffset++;\r\n\t\t\t\t\t\t\tthis.prevHighSurrogate = -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (Character.isHighSurrogate(c)) {\r\n\t\t\t\t\tthis.prevHighSurrogate = c;\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutInt[outOffset] = c;\r\n\t\t\t\t\toutOffset++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.prevHighSurrogate !== -1) {\r\n\t\t\t\t// Dangling high surrogate\r\n\t\t\t\toutInt[outOffset] = this.prevHighSurrogate;\r\n\t\t\t\toutOffset++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.position = outOffset;\r\n\t\t}\r\n\r\n\t\tprivate byteToCharBuffer(toAppend: number): void {\r\n\t\t\t// CharBuffers hold twice as much per unit as ByteBuffers, so start with half the capacity.\r\n\t\t\tlet newBuffer: Uint16Array = new Uint16Array(Math.max(this.position + toAppend, this.buffer.length >> 1));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.CHAR;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\r\n\t\tprivate byteToIntBuffer(toAppend: number): void {\r\n\t\t\t// IntBuffers hold four times as much per unit as ByteBuffers, so start with one quarter the capacity.\r\n\t\t\tlet newBuffer: Int32Array = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 2));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.INT;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\r\n\t\tprivate charToIntBuffer(toAppend: number): void {\r\n\t\t\t// IntBuffers hold two times as much per unit as ByteBuffers, so start with one half the capacity.\r\n\t\t\tlet newBuffer: Int32Array = new Int32Array(Math.max(this.position + toAppend, this.buffer.length >> 1));\r\n\t\t\tnewBuffer.set(this.buffer.subarray(0, this.position), 0);\r\n\r\n\t\t\tthis.type = Type.INT;\r\n\t\t\tthis.buffer = newBuffer;\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport * as assert from \"assert\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CodePointBuffer } from \"./CodePointBuffer\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\n\r\n/**\r\n * Alternative to {@link ANTLRInputStream} which treats the input\r\n * as a series of Unicode code points, instead of a series of UTF-16\r\n * code units.\r\n *\r\n * Use this if you need to parse input which potentially contains\r\n * Unicode values > U+FFFF.\r\n */\r\nexport class CodePointCharStream implements CharStream {\r\n\tprivate readonly _array: Uint8Array | Uint16Array | Int32Array;\r\n\tprivate readonly _size: number;\r\n\tprivate readonly _name: string;\r\n\r\n\tprivate _position: number;\r\n\r\n\t// Use the factory method {@link #fromBuffer(CodePointBuffer)} to\r\n\t// construct instances of this type.\r\n\tprotected constructor(array: Uint8Array | Uint16Array | Int32Array, position: number, remaining: number, name: string) {\r\n\t\t// TODO\r\n\t\tassert(position === 0);\r\n\t\tthis._array = array;\r\n\t\tthis._size = remaining;\r\n\t\tthis._name = name;\r\n\t\tthis._position = 0;\r\n\t}\r\n\r\n\tpublic get internalStorage(): Uint8Array | Uint16Array | Int32Array {\r\n\t\treturn this._array;\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a {@link CodePointCharStream} which provides access\r\n\t * to the Unicode code points stored in {@code codePointBuffer}.\r\n\t */\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer): CodePointCharStream;\r\n\r\n\t/**\r\n\t * Constructs a named {@link CodePointCharStream} which provides access\r\n\t * to the Unicode code points stored in {@code codePointBuffer}.\r\n\t */\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer, name: string): CodePointCharStream;\r\n\tpublic static fromBuffer(codePointBuffer: CodePointBuffer, name?: string): CodePointCharStream {\r\n\t\tif (name === undefined || name.length === 0) {\r\n\t\t\tname = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\r\n\t\t// Java lacks generics on primitive types.\r\n\t\t//\r\n\t\t// To avoid lots of calls to virtual methods in the\r\n\t\t// very hot codepath of LA() below, we construct one\r\n\t\t// of three concrete subclasses.\r\n\t\t//\r\n\t\t// The concrete subclasses directly access the code\r\n\t\t// points stored in the underlying array (byte[],\r\n\t\t// char[], or int[]), so we can avoid lots of virtual\r\n\t\t// method calls to ByteBuffer.get(offset).\r\n\t\treturn new CodePointCharStream(\r\n\t\t\tcodePointBuffer.array(),\r\n\t\t\tcodePointBuffer.position,\r\n\t\t\tcodePointBuffer.remaining,\r\n\t\t\tname);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tif (this._size - this._position === 0) {\r\n\t\t\tassert(this.LA(1) === IntStream.EOF);\r\n\t\t\tthrow new RangeError(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\tthis._position++;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get index(): number {\r\n\t\treturn this._position;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get size(): number {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\t/** mark/release do nothing; we have entire buffer */\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// No default implementation since this stream buffers the entire input\r\n\t}\r\n\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tthis._position = index;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get sourceName(): string {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this.getText(Interval.of(0, this.size - 1));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tlet offset: number;\r\n\t\tswitch (Math.sign(i)) {\r\n\t\t\tcase -1:\r\n\t\t\t\toffset = this.index + i;\r\n\t\t\t\tif (offset < 0) {\r\n\t\t\t\t\treturn IntStream.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this._array[offset];\r\n\r\n\t\t\tcase 0:\r\n\t\t\t\t// Undefined\r\n\t\t\t\treturn 0;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\toffset = this.index + i - 1;\r\n\t\t\t\tif (offset >= this.size) {\r\n\t\t\t\t\treturn IntStream.EOF;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this._array[offset];\r\n\t\t}\r\n\r\n\t\tthrow new RangeError(\"Not reached\");\r\n\t}\r\n\r\n\t/** Return the UTF-16 encoded string for the given interval */\r\n\t@Override\r\n\tpublic getText(interval: Interval): string {\r\n\t\tconst startIdx: number = Math.min(interval.a, this.size);\r\n\t\tconst len: number = Math.min(interval.b - interval.a + 1, this.size - startIdx);\r\n\r\n\t\tif (this._array instanceof Int32Array) {\r\n\t\t\treturn String.fromCodePoint(...Array.from(this._array.subarray(startIdx, startIdx + len)));\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(...Array.from(this._array.subarray(startIdx, startIdx + len)));\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nimport { CodePointBuffer } from \"./CodePointBuffer\";\r\nimport { CodePointCharStream } from \"./CodePointCharStream\";\r\nimport { IntStream } from \"./IntStream\";\r\n\r\n// const DEFAULT_BUFFER_SIZE: number = 4096;\r\n\r\n/** This class represents the primary interface for creating {@link CharStream}s\r\n * from a variety of sources as of 4.7. The motivation was to support\r\n * Unicode code points > U+FFFF. {@link ANTLRInputStream} and\r\n * {@link ANTLRFileStream} are now deprecated in favor of the streams created\r\n * by this interface.\r\n *\r\n * DEPRECATED: {@code new ANTLRFileStream(\"myinputfile\")}\r\n * NEW: {@code CharStreams.fromFileName(\"myinputfile\")}\r\n *\r\n * WARNING: If you use both the deprecated and the new streams, you will see\r\n * a nontrivial performance degradation. This speed hit is because the\r\n * {@link Lexer}'s internal code goes from a monomorphic to megamorphic\r\n * dynamic dispatch to get characters from the input stream. Java's\r\n * on-the-fly compiler (JIT) is unable to perform the same optimizations\r\n * so stick with either the old or the new streams, if performance is\r\n * a primary concern. See the extreme debugging and spelunking\r\n * needed to identify this issue in our timing rig:\r\n *\r\n * https://github.com/antlr/antlr4/pull/1781\r\n *\r\n * The ANTLR character streams still buffer all the input when you create\r\n * the stream, as they have done for ~20 years. If you need unbuffered\r\n * access, please note that it becomes challenging to create\r\n * parse trees. The parse tree has to point to tokens which will either\r\n * point into a stale location in an unbuffered stream or you have to copy\r\n * the characters out of the buffer into the token. That defeats the purpose\r\n * of unbuffered input. Per the ANTLR book, unbuffered streams are primarily\r\n * useful for processing infinite streams *during the parse.*\r\n *\r\n * The new streams also use 8-bit buffers when possible so this new\r\n * interface supports character streams that use half as much memory\r\n * as the old {@link ANTLRFileStream}, which assumed 16-bit characters.\r\n *\r\n * A big shout out to Ben Hamilton (github bhamiltoncx) for his superhuman\r\n * efforts across all targets to get true Unicode 3.1 support for U+10FFFF.\r\n *\r\n * @since 4.7\r\n */\r\nexport namespace CharStreams {\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a path to a UTF-8\r\n\t// * encoded file on disk.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFile(file: File): CharStream;\r\n\t// export function fromFile(file: File, charset: Charset): CharStream;\r\n\t// export function fromFile(file: File, charset?: Charset): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tlet size: number = file.length();\r\n\t// \treturn fromStream(new FileInputStream(file), charset, file.toString(), size);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a string containing a\r\n\t// * path to a UTF-8 file on disk.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFileName(fileName: string): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a string containing a\r\n\t// * path to a file on disk and the charset of the bytes\r\n\t// * contained in the file.\r\n\t// *\r\n\t// * Reads the entire contents of the file into the result before returning.\r\n\t// */\r\n\t// export function fromFileName(fileName: string, charset: Charset): CharStream;\r\n\t// export function fromFileName(fileName: string, charset?: Charset): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \treturn fromFile(new File(fileName), charset);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link InputStream}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code InputStream} into\r\n\t// * the result before returning, then closes the {@code InputStream}.\r\n\t// */\r\n\t// export function fromStream(is: InputStream): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link InputStream} and the\r\n\t// * charset of the bytes contained in the stream.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code InputStream} into\r\n\t// * the result before returning, then closes the {@code InputStream}.\r\n\t// */\r\n\t// export function fromStream(is: InputStream, charset: Charset): CharStream;\r\n\r\n\t// export function fromStream(is: InputStream, charset: Charset, sourceName: string, inputSize: number): CharStream;\r\n\t// export function fromStream(is: InputStream, charset?: Charset, sourceName?: string, inputSize?: number): CharStream {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tif (sourceName === undefined) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \tif (inputSize === undefined) {\r\n\t// \t\tinputSize = -1;\r\n\t// \t}\r\n\r\n\t// \treturn fromChannel(\r\n\t// \t\tChannels.newChannel(is),\r\n\t// \t\tcharset,\r\n\t// \t\tDEFAULT_BUFFER_SIZE,\r\n\t// \t\tCodingErrorAction.REPLACE,\r\n\t// \t\tsourceName,\r\n\t// \t\tinputSize);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(channel: ReadableByteChannel): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel} and the\r\n\t// * charset of the bytes contained in the channel.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(channel: ReadableByteChannel, charset: Charset): CharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given an opened {@link ReadableByteChannel}\r\n\t// * containing UTF-8 bytes.\r\n\t// *\r\n\t// * Reads the entire contents of the {@code channel} into\r\n\t// * the result before returning, then closes the {@code channel}.\r\n\t// */\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tsourceName: string): CodePointCharStream;\r\n\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tsourceName: string,\r\n\t// \tinputSize: number): CodePointCharStream;\r\n\t// export function fromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset?: Charset,\r\n\t// \tbufferSize?: number,\r\n\t// \tdecodingErrorAction?: CodingErrorAction,\r\n\t// \tsourceName?: string,\r\n\t// \tinputSize?: number): CodePointCharStream\r\n\t// {\r\n\t// \tif (charset === undefined) {\r\n\t// \t\tcharset = Charset.forName(\"UTF-8\");\r\n\t// \t}\r\n\r\n\t// \tif (bufferSize === undefined) {\r\n\t// \t\tbufferSize = DEFAULT_BUFFER_SIZE;\r\n\t// \t}\r\n\r\n\t// \tif (decodingErrorAction === undefined) {\r\n\t// \t\tdecodingErrorAction = CodingErrorAction.REPLACE;\r\n\t// \t}\r\n\r\n\t// \tif (sourceName === undefined || sourceName.length === 0) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \tif (inputSize === undefined) {\r\n\t// \t\tinputSize = -1;\r\n\t// \t}\r\n\r\n\t// \tlet codePointBuffer: CodePointBuffer = bufferFromChannel(channel, charset, bufferSize, decodingErrorAction, inputSize);\r\n\t// \treturn CodePointCharStream.fromBuffer(codePointBuffer, sourceName);\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a {@link Reader}. Closes\r\n\t// * the reader before returning.\r\n\t// */\r\n\t// export function fromReader(r: Reader): CodePointCharStream;\r\n\r\n\t// /**\r\n\t// * Creates a {@link CharStream} given a {@link Reader} and its\r\n\t// * source name. Closes the reader before returning.\r\n\t// */\r\n\t// export function fromReader(r: Reader, sourceName: string): CodePointCharStream;\r\n\t// export function fromReader(r: Reader, sourceName?: string): CodePointCharStream {\r\n\t// \tif (sourceName === undefined) {\r\n\t// \t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t// \t}\r\n\r\n\t// \ttry {\r\n\t// \t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(DEFAULT_BUFFER_SIZE);\r\n\t// \t\tlet charBuffer: CharBuffer = CharBuffer.allocate(DEFAULT_BUFFER_SIZE);\r\n\t// \t\twhile ((r.read(charBuffer)) !== -1) {\r\n\t// \t\t\tcharBuffer.flip();\r\n\t// \t\t\tcodePointBufferBuilder.append(charBuffer);\r\n\t// \t\t\tcharBuffer.compact();\r\n\t// \t\t}\r\n\r\n\t// \t\treturn CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName);\r\n\t// \t} finally {\r\n\t// \t\tr.close();\r\n\t// \t}\r\n\t// }\r\n\r\n\t/**\r\n\t * Creates a {@link CharStream} given a {@link String}.\r\n\t */\r\n\texport function fromString(s: string): CodePointCharStream;\r\n\r\n\t/**\r\n\t * Creates a {@link CharStream} given a {@link String} and the {@code sourceName}\r\n\t * from which it came.\r\n\t */\r\n\texport function fromString(s: string, sourceName: string): CodePointCharStream;\r\n\texport function fromString(s: string, sourceName?: string): CodePointCharStream {\r\n\t\tif (sourceName === undefined || sourceName.length === 0) {\r\n\t\t\tsourceName = IntStream.UNKNOWN_SOURCE_NAME;\r\n\t\t}\r\n\r\n\t\t// Initial guess assumes no code points > U+FFFF: one code\r\n\t\t// point for each code unit in the string\r\n\t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(s.length);\r\n\r\n\t\t// TODO: CharBuffer.wrap(String) rightfully returns a read-only buffer\r\n\t\t// which doesn't expose its array, so we make a copy.\r\n\t\tlet cb: Uint16Array = new Uint16Array(s.length);\r\n\t\tfor (let i = 0; i < s.length; i++) {\r\n\t\t\tcb[i] = s.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\tcodePointBufferBuilder.append(cb);\r\n\t\treturn CodePointCharStream.fromBuffer(codePointBufferBuilder.build(), sourceName);\r\n\t}\r\n\r\n\t// export function bufferFromChannel(\r\n\t// \tchannel: ReadableByteChannel,\r\n\t// \tcharset: Charset,\r\n\t// \tbufferSize: number,\r\n\t// \tdecodingErrorAction: CodingErrorAction,\r\n\t// \tinputSize: number): CodePointBuffer {\r\n\t// \ttry {\r\n\t// \t\tlet utf8BytesIn: Uint8Array = new Uint8Array(bufferSize);\r\n\t// \t\tlet utf16CodeUnitsOut: Uint16Array = new Uint16Array(bufferSize);\r\n\t// \t\tif (inputSize === -1) {\r\n\t// \t\t\tinputSize = bufferSize;\r\n\t// \t\t} else if (inputSize > Integer.MAX_VALUE) {\r\n\t// \t\t\t// ByteBuffer et al don't support long sizes\r\n\t// \t\t\tthrow new RangeError(`inputSize ${inputSize} larger than max ${Integer.MAX_VALUE}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tlet codePointBufferBuilder: CodePointBuffer.Builder = CodePointBuffer.builder(inputSize);\r\n\t// \t\tlet decoder: CharsetDecoder = charset\r\n\t// \t\t\t\t.newDecoder()\r\n\t// \t\t\t\t.onMalformedInput(decodingErrorAction)\r\n\t// \t\t\t\t.onUnmappableCharacter(decodingErrorAction);\r\n\r\n\t// \t\tlet endOfInput: boolean = false;\r\n\t// \t\twhile (!endOfInput) {\r\n\t// \t\t\tlet bytesRead: number = channel.read(utf8BytesIn);\r\n\t// \t\t\tendOfInput = (bytesRead === -1);\r\n\t// \t\t\tutf8BytesIn.flip();\r\n\t// \t\t\tlet result: CoderResult = decoder.decode(\r\n\t// \t\t\t\tutf8BytesIn,\r\n\t// \t\t\t\tutf16CodeUnitsOut,\r\n\t// \t\t\t\tendOfInput);\r\n\t// \t\t\tif (result.isError() && decodingErrorAction === CodingErrorAction.REPORT) {\r\n\t// \t\t\t\tresult.throwException();\r\n\t// \t\t\t}\r\n\r\n\t// \t\t\tutf16CodeUnitsOut.flip();\r\n\t// \t\t\tcodePointBufferBuilder.append(utf16CodeUnitsOut);\r\n\t// \t\t\tutf8BytesIn.compact();\r\n\t// \t\t\tutf16CodeUnitsOut.compact();\r\n\t// \t\t}\r\n\t// \t\t// Handle any bytes at the end of the file which need to\r\n\t// \t\t// be represented as errors or substitution characters.\r\n\t// \t\tlet flushResult: CoderResult = decoder.flush(utf16CodeUnitsOut);\r\n\t// \t\tif (flushResult.isError() && decodingErrorAction === CodingErrorAction.REPORT) {\r\n\t// \t\t\tflushResult.throwException();\r\n\t// \t\t}\r\n\r\n\t// \t\tutf16CodeUnitsOut.flip();\r\n\t// \t\tcodePointBufferBuilder.append(utf16CodeUnitsOut);\r\n\r\n\t// \t\treturn codePointBufferBuilder.build();\r\n\t// \t}\r\n\t// \tfinally {\r\n\t// \t\tchannel.close();\r\n\t// \t}\r\n\t// }\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.6074365-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport { CommonToken } from \"./CommonToken\";\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { WritableToken } from \"./WritableToken\";\r\n\r\n/**\r\n * This implementation of {@link TokenStream} loads tokens from a\r\n * {@link TokenSource} on-demand, and places the tokens in a buffer to provide\r\n * access to any previous token by index.\r\n *\r\n * This token stream ignores the value of {@link Token#getChannel}. If your\r\n * parser requires the token stream filter tokens to only those on a particular\r\n * channel, such as {@link Token#DEFAULT_CHANNEL} or\r\n * {@link Token#HIDDEN_CHANNEL}, use a filtering token stream such a\r\n * {@link CommonTokenStream}.\r\n */\r\nexport class BufferedTokenStream implements TokenStream {\r\n\t/**\r\n\t * The {@link TokenSource} from which tokens for this stream are fetched.\r\n\t */\r\n\t@NotNull\r\n\tprivate _tokenSource: TokenSource;\r\n\r\n\t/**\r\n\t * A collection of all tokens fetched from the token source. The list is\r\n\t * considered a complete view of the input once {@link #fetchedEOF} is set\r\n\t * to `true`.\r\n\t */\r\n\tprotected tokens: Token[] = [];\r\n\r\n\t/**\r\n\t * The index into {@link #tokens} of the current token (next token to\r\n\t * {@link #consume}). {@link #tokens}`[`{@link #p}`]` should be\r\n\t * {@link #LT LT(1)}.\r\n\t *\r\n\t * This field is set to -1 when the stream is first constructed or when\r\n\t * {@link #setTokenSource} is called, indicating that the first token has\r\n\t * not yet been fetched from the token source. For additional information,\r\n\t * see the documentation of {@link IntStream} for a description of\r\n\t * Initializing Methods.\r\n\t */\r\n\tprotected p: number = -1;\r\n\r\n\t/**\r\n\t * Indicates whether the {@link Token#EOF} token has been fetched from\r\n\t * {@link #tokenSource} and added to {@link #tokens}. This field improves\r\n\t * performance for the following cases:\r\n\t *\r\n\t * * {@link #consume}: The lookahead check in {@link #consume} to prevent\r\n\t * consuming the EOF symbol is optimized by checking the values of\r\n\t * {@link #fetchedEOF} and {@link #p} instead of calling {@link #LA}.\r\n\t * * {@link #fetch}: The check to prevent adding multiple EOF symbols into\r\n\t * {@link #tokens} is trivial with this field.\r\n\t */\r\n\tprotected fetchedEOF: boolean = false;\r\n\r\n\tconstructor(@NotNull tokenSource: TokenSource) {\r\n\t\tif (tokenSource == null) {\r\n\t\t\tthrow new Error(\"tokenSource cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._tokenSource = tokenSource;\r\n\t}\r\n\r\n\t@Override\r\n\tget tokenSource(): TokenSource {\r\n\t\treturn this._tokenSource;\r\n\t}\r\n\r\n\t/** Reset this token stream by setting its token source. */\r\n\tset tokenSource(tokenSource: TokenSource) {\r\n\t\tthis._tokenSource = tokenSource;\r\n\t\tthis.tokens.length = 0;\r\n\t\tthis.p = -1;\r\n\t\tthis.fetchedEOF = false;\r\n\t}\r\n\r\n\t@Override\r\n\tget index(): number {\r\n\t\treturn this.p;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic mark(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic release(marker: number): void {\r\n\t\t// no resources to release\r\n\t}\r\n\r\n\t@Override\r\n\tpublic seek(index: number): void {\r\n\t\tthis.lazyInit();\r\n\t\tthis.p = this.adjustSeekIndex(index);\r\n\t}\r\n\r\n\t@Override\r\n\tget size(): number {\r\n\t\treturn this.tokens.length;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic consume(): void {\r\n\t\tlet skipEofCheck: boolean;\r\n\t\tif (this.p >= 0) {\r\n\t\t\tif (this.fetchedEOF) {\r\n\t\t\t\t// the last token in tokens is EOF. skip check if p indexes any\r\n\t\t\t\t// fetched token except the last.\r\n\t\t\t\tskipEofCheck = this.p < this.tokens.length - 1;\r\n\t\t\t} else {\r\n\t\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\r\n\t\t\t\tskipEofCheck = this.p < this.tokens.length;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// not yet initialized\r\n\t\t\tskipEofCheck = false;\r\n\t\t}\r\n\r\n\t\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\r\n\t\t\tthrow new Error(\"cannot consume EOF\");\r\n\t\t}\r\n\r\n\t\tif (this.sync(this.p + 1)) {\r\n\t\t\tthis.p = this.adjustSeekIndex(this.p + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Make sure index `i` in tokens has a token.\r\n\t *\r\n\t * @returns `true` if a token is located at index `i`, otherwise\r\n\t * `false`.\r\n\t * @see #get(int i)\r\n\t */\r\n\tprotected sync(i: number): boolean {\r\n\t\tassert(i >= 0);\r\n\t\tlet n: number = i - this.tokens.length + 1; // how many more elements we need?\r\n\t\t//System.out.println(\"sync(\"+i+\") needs \"+n);\r\n\t\tif (n > 0) {\r\n\t\t\tlet fetched: number = this.fetch(n);\r\n\t\t\treturn fetched >= n;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** Add `n` elements to buffer.\r\n\t *\r\n\t * @returns The actual number of elements added to the buffer.\r\n\t */\r\n\tprotected fetch(n: number): number {\r\n\t\tif (this.fetchedEOF) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tlet t: Token = this.tokenSource.nextToken();\r\n\t\t\tif (this.isWritableToken(t)) {\r\n\t\t\t\tt.tokenIndex = this.tokens.length;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tokens.push(t);\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tthis.fetchedEOF = true;\r\n\t\t\t\treturn i + 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic get(i: number): Token {\r\n\t\tif (i < 0 || i >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(\"token index \" + i + \" out of range 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/** Get all tokens from start..stop inclusively. */\r\n\tpublic getRange(start: number, stop: number): Token[] {\r\n\t\tif (start < 0 || stop < 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tthis.lazyInit();\r\n\t\tlet subset: Token[] = new Array();\r\n\t\tif (stop >= this.tokens.length) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tfor (let i = start; i <= stop; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tsubset.push(t);\r\n\t\t}\r\n\r\n\t\treturn subset;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic LA(i: number): number {\r\n\t\tlet token = this.LT(i);\r\n\t\tif (!token) {\r\n\t\t\treturn Token.INVALID_TYPE;\r\n\t\t}\r\n\r\n\t\treturn token.type;\r\n\t}\r\n\r\n\tprotected tryLB(k: number): Token | undefined {\r\n\t\tif ((this.p - k) < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this.tokens[this.p - k];\r\n\t}\r\n\r\n\t@NotNull\r\n\t@Override\r\n\tpublic LT(k: number): Token {\r\n\t\tlet result = this.tryLT(k);\r\n\t\tif (result === undefined) {\r\n\t\t\tthrow new RangeError(\"requested lookback index out of range\");\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic tryLT(k: number): Token | undefined {\r\n\t\tthis.lazyInit();\r\n\t\tif (k === 0) {\r\n\t\t\tthrow new RangeError(\"0 is not a valid lookahead index\");\r\n\t\t}\r\n\r\n\t\tif (k < 0) {\r\n\t\t\treturn this.tryLB(-k);\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p + k - 1;\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.tokens.length) {\r\n\t\t\t// return EOF token\r\n\t\t\t// EOF must be last token\r\n\t\t\treturn this.tokens[this.tokens.length - 1];\r\n\t\t}\r\n\r\n\t\t//\t\tif ( i>range ) range = i;\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/**\r\n\t * Allowed derived classes to modify the behavior of operations which change\r\n\t * the current stream position by adjusting the target token index of a seek\r\n\t * operation. The default implementation simply returns `i`. If an\r\n\t * exception is thrown in this method, the current stream index should not be\r\n\t * changed.\r\n\t *\r\n\t * For example, {@link CommonTokenStream} overrides this method to ensure that\r\n\t * the seek target is always an on-channel token.\r\n\t *\r\n\t * @param i The target token index.\r\n\t * @returns The adjusted target token index.\r\n\t */\r\n\tprotected adjustSeekIndex(i: number): number {\r\n\t\treturn i;\r\n\t}\r\n\r\n\tprotected lazyInit(): void {\r\n\t\tif (this.p === -1) {\r\n\t\t\tthis.setup();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected setup(): void {\r\n\t\tthis.sync(0);\r\n\t\tthis.p = this.adjustSeekIndex(0);\r\n\t}\r\n\r\n\tpublic getTokens(): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number, types: Set): Token[];\r\n\r\n\tpublic getTokens(start: number, stop: number, ttype: number): Token[];\r\n\r\n\t/** Given a start and stop index, return a `List` of all tokens in\r\n\t * the token type `BitSet`. Return an empty array if no tokens were found. This\r\n\t * method looks at both on and off channel tokens.\r\n\t */\r\n\tpublic getTokens(start?: number, stop?: number, types?: Set | number): Token[] {\r\n\t\tthis.lazyInit();\r\n\r\n\t\tif (start === undefined) {\r\n\t\t\tassert(stop === undefined && types === undefined);\r\n\t\t\treturn this.tokens;\r\n\t\t} else if (stop === undefined) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tif (start < 0 || stop >= this.tokens.length || stop < 0 || start >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(\"start \" + start + \" or stop \" + stop + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tif (start > stop) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tif (types === undefined) {\r\n\t\t\treturn this.tokens.slice(start, stop + 1);\r\n\t\t} else if (typeof types === \"number\") {\r\n\t\t\ttypes = new Set().add(types);\r\n\t\t}\r\n\r\n\t\tlet typesSet = types;\r\n\r\n\t\t// list = tokens[start:stop]:{T t, t.type in types}\r\n\t\tlet filteredTokens: Token[] = this.tokens.slice(start, stop + 1);\r\n\t\tfilteredTokens = filteredTokens.filter((value) => typesSet.has(value.type));\r\n\r\n\t\treturn filteredTokens;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a starting index, return the index of the next token on channel.\r\n\t * Return `i` if `tokens[i]` is on channel. Return the index of\r\n\t * the EOF token if there are no tokens on channel between `i` and\r\n\t * EOF.\r\n\t */\r\n\tprotected nextTokenOnChannel(i: number, channel: number): number {\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.size) {\r\n\t\t\treturn this.size - 1;\r\n\t\t}\r\n\r\n\t\tlet token: Token = this.tokens[i];\r\n\t\twhile (token.channel !== channel) {\r\n\t\t\tif (token.type === Token.EOF) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\ti++;\r\n\t\t\tthis.sync(i);\r\n\t\t\ttoken = this.tokens[i];\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a starting index, return the index of the previous token on\r\n\t * channel. Return `i` if `tokens[i]` is on channel. Return -1\r\n\t * if there are no tokens on channel between `i` and 0.\r\n\t *\r\n\t * If `i` specifies an index at or after the EOF token, the EOF token\r\n\t * index is returned. This is due to the fact that the EOF token is treated\r\n\t * as though it were on every channel.\r\n\t */\r\n\tprotected previousTokenOnChannel(i: number, channel: number): number {\r\n\t\tthis.sync(i);\r\n\t\tif (i >= this.size) {\r\n\t\t\t// the EOF token is on every channel\r\n\t\t\treturn this.size - 1;\r\n\t\t}\r\n\r\n\t\twhile (i >= 0) {\r\n\t\t\tlet token: Token = this.tokens[i];\r\n\t\t\tif (token.type === Token.EOF || token.channel === channel) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\ti--;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/** Collect all tokens on specified channel to the right of\r\n\t * the current token up until we see a token on {@link Lexer#DEFAULT_TOKEN_CHANNEL} or\r\n\t * EOF. If `channel` is `-1`, find any non default channel token.\r\n\t */\r\n\tpublic getHiddenTokensToRight(tokenIndex: number, channel: number = -1): Token[] {\r\n\t\tthis.lazyInit();\r\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(tokenIndex + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tlet nextOnChannel: number = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\r\n\t\tlet to: number;\r\n\t\tlet from: number = tokenIndex + 1;\r\n\t\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\r\n\t\tif (nextOnChannel === -1) {\r\n\t\t\tto = this.size - 1;\r\n\t\t} else {\r\n\t\t\tto = nextOnChannel;\r\n\t\t}\r\n\r\n\t\treturn this.filterForChannel(from, to, channel);\r\n\t}\r\n\r\n\t/** Collect all tokens on specified channel to the left of\r\n\t * the current token up until we see a token on {@link Lexer#DEFAULT_TOKEN_CHANNEL}.\r\n\t * If `channel` is `-1`, find any non default channel token.\r\n\t */\r\n\tpublic getHiddenTokensToLeft(tokenIndex: number, channel: number = -1): Token[] {\r\n\t\tthis.lazyInit();\r\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\r\n\t\t\tthrow new RangeError(tokenIndex + \" not in 0..\" + (this.tokens.length - 1));\r\n\t\t}\r\n\r\n\t\tif (tokenIndex === 0) {\r\n\t\t\t// obviously no tokens can appear before the first token\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet prevOnChannel: number = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\r\n\t\tif (prevOnChannel === tokenIndex - 1) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\t// if none onchannel to left, prevOnChannel=-1 then from=0\r\n\t\tlet from: number = prevOnChannel + 1;\r\n\t\tlet to: number = tokenIndex - 1;\r\n\r\n\t\treturn this.filterForChannel(from, to, channel);\r\n\t}\r\n\r\n\tprotected filterForChannel(from: number, to: number, channel: number): Token[] {\r\n\t\tlet hidden: Token[] = new Array();\r\n\t\tfor (let i = from; i <= to; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (channel === -1) {\r\n\t\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\r\n\t\t\t\t\thidden.push(t);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (t.channel === channel) {\r\n\t\t\t\t\thidden.push(t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn hidden;\r\n\t}\r\n\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\treturn this.tokenSource.sourceName;\r\n\t}\r\n\r\n\t/** Get the text of all tokens in this buffer. */\r\n\tpublic getText(): string;\r\n\tpublic getText(interval: Interval): string;\r\n\tpublic getText(context: RuleContext): string;\r\n\t@NotNull\r\n\t@Override\r\n\tpublic getText(interval?: Interval | RuleContext): string {\r\n\t\tif (interval === undefined) {\r\n\t\t\tinterval = Interval.of(0, this.size - 1);\r\n\t\t} else if (!(interval instanceof Interval)) {\r\n\t\t\t// Note: the more obvious check for 'instanceof RuleContext' results in a circular dependency problem\r\n\t\t\tinterval = interval.sourceInterval;\r\n\t\t}\r\n\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\t\tif (start < 0 || stop < 0) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tthis.fill();\r\n\t\tif (stop >= this.tokens.length) {\r\n\t\t\tstop = this.tokens.length - 1;\r\n\t\t}\r\n\r\n\t\tlet buf: string = \"\";\r\n\t\tfor (let i = start; i <= stop; i++) {\r\n\t\t\tlet t: Token = this.tokens[i];\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tbuf += t.text;\r\n\t\t}\r\n\r\n\t\treturn buf.toString();\r\n\t}\r\n\r\n\t@NotNull\r\n\t@Override\r\n\tpublic getTextFromRange(start: any, stop: any): string {\r\n\t\tif (this.isToken(start) && this.isToken(stop)) {\r\n\t\t\treturn this.getText(Interval.of(start.tokenIndex, stop.tokenIndex));\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/** Get all tokens from lexer until EOF. */\r\n\tpublic fill(): void {\r\n\t\tthis.lazyInit();\r\n\t\tconst blockSize: number = 1000;\r\n\t\twhile (true) {\r\n\t\t\tlet fetched: number = this.fetch(blockSize);\r\n\t\t\tif (fetched < blockSize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: Figure out a way to make this more flexible?\r\n\tprivate isWritableToken(t: Token): t is WritableToken {\r\n\t\treturn t instanceof CommonToken;\r\n\t}\r\n\r\n\t// TODO: Figure out a way to make this more flexible?\r\n\tprivate isToken(t: any): t is Token {\r\n\t\treturn t instanceof CommonToken;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.3953157-07:00\r\n\r\nimport { BufferedTokenStream } from \"./BufferedTokenStream\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * This class extends {@link BufferedTokenStream} with functionality to filter\r\n * token streams to tokens on a particular channel (tokens where\r\n * {@link Token#getChannel} returns a particular value).\r\n *\r\n * This token stream provides access to all tokens by index or when calling\r\n * methods like {@link #getText}. The channel filtering is only used for code\r\n * accessing tokens via the lookahead methods {@link #LA}, {@link #LT}, and\r\n * {@link #LB}.\r\n *\r\n * By default, tokens are placed on the default channel\r\n * ({@link Token#DEFAULT_CHANNEL}), but may be reassigned by using the\r\n * `->channel(HIDDEN)` lexer command, or by using an embedded action to\r\n * call {@link Lexer#setChannel}.\r\n *\r\n * Note: lexer rules which use the `->skip` lexer command or call\r\n * {@link Lexer#skip} do not produce tokens at all, so input text matched by\r\n * such a rule will not be available as part of the token stream, regardless of\r\n * channel.\r\n */\r\nexport class CommonTokenStream extends BufferedTokenStream {\r\n\t/**\r\n\t * Specifies the channel to use for filtering tokens.\r\n\t *\r\n\t * The default value is {@link Token#DEFAULT_CHANNEL}, which matches the\r\n\t * default channel assigned to tokens created by the lexer.\r\n\t */\r\n\tprotected channel: number;\r\n\r\n\t/**\r\n\t * Constructs a new {@link CommonTokenStream} using the specified token\r\n\t * source and filtering tokens to the specified channel. Only tokens whose\r\n\t * {@link Token#getChannel} matches `channel` or have the\r\n\t * `Token.type` equal to {@link Token#EOF} will be returned by the\r\n\t * token stream lookahead methods.\r\n\t *\r\n\t * @param tokenSource The token source.\r\n\t * @param channel The channel to use for filtering tokens.\r\n\t */\r\n\tconstructor(@NotNull tokenSource: TokenSource, channel: number = Token.DEFAULT_CHANNEL) {\r\n\t\tsuper(tokenSource);\r\n\t\tthis.channel = channel;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected adjustSeekIndex(i: number): number {\r\n\t\treturn this.nextTokenOnChannel(i, this.channel);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected tryLB(k: number): Token | undefined {\r\n\t\tif ((this.p - k) < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p;\r\n\t\tlet n: number = 1;\r\n\t\t// find k good tokens looking backwards\r\n\t\twhile (n <= k && i > 0) {\r\n\t\t\t// skip off-channel tokens\r\n\t\t\ti = this.previousTokenOnChannel(i - 1, this.channel);\r\n\t\t\tn++;\r\n\t\t}\r\n\r\n\t\tif (i < 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t@Override\r\n\tpublic tryLT(k: number): Token | undefined {\r\n\t\t//System.out.println(\"enter LT(\"+k+\")\");\r\n\t\tthis.lazyInit();\r\n\t\tif (k === 0) {\r\n\t\t\tthrow new RangeError(\"0 is not a valid lookahead index\");\r\n\t\t}\r\n\r\n\t\tif (k < 0) {\r\n\t\t\treturn this.tryLB(-k);\r\n\t\t}\r\n\r\n\t\tlet i: number = this.p;\r\n\t\tlet n: number = 1; // we know tokens[p] is a good one\r\n\t\t// find k good tokens\r\n\t\twhile (n < k) {\r\n\t\t\t// skip off-channel tokens, but make sure to not look past EOF\r\n\t\t\tif (this.sync(i + 1)) {\r\n\t\t\t\ti = this.nextTokenOnChannel(i + 1, this.channel);\r\n\t\t\t}\r\n\t\t\tn++;\r\n\t\t}\r\n\r\n\t\t//\t\tif ( i>range ) range = i;\r\n\t\treturn this.tokens[i];\r\n\t}\r\n\r\n\t/** Count EOF just once. */\r\n\tpublic getNumberOfOnChannelTokens(): number {\r\n\t\tlet n: number = 0;\r\n\t\tthis.fill();\r\n\t\tfor (let t of this.tokens) {\r\n\t\t\tif (t.channel === this.channel) {\r\n\t\t\t\tn++;\r\n\t\t\t}\r\n\r\n\t\t\tif (t.type === Token.EOF) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn n;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.1916955-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { CommonTokenFactory } from \"./CommonTokenFactory\";\r\nimport { NotNull, Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * Provides an implementation of {@link TokenSource} as a wrapper around a list\r\n * of {@link Token} objects.\r\n *\r\n * If the final token in the list is an {@link Token#EOF} token, it will be used\r\n * as the EOF token for every call to {@link #nextToken} after the end of the\r\n * list is reached. Otherwise, an EOF token will be created.\r\n */\r\nexport class ListTokenSource implements TokenSource {\r\n\t/**\r\n\t * The wrapped collection of {@link Token} objects to return.\r\n\t */\r\n\tprotected tokens: Token[];\r\n\r\n\t/**\r\n\t * The name of the input source. If this value is `undefined`, a call to\r\n\t * {@link #getSourceName} should return the source name used to create the\r\n\t * the next token in {@link #tokens} (or the previous token if the end of\r\n\t * the input has been reached).\r\n\t */\r\n\tprivate _sourceName?: string;\r\n\r\n\t/**\r\n\t * The index into {@link #tokens} of token to return by the next call to\r\n\t * {@link #nextToken}. The end of the input is indicated by this value\r\n\t * being greater than or equal to the number of items in {@link #tokens}.\r\n\t */\r\n\tprotected i: number = 0;\r\n\r\n\t/**\r\n\t * This field caches the EOF token for the token source.\r\n\t */\r\n\tprotected eofToken?: Token;\r\n\r\n\t/**\r\n\t * This is the backing field for {@link #getTokenFactory} and\r\n\t * {@link setTokenFactory}.\r\n\t */\r\n\tprivate _factory: TokenFactory = CommonTokenFactory.DEFAULT;\r\n\r\n\t/**\r\n\t * Constructs a new {@link ListTokenSource} instance from the specified\r\n\t * collection of {@link Token} objects and source name.\r\n\t *\r\n\t * @param tokens The collection of {@link Token} objects to provide as a\r\n\t * {@link TokenSource}.\r\n\t * @param sourceName The name of the {@link TokenSource}. If this value is\r\n\t * `undefined`, {@link #getSourceName} will attempt to infer the name from\r\n\t * the next {@link Token} (or the previous token if the end of the input has\r\n\t * been reached).\r\n\t *\r\n\t * @exception NullPointerException if `tokens` is `undefined`\r\n\t */\r\n\tconstructor(@NotNull tokens: Token[], sourceName?: string) {\r\n\t\tif (tokens == null) {\r\n\t\t\tthrow new Error(\"tokens cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis.tokens = tokens;\r\n\t\tthis._sourceName = sourceName;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].charPositionInLine;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.charPositionInLine;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\t// have to calculate the result from the line/column of the previous\r\n\t\t\t// token, along with the text of the token.\r\n\t\t\tlet lastToken: Token = this.tokens[this.tokens.length - 1];\r\n\t\t\tlet tokenText: string | undefined = lastToken.text;\r\n\t\t\tif (tokenText != null) {\r\n\t\t\t\tlet lastNewLine: number = tokenText.lastIndexOf(\"\\n\");\r\n\t\t\t\tif (lastNewLine >= 0) {\r\n\t\t\t\t\treturn tokenText.length - lastNewLine - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn lastToken.charPositionInLine + lastToken.stopIndex - lastToken.startIndex + 1;\r\n\t\t}\r\n\r\n\t\t// only reach this if tokens is empty, meaning EOF occurs at the first\r\n\t\t// position in the input\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic nextToken(): Token {\r\n\t\tif (this.i >= this.tokens.length) {\r\n\t\t\tif (this.eofToken == null) {\r\n\t\t\t\tlet start: number = -1;\r\n\t\t\t\tif (this.tokens.length > 0) {\r\n\t\t\t\t\tlet previousStop: number = this.tokens[this.tokens.length - 1].stopIndex;\r\n\t\t\t\t\tif (previousStop !== -1) {\r\n\t\t\t\t\t\tstart = previousStop + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet stop: number = Math.max(-1, start - 1);\r\n\t\t\t\tthis.eofToken = this._factory.create({ source: this, stream: this.inputStream }, Token.EOF, \"EOF\", Token.DEFAULT_CHANNEL, start, stop, this.line, this.charPositionInLine);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.eofToken;\r\n\t\t}\r\n\r\n\t\tlet t: Token = this.tokens[this.i];\r\n\t\tif (this.i === this.tokens.length - 1 && t.type === Token.EOF) {\r\n\t\t\tthis.eofToken = t;\r\n\t\t}\r\n\r\n\t\tthis.i++;\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget line(): number {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].line;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.line;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\t// have to calculate the result from the line/column of the previous\r\n\t\t\t// token, along with the text of the token.\r\n\t\t\tlet lastToken: Token = this.tokens[this.tokens.length - 1];\r\n\t\t\tlet line: number = lastToken.line;\r\n\r\n\t\t\tlet tokenText: string | undefined = lastToken.text;\r\n\t\t\tif (tokenText != null) {\r\n\t\t\t\tfor (let i = 0; i < tokenText.length; i++) {\r\n\t\t\t\t\tif (tokenText.charAt(i) === \"\\n\") {\r\n\t\t\t\t\t\tline++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if no text is available, assume the token did not contain any newline characters.\r\n\t\t\treturn line;\r\n\t\t}\r\n\r\n\t\t// only reach this if tokens is empty, meaning EOF occurs at the first\r\n\t\t// position in the input\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\tif (this.i < this.tokens.length) {\r\n\t\t\treturn this.tokens[this.i].inputStream;\r\n\t\t} else if (this.eofToken != null) {\r\n\t\t\treturn this.eofToken.inputStream;\r\n\t\t} else if (this.tokens.length > 0) {\r\n\t\t\treturn this.tokens[this.tokens.length - 1].inputStream;\r\n\t\t}\r\n\r\n\t\t// no input stream information is available\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tget sourceName(): string {\r\n\t\tif (this._sourceName) {\r\n\t\t\treturn this._sourceName;\r\n\t\t}\r\n\r\n\t\tlet inputStream: CharStream | undefined = this.inputStream;\r\n\t\tif (inputStream != null) {\r\n\t\t\treturn inputStream.sourceName;\r\n\t\t}\r\n\r\n\t\treturn \"List\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t// @Override\r\n\tset tokenFactory(@NotNull factory: TokenFactory) {\r\n\t\tthis._factory = factory;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\t@NotNull\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._factory;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:42.1346951-07:00\r\n\r\nexport class MultiMap extends Map {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic map(key: K, value: V): void {\r\n\t\tlet elementsForKey = super.get(key);\r\n\t\tif (!elementsForKey) {\r\n\t\t\telementsForKey = [] as V[];\r\n\t\t\tsuper.set(key, elementsForKey);\r\n\t\t}\r\n\t\telementsForKey.push(value);\r\n\t}\r\n\r\n\tpublic getPairs(): Array<[K, V]> {\r\n\t\tlet pairs: Array<[K, V]> = [];\r\n\t\tthis.forEach((values: V[], key: K) => {\r\n\t\t\tvalues.forEach((v) => {\r\n\t\t\t\tpairs.push([key, v]);\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn pairs;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:42.5447085-07:00\r\n\r\n/**\r\n * This exception is thrown to cancel a parsing operation. This exception does\r\n * not extend {@link RecognitionException}, allowing it to bypass the standard\r\n * error recovery mechanisms. {@link BailErrorStrategy} throws this exception in\r\n * response to a parse error.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class ParseCancellationException extends Error {\r\n\t// private static serialVersionUID: number = -3529552099366979683L;\r\n\tpublic readonly stack?: string;\r\n\r\n\tconstructor(public cause: Error) {\r\n\t\tsuper(cause.message);\r\n\t\tthis.stack = cause.stack;\r\n\t}\r\n\r\n\tpublic getCause(): Error {\r\n\t\treturn this.cause;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.5898546-07:00\r\n\r\nimport { Override } from \"./Decorators\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/**\r\n * This class extends {@link ParserRuleContext} by allowing the value of\r\n * {@link #getRuleIndex} to be explicitly set for the context.\r\n *\r\n * {@link ParserRuleContext} does not include field storage for the rule index\r\n * since the context classes created by the code generator override the\r\n * {@link #getRuleIndex} method to return the correct value for that context.\r\n * Since the parser interpreter does not use the context classes generated for a\r\n * parser, this class (with slightly more memory overhead per node) is used to\r\n * provide equivalent functionality.\r\n */\r\nexport class InterpreterRuleContext extends ParserRuleContext {\r\n\t/**\r\n\t * This is the backing field for {@link #getRuleIndex}.\r\n\t */\r\n\tprivate _ruleIndex: number;\r\n\r\n\tconstructor(ruleIndex: number);\r\n\r\n\t/**\r\n\t * Constructs a new {@link InterpreterRuleContext} with the specified\r\n\t * parent, invoking state, and rule index.\r\n\t *\r\n\t * @param ruleIndex The rule index for the current context.\r\n\t * @param parent The parent context.\r\n\t * @param invokingStateNumber The invoking state number.\r\n\t */\r\n\tconstructor(ruleIndex: number, parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\r\n\tconstructor(ruleIndex: number, parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber !== undefined) {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tthis._ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleIndex(): number {\r\n\t\treturn this._ruleIndex;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:53.1043451-07:00\r\n\r\nimport { ActionTransition } from \"./atn/ActionTransition\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { ATNStateType } from \"./atn/ATNStateType\";\r\nimport { AtomTransition } from \"./atn/AtomTransition\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DecisionState } from \"./atn/DecisionState\";\r\nimport { FailedPredicateException } from \"./FailedPredicateException\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { InterpreterRuleContext } from \"./InterpreterRuleContext\";\r\nimport { LoopEndState } from \"./atn/LoopEndState\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserATNSimulator } from \"./atn/ParserATNSimulator\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { PrecedencePredicateTransition } from \"./atn/PrecedencePredicateTransition\";\r\nimport { PredicateTransition } from \"./atn/PredicateTransition\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleStartState } from \"./atn/RuleStartState\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { StarLoopEntryState } from \"./atn/StarLoopEntryState\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { Transition } from \"./atn/Transition\";\r\nimport { TransitionType } from \"./atn/TransitionType\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\n/** A parser simulator that mimics what ANTLR's generated\r\n * parser code does. A ParserATNSimulator is used to make\r\n * predictions via adaptivePredict but this class moves a pointer through the\r\n * ATN to simulate parsing. ParserATNSimulator just\r\n * makes us efficient rather than having to backtrack, for example.\r\n *\r\n * This properly creates parse trees even for left recursive rules.\r\n *\r\n * We rely on the left recursive rule invocation and special predicate\r\n * transitions to make left recursive rules work.\r\n *\r\n * See TestParserInterpreter for examples.\r\n */\r\nexport class ParserInterpreter extends Parser {\r\n\tprotected _grammarFileName: string;\r\n\tprotected _atn: ATN;\r\n\t/** This identifies StarLoopEntryState's that begin the (...)*\r\n\t * precedence loops of left recursive rules.\r\n\t */\r\n\tprotected pushRecursionContextStates: BitSet;\r\n\r\n\tprotected _ruleNames: string[];\r\n\t@NotNull\r\n\tprivate _vocabulary: Vocabulary;\r\n\r\n\t/** This stack corresponds to the _parentctx, _parentState pair of locals\r\n\t * that would exist on call stack frames with a recursive descent parser;\r\n\t * in the generated function for a left-recursive rule you'd see:\r\n\t *\r\n\t * private EContext e(int _p) {\r\n\t * ParserRuleContext _parentctx = _ctx; // Pair.a\r\n\t * int _parentState = state; // Pair.b\r\n\t * ...\r\n\t * }\r\n\t *\r\n\t * Those values are used to create new recursive rule invocation contexts\r\n\t * associated with left operand of an alt like \"expr '*' expr\".\r\n\t */\r\n\tprotected readonly _parentContextStack: Array<[ParserRuleContext, number]> = [];\r\n\r\n\t/** We need a map from (decision,inputIndex)->forced alt for computing ambiguous\r\n\t * parse trees. For now, we allow exactly one override.\r\n\t */\r\n\tprotected overrideDecision: number = -1;\r\n\tprotected overrideDecisionInputIndex: number = -1;\r\n\tprotected overrideDecisionAlt: number = -1;\r\n\tprotected overrideDecisionReached: boolean = false; // latch and only override once; error might trigger infinite loop\r\n\r\n\t/** What is the current context when we override a decisions? This tells\r\n\t * us what the root of the parse tree is when using override\r\n\t * for an ambiguity/lookahead check.\r\n\t */\r\n\tprotected _overrideDecisionRoot?: InterpreterRuleContext = undefined;\r\n\r\n\tprotected _rootContext!: InterpreterRuleContext;\r\n\r\n\t/** A copy constructor that creates a new parser interpreter by reusing\r\n\t * the fields of a previous interpreter.\r\n\t *\r\n\t * @param old The interpreter to copy\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tconstructor(/*@NotNull*/ old: ParserInterpreter);\r\n\tconstructor(\r\n\t\tgrammarFileName: string, /*@NotNull*/ vocabulary: Vocabulary,\r\n\t\truleNames: string[], atn: ATN, input: TokenStream);\r\n\tconstructor(\r\n\t\tgrammarFileName: ParserInterpreter | string, @NotNull vocabulary?: Vocabulary,\r\n\t\truleNames?: string[], atn?: ATN, input?: TokenStream) {\r\n\t\tsuper(grammarFileName instanceof ParserInterpreter ? grammarFileName.inputStream : input!);\r\n\t\tif (grammarFileName instanceof ParserInterpreter) {\r\n\t\t\tlet old: ParserInterpreter = grammarFileName;\r\n\t\t\tthis._grammarFileName = old._grammarFileName;\r\n\t\t\tthis._atn = old._atn;\r\n\t\t\tthis.pushRecursionContextStates = old.pushRecursionContextStates;\r\n\t\t\tthis._ruleNames = old._ruleNames;\r\n\t\t\tthis._vocabulary = old._vocabulary;\r\n\t\t\tthis.interpreter = new ParserATNSimulator(this._atn, this);\r\n\t\t} else {\r\n\t\t\t// The second constructor requires non-null arguments\r\n\t\t\tvocabulary = vocabulary!;\r\n\t\t\truleNames = ruleNames!;\r\n\t\t\tatn = atn!;\r\n\r\n\t\t\tthis._grammarFileName = grammarFileName;\r\n\t\t\tthis._atn = atn;\r\n\t\t\tthis._ruleNames = ruleNames.slice(0);\r\n\t\t\tthis._vocabulary = vocabulary;\r\n\r\n\t\t\t// identify the ATN states where pushNewRecursionContext() must be called\r\n\t\t\tthis.pushRecursionContextStates = new BitSet(atn.states.length);\r\n\t\t\tfor (let state of atn.states) {\r\n\t\t\t\tif (!(state instanceof StarLoopEntryState)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (state.precedenceRuleDecision) {\r\n\t\t\t\t\tthis.pushRecursionContextStates.set(state.stateNumber);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// get atn simulator that knows how to do predictions\r\n\t\t\tthis.interpreter = new ParserATNSimulator(atn, this);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\tif (resetInput === undefined) {\r\n\t\t\tsuper.reset();\r\n\t\t} else {\r\n\t\t\tsuper.reset(resetInput);\r\n\t\t}\r\n\r\n\t\tthis.overrideDecisionReached = false;\r\n\t\tthis._overrideDecisionRoot = undefined;\r\n\t}\r\n\r\n\t@Override\r\n\tget atn(): ATN {\r\n\t\treturn this._atn;\r\n\t}\r\n\r\n\t@Override\r\n\tget vocabulary(): Vocabulary {\r\n\t\treturn this._vocabulary;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleNames(): string[] {\r\n\t\treturn this._ruleNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget grammarFileName(): string {\r\n\t\treturn this._grammarFileName;\r\n\t}\r\n\r\n\t/** Begin parsing at startRuleIndex */\r\n\tpublic parse(startRuleIndex: number): ParserRuleContext {\r\n\t\tlet startRuleStartState: RuleStartState = this._atn.ruleToStartState[startRuleIndex];\r\n\r\n\t\tthis._rootContext = this.createInterpreterRuleContext(undefined, ATNState.INVALID_STATE_NUMBER, startRuleIndex);\r\n\t\tif (startRuleStartState.isPrecedenceRule) {\r\n\t\t\tthis.enterRecursionRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex, 0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.enterRule(this._rootContext, startRuleStartState.stateNumber, startRuleIndex);\r\n\t\t}\r\n\r\n\t\twhile (true) {\r\n\t\t\tlet p: ATNState = this.atnState;\r\n\t\t\tswitch (p.stateType) {\r\n\t\t\tcase ATNStateType.RULE_STOP:\r\n\t\t\t\t// pop; return from rule\r\n\t\t\t\tif (this._ctx.isEmpty) {\r\n\t\t\t\t\tif (startRuleStartState.isPrecedenceRule) {\r\n\t\t\t\t\t\tlet result: ParserRuleContext = this._ctx;\r\n\t\t\t\t\t\tlet parentContext: [ParserRuleContext, number] = this._parentContextStack.pop() !;\r\n\t\t\t\t\t\tthis.unrollRecursionContexts(parentContext[0]);\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.exitRule();\r\n\t\t\t\t\t\treturn this._rootContext;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.visitRuleStopState(p);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.visitState(p);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tif (e instanceof RecognitionException) {\r\n\t\t\t\t\t\tthis.state = this._atn.ruleToStopState[p.ruleIndex].stateNumber;\r\n\t\t\t\t\t\tthis.context.exception = e;\r\n\t\t\t\t\t\tthis.errorHandler.reportError(this, e);\r\n\t\t\t\t\t\tthis.recover(e);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic enterRecursionRule(localctx: ParserRuleContext, state: number, ruleIndex: number, precedence: number): void {\r\n\t\tthis._parentContextStack.push([this._ctx, localctx.invokingState]);\r\n\t\tsuper.enterRecursionRule(localctx, state, ruleIndex, precedence);\r\n\t}\r\n\r\n\tprotected get atnState(): ATNState {\r\n\t\treturn this._atn.states[this.state];\r\n\t}\r\n\r\n\tprotected visitState(p: ATNState): void {\r\n\t\tlet predictedAlt: number = 1;\r\n\t\tif (p.numberOfTransitions > 1) {\r\n\t\t\tpredictedAlt = this.visitDecisionState(p as DecisionState);\r\n\t\t}\r\n\r\n\t\tlet transition: Transition = p.transition(predictedAlt - 1);\r\n\t\tswitch (transition.serializationType) {\r\n\t\tcase TransitionType.EPSILON:\r\n\t\t\tif (this.pushRecursionContextStates.get(p.stateNumber) &&\r\n\t\t\t\t!(transition.target instanceof LoopEndState)) {\r\n\t\t\t\t// We are at the start of a left recursive rule's (...)* loop\r\n\t\t\t\t// and we're not taking the exit branch of loop.\r\n\t\t\t\tlet parentContext = this._parentContextStack[this._parentContextStack.length - 1];\r\n\t\t\t\tlet localctx: InterpreterRuleContext =\r\n\t\t\t\t\tthis.createInterpreterRuleContext(parentContext[0], parentContext[1], this._ctx.ruleIndex);\r\n\t\t\t\tthis.pushNewRecursionContext(localctx,\r\n\t\t\t\t\tthis._atn.ruleToStartState[p.ruleIndex].stateNumber,\r\n\t\t\t\t\tthis._ctx.ruleIndex);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ATOM:\r\n\t\t\tthis.match((transition as AtomTransition)._label);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.RANGE:\r\n\t\tcase TransitionType.SET:\r\n\t\tcase TransitionType.NOT_SET:\r\n\t\t\tif (!transition.matches(this._input.LA(1), Token.MIN_USER_TOKEN_TYPE, 65535)) {\r\n\t\t\t\tthis.recoverInline();\r\n\t\t\t}\r\n\t\t\tthis.matchWildcard();\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.WILDCARD:\r\n\t\t\tthis.matchWildcard();\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.RULE:\r\n\t\t\tlet ruleStartState: RuleStartState = transition.target as RuleStartState;\r\n\t\t\tlet ruleIndex: number = ruleStartState.ruleIndex;\r\n\t\t\tlet newctx: InterpreterRuleContext = this.createInterpreterRuleContext(this._ctx, p.stateNumber, ruleIndex);\r\n\t\t\tif (ruleStartState.isPrecedenceRule) {\r\n\t\t\t\tthis.enterRecursionRule(newctx, ruleStartState.stateNumber, ruleIndex, (transition as RuleTransition).precedence);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.enterRule(newctx, transition.target.stateNumber, ruleIndex);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PREDICATE:\r\n\t\t\tlet predicateTransition: PredicateTransition = transition as PredicateTransition;\r\n\t\t\tif (!this.sempred(this._ctx, predicateTransition.ruleIndex, predicateTransition.predIndex)) {\r\n\t\t\t\tthrow new FailedPredicateException(this);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.ACTION:\r\n\t\t\tlet actionTransition: ActionTransition = transition as ActionTransition;\r\n\t\t\tthis.action(this._ctx, actionTransition.ruleIndex, actionTransition.actionIndex);\r\n\t\t\tbreak;\r\n\r\n\t\tcase TransitionType.PRECEDENCE:\r\n\t\t\tif (!this.precpred(this._ctx, (transition as PrecedencePredicateTransition).precedence)) {\r\n\t\t\t\tlet precedence = (transition as PrecedencePredicateTransition).precedence;\r\n\t\t\t\tthrow new FailedPredicateException(this, `precpred(_ctx, ${precedence})`);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"UnsupportedOperationException: Unrecognized ATN transition type.\");\r\n\t\t}\r\n\r\n\t\tthis.state = transition.target.stateNumber;\r\n\t}\r\n\r\n\t/** Method visitDecisionState() is called when the interpreter reaches\r\n\t * a decision state (instance of DecisionState). It gives an opportunity\r\n\t * for subclasses to track interesting things.\r\n\t */\r\n\tprotected visitDecisionState(p: DecisionState): number {\r\n\t\tlet predictedAlt: number;\r\n\t\tthis.errorHandler.sync(this);\r\n\t\tlet decision: number = p.decision;\r\n\t\tif (decision === this.overrideDecision && this._input.index === this.overrideDecisionInputIndex && !this.overrideDecisionReached) {\r\n\t\t\tpredictedAlt = this.overrideDecisionAlt;\r\n\t\t\tthis.overrideDecisionReached = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tpredictedAlt = this.interpreter.adaptivePredict(this._input, decision, this._ctx);\r\n\t\t}\r\n\t\treturn predictedAlt;\r\n\t}\r\n\r\n\t/** Provide simple \"factory\" for InterpreterRuleContext's.\r\n\t * @since 4.5.1\r\n\t */\r\n\tprotected createInterpreterRuleContext(\r\n\t\tparent: ParserRuleContext | undefined,\r\n\t\tinvokingStateNumber: number,\r\n\t\truleIndex: number): InterpreterRuleContext {\r\n\t\treturn new InterpreterRuleContext(ruleIndex, parent, invokingStateNumber);\r\n\t}\r\n\r\n\tprotected visitRuleStopState(p: ATNState): void {\r\n\t\tlet ruleStartState: RuleStartState = this._atn.ruleToStartState[p.ruleIndex];\r\n\t\tif (ruleStartState.isPrecedenceRule) {\r\n\t\t\tlet parentContext: [ParserRuleContext, number] = this._parentContextStack.pop()!;\r\n\t\t\tthis.unrollRecursionContexts(parentContext[0]);\r\n\t\t\tthis.state = parentContext[1];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.exitRule();\r\n\t\t}\r\n\r\n\t\tlet ruleTransition: RuleTransition = this._atn.states[this.state].transition(0) as RuleTransition;\r\n\t\tthis.state = ruleTransition.followState.stateNumber;\r\n\t}\r\n\r\n\t/** Override this parser interpreters normal decision-making process\r\n\t * at a particular decision and input token index. Instead of\r\n\t * allowing the adaptive prediction mechanism to choose the\r\n\t * first alternative within a block that leads to a successful parse,\r\n\t * force it to take the alternative, 1..n for n alternatives.\r\n\t *\r\n\t * As an implementation limitation right now, you can only specify one\r\n\t * override. This is sufficient to allow construction of different\r\n\t * parse trees for ambiguous input. It means re-parsing the entire input\r\n\t * in general because you're never sure where an ambiguous sequence would\r\n\t * live in the various parse trees. For example, in one interpretation,\r\n\t * an ambiguous input sequence would be matched completely in expression\r\n\t * but in another it could match all the way back to the root.\r\n\t *\r\n\t * s : e '!'? ;\r\n\t * e : ID\r\n\t * | ID '!'\r\n\t * ;\r\n\t *\r\n\t * Here, x! can be matched as (s (e ID) !) or (s (e ID !)). In the first\r\n\t * case, the ambiguous sequence is fully contained only by the root.\r\n\t * In the second case, the ambiguous sequences fully contained within just\r\n\t * e, as in: (e ID !).\r\n\t *\r\n\t * Rather than trying to optimize this and make\r\n\t * some intelligent decisions for optimization purposes, I settled on\r\n\t * just re-parsing the whole input and then using\r\n\t * {link Trees#getRootOfSubtreeEnclosingRegion} to find the minimal\r\n\t * subtree that contains the ambiguous sequence. I originally tried to\r\n\t * record the call stack at the point the parser detected and ambiguity but\r\n\t * left recursive rules create a parse tree stack that does not reflect\r\n\t * the actual call stack. That impedance mismatch was enough to make\r\n\t * it it challenging to restart the parser at a deeply nested rule\r\n\t * invocation.\r\n\t *\r\n\t * Only parser interpreters can override decisions so as to avoid inserting\r\n\t * override checking code in the critical ALL(*) prediction execution path.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic addDecisionOverride(decision: number, tokenIndex: number, forcedAlt: number): void {\r\n\t\tthis.overrideDecision = decision;\r\n\t\tthis.overrideDecisionInputIndex = tokenIndex;\r\n\t\tthis.overrideDecisionAlt = forcedAlt;\r\n\t}\r\n\r\n\tget overrideDecisionRoot(): InterpreterRuleContext | undefined {\r\n\t\treturn this._overrideDecisionRoot;\r\n\t}\r\n\r\n\t/** Rely on the error handler for this parser but, if no tokens are consumed\r\n\t * to recover, add an error node. Otherwise, nothing is seen in the parse\r\n\t * tree.\r\n\t */\r\n\tprotected recover(e: RecognitionException): void {\r\n\t\tlet i: number = this._input.index;\r\n\t\tthis.errorHandler.recover(this, e);\r\n\t\tif (this._input.index === i) {\r\n\t\t\t// no input consumed, better add an error node\r\n\t\t\tlet tok: Token | undefined = e.getOffendingToken();\r\n\t\t\tif (!tok) {\r\n\t\t\t\tthrow new Error(\"Expected exception to have an offending token\");\r\n\t\t\t}\r\n\r\n\t\t\tlet source = tok.tokenSource;\r\n\t\t\tlet stream = source !== undefined ? source.inputStream : undefined;\r\n\t\t\tlet sourcePair = { source, stream };\r\n\r\n\t\t\tif (e instanceof InputMismatchException) {\r\n\t\t\t\tlet expectedTokens = e.expectedTokens;\r\n\t\t\t\tif (expectedTokens === undefined) {\r\n\t\t\t\t\tthrow new Error(\"Expected the exception to provide expected tokens\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet expectedTokenType: number = Token.INVALID_TYPE;\r\n\t\t\t\tif (!expectedTokens.isNil) {\r\n\t\t\t\t\t// get any element\r\n\t\t\t\t\texpectedTokenType = expectedTokens.minElement;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet errToken: Token =\r\n\t\t\t\t\tthis.tokenFactory.create(sourcePair,\r\n\t\t\t\t\t\texpectedTokenType, tok.text,\r\n\t\t\t\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t\t\t\t-1, -1, // invalid start/stop\r\n\t\t\t\t\t\ttok.line, tok.charPositionInLine);\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));\r\n\t\t\t}\r\n\t\t\telse { // NoViableAlt\r\n\t\t\t\tlet source = tok.tokenSource;\r\n\t\t\t\tlet errToken: Token =\r\n\t\t\t\t\tthis.tokenFactory.create(sourcePair,\r\n\t\t\t\t\t\tToken.INVALID_TYPE, tok.text,\r\n\t\t\t\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t\t\t\t-1, -1, // invalid start/stop\r\n\t\t\t\t\t\ttok.line, tok.charPositionInLine);\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected recoverInline(): Token {\r\n\t\treturn this._errHandler.recoverInline(this);\r\n\t}\r\n\r\n\t/** Return the root of the parse, which can be useful if the parser\r\n\t * bails out. You still can access the top node. Note that,\r\n\t * because of the way left recursive rules add children, it's possible\r\n\t * that the root will not have any children if the start rule immediately\r\n\t * called and left recursive rule that fails.\r\n\t *\r\n\t * @since 4.5.1\r\n\t */\r\n\tget rootContext(): InterpreterRuleContext {\r\n\t\treturn this._rootContext;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { MultiMap } from \"../../misc/MultiMap\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreePattern } from \"./ParseTreePattern\";\r\n\r\n/**\r\n * Represents the result of matching a {@link ParseTree} against a tree pattern.\r\n */\r\nexport class ParseTreeMatch {\r\n\t/**\r\n\t * This is the backing field for `tree`.\r\n\t */\r\n\tprivate _tree: ParseTree;\r\n\r\n\t/**\r\n\t * This is the backing field for `pattern`.\r\n\t */\r\n\tprivate _pattern: ParseTreePattern;\r\n\r\n\t/**\r\n\t * This is the backing field for `labels`.\r\n\t */\r\n\tprivate _labels: MultiMap;\r\n\r\n\t/**\r\n\t * This is the backing field for `mismatchedNode`.\r\n\t */\r\n\tprivate _mismatchedNode?: ParseTree;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link ParseTreeMatch} from the specified\r\n\t * parse tree and pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against the pattern.\r\n\t * @param pattern The parse tree pattern.\r\n\t * @param labels A mapping from label names to collections of\r\n\t * {@link ParseTree} objects located by the tree pattern matching process.\r\n\t * @param mismatchedNode The first node which failed to match the tree\r\n\t * pattern during the matching process.\r\n\t *\r\n\t * @throws {@link Error} if `tree` is not defined\r\n\t * @throws {@link Error} if `pattern` is not defined\r\n\t * @throws {@link Error} if `labels` is not defined\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull tree: ParseTree,\r\n\t\t@NotNull pattern: ParseTreePattern,\r\n\t\t@NotNull labels: MultiMap,\r\n\t\tmismatchedNode: ParseTree | undefined) {\r\n\t\tif (!tree) {\r\n\t\t\tthrow new Error(\"tree cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error(\"pattern cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!labels) {\r\n\t\t\tthrow new Error(\"labels cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._tree = tree;\r\n\t\tthis._pattern = pattern;\r\n\t\tthis._labels = labels;\r\n\t\tthis._mismatchedNode = mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the last node associated with a specific `label`.\r\n\t *\r\n\t * For example, for pattern ``, `get(\"id\")` returns the\r\n\t * node matched for that `ID`. If more than one node\r\n\t * matched the specified label, only the last is returned. If there is\r\n\t * no node associated with the label, this returns `undefined`.\r\n\t *\r\n\t * Pattern tags like `` and `` without labels are\r\n\t * considered to be labeled with `ID` and `expr`, respectively.\r\n\t *\r\n\t * @param label The label to check.\r\n\t *\r\n\t * @returns The last {@link ParseTree} to match a tag with the specified\r\n\t * label, or `undefined` if no parse tree matched a tag with the label.\r\n\t */\r\n\tpublic get(label: string): ParseTree | undefined {\r\n\t\tlet parseTrees = this._labels.get(label);\r\n\t\tif (!parseTrees || parseTrees.length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn parseTrees[parseTrees.length - 1]; // return last if multiple\r\n\t}\r\n\r\n\t/**\r\n\t * Return all nodes matching a rule or token tag with the specified label.\r\n\t *\r\n\t * If the `label` is the name of a parser rule or token in the\r\n\t * grammar, the resulting list will contain both the parse trees matching\r\n\t * rule or tags explicitly labeled with the label and the complete set of\r\n\t * parse trees matching the labeled and unlabeled tags in the pattern for\r\n\t * the parser rule or token. For example, if `label` is `\"foo\"`,\r\n\t * the result will contain *all* of the following.\r\n\t *\r\n\t * * Parse tree nodes matching tags of the form `` and\r\n\t * ``.\r\n\t * * Parse tree nodes matching tags of the form ``.\r\n\t * * Parse tree nodes matching tags of the form ``.\r\n\t *\r\n\t * @param label The label.\r\n\t *\r\n\t * @returns A collection of all {@link ParseTree} nodes matching tags with\r\n\t * the specified `label`. If no nodes matched the label, an empty list\r\n\t * is returned.\r\n\t */\r\n\t@NotNull\r\n\tpublic getAll(@NotNull label: string): ParseTree[] {\r\n\t\tconst nodes = this._labels.get(label);\r\n\t\tif (!nodes) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n\r\n\t/**\r\n\t * Return a mapping from label → [list of nodes].\r\n\t *\r\n\t * The map includes special entries corresponding to the names of rules and\r\n\t * tokens referenced in tags in the original pattern. For additional\r\n\t * information, see the description of {@link #getAll(String)}.\r\n\t *\r\n\t * @returns A mapping from labels to parse tree nodes. If the parse tree\r\n\t * pattern did not contain any rule or token tags, this map will be empty.\r\n\t */\r\n\t@NotNull\r\n\tget labels(): MultiMap {\r\n\t\treturn this._labels;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the node at which we first detected a mismatch.\r\n\t *\r\n\t * @returns the node at which we first detected a mismatch, or `undefined`\r\n\t * if the match was successful.\r\n\t */\r\n\tget mismatchedNode(): ParseTree | undefined {\r\n\t\treturn this._mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the match operation succeeded.\r\n\t *\r\n\t * @returns `true` if the match operation succeeded; otherwise,\r\n\t * `false`.\r\n\t */\r\n\tget succeeded(): boolean {\r\n\t\treturn !this._mismatchedNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern we are matching against.\r\n\t *\r\n\t * @returns The tree pattern we are matching against.\r\n\t */\r\n\t@NotNull\r\n\tget pattern(): ParseTreePattern {\r\n\t\treturn this._pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the parse tree we are trying to match to a pattern.\r\n\t *\r\n\t * @returns The {@link ParseTree} we are trying to match to a pattern.\r\n\t */\r\n\t@NotNull\r\n\tget tree(): ParseTree {\r\n\t\treturn this._tree;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn `Match ${\r\n\t\t\tthis.succeeded ? \"succeeded\" : \"failed\"}; found ${\r\n\t\t\tthis.labels.size} labels`;\r\n\t}\r\n}\r\n", "// Generated from XPathLexer.g4 by ANTLR 4.9.0-SNAPSHOT\r\n\r\n\r\nimport { ATN } from \"../../atn/ATN\";\r\nimport { ATNDeserializer } from \"../../atn/ATNDeserializer\";\r\nimport { CharStream } from \"../../CharStream\";\r\nimport { Lexer } from \"../../Lexer\";\r\nimport { LexerATNSimulator } from \"../../atn/LexerATNSimulator\";\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { RuleContext } from \"../../RuleContext\";\r\nimport { Vocabulary } from \"../../Vocabulary\";\r\nimport { VocabularyImpl } from \"../../VocabularyImpl\";\r\n\r\nimport * as Utils from \"../../misc/Utils\";\r\n\r\n\r\nexport class XPathLexer extends Lexer {\r\n\tpublic static readonly TOKEN_REF = 1;\r\n\tpublic static readonly RULE_REF = 2;\r\n\tpublic static readonly ANYWHERE = 3;\r\n\tpublic static readonly ROOT = 4;\r\n\tpublic static readonly WILDCARD = 5;\r\n\tpublic static readonly BANG = 6;\r\n\tpublic static readonly ID = 7;\r\n\tpublic static readonly STRING = 8;\r\n\r\n\t// tslint:disable:no-trailing-whitespace\r\n\tpublic static readonly channelNames: string[] = [\r\n\t\t\"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\",\r\n\t];\r\n\r\n\t// tslint:disable:no-trailing-whitespace\r\n\tpublic static readonly modeNames: string[] = [\r\n\t\t\"DEFAULT_MODE\",\r\n\t];\r\n\r\n\tpublic static readonly ruleNames: string[] = [\r\n\t\t\"ANYWHERE\", \"ROOT\", \"WILDCARD\", \"BANG\", \"ID\", \"NameChar\", \"NameStartChar\", \r\n\t\t\"STRING\",\r\n\t];\r\n\r\n\tprivate static readonly _LITERAL_NAMES: Array = [\r\n\t\tundefined, undefined, undefined, \"'//'\", \"'/'\", \"'*'\", \"'!'\",\r\n\t];\r\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\r\n\t\tundefined, \"TOKEN_REF\", \"RULE_REF\", \"ANYWHERE\", \"ROOT\", \"WILDCARD\", \"BANG\", \r\n\t\t\"ID\", \"STRING\",\r\n\t];\r\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(XPathLexer._LITERAL_NAMES, XPathLexer._SYMBOLIC_NAMES, []);\r\n\r\n\t// @Override\r\n\t// @NotNull\r\n\tpublic get vocabulary(): Vocabulary {\r\n\t\treturn XPathLexer.VOCABULARY;\r\n\t}\r\n\t// tslint:enable:no-trailing-whitespace\r\n\r\n\r\n\tconstructor(input: CharStream) {\r\n\t\tsuper(input);\r\n\t\tthis._interp = new LexerATNSimulator(XPathLexer._ATN, this);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic get grammarFileName(): string { return \"XPathLexer.g4\"; }\r\n\r\n\t// @Override\r\n\tpublic get ruleNames(): string[] { return XPathLexer.ruleNames; }\r\n\r\n\t// @Override\r\n\tpublic get serializedATN(): string { return XPathLexer._serializedATN; }\r\n\r\n\t// @Override\r\n\tpublic get channelNames(): string[] { return XPathLexer.channelNames; }\r\n\r\n\t// @Override\r\n\tpublic get modeNames(): string[] { return XPathLexer.modeNames; }\r\n\r\n\t// @Override\r\n\tpublic action(_localctx: RuleContext, ruleIndex: number, actionIndex: number): void {\r\n\t\tswitch (ruleIndex) {\r\n\t\tcase 4:\r\n\t\t\tthis.ID_action(_localctx, actionIndex);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tprivate ID_action(_localctx: RuleContext, actionIndex: number): void {\r\n\t\tswitch (actionIndex) {\r\n\t\tcase 0:\r\n\r\n\t\t\tlet text = this.text;\r\n\t\t\tif (text.charAt(0) === text.charAt(0).toUpperCase()) {\r\n\t\t\t\tthis.type = XPathLexer.TOKEN_REF;\r\n\t\t\t} else {\r\n\t\t\t\tthis.type = XPathLexer.RULE_REF;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static readonly _serializedATNSegments: number = 2;\r\n\tprivate static readonly _serializedATNSegment0: string =\r\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x02\\n2\\b\\x01\\x04\" +\r\n\t\t\"\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\\x04\" +\r\n\t\t\"\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\" +\r\n\t\t\"\\x03\\x04\\x03\\x04\\x03\\x05\\x03\\x05\\x03\\x06\\x03\\x06\\x07\\x06\\x1F\\n\\x06\\f\\x06\" +\r\n\t\t\"\\x0E\\x06\\\"\\v\\x06\\x03\\x06\\x03\\x06\\x03\\x07\\x03\\x07\\x03\\b\\x03\\b\\x03\\t\\x03\" +\r\n\t\t\"\\t\\x07\\t,\\n\\t\\f\\t\\x0E\\t/\\v\\t\\x03\\t\\x03\\t\\x03-\\x02\\x02\\n\\x03\\x02\\x05\\x05\" +\r\n\t\t\"\\x02\\x06\\x07\\x02\\x07\\t\\x02\\b\\v\\x02\\t\\r\\x02\\x02\\x0F\\x02\\x02\\x11\\x02\\n\\x03\" +\r\n\t\t\"\\x02\\x02\\x04\\u02B6\\x02\\x02\\x02\\n\\x02\\x10\\x02\\x1D\\x022\\x02;\\x02C\\x02\\\\\" +\r\n\t\t\"\\x02a\\x02a\\x02c\\x02|\\x02\\x81\\x02\\xA1\\x02\\xAC\\x02\\xAC\\x02\\xAF\\x02\\xAF\\x02\" +\r\n\t\t\"\\xB7\\x02\\xB7\\x02\\xBC\\x02\\xBC\\x02\\xC2\\x02\\xD8\\x02\\xDA\\x02\\xF8\\x02\\xFA\\x02\" +\r\n\t\t\"\\u02C3\\x02\\u02C8\\x02\\u02D3\\x02\\u02E2\\x02\\u02E6\\x02\\u02EE\\x02\\u02EE\\x02\" +\r\n\t\t\"\\u02F0\\x02\\u02F0\\x02\\u0302\\x02\\u0376\\x02\\u0378\\x02\\u0379\\x02\\u037C\\x02\" +\r\n\t\t\"\\u037F\\x02\\u0381\\x02\\u0381\\x02\\u0388\\x02\\u0388\\x02\\u038A\\x02\\u038C\\x02\" +\r\n\t\t\"\\u038E\\x02\\u038E\\x02\\u0390\\x02\\u03A3\\x02\\u03A5\\x02\\u03F7\\x02\\u03F9\\x02\" +\r\n\t\t\"\\u0483\\x02\\u0485\\x02\\u0489\\x02\\u048C\\x02\\u0531\\x02\\u0533\\x02\\u0558\\x02\" +\r\n\t\t\"\\u055B\\x02\\u055B\\x02\\u0563\\x02\\u0589\\x02\\u0593\\x02\\u05BF\\x02\\u05C1\\x02\" +\r\n\t\t\"\\u05C1\\x02\\u05C3\\x02\\u05C4\\x02\\u05C6\\x02\\u05C7\\x02\\u05C9\\x02\\u05C9\\x02\" +\r\n\t\t\"\\u05D2\\x02\\u05EC\\x02\\u05F2\\x02\\u05F4\\x02\\u0602\\x02\\u0607\\x02\\u0612\\x02\" +\r\n\t\t\"\\u061C\\x02\\u061E\\x02\\u061E\\x02\\u0622\\x02\\u066B\\x02\\u0670\\x02\\u06D5\\x02\" +\r\n\t\t\"\\u06D7\\x02\\u06DF\\x02\\u06E1\\x02\\u06EA\\x02\\u06EC\\x02\\u06FE\\x02\\u0701\\x02\" +\r\n\t\t\"\\u0701\\x02\\u0711\\x02\\u074C\\x02\\u074F\\x02\\u07B3\\x02\\u07C2\\x02\\u07F7\\x02\" +\r\n\t\t\"\\u07FC\\x02\\u07FC\\x02\\u0802\\x02\\u082F\\x02\\u0842\\x02\\u085D\\x02\\u08A2\\x02\" +\r\n\t\t\"\\u08B6\\x02\\u08B8\\x02\\u08BF\\x02\\u08D6\\x02\\u0965\\x02\\u0968\\x02\\u0971\\x02\" +\r\n\t\t\"\\u0973\\x02\\u0985\\x02\\u0987\\x02\\u098E\\x02\\u0991\\x02\\u0992\\x02\\u0995\\x02\" +\r\n\t\t\"\\u09AA\\x02\\u09AC\\x02\\u09B2\\x02\\u09B4\\x02\\u09B4\\x02\\u09B8\\x02\\u09BB\\x02\" +\r\n\t\t\"\\u09BE\\x02\\u09C6\\x02\\u09C9\\x02\\u09CA\\x02\\u09CD\\x02\\u09D0\\x02\\u09D9\\x02\" +\r\n\t\t\"\\u09D9\\x02\\u09DE\\x02\\u09DF\\x02\\u09E1\\x02\\u09E5\\x02\\u09E8\\x02\\u09F3\\x02\" +\r\n\t\t\"\\u0A03\\x02\\u0A05\\x02\\u0A07\\x02\\u0A0C\\x02\\u0A11\\x02\\u0A12\\x02\\u0A15\\x02\" +\r\n\t\t\"\\u0A2A\\x02\\u0A2C\\x02\\u0A32\\x02\\u0A34\\x02\\u0A35\\x02\\u0A37\\x02\\u0A38\\x02\" +\r\n\t\t\"\\u0A3A\\x02\\u0A3B\\x02\\u0A3E\\x02\\u0A3E\\x02\\u0A40\\x02\\u0A44\\x02\\u0A49\\x02\" +\r\n\t\t\"\\u0A4A\\x02\\u0A4D\\x02\\u0A4F\\x02\\u0A53\\x02\\u0A53\\x02\\u0A5B\\x02\\u0A5E\\x02\" +\r\n\t\t\"\\u0A60\\x02\\u0A60\\x02\\u0A68\\x02\\u0A77\\x02\\u0A83\\x02\\u0A85\\x02\\u0A87\\x02\" +\r\n\t\t\"\\u0A8F\\x02\\u0A91\\x02\\u0A93\\x02\\u0A95\\x02\\u0AAA\\x02\\u0AAC\\x02\\u0AB2\\x02\" +\r\n\t\t\"\\u0AB4\\x02\\u0AB5\\x02\\u0AB7\\x02\\u0ABB\\x02\\u0ABE\\x02\\u0AC7\\x02\\u0AC9\\x02\" +\r\n\t\t\"\\u0ACB\\x02\\u0ACD\\x02\\u0ACF\\x02\\u0AD2\\x02\\u0AD2\\x02\\u0AE2\\x02\\u0AE5\\x02\" +\r\n\t\t\"\\u0AE8\\x02\\u0AF1\\x02\\u0AFB\\x02\\u0AFB\\x02\\u0B03\\x02\\u0B05\\x02\\u0B07\\x02\" +\r\n\t\t\"\\u0B0E\\x02\\u0B11\\x02\\u0B12\\x02\\u0B15\\x02\\u0B2A\\x02\\u0B2C\\x02\\u0B32\\x02\" +\r\n\t\t\"\\u0B34\\x02\\u0B35\\x02\\u0B37\\x02\\u0B3B\\x02\\u0B3E\\x02\\u0B46\\x02\\u0B49\\x02\" +\r\n\t\t\"\\u0B4A\\x02\\u0B4D\\x02\\u0B4F\\x02\\u0B58\\x02\\u0B59\\x02\\u0B5E\\x02\\u0B5F\\x02\" +\r\n\t\t\"\\u0B61\\x02\\u0B65\\x02\\u0B68\\x02\\u0B71\\x02\\u0B73\\x02\\u0B73\\x02\\u0B84\\x02\" +\r\n\t\t\"\\u0B85\\x02\\u0B87\\x02\\u0B8C\\x02\\u0B90\\x02\\u0B92\\x02\\u0B94\\x02\\u0B97\\x02\" +\r\n\t\t\"\\u0B9B\\x02\\u0B9C\\x02\\u0B9E\\x02\\u0B9E\\x02\\u0BA0\\x02\\u0BA1\\x02\\u0BA5\\x02\" +\r\n\t\t\"\\u0BA6\\x02\\u0BAA\\x02\\u0BAC\\x02\\u0BB0\\x02\\u0BBB\\x02\\u0BC0\\x02\\u0BC4\\x02\" +\r\n\t\t\"\\u0BC8\\x02\\u0BCA\\x02\\u0BCC\\x02\\u0BCF\\x02\\u0BD2\\x02\\u0BD2\\x02\\u0BD9\\x02\" +\r\n\t\t\"\\u0BD9\\x02\\u0BE8\\x02\\u0BF1\\x02\\u0C02\\x02\\u0C05\\x02\\u0C07\\x02\\u0C0E\\x02\" +\r\n\t\t\"\\u0C10\\x02\\u0C12\\x02\\u0C14\\x02\\u0C2A\\x02\\u0C2C\\x02\\u0C3B\\x02\\u0C3F\\x02\" +\r\n\t\t\"\\u0C46\\x02\\u0C48\\x02\\u0C4A\\x02\\u0C4C\\x02\\u0C4F\\x02\\u0C57\\x02\\u0C58\\x02\" +\r\n\t\t\"\\u0C5A\\x02\\u0C5C\\x02\\u0C62\\x02\\u0C65\\x02\\u0C68\\x02\\u0C71\\x02\\u0C82\\x02\" +\r\n\t\t\"\\u0C85\\x02\\u0C87\\x02\\u0C8E\\x02\\u0C90\\x02\\u0C92\\x02\\u0C94\\x02\\u0CAA\\x02\" +\r\n\t\t\"\\u0CAC\\x02\\u0CB5\\x02\\u0CB7\\x02\\u0CBB\\x02\\u0CBE\\x02\\u0CC6\\x02\\u0CC8\\x02\" +\r\n\t\t\"\\u0CCA\\x02\\u0CCC\\x02\\u0CCF\\x02\\u0CD7\\x02\\u0CD8\\x02\\u0CE0\\x02\\u0CE0\\x02\" +\r\n\t\t\"\\u0CE2\\x02\\u0CE5\\x02\\u0CE8\\x02\\u0CF1\\x02\\u0CF3\\x02\\u0CF4\\x02\\u0D03\\x02\" +\r\n\t\t\"\\u0D05\\x02\\u0D07\\x02\\u0D0E\\x02\\u0D10\\x02\\u0D12\\x02\\u0D14\\x02\\u0D3C\\x02\" +\r\n\t\t\"\\u0D3F\\x02\\u0D46\\x02\\u0D48\\x02\\u0D4A\\x02\\u0D4C\\x02\\u0D50\\x02\\u0D56\\x02\" +\r\n\t\t\"\\u0D59\\x02\\u0D61\\x02\\u0D65\\x02\\u0D68\\x02\\u0D71\\x02\\u0D7C\\x02\\u0D81\\x02\" +\r\n\t\t\"\\u0D84\\x02\\u0D85\\x02\\u0D87\\x02\\u0D98\\x02\\u0D9C\\x02\\u0DB3\\x02\\u0DB5\\x02\" +\r\n\t\t\"\\u0DBD\\x02\\u0DBF\\x02\\u0DBF\\x02\\u0DC2\\x02\\u0DC8\\x02\\u0DCC\\x02\\u0DCC\\x02\" +\r\n\t\t\"\\u0DD1\\x02\\u0DD6\\x02\\u0DD8\\x02\\u0DD8\\x02\\u0DDA\\x02\\u0DE1\\x02\\u0DE8\\x02\" +\r\n\t\t\"\\u0DF1\\x02\\u0DF4\\x02\\u0DF5\\x02\\u0E03\\x02\\u0E3C\\x02\\u0E42\\x02\\u0E50\\x02\" +\r\n\t\t\"\\u0E52\\x02\\u0E5B\\x02\\u0E83\\x02\\u0E84\\x02\\u0E86\\x02\\u0E86\\x02\\u0E89\\x02\" +\r\n\t\t\"\\u0E8A\\x02\\u0E8C\\x02\\u0E8C\\x02\\u0E8F\\x02\\u0E8F\\x02\\u0E96\\x02\\u0E99\\x02\" +\r\n\t\t\"\\u0E9B\\x02\\u0EA1\\x02\\u0EA3\\x02\\u0EA5\\x02\\u0EA7\\x02\\u0EA7\\x02\\u0EA9\\x02\" +\r\n\t\t\"\\u0EA9\\x02\\u0EAC\\x02\\u0EAD\\x02\\u0EAF\\x02\\u0EBB\\x02\\u0EBD\\x02\\u0EBF\\x02\" +\r\n\t\t\"\\u0EC2\\x02\\u0EC6\\x02\\u0EC8\\x02\\u0EC8\\x02\\u0ECA\\x02\\u0ECF\\x02\\u0ED2\\x02\" +\r\n\t\t\"\\u0EDB\\x02\\u0EDE\\x02\\u0EE1\\x02\\u0F02\\x02\\u0F02\\x02\\u0F1A\\x02\\u0F1B\\x02\" +\r\n\t\t\"\\u0F22\\x02\\u0F2B\\x02\\u0F37\\x02\\u0F37\\x02\\u0F39\\x02\\u0F39\\x02\\u0F3B\\x02\" +\r\n\t\t\"\\u0F3B\\x02\\u0F40\\x02\\u0F49\\x02\\u0F4B\\x02\\u0F6E\\x02\\u0F73\\x02\\u0F86\\x02\" +\r\n\t\t\"\\u0F88\\x02\\u0F99\\x02\\u0F9B\\x02\\u0FBE\\x02\\u0FC8\\x02\\u0FC8\\x02\\u1002\\x02\" +\r\n\t\t\"\\u104B\\x02\\u1052\\x02\\u109F\\x02\\u10A2\\x02\\u10C7\\x02\\u10C9\\x02\\u10C9\\x02\" +\r\n\t\t\"\\u10CF\\x02\\u10CF\\x02\\u10D2\\x02\\u10FC\\x02\\u10FE\\x02\\u124A\\x02\\u124C\\x02\" +\r\n\t\t\"\\u124F\\x02\\u1252\\x02\\u1258\\x02\\u125A\\x02\\u125A\\x02\\u125C\\x02\\u125F\\x02\" +\r\n\t\t\"\\u1262\\x02\\u128A\\x02\\u128C\\x02\\u128F\\x02\\u1292\\x02\\u12B2\\x02\\u12B4\\x02\" +\r\n\t\t\"\\u12B7\\x02\\u12BA\\x02\\u12C0\\x02\\u12C2\\x02\\u12C2\\x02\\u12C4\\x02\\u12C7\\x02\" +\r\n\t\t\"\\u12CA\\x02\\u12D8\\x02\\u12DA\\x02\\u1312\\x02\\u1314\\x02\\u1317\\x02\\u131A\\x02\" +\r\n\t\t\"\\u135C\\x02\\u135F\\x02\\u1361\\x02\\u1382\\x02\\u1391\\x02\\u13A2\\x02\\u13F7\\x02\" +\r\n\t\t\"\\u13FA\\x02\\u13FF\\x02\\u1403\\x02\\u166E\\x02\\u1671\\x02\\u1681\\x02\\u1683\\x02\" +\r\n\t\t\"\\u169C\\x02\\u16A2\\x02\\u16EC\\x02\\u16F0\\x02\\u16FA\\x02\\u1702\\x02\\u170E\\x02\" +\r\n\t\t\"\\u1710\\x02\\u1716\\x02\\u1722\\x02\\u1736\\x02\\u1742\\x02\\u1755\\x02\\u1762\\x02\" +\r\n\t\t\"\\u176E\\x02\\u1770\\x02\\u1772\\x02\\u1774\\x02\\u1775\\x02\\u1782\\x02\\u17D5\\x02\" +\r\n\t\t\"\\u17D9\\x02\\u17D9\\x02\\u17DE\\x02\\u17DF\\x02\\u17E2\\x02\\u17EB\\x02\\u180D\\x02\" +\r\n\t\t\"\\u1810\\x02\\u1812\\x02\\u181B\\x02\\u1822\\x02\\u1879\\x02\\u1882\\x02\\u18AC\\x02\" +\r\n\t\t\"\\u18B2\\x02\\u18F7\\x02\\u1902\\x02\\u1920\\x02\\u1922\\x02\\u192D\\x02\\u1932\\x02\" +\r\n\t\t\"\\u193D\\x02\\u1948\\x02\\u196F\\x02\\u1972\\x02\\u1976\\x02\\u1982\\x02\\u19AD\\x02\" +\r\n\t\t\"\\u19B2\\x02\\u19CB\\x02\\u19D2\\x02\\u19DB\\x02\\u1A02\\x02\\u1A1D\\x02\\u1A22\\x02\" +\r\n\t\t\"\\u1A60\\x02\\u1A62\\x02\\u1A7E\\x02\\u1A81\\x02\\u1A8B\\x02\\u1A92\\x02\\u1A9B\\x02\" +\r\n\t\t\"\\u1AA9\\x02\\u1AA9\\x02\\u1AB2\\x02\\u1ABF\\x02\\u1B02\\x02\\u1B4D\\x02\\u1B52\\x02\" +\r\n\t\t\"\\u1B5B\\x02\\u1B6D\\x02\\u1B75\\x02\\u1B82\\x02\\u1BF5\\x02\\u1C02\\x02\\u1C39\\x02\" +\r\n\t\t\"\\u1C42\\x02\\u1C4B\\x02\\u1C4F\\x02\\u1C7F\\x02\\u1C82\\x02\\u1C8A\\x02\\u1CD2\\x02\" +\r\n\t\t\"\\u1CD4\\x02\\u1CD6\\x02\\u1CF8\\x02\\u1CFA\\x02\\u1CFB\\x02\\u1D02\\x02\\u1DF7\\x02\" +\r\n\t\t\"\\u1DFD\\x02\\u1F17\\x02\\u1F1A\\x02\\u1F1F\\x02\\u1F22\\x02\\u1F47\\x02\\u1F4A\\x02\" +\r\n\t\t\"\\u1F4F\\x02\\u1F52\\x02\\u1F59\\x02\\u1F5B\\x02\\u1F5B\\x02\\u1F5D\\x02\\u1F5D\\x02\" +\r\n\t\t\"\\u1F5F\\x02\\u1F5F\\x02\\u1F61\\x02\\u1F7F\\x02\\u1F82\\x02\\u1FB6\\x02\\u1FB8\\x02\" +\r\n\t\t\"\\u1FBE\\x02\\u1FC0\\x02\\u1FC0\\x02\\u1FC4\\x02\\u1FC6\\x02\\u1FC8\\x02\\u1FCE\\x02\" +\r\n\t\t\"\\u1FD2\\x02\\u1FD5\\x02\\u1FD8\\x02\\u1FDD\\x02\\u1FE2\\x02\\u1FEE\\x02\\u1FF4\\x02\" +\r\n\t\t\"\\u1FF6\\x02\\u1FF8\\x02\\u1FFE\\x02\\u200D\\x02\\u2011\\x02\\u202C\\x02\\u2030\\x02\" +\r\n\t\t\"\\u2041\\x02\\u2042\\x02\\u2056\\x02\\u2056\\x02\\u2062\\x02\\u2066\\x02\\u2068\\x02\" +\r\n\t\t\"\\u2071\\x02\\u2073\\x02\\u2073\\x02\\u2081\\x02\\u2081\\x02\\u2092\\x02\\u209E\\x02\" +\r\n\t\t\"\\u20D2\\x02\\u20DE\\x02\\u20E3\\x02\\u20E3\\x02\\u20E7\\x02\\u20F2\\x02\\u2104\\x02\" +\r\n\t\t\"\\u2104\\x02\\u2109\\x02\\u2109\\x02\\u210C\\x02\\u2115\\x02\\u2117\\x02\\u2117\\x02\" +\r\n\t\t\"\\u211B\\x02\\u211F\\x02\\u2126\\x02\\u2126\\x02\\u2128\\x02\\u2128\\x02\\u212A\\x02\" +\r\n\t\t\"\\u212A\\x02\\u212C\\x02\\u212F\\x02\\u2131\\x02\\u213B\\x02\\u213E\\x02\\u2141\\x02\" +\r\n\t\t\"\\u2147\\x02\\u214B\\x02\\u2150\\x02\\u2150\\x02\\u2162\\x02\\u218A\\x02\\u2C02\\x02\" +\r\n\t\t\"\\u2C30\\x02\\u2C32\\x02\\u2C60\\x02\\u2C62\\x02\\u2CE6\\x02\\u2CED\\x02\\u2CF5\\x02\" +\r\n\t\t\"\\u2D02\\x02\\u2D27\\x02\\u2D29\\x02\\u2D29\\x02\\u2D2F\\x02\\u2D2F\\x02\\u2D32\\x02\" +\r\n\t\t\"\\u2D69\\x02\\u2D71\\x02\\u2D71\\x02\\u2D81\\x02\\u2D98\\x02\\u2DA2\\x02\\u2DA8\\x02\" +\r\n\t\t\"\\u2DAA\\x02\\u2DB0\\x02\\u2DB2\\x02\\u2DB8\\x02\\u2DBA\\x02\\u2DC0\\x02\\u2DC2\\x02\" +\r\n\t\t\"\\u2DC8\\x02\\u2DCA\\x02\\u2DD0\\x02\\u2DD2\\x02\\u2DD8\\x02\\u2DDA\\x02\\u2DE0\\x02\" +\r\n\t\t\"\\u2DE2\\x02\\u2E01\\x02\\u2E31\\x02\\u2E31\\x02\\u3007\\x02\\u3009\\x02\\u3023\\x02\" +\r\n\t\t\"\\u3031\\x02\\u3033\\x02\\u3037\\x02\\u303A\\x02\\u303E\\x02\\u3043\\x02\\u3098\\x02\" +\r\n\t\t\"\\u309B\\x02\\u309C\\x02\\u309F\\x02\\u30A1\\x02\\u30A3\\x02\\u30FC\\x02\\u30FE\\x02\" +\r\n\t\t\"\\u3101\\x02\\u3107\\x02\\u312F\\x02\\u3133\\x02\\u3190\\x02\\u31A2\\x02\\u31BC\\x02\" +\r\n\t\t\"\\u31F2\\x02\\u3201\\x02\\u3402\\x02\\u4DB7\\x02\\u4E02\\x02\\u9FD7\\x02\\uA002\\x02\" +\r\n\t\t\"\\uA48E\\x02\\uA4D2\\x02\\uA4FF\\x02\\uA502\\x02\\uA60E\\x02\\uA612\\x02\\uA62D\\x02\" +\r\n\t\t\"\\uA642\\x02\\uA671\\x02\\uA676\\x02\\uA67F\\x02\\uA681\\x02\\uA6F3\\x02\\uA719\\x02\" +\r\n\t\t\"\\uA721\\x02\\uA724\\x02\\uA78A\\x02\\uA78D\\x02\\uA7B0\\x02\\uA7B2\\x02\\uA7B9\\x02\" +\r\n\t\t\"\\uA7F9\\x02\\uA829\\x02\\uA842\\x02\\uA875\\x02\\uA882\\x02\\uA8C7\\x02\\uA8D2\\x02\" +\r\n\t\t\"\\uA8DB\\x02\\uA8E2\\x02\\uA8F9\\x02\\uA8FD\\x02\\uA8FD\\x02\\uA8FF\\x02\\uA8FF\\x02\" +\r\n\t\t\"\\uA902\\x02\\uA92F\\x02\\uA932\\x02\\uA955\\x02\\uA962\\x02\\uA97E\\x02\\uA982\\x02\" +\r\n\t\t\"\\uA9C2\\x02\\uA9D1\\x02\\uA9DB\\x02\\uA9E2\\x02\\uAA00\\x02\\uAA02\\x02\\uAA38\\x02\" +\r\n\t\t\"\\uAA42\\x02\\uAA4F\\x02\\uAA52\\x02\\uAA5B\\x02\\uAA62\\x02\\uAA78\\x02\\uAA7C\\x02\" +\r\n\t\t\"\\uAAC4\\x02\\uAADD\\x02\\uAADF\\x02\\uAAE2\\x02\\uAAF1\\x02\\uAAF4\\x02\\uAAF8\\x02\" +\r\n\t\t\"\\uAB03\\x02\\uAB08\\x02\\uAB0B\\x02\\uAB10\\x02\\uAB13\\x02\\uAB18\\x02\\uAB22\\x02\" +\r\n\t\t\"\\uAB28\\x02\\uAB2A\\x02\\uAB30\\x02\\uAB32\\x02\\uAB5C\\x02\\uAB5E\\x02\\uAB67\\x02\" +\r\n\t\t\"\\uAB72\\x02\\uABEC\\x02\\uABEE\\x02\\uABEF\\x02\\uABF2\\x02\\uABFB\\x02\\uAC02\\x02\" +\r\n\t\t\"\\uD7A5\\x02\\uD7B2\\x02\\uD7C8\\x02\\uD7CD\\x02\\uD7FD\\x02\\uF902\\x02\\uFA6F\\x02\" +\r\n\t\t\"\\uFA72\\x02\\uFADB\\x02\\uFB02\\x02\\uFB08\\x02\\uFB15\\x02\\uFB19\\x02\\uFB1F\\x02\" +\r\n\t\t\"\\uFB2A\\x02\\uFB2C\\x02\\uFB38\\x02\\uFB3A\\x02\\uFB3E\\x02\\uFB40\\x02\\uFB40\\x02\" +\r\n\t\t\"\\uFB42\\x02\\uFB43\\x02\\uFB45\\x02\\uFB46\\x02\\uFB48\\x02\\uFBB3\\x02\\uFBD5\\x02\" +\r\n\t\t\"\\uFD3F\\x02\\uFD52\\x02\\uFD91\\x02\\uFD94\\x02\\uFDC9\\x02\\uFDF2\\x02\\uFDFD\\x02\" +\r\n\t\t\"\\uFE02\\x02\\uFE11\\x02\\uFE22\\x02\\uFE31\\x02\\uFE35\\x02\\uFE36\\x02\\uFE4F\\x02\" +\r\n\t\t\"\\uFE51\\x02\\uFE72\\x02\\uFE76\\x02\\uFE78\\x02\\uFEFE\\x02\\uFF01\\x02\\uFF01\\x02\" +\r\n\t\t\"\\uFF12\\x02\\uFF1B\\x02\\uFF23\\x02\\uFF3C\\x02\\uFF41\\x02\\uFF41\\x02\\uFF43\\x02\" +\r\n\t\t\"\\uFF5C\\x02\\uFF68\\x02\\uFFC0\\x02\\uFFC4\\x02\\uFFC9\\x02\\uFFCC\\x02\\uFFD1\\x02\" +\r\n\t\t\"\\uFFD4\\x02\\uFFD9\\x02\\uFFDC\\x02\\uFFDE\\x02\\uFFFB\\x02\\uFFFD\\x02\\x02\\x03\\r\" +\r\n\t\t\"\\x03\\x0F\\x03(\\x03*\\x03<\\x03>\\x03?\\x03A\\x03O\\x03R\\x03_\\x03\\x82\\x03\\xFC\" +\r\n\t\t\"\\x03\\u0142\\x03\\u0176\\x03\\u01FF\\x03\\u01FF\\x03\\u0282\\x03\\u029E\\x03\\u02A2\" +\r\n\t\t\"\\x03\\u02D2\\x03\\u02E2\\x03\\u02E2\\x03\\u0302\\x03\\u0321\\x03\\u0332\\x03\\u034C\" +\r\n\t\t\"\\x03\\u0352\\x03\\u037C\\x03\\u0382\\x03\\u039F\\x03\\u03A2\\x03\\u03C5\\x03\\u03CA\" +\r\n\t\t\"\\x03\\u03D1\\x03\\u03D3\\x03\\u03D7\\x03\\u0402\\x03\\u049F\\x03\\u04A2\\x03\\u04AB\" +\r\n\t\t\"\\x03\\u04B2\\x03\\u04D5\\x03\\u04DA\\x03\\u04FD\\x03\\u0502\\x03\\u0529\\x03\\u0532\" +\r\n\t\t\"\\x03\\u0565\\x03\\u0602\\x03\\u0738\\x03\\u0742\\x03\\u0757\\x03\\u0762\\x03\\u0769\" +\r\n\t\t\"\\x03\\u0802\\x03\\u0807\\x03\\u080A\\x03\\u080A\\x03\\u080C\\x03\\u0837\\x03\\u0839\" +\r\n\t\t\"\\x03\\u083A\\x03\\u083E\\x03\\u083E\\x03\\u0841\\x03\\u0857\\x03\\u0862\\x03\\u0878\" +\r\n\t\t\"\\x03\\u0882\\x03\\u08A0\\x03\\u08E2\\x03\\u08F4\\x03\\u08F6\\x03\\u08F7\\x03\\u0902\" +\r\n\t\t\"\\x03\\u0917\\x03\\u0922\\x03\\u093B\\x03\\u0982\\x03\\u09B9\\x03\\u09C0\\x03\\u09C1\" +\r\n\t\t\"\\x03\\u0A02\\x03\\u0A05\\x03\\u0A07\\x03\\u0A08\\x03\\u0A0E\\x03\\u0A15\\x03\\u0A17\" +\r\n\t\t\"\\x03\\u0A19\\x03\\u0A1B\\x03\\u0A35\\x03\\u0A3A\\x03\\u0A3C\\x03\\u0A41\\x03\\u0A41\" +\r\n\t\t\"\\x03\\u0A62\\x03\\u0A7E\\x03\\u0A82\\x03\\u0A9E\\x03\\u0AC2\\x03\\u0AC9\\x03\\u0ACB\" +\r\n\t\t\"\\x03\\u0AE8\\x03\\u0B02\\x03\\u0B37\\x03\\u0B42\\x03\\u0B57\\x03\\u0B62\\x03\\u0B74\" +\r\n\t\t\"\\x03\\u0B82\\x03\\u0B93\\x03\\u0C02\\x03\\u0C4A\\x03\\u0C82\\x03\\u0CB4\\x03\\u0CC2\" +\r\n\t\t\"\\x03\\u0CF4\\x03\\u1002\\x03\\u1048\\x03\\u1068\\x03\\u1071\\x03\\u1081\\x03\\u10BC\" +\r\n\t\t\"\\x03\\u10BF\\x03\\u10BF\\x03\\u10D2\\x03\\u10EA\\x03\\u10F2\\x03\\u10FB\\x03\\u1102\" +\r\n\t\t\"\\x03\\u1136\\x03\\u1138\\x03\\u1141\\x03\\u1152\\x03\\u1175\\x03\\u1178\\x03\\u1178\" +\r\n\t\t\"\\x03\\u1182\\x03\\u11C6\\x03\\u11CC\\x03\\u11CE\\x03\\u11D2\\x03\\u11DC\\x03\\u11DE\" +\r\n\t\t\"\\x03\\u11DE\\x03\\u1202\\x03\\u1213\\x03\\u1215\\x03\\u1239\\x03\\u1240\\x03\\u1240\" +\r\n\t\t\"\\x03\\u1282\\x03\\u1288\\x03\\u128A\\x03\\u128A\\x03\\u128C\\x03\\u128F\\x03\\u1291\" +\r\n\t\t\"\\x03\\u129F\\x03\\u12A1\\x03\\u12AA\\x03\\u12B2\\x03\\u12EC\\x03\\u12F2\\x03\\u12FB\" +\r\n\t\t\"\\x03\\u1302\\x03\\u1305\\x03\\u1307\\x03\\u130E\\x03\\u1311\\x03\\u1312\\x03\\u1315\" +\r\n\t\t\"\\x03\\u132A\\x03\\u132C\\x03\\u1332\\x03\\u1334\\x03\\u1335\\x03\\u1337\\x03\\u133B\" +\r\n\t\t\"\\x03\\u133E\\x03\\u1346\\x03\\u1349\\x03\\u134A\\x03\\u134D\\x03\\u134F\\x03\\u1352\" +\r\n\t\t\"\\x03\\u1352\\x03\\u1359\\x03\\u1359\\x03\\u135F\\x03\\u1365\\x03\\u1368\\x03\\u136E\" +\r\n\t\t\"\\x03\\u1372\\x03\\u1376\\x03\\u1402\\x03\\u144C\\x03\\u1452\\x03\\u145B\\x03\\u1482\" +\r\n\t\t\"\\x03\\u14C7\\x03\\u14C9\\x03\\u14C9\\x03\\u14D2\\x03\\u14DB\\x03\\u1582\\x03\\u15B7\" +\r\n\t\t\"\\x03\\u15BA\\x03\\u15C2\\x03\\u15DA\\x03\\u15DF\\x03\\u1602\\x03\\u1642\\x03\\u1646\" +\r\n\t\t\"\\x03\\u1646\\x03\\u1652\\x03\\u165B\\x03\\u1682\\x03\\u16B9\\x03\\u16C2\\x03\\u16CB\" +\r\n\t\t\"\\x03\\u1702\\x03\\u171B\\x03\\u171F\\x03\\u172D\\x03\\u1732\\x03\\u173B\\x03\\u18A2\" +\r\n\t\t\"\\x03\\u18EB\\x03\\u1901\\x03\\u1901\\x03\\u1AC2\\x03\\u1AFA\\x03\\u1C02\\x03\\u1C0A\" +\r\n\t\t\"\\x03\\u1C0C\\x03\\u1C38\\x03\\u1C3A\\x03\\u1C42\\x03\\u1C52\\x03\\u1C5B\\x03\\u1C74\" +\r\n\t\t\"\\x03\\u1C91\\x03\\u1C94\\x03\\u1CA9\\x03\\u1CAB\\x03\\u1CB8\\x03\\u2002\\x03\\u239B\" +\r\n\t\t\"\\x03\\u2402\\x03\\u2470\\x03\\u2482\\x03\\u2545\\x03\\u3002\\x03\\u3430\\x03\\u4402\" +\r\n\t\t\"\\x03\\u4648\\x03\\u6802\\x03\\u6A3A\\x03\\u6A42\\x03\\u6A60\\x03\\u6A62\\x03\\u6A6B\" +\r\n\t\t\"\\x03\\u6AD2\\x03\\u6AEF\\x03\\u6AF2\\x03\\u6AF6\\x03\\u6B02\\x03\\u6B38\\x03\\u6B42\" +\r\n\t\t\"\\x03\\u6B45\\x03\\u6B52\\x03\\u6B5B\\x03\\u6B65\\x03\\u6B79\\x03\\u6B7F\\x03\\u6B91\" +\r\n\t\t\"\\x03\\u6F02\\x03\\u6F46\\x03\\u6F52\\x03\\u6F80\\x03\\u6F91\\x03\\u6FA1\\x03\\u6FE2\" +\r\n\t\t\"\\x03\\u6FE2\\x03\\u7002\\x03\\u87EE\\x03\\u8802\\x03\\u8AF4\\x03\\uB002\\x03\\uB003\" +\r\n\t\t\"\\x03\\uBC02\\x03\\uBC6C\\x03\\uBC72\\x03\\uBC7E\\x03\\uBC82\\x03\\uBC8A\\x03\\uBC92\" +\r\n\t\t\"\\x03\\uBC9B\\x03\\uBC9F\\x03\\uBCA0\\x03\\uBCA2\\x03\\uBCA5\\x03\\uD167\\x03\\uD16B\" +\r\n\t\t\"\\x03\\uD16F\\x03\\uD184\\x03\\uD187\\x03\\uD18D\\x03\\uD1AC\\x03\\uD1AF\\x03\\uD244\" +\r\n\t\t\"\\x03\\uD246\\x03\\uD402\\x03\\uD456\\x03\\uD458\\x03\\uD49E\\x03\\uD4A0\\x03\\uD4A1\" +\r\n\t\t\"\\x03\\uD4A4\\x03\\uD4A4\\x03\\uD4A7\\x03\\uD4A8\\x03\\uD4AB\\x03\\uD4AE\\x03\\uD4B0\" +\r\n\t\t\"\\x03\\uD4BB\\x03\\uD4BD\\x03\\uD4BD\\x03\\uD4BF\\x03\\uD4C5\\x03\\uD4C7\\x03\\uD507\" +\r\n\t\t\"\\x03\\uD509\\x03\\uD50C\\x03\\uD50F\\x03\\uD516\\x03\\uD518\\x03\\uD51E\\x03\\uD520\" +\r\n\t\t\"\\x03\\uD53B\\x03\\uD53D\\x03\\uD540\\x03\\uD542\\x03\\uD546\\x03\\uD548\\x03\\uD548\" +\r\n\t\t\"\\x03\\uD54C\\x03\\uD552\\x03\\uD554\\x03\\uD6A7\\x03\\uD6AA\\x03\\uD6C2\\x03\\uD6C4\" +\r\n\t\t\"\\x03\\uD6DC\\x03\\uD6DE\\x03\\uD6FC\\x03\\uD6FE\\x03\\uD716\\x03\\uD718\\x03\\uD736\" +\r\n\t\t\"\\x03\\uD738\\x03\\uD750\\x03\\uD752\\x03\\uD770\\x03\\uD772\\x03\\uD78A\\x03\\uD78C\" +\r\n\t\t\"\\x03\\uD7AA\\x03\\uD7AC\\x03\\uD7C4\\x03\\uD7C6\\x03\\uD7CD\\x03\\uD7D0\\x03\\uD801\" +\r\n\t\t\"\\x03\\uDA02\\x03\\uDA38\\x03\\uDA3D\\x03\\uDA6E\\x03\\uDA77\\x03\\uDA77\\x03\\uDA86\" +\r\n\t\t\"\\x03\\uDA86\\x03\\uDA9D\\x03\\uDAA1\\x03\\uDAA3\\x03\\uDAB1\\x03\\uE002\\x03\\uE008\" +\r\n\t\t\"\\x03\\uE00A\\x03\\uE01A\\x03\\uE01D\\x03\\uE023\\x03\\uE025\\x03\\uE026\\x03\\uE028\" +\r\n\t\t\"\\x03\\uE02C\\x03\\uE802\\x03\\uE8C6\\x03\\uE8D2\\x03\\uE8D8\\x03\\uE902\\x03\\uE94C\" +\r\n\t\t\"\\x03\\uE952\\x03\\uE95B\\x03\\uEE02\\x03\\uEE05\\x03\\uEE07\\x03\\uEE21\\x03\\uEE23\" +\r\n\t\t\"\\x03\\uEE24\\x03\\uEE26\\x03\\uEE26\\x03\\uEE29\\x03\\uEE29\\x03\\uEE2B\\x03\\uEE34\" +\r\n\t\t\"\\x03\\uEE36\\x03\\uEE39\\x03\\uEE3B\\x03\\uEE3B\\x03\\uEE3D\\x03\\uEE3D\\x03\\uEE44\" +\r\n\t\t\"\\x03\\uEE44\\x03\\uEE49\\x03\\uEE49\\x03\\uEE4B\\x03\\uEE4B\\x03\\uEE4D\\x03\\uEE4D\" +\r\n\t\t\"\\x03\\uEE4F\\x03\\uEE51\\x03\\uEE53\\x03\\uEE54\\x03\\uEE56\\x03\\uEE56\\x03\\uEE59\" +\r\n\t\t\"\\x03\\uEE59\\x03\\uEE5B\\x03\\uEE5B\\x03\\uEE5D\\x03\\uEE5D\\x03\\uEE5F\\x03\\uEE5F\" +\r\n\t\t\"\\x03\\uEE61\\x03\\uEE61\\x03\\uEE63\\x03\\uEE64\\x03\\uEE66\\x03\\uEE66\\x03\\uEE69\" +\r\n\t\t\"\\x03\\uEE6C\\x03\\uEE6E\\x03\\uEE74\\x03\\uEE76\\x03\\uEE79\\x03\\uEE7B\\x03\\uEE7E\" +\r\n\t\t\"\\x03\\uEE80\\x03\\uEE80\\x03\\uEE82\\x03\\uEE8B\\x03\\uEE8D\\x03\\uEE9D\\x03\\uEEA3\" +\r\n\t\t\"\\x03\\uEEA5\\x03\\uEEA7\\x03\\uEEAB\\x03\\uEEAD\\x03\\uEEBD\\x03\\x02\\x04\\uA6D8\\x04\" +\r\n\t\t\"\\uA702\\x04\\uB736\\x04\\uB742\\x04\\uB81F\\x04\\uB822\\x04\\uCEA3\\x04\\uF802\\x04\" +\r\n\t\t\"\\uFA1F\\x04\\x03\\x10\\x03\\x10\\\"\\x10\\x81\\x10\\u0102\\x10\\u01F1\\x10\\u0240\\x02\" +\r\n\t\t\"C\\x02\\\\\\x02c\\x02|\\x02\\xAC\\x02\\xAC\\x02\\xB7\\x02\\xB7\\x02\\xBC\\x02\\xBC\\x02\" +\r\n\t\t\"\\xC2\\x02\\xD8\\x02\\xDA\\x02\\xF8\\x02\\xFA\\x02\\u02C3\\x02\\u02C8\\x02\\u02D3\\x02\" +\r\n\t\t\"\\u02E2\\x02\\u02E6\\x02\\u02EE\\x02\\u02EE\\x02\\u02F0\\x02\\u02F0\\x02\\u0372\\x02\" +\r\n\t\t\"\\u0376\\x02\\u0378\\x02\\u0379\\x02\\u037C\\x02\\u037F\\x02\\u0381\\x02\\u0381\\x02\" +\r\n\t\t\"\\u0388\\x02\\u0388\\x02\\u038A\\x02\\u038C\\x02\\u038E\\x02\\u038E\\x02\\u0390\\x02\" +\r\n\t\t\"\\u03A3\\x02\\u03A5\\x02\\u03F7\\x02\\u03F9\\x02\\u0483\\x02\\u048C\\x02\\u0531\\x02\" +\r\n\t\t\"\\u0533\\x02\\u0558\\x02\\u055B\\x02\\u055B\\x02\\u0563\\x02\\u0589\\x02\\u05D2\\x02\" +\r\n\t\t\"\\u05EC\\x02\\u05F2\\x02\\u05F4\\x02\\u0622\\x02\\u064C\\x02\\u0670\\x02\\u0671\\x02\" +\r\n\t\t\"\\u0673\\x02\\u06D5\\x02\\u06D7\\x02\\u06D7\\x02\\u06E7\\x02\\u06E8\\x02\\u06F0\\x02\" +\r\n\t\t\"\\u06F1\\x02\\u06FC\\x02\\u06FE\\x02\\u0701\\x02\\u0701\\x02\\u0712\\x02\\u0712\\x02\" +\r\n\t\t\"\\u0714\\x02\\u0731\\x02\\u074F\\x02\\u07A7\\x02\\u07B3\\x02\\u07B3\\x02\\u07CC\\x02\" +\r\n\t\t\"\\u07EC\\x02\\u07F6\\x02\\u07F7\\x02\\u07FC\\x02\\u07FC\\x02\\u0802\\x02\\u0817\\x02\" +\r\n\t\t\"\\u081C\\x02\\u081C\\x02\\u0826\\x02\\u0826\\x02\\u082A\\x02\\u082A\\x02\\u0842\\x02\" +\r\n\t\t\"\\u085A\\x02\\u08A2\\x02\\u08B6\\x02\\u08B8\\x02\\u08BF\\x02\\u0906\\x02\\u093B\\x02\" +\r\n\t\t\"\\u093F\\x02\\u093F\\x02\\u0952\\x02\\u0952\\x02\\u095A\\x02\\u0963\\x02\\u0973\\x02\" +\r\n\t\t\"\\u0982\\x02\\u0987\\x02\\u098E\\x02\\u0991\\x02\\u0992\\x02\\u0995\\x02\\u09AA\\x02\" +\r\n\t\t\"\\u09AC\\x02\\u09B2\\x02\\u09B4\\x02\\u09B4\\x02\\u09B8\\x02\\u09BB\\x02\\u09BF\\x02\" +\r\n\t\t\"\\u09BF\\x02\\u09D0\\x02\\u09D0\\x02\\u09DE\\x02\\u09DF\\x02\\u09E1\\x02\\u09E3\\x02\" +\r\n\t\t\"\\u09F2\\x02\\u09F3\\x02\\u0A07\\x02\\u0A0C\\x02\\u0A11\\x02\\u0A12\\x02\\u0A15\\x02\" +\r\n\t\t\"\\u0A2A\\x02\\u0A2C\\x02\\u0A32\\x02\\u0A34\\x02\\u0A35\\x02\\u0A37\\x02\\u0A38\\x02\" +\r\n\t\t\"\\u0A3A\\x02\\u0A3B\\x02\\u0A5B\\x02\\u0A5E\\x02\\u0A60\\x02\\u0A60\\x02\\u0A74\\x02\" +\r\n\t\t\"\\u0A76\\x02\\u0A87\\x02\\u0A8F\\x02\\u0A91\\x02\\u0A93\\x02\\u0A95\\x02\\u0AAA\\x02\" +\r\n\t\t\"\\u0AAC\\x02\\u0AB2\\x02\\u0AB4\\x02\\u0AB5\\x02\\u0AB7\\x02\\u0ABB\\x02\\u0ABF\\x02\" +\r\n\t\t\"\\u0ABF\\x02\\u0AD2\\x02\\u0AD2\\x02\\u0AE2\\x02\\u0AE3\\x02\\u0AFB\\x02\\u0AFB\\x02\" +\r\n\t\t\"\\u0B07\\x02\\u0B0E\\x02\\u0B11\\x02\\u0B12\\x02\\u0B15\\x02\\u0B2A\\x02\\u0B2C\\x02\" +\r\n\t\t\"\\u0B32\\x02\\u0B34\\x02\\u0B35\\x02\\u0B37\\x02\\u0B3B\\x02\\u0B3F\\x02\\u0B3F\\x02\" +\r\n\t\t\"\\u0B5E\\x02\\u0B5F\\x02\\u0B61\\x02\\u0B63\\x02\\u0B73\\x02\\u0B73\\x02\\u0B85\\x02\" +\r\n\t\t\"\\u0B85\\x02\\u0B87\\x02\\u0B8C\\x02\\u0B90\\x02\\u0B92\\x02\\u0B94\\x02\\u0B97\\x02\" +\r\n\t\t\"\\u0B9B\\x02\\u0B9C\\x02\\u0B9E\\x02\\u0B9E\\x02\\u0BA0\\x02\\u0BA1\\x02\\u0BA5\\x02\" +\r\n\t\t\"\\u0BA6\\x02\\u0BAA\\x02\\u0BAC\\x02\\u0BB0\\x02\\u0BBB\\x02\\u0BD2\\x02\\u0BD2\\x02\" +\r\n\t\t\"\\u0C07\\x02\\u0C0E\\x02\\u0C10\\x02\\u0C12\\x02\\u0C14\\x02\\u0C2A\\x02\\u0C2C\\x02\" +\r\n\t\t\"\\u0C3B\\x02\\u0C3F\\x02\\u0C3F\\x02\\u0C5A\\x02\\u0C5C\\x02\\u0C62\\x02\\u0C63\\x02\" +\r\n\t\t\"\\u0C82\\x02\\u0C82\\x02\\u0C87\\x02\\u0C8E\\x02\\u0C90\\x02\\u0C92\\x02\\u0C94\\x02\" +\r\n\t\t\"\\u0CAA\\x02\\u0CAC\\x02\\u0CB5\\x02\\u0CB7\\x02\\u0CBB\\x02\\u0CBF\\x02\\u0CBF\\x02\" +\r\n\t\t\"\\u0CE0\\x02\\u0CE0\\x02\\u0CE2\\x02\\u0CE3\\x02\\u0CF3\\x02\\u0CF4\\x02\\u0D07\\x02\" +\r\n\t\t\"\\u0D0E\\x02\\u0D10\\x02\\u0D12\\x02\\u0D14\\x02\\u0D3C\\x02\\u0D3F\\x02\\u0D3F\\x02\" +\r\n\t\t\"\\u0D50\\x02\\u0D50\\x02\\u0D56\\x02\\u0D58\\x02\\u0D61\\x02\\u0D63\\x02\\u0D7C\\x02\" +\r\n\t\t\"\\u0D81\\x02\\u0D87\\x02\\u0D98\\x02\\u0D9C\\x02\\u0DB3\\x02\\u0DB5\\x02\\u0DBD\\x02\" +\r\n\t\t\"\\u0DBF\\x02\\u0DBF\\x02\\u0DC2\\x02\\u0DC8\\x02\\u0E03\\x02\\u0E32\\x02\\u0E34\\x02\" +\r\n\t\t\"\\u0E35\\x02\\u0E42\\x02\\u0E48\\x02\\u0E83\\x02\\u0E84\\x02\\u0E86\\x02\\u0E86\\x02\" +\r\n\t\t\"\\u0E89\\x02\\u0E8A\\x02\\u0E8C\\x02\\u0E8C\\x02\\u0E8F\\x02\\u0E8F\\x02\\u0E96\\x02\" +\r\n\t\t\"\\u0E99\\x02\\u0E9B\\x02\\u0EA1\\x02\\u0EA3\\x02\\u0EA5\\x02\\u0EA7\\x02\\u0EA7\\x02\" +\r\n\t\t\"\\u0EA9\\x02\\u0EA9\\x02\\u0EAC\\x02\\u0EAD\\x02\\u0EAF\\x02\\u0EB2\\x02\\u0EB4\\x02\" +\r\n\t\t\"\\u0EB5\\x02\\u0EBF\\x02\\u0EBF\\x02\\u0EC2\\x02\\u0EC6\\x02\\u0EC8\\x02\\u0EC8\\x02\" +\r\n\t\t\"\\u0EDE\\x02\\u0EE1\\x02\\u0F02\\x02\\u0F02\\x02\\u0F42\\x02\\u0F49\\x02\\u0F4B\\x02\" +\r\n\t\t\"\\u0F6E\\x02\\u0F8A\\x02\\u0F8E\\x02\\u1002\\x02\\u102C\\x02\\u1041\\x02\\u1041\\x02\" +\r\n\t\t\"\\u1052\\x02\\u1057\\x02\\u105C\\x02\\u105F\\x02\\u1063\\x02\\u1063\\x02\\u1067\\x02\" +\r\n\t\t\"\\u1068\\x02\\u1070\\x02\\u1072\\x02\\u1077\\x02\\u1083\\x02\\u1090\\x02\\u1090\\x02\" +\r\n\t\t\"\\u10A2\\x02\\u10C7\\x02\\u10C9\\x02\\u10C9\\x02\\u10CF\\x02\\u10CF\\x02\\u10D2\\x02\" +\r\n\t\t\"\\u10FC\\x02\\u10FE\\x02\\u124A\\x02\\u124C\\x02\\u124F\\x02\\u1252\\x02\\u1258\\x02\" +\r\n\t\t\"\\u125A\\x02\\u125A\\x02\\u125C\\x02\\u125F\\x02\\u1262\\x02\\u128A\\x02\\u128C\\x02\" +\r\n\t\t\"\\u128F\\x02\\u1292\\x02\\u12B2\\x02\\u12B4\\x02\\u12B7\\x02\\u12BA\\x02\\u12C0\\x02\" +\r\n\t\t\"\\u12C2\\x02\\u12C2\\x02\\u12C4\\x02\\u12C7\\x02\\u12CA\\x02\\u12D8\\x02\\u12DA\\x02\" +\r\n\t\t\"\\u1312\\x02\\u1314\\x02\\u1317\\x02\\u131A\\x02\\u135C\\x02\\u1382\\x02\\u1391\\x02\" +\r\n\t\t\"\\u13A2\\x02\\u13F7\\x02\\u13FA\\x02\\u13FF\\x02\\u1403\\x02\\u166E\\x02\\u1671\\x02\" +\r\n\t\t\"\\u1681\\x02\\u1683\\x02\\u169C\\x02\\u16A2\\x02\\u16EC\\x02\\u16F0\\x02\\u16FA\\x02\" +\r\n\t\t\"\\u1702\\x02\\u170E\\x02\\u1710\\x02\\u1713\\x02\\u1722\\x02\\u1733\\x02\\u1742\\x02\" +\r\n\t\t\"\\u1753\\x02\\u1762\\x02\\u176E\\x02\\u1770\\x02\\u1772\\x02\\u1782\\x02\\u17B5\\x02\" +\r\n\t\t\"\\u17D9\\x02\\u17D9\\x02\\u17DE\\x02\\u17DE\\x02\\u1822\\x02\\u1879\\x02\\u1882\\x02\" +\r\n\t\t\"\\u1886\\x02\\u1889\\x02\\u18AA\\x02\\u18AC\\x02\\u18AC\\x02\\u18B2\\x02\\u18F7\\x02\" +\r\n\t\t\"\\u1902\\x02\\u1920\\x02\\u1952\\x02\\u196F\\x02\\u1972\\x02\\u1976\\x02\\u1982\\x02\" +\r\n\t\t\"\\u19AD\\x02\\u19B2\\x02\\u19CB\\x02\\u1A02\\x02\\u1A18\\x02\\u1A22\\x02\\u1A56\\x02\" +\r\n\t\t\"\\u1AA9\\x02\\u1AA9\\x02\\u1B07\\x02\\u1B35\\x02\\u1B47\\x02\\u1B4D\\x02\\u1B85\\x02\" +\r\n\t\t\"\\u1BA2\\x02\\u1BB0\\x02\\u1BB1\\x02\\u1BBC\\x02\\u1BE7\\x02\\u1C02\\x02\\u1C25\\x02\" +\r\n\t\t\"\\u1C4F\\x02\\u1C51\\x02\\u1C5C\\x02\\u1C7F\\x02\\u1C82\\x02\\u1C8A\\x02\\u1CEB\\x02\" +\r\n\t\t\"\\u1CEE\\x02\\u1CF0\\x02\\u1CF3\\x02\\u1CF7\\x02\\u1CF8\\x02\\u1D02\\x02\\u1DC1\\x02\" +\r\n\t\t\"\\u1E02\\x02\\u1F17\\x02\\u1F1A\\x02\\u1F1F\\x02\\u1F22\\x02\\u1F47\\x02\\u1F4A\\x02\" +\r\n\t\t\"\\u1F4F\\x02\\u1F52\\x02\\u1F59\\x02\\u1F5B\\x02\\u1F5B\\x02\\u1F5D\\x02\\u1F5D\\x02\" +\r\n\t\t\"\\u1F5F\\x02\\u1F5F\\x02\\u1F61\\x02\\u1F7F\\x02\\u1F82\\x02\\u1FB6\\x02\\u1FB8\\x02\" +\r\n\t\t\"\\u1FBE\\x02\\u1FC0\\x02\\u1FC0\\x02\\u1FC4\\x02\\u1FC6\\x02\\u1FC8\\x02\\u1FCE\\x02\" +\r\n\t\t\"\\u1FD2\\x02\\u1FD5\\x02\\u1FD8\\x02\\u1FDD\\x02\\u1FE2\\x02\\u1FEE\\x02\\u1FF4\\x02\" +\r\n\t\t\"\\u1FF6\\x02\\u1FF8\\x02\\u1FFE\\x02\\u2073\\x02\\u2073\\x02\\u2081\\x02\\u2081\\x02\" +\r\n\t\t\"\\u2092\\x02\\u209E\\x02\\u2104\\x02\\u2104\\x02\\u2109\\x02\\u2109\\x02\\u210C\\x02\" +\r\n\t\t\"\\u2115\\x02\\u2117\\x02\\u2117\\x02\\u211B\\x02\\u211F\\x02\\u2126\\x02\\u2126\\x02\" +\r\n\t\t\"\\u2128\\x02\\u2128\\x02\\u212A\\x02\\u212A\\x02\\u212C\\x02\\u212F\\x02\\u2131\\x02\" +\r\n\t\t\"\\u213B\\x02\\u213E\\x02\\u2141\\x02\\u2147\\x02\\u214B\\x02\\u2150\\x02\\u2150\\x02\" +\r\n\t\t\"\\u2162\\x02\\u218A\\x02\\u2C02\\x02\\u2C30\\x02\\u2C32\\x02\\u2C60\\x02\\u2C62\\x02\" +\r\n\t\t\"\\u2CE6\\x02\\u2CED\\x02\\u2CF0\\x02\\u2CF4\\x02\\u2CF5\\x02\\u2D02\\x02\\u2D27\\x02\" +\r\n\t\t\"\\u2D29\\x02\\u2D29\\x02\\u2D2F\\x02\\u2D2F\\x02\\u2D32\\x02\\u2D69\\x02\\u2D71\\x02\" +\r\n\t\t\"\\u2D71\\x02\\u2D82\\x02\\u2D98\\x02\\u2DA2\\x02\\u2DA8\\x02\\u2DAA\\x02\\u2DB0\\x02\" +\r\n\t\t\"\\u2DB2\\x02\\u2DB8\\x02\\u2DBA\\x02\\u2DC0\\x02\\u2DC2\\x02\\u2DC8\\x02\\u2DCA\\x02\" +\r\n\t\t\"\\u2DD0\\x02\\u2DD2\\x02\\u2DD8\\x02\\u2DDA\\x02\\u2DE0\\x02\\u2E31\\x02\\u2E31\\x02\" +\r\n\t\t\"\\u3007\\x02\\u3009\\x02\\u3023\\x02\\u302B\\x02\\u3033\\x02\\u3037\\x02\\u303A\\x02\" +\r\n\t\t\"\\u303E\\x02\\u3043\\x02\\u3098\\x02\\u309F\\x02\\u30A1\\x02\\u30A3\\x02\\u30FC\\x02\" +\r\n\t\t\"\\u30FE\\x02\\u3101\\x02\\u3107\\x02\\u312F\\x02\\u3133\\x02\\u3190\\x02\\u31A2\\x02\" +\r\n\t\t\"\\u31BC\\x02\\u31F2\\x02\\u3201\\x02\\u3402\\x02\\u4DB7\\x02\\u4E02\\x02\\u9FD7\\x02\" +\r\n\t\t\"\\uA002\\x02\\uA48E\\x02\\uA4D2\\x02\\uA4FF\\x02\\uA502\\x02\\uA60E\\x02\\uA612\\x02\" +\r\n\t\t\"\\uA621\\x02\\uA62C\\x02\\uA62D\\x02\\uA642\\x02\\uA670\\x02\\uA681\\x02\\uA69F\\x02\" +\r\n\t\t\"\\uA6A2\\x02\\uA6F1\\x02\\uA719\\x02\\uA721\\x02\\uA724\\x02\\uA78A\\x02\\uA78D\\x02\" +\r\n\t\t\"\\uA7B0\\x02\\uA7B2\\x02\\uA7B9\\x02\\uA7F9\\x02\\uA803\\x02\\uA805\\x02\\uA807\\x02\" +\r\n\t\t\"\\uA809\\x02\\uA80C\\x02\\uA80E\\x02\\uA824\\x02\\uA842\\x02\\uA875\\x02\\uA884\\x02\" +\r\n\t\t\"\\uA8B5\\x02\\uA8F4\\x02\\uA8F9\\x02\\uA8FD\\x02\\uA8FD\\x02\\uA8FF\\x02\\uA8FF\\x02\" +\r\n\t\t\"\\uA90C\\x02\\uA927\\x02\\uA932\\x02\\uA948\\x02\\uA962\\x02\\uA97E\\x02\\uA986\\x02\" +\r\n\t\t\"\\uA9B4\\x02\\uA9D1\\x02\\uA9D1\\x02\\uA9E2\\x02\\uA9E6\\x02\\uA9E8\\x02\\uA9F1\\x02\" +\r\n\t\t\"\\uA9FC\\x02\\uAA00\\x02\\uAA02\\x02\\uAA2A\\x02\\uAA42\\x02\\uAA44\\x02\\uAA46\\x02\" +\r\n\t\t\"\\uAA4D\\x02\\uAA62\\x02\\uAA78\\x02\\uAA7C\\x02\\uAA7C\\x02\\uAA80\\x02\\uAAB1\\x02\" +\r\n\t\t\"\\uAAB3\\x02\\uAAB3\\x02\\uAAB7\\x02\\uAAB8\\x02\\uAABB\\x02\\uAABF\\x02\\uAAC2\\x02\" +\r\n\t\t\"\\uAAC2\\x02\\uAAC4\\x02\\uAAC4\\x02\\uAADD\\x02\\uAADF\\x02\\uAAE2\\x02\\uAAEC\\x02\" +\r\n\t\t\"\\uAAF4\\x02\\uAAF6\\x02\\uAB03\\x02\\uAB08\\x02\\uAB0B\\x02\\uAB10\\x02\\uAB13\\x02\" +\r\n\t\t\"\\uAB18\\x02\\uAB22\\x02\\uAB28\\x02\\uAB2A\\x02\\uAB30\\x02\\uAB32\\x02\\uAB5C\\x02\" +\r\n\t\t\"\\uAB5E\\x02\\uAB67\\x02\\uAB72\\x02\\uABE4\\x02\\uAC02\\x02\\uD7A5\\x02\\uD7B2\\x02\" +\r\n\t\t\"\\uD7C8\\x02\\uD7CD\\x02\\uD7FD\\x02\\uF902\\x02\\uFA6F\\x02\\uFA72\\x02\\uFADB\\x02\" +\r\n\t\t\"\\uFB02\\x02\\uFB08\\x02\\uFB15\\x02\\uFB19\\x02\\uFB1F\\x02\\uFB1F\\x02\\uFB21\\x02\" +\r\n\t\t\"\\uFB2A\\x02\\uFB2C\\x02\\uFB38\\x02\\uFB3A\\x02\\uFB3E\\x02\\uFB40\\x02\\uFB40\\x02\" +\r\n\t\t\"\\uFB42\\x02\\uFB43\\x02\\uFB45\\x02\\uFB46\\x02\\uFB48\\x02\\uFBB3\\x02\\uFBD5\\x02\" +\r\n\t\t\"\\uFD3F\\x02\\uFD52\\x02\\uFD91\\x02\\uFD94\\x02\\uFDC9\\x02\\uFDF2\\x02\\uFDFD\\x02\" +\r\n\t\t\"\\uFE72\\x02\\uFE76\\x02\\uFE78\\x02\\uFEFE\\x02\\uFF23\\x02\\uFF3C\\x02\\uFF43\\x02\" +\r\n\t\t\"\\uFF5C\\x02\\uFF68\\x02\\uFFC0\\x02\\uFFC4\\x02\\uFFC9\\x02\\uFFCC\\x02\\uFFD1\\x02\" +\r\n\t\t\"\\uFFD4\\x02\\uFFD9\\x02\\uFFDC\\x02\\uFFDE\\x02\\x02\\x03\\r\\x03\\x0F\\x03(\\x03*\\x03\" +\r\n\t\t\"<\\x03>\\x03?\\x03A\\x03O\\x03R\\x03_\\x03\\x82\\x03\\xFC\\x03\\u0142\\x03\\u0176\\x03\" +\r\n\t\t\"\\u0282\\x03\\u029E\\x03\\u02A2\\x03\\u02D2\\x03\\u0302\\x03\\u0321\\x03\\u0332\\x03\" +\r\n\t\t\"\\u034C\\x03\\u0352\\x03\\u0377\\x03\\u0382\\x03\\u039F\\x03\\u03A2\\x03\\u03C5\\x03\" +\r\n\t\t\"\\u03CA\\x03\\u03D1\\x03\\u03D3\\x03\\u03D7\\x03\\u0402\\x03\\u049F\\x03\\u04B2\\x03\" +\r\n\t\t\"\\u04D5\\x03\\u04DA\\x03\\u04FD\\x03\\u0502\\x03\\u0529\\x03\\u0532\\x03\\u0565\\x03\" +\r\n\t\t\"\\u0602\\x03\\u0738\\x03\\u0742\\x03\\u0757\\x03\\u0762\\x03\\u0769\\x03\\u0802\\x03\" +\r\n\t\t\"\\u0807\\x03\\u080A\\x03\\u080A\\x03\\u080C\\x03\\u0837\\x03\\u0839\\x03\\u083A\\x03\" +\r\n\t\t\"\\u083E\\x03\\u083E\\x03\\u0841\\x03\\u0857\\x03\\u0862\\x03\\u0878\\x03\\u0882\\x03\" +\r\n\t\t\"\\u08A0\\x03\\u08E2\\x03\\u08F4\\x03\\u08F6\\x03\\u08F7\\x03\\u0902\\x03\\u0917\\x03\" +\r\n\t\t\"\\u0922\\x03\\u093B\\x03\\u0982\\x03\\u09B9\\x03\\u09C0\\x03\\u09C1\\x03\\u0A02\\x03\" +\r\n\t\t\"\\u0A02\\x03\\u0A12\\x03\\u0A15\\x03\\u0A17\\x03\\u0A19\\x03\\u0A1B\\x03\\u0A35\\x03\" +\r\n\t\t\"\\u0A62\\x03\\u0A7E\\x03\\u0A82\\x03\\u0A9E\\x03\\u0AC2\\x03\\u0AC9\\x03\\u0ACB\\x03\" +\r\n\t\t\"\\u0AE6\\x03\\u0B02\\x03\\u0B37\\x03\\u0B42\\x03\\u0B57\\x03\\u0B62\\x03\\u0B74\\x03\" +\r\n\t\t\"\\u0B82\\x03\\u0B93\\x03\\u0C02\\x03\\u0C4A\\x03\\u0C82\\x03\\u0CB4\\x03\\u0CC2\\x03\" +\r\n\t\t\"\\u0CF4\\x03\\u1005\\x03\\u1039\\x03\\u1085\\x03\\u10B1\\x03\\u10D2\\x03\\u10EA\\x03\" +\r\n\t\t\"\\u1105\\x03\\u1128\\x03\\u1152\\x03\\u1174\\x03\\u1178\\x03\\u1178\\x03\\u1185\\x03\" +\r\n\t\t\"\\u11B4\\x03\\u11C3\\x03\\u11C6\\x03\\u11DC\\x03\\u11DC\\x03\\u11DE\\x03\\u11DE\\x03\" +\r\n\t\t\"\\u1202\\x03\\u1213\\x03\\u1215\\x03\\u122D\\x03\\u1282\\x03\\u1288\\x03\\u128A\\x03\" +\r\n\t\t\"\\u128A\\x03\\u128C\\x03\\u128F\\x03\\u1291\\x03\\u129F\\x03\\u12A1\\x03\\u12AA\\x03\" +\r\n\t\t\"\\u12B2\\x03\\u12E0\\x03\\u1307\\x03\\u130E\\x03\\u1311\\x03\\u1312\\x03\\u1315\\x03\" +\r\n\t\t\"\\u132A\\x03\\u132C\\x03\\u1332\\x03\\u1334\\x03\\u1335\\x03\\u1337\\x03\\u133B\\x03\" +\r\n\t\t\"\\u133F\\x03\\u133F\\x03\\u1352\\x03\\u1352\\x03\\u135F\\x03\\u1363\\x03\\u1402\\x03\" +\r\n\t\t\"\\u1436\\x03\\u1449\\x03\\u144C\\x03\\u1482\\x03\\u14B1\\x03\\u14C6\\x03\\u14C7\\x03\" +\r\n\t\t\"\\u14C9\\x03\\u14C9\\x03\\u1582\\x03\\u15B0\\x03\\u15DA\\x03\\u15DD\\x03\\u1602\\x03\" +\r\n\t\t\"\\u1631\\x03\\u1646\\x03\\u1646\\x03\\u1682\\x03\\u16AC\\x03\\u1702\\x03\\u171B\\x03\" +\r\n\t\t\"\\u18A2\\x03\\u18E1\\x03\\u1901\\x03\\u1901\\x03\\u1AC2\\x03\\u1AFA\\x03\\u1C02\\x03\" +\r\n\t\t\"\\u1C0A\\x03\\u1C0C\\x03\\u1C30\\x03\\u1C42\\x03\\u1C42\\x03\\u1C74\\x03\\u1C91\\x03\" +\r\n\t\t\"\\u2002\\x03\\u239B\\x03\\u2402\\x03\\u2470\\x03\\u2482\\x03\\u2545\\x03\\u3002\\x03\" +\r\n\t\t\"\\u3430\\x03\\u4402\\x03\\u4648\\x03\\u6802\\x03\\u6A3A\\x03\\u6A42\\x03\\u6A60\\x03\" +\r\n\t\t\"\\u6AD2\\x03\\u6AEF\\x03\\u6B02\\x03\\u6B31\\x03\\u6B42\\x03\\u6B45\\x03\\u6B65\\x03\" +\r\n\t\t\"\\u6B79\\x03\\u6B7F\\x03\\u6B91\\x03\\u6F02\\x03\\u6F46\\x03\\u6F52\\x03\\u6F52\\x03\" +\r\n\t\t\"\\u6F95\\x03\\u6FA1\\x03\\u6FE2\\x03\\u6FE2\\x03\\u7002\\x03\\u87EE\\x03\\u8802\\x03\" +\r\n\t\t\"\\u8AF4\\x03\\uB002\\x03\\uB003\\x03\\uBC02\\x03\\uBC6C\\x03\\uBC72\\x03\\uBC7E\\x03\" +\r\n\t\t\"\\uBC82\\x03\\uBC8A\\x03\\uBC92\\x03\\uBC9B\\x03\\uD402\\x03\\uD456\\x03\\uD458\\x03\" +\r\n\t\t\"\\uD49E\\x03\\uD4A0\\x03\\uD4A1\\x03\\uD4A4\\x03\\uD4A4\\x03\\uD4A7\\x03\\uD4A8\\x03\" +\r\n\t\t\"\\uD4AB\\x03\\uD4AE\\x03\\uD4B0\\x03\\uD4BB\\x03\\uD4BD\\x03\\uD4BD\\x03\\uD4BF\\x03\" +\r\n\t\t\"\\uD4C5\\x03\\uD4C7\\x03\\uD507\\x03\\uD509\\x03\\uD50C\\x03\\uD50F\\x03\\uD516\\x03\" +\r\n\t\t\"\\uD518\\x03\\uD51E\\x03\\uD520\\x03\\uD53B\\x03\\uD53D\\x03\\uD540\\x03\\uD542\\x03\" +\r\n\t\t\"\\uD546\\x03\\uD548\\x03\\uD548\";\r\n\tprivate static readonly _serializedATNSegment1: string =\r\n\t\t\"\\x03\\uD54C\\x03\\uD552\\x03\\uD554\\x03\\uD6A7\\x03\\uD6AA\\x03\\uD6C2\\x03\\uD6C4\" +\r\n\t\t\"\\x03\\uD6DC\\x03\\uD6DE\\x03\\uD6FC\\x03\\uD6FE\\x03\\uD716\\x03\\uD718\\x03\\uD736\" +\r\n\t\t\"\\x03\\uD738\\x03\\uD750\\x03\\uD752\\x03\\uD770\\x03\\uD772\\x03\\uD78A\\x03\\uD78C\" +\r\n\t\t\"\\x03\\uD7AA\\x03\\uD7AC\\x03\\uD7C4\\x03\\uD7C6\\x03\\uD7CD\\x03\\uE802\\x03\\uE8C6\" +\r\n\t\t\"\\x03\\uE902\\x03\\uE945\\x03\\uEE02\\x03\\uEE05\\x03\\uEE07\\x03\\uEE21\\x03\\uEE23\" +\r\n\t\t\"\\x03\\uEE24\\x03\\uEE26\\x03\\uEE26\\x03\\uEE29\\x03\\uEE29\\x03\\uEE2B\\x03\\uEE34\" +\r\n\t\t\"\\x03\\uEE36\\x03\\uEE39\\x03\\uEE3B\\x03\\uEE3B\\x03\\uEE3D\\x03\\uEE3D\\x03\\uEE44\" +\r\n\t\t\"\\x03\\uEE44\\x03\\uEE49\\x03\\uEE49\\x03\\uEE4B\\x03\\uEE4B\\x03\\uEE4D\\x03\\uEE4D\" +\r\n\t\t\"\\x03\\uEE4F\\x03\\uEE51\\x03\\uEE53\\x03\\uEE54\\x03\\uEE56\\x03\\uEE56\\x03\\uEE59\" +\r\n\t\t\"\\x03\\uEE59\\x03\\uEE5B\\x03\\uEE5B\\x03\\uEE5D\\x03\\uEE5D\\x03\\uEE5F\\x03\\uEE5F\" +\r\n\t\t\"\\x03\\uEE61\\x03\\uEE61\\x03\\uEE63\\x03\\uEE64\\x03\\uEE66\\x03\\uEE66\\x03\\uEE69\" +\r\n\t\t\"\\x03\\uEE6C\\x03\\uEE6E\\x03\\uEE74\\x03\\uEE76\\x03\\uEE79\\x03\\uEE7B\\x03\\uEE7E\" +\r\n\t\t\"\\x03\\uEE80\\x03\\uEE80\\x03\\uEE82\\x03\\uEE8B\\x03\\uEE8D\\x03\\uEE9D\\x03\\uEEA3\" +\r\n\t\t\"\\x03\\uEEA5\\x03\\uEEA7\\x03\\uEEAB\\x03\\uEEAD\\x03\\uEEBD\\x03\\x02\\x04\\uA6D8\\x04\" +\r\n\t\t\"\\uA702\\x04\\uB736\\x04\\uB742\\x04\\uB81F\\x04\\uB822\\x04\\uCEA3\\x04\\uF802\\x04\" +\r\n\t\t\"\\uFA1F\\x041\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x05\\x03\\x02\\x02\\x02\\x02\\x07\\x03\" +\r\n\t\t\"\\x02\\x02\\x02\\x02\\t\\x03\\x02\\x02\\x02\\x02\\v\\x03\\x02\\x02\\x02\\x02\\x11\\x03\\x02\" +\r\n\t\t\"\\x02\\x02\\x03\\x13\\x03\\x02\\x02\\x02\\x05\\x16\\x03\\x02\\x02\\x02\\x07\\x18\\x03\\x02\" +\r\n\t\t\"\\x02\\x02\\t\\x1A\\x03\\x02\\x02\\x02\\v\\x1C\\x03\\x02\\x02\\x02\\r%\\x03\\x02\\x02\\x02\" +\r\n\t\t\"\\x0F\\'\\x03\\x02\\x02\\x02\\x11)\\x03\\x02\\x02\\x02\\x13\\x14\\x071\\x02\\x02\\x14\\x15\" +\r\n\t\t\"\\x071\\x02\\x02\\x15\\x04\\x03\\x02\\x02\\x02\\x16\\x17\\x071\\x02\\x02\\x17\\x06\\x03\" +\r\n\t\t\"\\x02\\x02\\x02\\x18\\x19\\x07,\\x02\\x02\\x19\\b\\x03\\x02\\x02\\x02\\x1A\\x1B\\x07#\\x02\" +\r\n\t\t\"\\x02\\x1B\\n\\x03\\x02\\x02\\x02\\x1C \\x05\\x0F\\b\\x02\\x1D\\x1F\\x05\\r\\x07\\x02\\x1E\" +\r\n\t\t\"\\x1D\\x03\\x02\\x02\\x02\\x1F\\\"\\x03\\x02\\x02\\x02 \\x1E\\x03\\x02\\x02\\x02 !\\x03\" +\r\n\t\t\"\\x02\\x02\\x02!#\\x03\\x02\\x02\\x02\\\" \\x03\\x02\\x02\\x02#$\\b\\x06\\x02\\x02$\\f\\x03\" +\r\n\t\t\"\\x02\\x02\\x02%&\\t\\x02\\x02\\x02&\\x0E\\x03\\x02\\x02\\x02\\'(\\t\\x03\\x02\\x02(\\x10\" +\r\n\t\t\"\\x03\\x02\\x02\\x02)-\\x07)\\x02\\x02*,\\v\\x02\\x02\\x02+*\\x03\\x02\\x02\\x02,/\\x03\" +\r\n\t\t\"\\x02\\x02\\x02-.\\x03\\x02\\x02\\x02-+\\x03\\x02\\x02\\x02.0\\x03\\x02\\x02\\x02/-\\x03\" +\r\n\t\t\"\\x02\\x02\\x0201\\x07)\\x02\\x021\\x12\\x03\\x02\\x02\\x02\\x05\\x02 -\\x03\\x03\\x06\" +\r\n\t\t\"\\x02\";\r\n\tpublic static readonly _serializedATN: string = Utils.join(\r\n\t\t[\r\n\t\t\tXPathLexer._serializedATNSegment0,\r\n\t\t\tXPathLexer._serializedATNSegment1,\r\n\t\t],\r\n\t\t\"\",\r\n\t);\r\n\tpublic static __ATN: ATN;\r\n\tpublic static get _ATN(): ATN {\r\n\t\tif (!XPathLexer.__ATN) {\r\n\t\t\tXPathLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(XPathLexer._serializedATN));\r\n\t\t}\r\n\r\n\t\treturn XPathLexer.__ATN;\r\n\t}\r\n\r\n}\r\n\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\n\r\nimport { ANTLRErrorListener } from \"../../ANTLRErrorListener\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { Recognizer } from \"../../Recognizer\";\r\nimport { RecognitionException } from \"../../RecognitionException\";\r\n\r\nexport class XPathLexerErrorListener implements ANTLRErrorListener {\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\trecognizer: Recognizer, offendingSymbol: T | undefined,\r\n\t\tline: number, charPositionInLine: number, msg: string,\r\n\t\te: RecognitionException | undefined): void {\r\n\t\t// intentionally empty\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\n\r\nexport abstract class XPathElement {\r\n\tprotected nodeName: string;\r\n\tpublic invert: boolean;\r\n\r\n\t/** Construct element like `/ID` or `ID` or `/*` etc...\r\n\t * op is null if just node\r\n\t */\r\n\tconstructor(nodeName: string) {\r\n\t\tthis.nodeName = nodeName;\r\n\t\tthis.invert = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Given tree rooted at `t` return all nodes matched by this path\r\n\t * element.\r\n\t */\r\n\tpublic abstract evaluate(t: ParseTree): ParseTree[];\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet inv: string = this.invert ? \"!\" : \"\";\r\n\t\tlet className: string = Object.constructor.name;\r\n\t\treturn className + \"[\" + inv + this.nodeName + \"]\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\n/**\r\n * Either `ID` at start of path or `...//ID` in middle of path.\r\n */\r\nexport class XPathRuleAnywhereElement extends XPathElement {\r\n\tprotected ruleIndex: number;\r\n\tconstructor(ruleName: string, ruleIndex: number) {\r\n\t\tsuper(ruleName);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\treturn Trees.findAllRuleNodes(t, this.ruleIndex);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathRuleElement extends XPathElement {\r\n\tprotected ruleIndex: number;\r\n\tconstructor(ruleName: string, ruleIndex: number) {\r\n\t\tsuper(ruleName);\r\n\t\tthis.ruleIndex = ruleIndex;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\t// return all children of t that match nodeName\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tif (c instanceof ParserRuleContext) {\r\n\t\t\t\tif ((c.ruleIndex === this.ruleIndex && !this.invert) ||\r\n\t\t\t\t\t(c.ruleIndex !== this.ruleIndex && this.invert)) {\r\n\t\t\t\t\tnodes.push(c);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathTokenAnywhereElement extends XPathElement {\r\n\tprotected tokenType: number;\r\n\tconstructor(tokenName: string, tokenType: number) {\r\n\t\tsuper(tokenName);\r\n\t\tthis.tokenType = tokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\treturn Trees.findAllTokenNodes(t, this.tokenType);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathTokenElement extends XPathElement {\r\n\tprotected tokenType: number;\r\n\tconstructor(tokenName: string, tokenType: number) {\r\n\t\tsuper(tokenName);\r\n\t\tthis.tokenType = tokenType;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\t// return all children of t that match nodeName\r\n\t\tlet nodes: ParseTree[] = [];\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tif (c instanceof TerminalNode) {\r\n\t\t\t\tif ((c.symbol.type === this.tokenType && !this.invert) ||\r\n\t\t\t\t\t(c.symbol.type !== this.tokenType && this.invert)) {\r\n\t\t\t\t\tnodes.push(c);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn nodes;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPath } from \"./XPath\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathWildcardAnywhereElement extends XPathElement {\r\n\tconstructor() {\r\n\t\tsuper(XPath.WILDCARD);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\tif (this.invert) {\r\n\t\t\t// !* is weird but valid (empty)\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn Trees.getDescendants(t);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { Override } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { Trees } from \"../Trees\";\r\nimport { XPath } from \"./XPath\";\r\nimport { XPathElement } from \"./XPathElement\";\r\n\r\nexport class XPathWildcardElement extends XPathElement {\r\n\tconstructor() {\r\n\t\tsuper(XPath.WILDCARD);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic evaluate(t: ParseTree): ParseTree[] {\r\n\t\tlet kids: ParseTree[] = [];\r\n\t\tif (this.invert) {\r\n\t\t\t// !* is weird but valid (empty)\r\n\t\t\treturn kids;\r\n\t\t}\r\n\t\tfor (let c of Trees.getChildren(t)) {\r\n\t\t\tkids.push(c);\r\n\t\t}\r\n\t\treturn kids;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.4373888-07:00\r\n\r\nimport { CharStreams } from \"../../CharStreams\";\r\nimport { CommonTokenStream } from \"../../CommonTokenStream\";\r\nimport { LexerNoViableAltException } from \"../../LexerNoViableAltException\";\r\nimport { Parser } from \"../../Parser\";\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { Token } from \"../../Token\";\r\nimport { XPathElement } from \"./XPathElement\";\r\nimport { XPathLexer } from \"./XPathLexer\";\r\nimport { XPathLexerErrorListener } from \"./XPathLexerErrorListener\";\r\nimport { XPathRuleAnywhereElement } from \"./XPathRuleAnywhereElement\";\r\nimport { XPathRuleElement } from \"./XPathRuleElement\";\r\nimport { XPathTokenAnywhereElement } from \"./XPathTokenAnywhereElement\";\r\nimport { XPathTokenElement } from \"./XPathTokenElement\";\r\nimport { XPathWildcardAnywhereElement } from \"./XPathWildcardAnywhereElement\";\r\nimport { XPathWildcardElement } from \"./XPathWildcardElement\";\r\n\r\n/**\r\n * Represent a subset of XPath XML path syntax for use in identifying nodes in\r\n * parse trees.\r\n *\r\n * Split path into words and separators `/` and `//` via ANTLR\r\n * itself then walk path elements from left to right. At each separator-word\r\n * pair, find set of nodes. Next stage uses those as work list.\r\n *\r\n * The basic interface is\r\n * {@link XPath#findAll ParseTree.findAll}`(tree, pathString, parser)`.\r\n * But that is just shorthand for:\r\n *\r\n * ```\r\n * let p = new XPath(parser, pathString);\r\n * return p.evaluate(tree);\r\n * ```\r\n *\r\n * See `TestXPath` for descriptions. In short, this\r\n * allows operators:\r\n *\r\n * | | |\r\n * | --- | --- |\r\n * | `/` | root |\r\n * | `//` | anywhere |\r\n * | `!` | invert; this much appear directly after root or anywhere operator |\r\n *\r\n * and path elements:\r\n *\r\n * | | |\r\n * | --- | --- |\r\n * | `ID` | token name |\r\n * | `'string'` | any string literal token from the grammar |\r\n * | `expr` | rule name |\r\n * | `*` | wildcard matching any node |\r\n *\r\n * Whitespace is not allowed.\r\n */\r\nexport class XPath {\r\n\tpublic static readonly WILDCARD: string = \"*\"; // word not operator/separator\r\n\tpublic static readonly NOT: string = \"!\"; \t // word for invert operator\r\n\r\n\tprotected path: string;\r\n\tprotected elements: XPathElement[];\r\n\tprotected parser: Parser;\r\n\r\n\tconstructor(parser: Parser, path: string) {\r\n\t\tthis.parser = parser;\r\n\t\tthis.path = path;\r\n\t\tthis.elements = this.split(path);\r\n\t\t// console.log(this.elements.toString());\r\n\t}\r\n\r\n\t// TODO: check for invalid token/rule names, bad syntax\r\n\r\n\tpublic split(path: string): XPathElement[] {\r\n\t\tlet lexer = new XPathLexer(CharStreams.fromString(path));\r\n\t\tlexer.recover = (e: LexerNoViableAltException) => { throw e; };\r\n\r\n\t\tlexer.removeErrorListeners();\r\n\t\tlexer.addErrorListener(new XPathLexerErrorListener());\r\n\t\tlet tokenStream = new CommonTokenStream(lexer);\r\n\t\ttry {\r\n\t\t\ttokenStream.fill();\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tif (e instanceof LexerNoViableAltException) {\r\n\t\t\t\tlet pos: number = lexer.charPositionInLine;\r\n\t\t\t\tlet msg: string = \"Invalid tokens or characters at index \" + pos + \" in path '\" + path + \"' -- \" + e.message;\r\n\t\t\t\tthrow new RangeError(msg);\r\n\t\t\t}\r\n\t\t\tthrow e;\r\n\t\t}\r\n\r\n\t\tlet tokens: Token[] = tokenStream.getTokens();\r\n\t\t// console.log(\"path=\" + path + \"=>\" + tokens);\r\n\t\tlet elements: XPathElement[] = [];\r\n\t\tlet n: number = tokens.length;\r\n\t\tlet i: number = 0;\r\n\t\tloop:\r\n\t\twhile (i < n) {\r\n\t\t\tlet el: Token = tokens[i];\r\n\t\t\tlet next: Token | undefined;\r\n\t\t\tswitch (el.type) {\r\n\t\t\t\tcase XPathLexer.ROOT:\r\n\t\t\t\tcase XPathLexer.ANYWHERE:\r\n\t\t\t\t\tlet anywhere: boolean = el.type === XPathLexer.ANYWHERE;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tnext = tokens[i];\r\n\t\t\t\t\tlet invert: boolean = next.type === XPathLexer.BANG;\r\n\t\t\t\t\tif (invert) {\r\n\t\t\t\t\t\ti++;\r\n\t\t\t\t\t\tnext = tokens[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet pathElement: XPathElement = this.getXPathElement(next, anywhere);\r\n\t\t\t\t\tpathElement.invert = invert;\r\n\t\t\t\t\telements.push(pathElement);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase XPathLexer.TOKEN_REF:\r\n\t\t\t\tcase XPathLexer.RULE_REF:\r\n\t\t\t\tcase XPathLexer.WILDCARD:\r\n\t\t\t\t\telements.push(this.getXPathElement(el, false));\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase Token.EOF:\r\n\t\t\t\t\tbreak loop;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(\"Unknowth path element \" + el);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn elements;\r\n\t}\r\n\r\n\t/**\r\n\t * Convert word like `*` or `ID` or `expr` to a path\r\n\t * element. `anywhere` is `true` if `//` precedes the\r\n\t * word.\r\n\t */\r\n\tprotected getXPathElement(wordToken: Token, anywhere: boolean): XPathElement {\r\n\t\tif (wordToken.type === Token.EOF) {\r\n\t\t\tthrow new Error(\"Missing path element at end of path\");\r\n\t\t}\r\n\r\n\t\tlet word = wordToken.text;\r\n\t\tif (word == null) {\r\n\t\t\tthrow new Error(\"Expected wordToken to have text content.\");\r\n\t\t}\r\n\r\n\t\tlet ttype: number = this.parser.getTokenType(word);\r\n\t\tlet ruleIndex: number = this.parser.getRuleIndex(word);\r\n\t\tswitch (wordToken.type) {\r\n\t\t\tcase XPathLexer.WILDCARD:\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathWildcardAnywhereElement() :\r\n\t\t\t\t\tnew XPathWildcardElement();\r\n\t\t\tcase XPathLexer.TOKEN_REF:\r\n\t\t\tcase XPathLexer.STRING:\r\n\t\t\t\tif (ttype === Token.INVALID_TYPE) {\r\n\t\t\t\t\tthrow new Error(word + \" at index \" +\r\n\t\t\t\t\t\twordToken.startIndex +\r\n\t\t\t\t\t\t\" isn't a valid token name\");\r\n\t\t\t\t}\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathTokenAnywhereElement(word, ttype) :\r\n\t\t\t\t\tnew XPathTokenElement(word, ttype);\r\n\t\t\tdefault:\r\n\t\t\t\tif (ruleIndex === -1) {\r\n\t\t\t\t\tthrow new Error(word + \" at index \" +\r\n\t\t\t\t\t\twordToken.startIndex +\r\n\t\t\t\t\t\t\" isn't a valid rule name\");\r\n\t\t\t\t}\r\n\t\t\t\treturn anywhere ?\r\n\t\t\t\t\tnew XPathRuleAnywhereElement(word, ruleIndex) :\r\n\t\t\t\t\tnew XPathRuleElement(word, ruleIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static findAll(tree: ParseTree, xpath: string, parser: Parser): Set {\r\n\t\tlet p: XPath = new XPath(parser, xpath);\r\n\t\treturn p.evaluate(tree);\r\n\t}\r\n\r\n\t/**\r\n\t * Return a list of all nodes starting at `t` as root that satisfy the\r\n\t * path. The root `/` is relative to the node passed to {@link evaluate}.\r\n\t */\r\n\tpublic evaluate(t: ParseTree): Set {\r\n\t\tlet dummyRoot = new ParserRuleContext();\r\n\t\tdummyRoot.addChild(t as ParserRuleContext);\r\n\r\n\t\tlet work = new Set([dummyRoot]);\r\n\r\n\t\tlet i: number = 0;\r\n\t\twhile (i < this.elements.length) {\r\n\t\t\tlet next = new Set();\r\n\t\t\tfor (let node of work) {\r\n\t\t\t\tif (node.childCount > 0) {\r\n\t\t\t\t\t// only try to match next element if it has children\r\n\t\t\t\t\t// e.g., //func/*/stat might have a token node for which\r\n\t\t\t\t\t// we can't go looking for stat nodes.\r\n\t\t\t\t\tlet matching = this.elements[i].evaluate(node);\r\n\t\t\t\t\tmatching.forEach(next.add, next);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t\twork = next;\r\n\t\t}\r\n\r\n\t\treturn work;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreeMatch } from \"./ParseTreeMatch\";\r\nimport { ParseTreePatternMatcher } from \"./ParseTreePatternMatcher\";\r\nimport { XPath } from \"../xpath/XPath\";\r\n\r\n/**\r\n * A pattern like ` = ;` converted to a {@link ParseTree} by\r\n * {@link ParseTreePatternMatcher#compile(String, int)}.\r\n */\r\nexport class ParseTreePattern {\r\n\t/**\r\n\t * This is the backing field for `patternRuleIndex`.\r\n\t */\r\n\tprivate _patternRuleIndex: number;\r\n\r\n\t/**\r\n\t * This is the backing field for `pattern`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _pattern: string;\r\n\r\n\t/**\r\n\t * This is the backing field for `patternTree`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _patternTree: ParseTree;\r\n\r\n\t/**\r\n\t * This is the backing field for `matcher`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _matcher: ParseTreePatternMatcher;\r\n\r\n\t/**\r\n\t * Construct a new instance of the {@link ParseTreePattern} class.\r\n\t *\r\n\t * @param matcher The {@link ParseTreePatternMatcher} which created this\r\n\t * tree pattern.\r\n\t * @param pattern The tree pattern in concrete syntax form.\r\n\t * @param patternRuleIndex The parser rule which serves as the root of the\r\n\t * tree pattern.\r\n\t * @param patternTree The tree pattern in {@link ParseTree} form.\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull matcher: ParseTreePatternMatcher,\r\n\t\t@NotNull pattern: string,\r\n\t\tpatternRuleIndex: number,\r\n\t\t@NotNull patternTree: ParseTree) {\r\n\t\tthis._matcher = matcher;\r\n\t\tthis._patternRuleIndex = patternRuleIndex;\r\n\t\tthis._pattern = pattern;\r\n\t\tthis._patternTree = patternTree;\r\n\t}\r\n\r\n\t/**\r\n\t * Match a specific parse tree against this tree pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against this tree pattern.\r\n\t * @returns A {@link ParseTreeMatch} object describing the result of the\r\n\t * match operation. The `ParseTreeMatch.succeeded` method can be\r\n\t * used to determine whether or not the match was successful.\r\n\t */\r\n\t@NotNull\r\n\tpublic match(@NotNull tree: ParseTree): ParseTreeMatch {\r\n\t\treturn this._matcher.match(tree, this);\r\n\t}\r\n\r\n\t/**\r\n\t * Determine whether or not a parse tree matches this tree pattern.\r\n\t *\r\n\t * @param tree The parse tree to match against this tree pattern.\r\n\t * @returns `true` if `tree` is a match for the current tree\r\n\t * pattern; otherwise, `false`.\r\n\t */\r\n\tpublic matches(@NotNull tree: ParseTree): boolean {\r\n\t\treturn this._matcher.match(tree, this).succeeded;\r\n\t}\r\n\r\n\t/**\r\n\t * Find all nodes using XPath and then try to match those subtrees against\r\n\t * this tree pattern.\r\n\t *\r\n\t * @param tree The {@link ParseTree} to match against this pattern.\r\n\t * @param xpath An expression matching the nodes\r\n\t *\r\n\t * @returns A collection of {@link ParseTreeMatch} objects describing the\r\n\t * successful matches. Unsuccessful matches are omitted from the result,\r\n\t * regardless of the reason for the failure.\r\n\t */\r\n\t@NotNull\r\n\tpublic findAll(@NotNull tree: ParseTree, @NotNull xpath: string): ParseTreeMatch[] {\r\n\t\tlet subtrees: Set = XPath.findAll(tree, xpath, this._matcher.parser);\r\n\t\tlet matches: ParseTreeMatch[] = [];\r\n\t\tfor (let t of subtrees) {\r\n\t\t\tlet match: ParseTreeMatch = this.match(t);\r\n\t\t\tif (match.succeeded) {\r\n\t\t\t\tmatches.push(match);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn matches;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the {@link ParseTreePatternMatcher} which created this tree pattern.\r\n\t *\r\n\t * @returns The {@link ParseTreePatternMatcher} which created this tree\r\n\t * pattern.\r\n\t */\r\n\t@NotNull\r\n\tget matcher(): ParseTreePatternMatcher {\r\n\t\treturn this._matcher;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern in concrete syntax form.\r\n\t *\r\n\t * @returns The tree pattern in concrete syntax form.\r\n\t */\r\n\t@NotNull\r\n\tget pattern(): string {\r\n\t\treturn this._pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the parser rule which serves as the outermost rule for the tree\r\n\t * pattern.\r\n\t *\r\n\t * @returns The parser rule which serves as the outermost rule for the tree\r\n\t * pattern.\r\n\t */\r\n\tget patternRuleIndex(): number {\r\n\t\treturn this._patternRuleIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tree pattern as a {@link ParseTree}. The rule and token tags from\r\n\t * the pattern are present in the parse tree as terminal nodes with a symbol\r\n\t * of type {@link RuleTagToken} or {@link TokenTagToken}.\r\n\t *\r\n\t * @returns The tree pattern as a {@link ParseTree}.\r\n\t */\r\n\t@NotNull\r\n\tget patternTree(): ParseTree {\r\n\t\treturn this._patternTree;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.0343500-07:00\r\n\r\nimport { CharStream } from \"../../CharStream\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\nimport { Token } from \"../../Token\";\r\nimport { TokenSource } from \"../../TokenSource\";\r\n\r\n/**\r\n * A {@link Token} object representing an entire subtree matched by a parser\r\n * rule; e.g., ``. These tokens are created for {@link TagChunk}\r\n * chunks where the tag corresponds to a parser rule.\r\n */\r\nexport class RuleTagToken implements Token {\r\n\t/**\r\n\t * This is the backing field for `ruleName`.\r\n\t */\r\n\tprivate _ruleName: string;\r\n\t/**\r\n\t * The token type for the current token. This is the token type assigned to\r\n\t * the bypass alternative for the rule during ATN deserialization.\r\n\t */\r\n\tprivate bypassTokenType: number;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label?: string;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link RuleTagToken} with the specified rule\r\n\t * name, bypass token type, and label.\r\n\t *\r\n\t * @param ruleName The name of the parser rule this rule tag matches.\r\n\t * @param bypassTokenType The bypass token type assigned to the parser rule.\r\n\t * @param label The label associated with the rule tag, or `undefined` if\r\n\t * the rule tag is unlabeled.\r\n\t *\r\n\t * @exception IllegalArgumentException if `ruleName` is not defined\r\n\t * or empty.\r\n\t */\r\n\tconstructor(@NotNull ruleName: string, bypassTokenType: number, label?: string) {\r\n\t\tif (ruleName == null || ruleName.length === 0) {\r\n\t\t\tthrow new Error(\"ruleName cannot be null or empty.\");\r\n\t\t}\r\n\r\n\t\tthis._ruleName = ruleName;\r\n\t\tthis.bypassTokenType = bypassTokenType;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the name of the rule associated with this rule tag.\r\n\t *\r\n\t * @returns The name of the parser rule associated with this rule tag.\r\n\t */\r\n\t@NotNull\r\n\tget ruleName(): string {\r\n\t\treturn this._ruleName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the label associated with the rule tag.\r\n\t *\r\n\t * @returns The name of the label associated with the rule tag, or\r\n\t * `undefined` if this is an unlabeled rule tag.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Rule tag tokens are always placed on the {@link #DEFAULT_CHANNEL}.\r\n\t */\r\n\t@Override\r\n\tget channel(): number {\r\n\t\treturn Token.DEFAULT_CHANNEL;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * This method returns the rule tag formatted with `<` and `>`\r\n\t * delimiters.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn \"<\" + this._label + \":\" + this._ruleName + \">\";\r\n\t\t}\r\n\r\n\t\treturn \"<\" + this._ruleName + \">\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * Rule tag tokens have types assigned according to the rule bypass\r\n\t * transitions created during ATN deserialization.\r\n\t */\r\n\t@Override\r\n\tget type(): number {\r\n\t\treturn this.bypassTokenType;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns 0.\r\n\t */\r\n\t@Override\r\n\tget line(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget charPositionInLine(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget tokenIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget startIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns -1.\r\n\t */\r\n\t@Override\r\n\tget stopIndex(): number {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns `undefined`.\r\n\t */\r\n\t@Override\r\n\tget tokenSource(): TokenSource | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} always returns `undefined`.\r\n\t */\r\n\t@Override\r\n\tget inputStream(): CharStream | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link RuleTagToken} returns a string of the form\r\n\t * `ruleName:bypassTokenType`.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._ruleName + \":\" + this.bypassTokenType;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:45.2799060-07:00\r\n\r\n/**\r\n * A chunk is either a token tag, a rule tag, or a span of literal text within a\r\n * tree pattern.\r\n *\r\n * The method {@link ParseTreePatternMatcher#split(String)} returns a list of\r\n * chunks in preparation for creating a token stream by\r\n * {@link ParseTreePatternMatcher#tokenize(String)}. From there, we get a parse\r\n * tree from with {@link ParseTreePatternMatcher#compile(String, int)}. These\r\n * chunks are converted to {@link RuleTagToken}, {@link TokenTagToken}, or the\r\n * regular tokens of the text surrounding the tags.\r\n */\r\nexport abstract class Chunk {\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.1670669-07:00\r\n\r\nimport { Chunk } from \"./Chunk\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * Represents a placeholder tag in a tree pattern. A tag can have any of the\r\n * following forms.\r\n *\r\n * * `expr`: An unlabeled placeholder for a parser rule `expr`.\r\n * * `ID`: An unlabeled placeholder for a token of type `ID`.\r\n * * `e:expr`: A labeled placeholder for a parser rule `expr`.\r\n * * `id:ID`: A labeled placeholder for a token of type `ID`.\r\n *\r\n * This class does not perform any validation on the tag or label names aside\r\n * from ensuring that the tag is a defined, non-empty string.\r\n */\r\nexport class TagChunk extends Chunk {\r\n\t/**\r\n\t * This is the backing field for `tag`.\r\n\t */\r\n\tprivate _tag: string;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label?: string;\r\n\r\n\t/**\r\n\t * Construct a new instance of {@link TagChunk} using the specified label\r\n\t * and tag.\r\n\t *\r\n\t * @param label The label for the tag. If this is `undefined`, the\r\n\t * {@link TagChunk} represents an unlabeled tag.\r\n\t * @param tag The tag, which should be the name of a parser rule or token\r\n\t * type.\r\n\t *\r\n\t * @exception IllegalArgumentException if `tag` is not defined or\r\n\t * empty.\r\n\t */\r\n\tconstructor(tag: string, label?: string) {\r\n\t\tsuper();\r\n\r\n\t\tif (tag == null || tag.length === 0) {\r\n\t\t\tthrow new Error(\"tag cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis._tag = tag;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the tag for this chunk.\r\n\t *\r\n\t * @returns The tag for the chunk.\r\n\t */\r\n\t@NotNull\r\n\tget tag(): string {\r\n\t\treturn this._tag;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the label, if any, assigned to this chunk.\r\n\t *\r\n\t * @returns The label assigned to this chunk, or `undefined` if no label is\r\n\t * assigned to the chunk.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * This method returns a text representation of the tag chunk. Labeled tags\r\n\t * are returned in the form `label:tag`, and unlabeled tags are\r\n\t * returned as just the tag name.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn this._label + \":\" + this._tag;\r\n\t\t}\r\n\r\n\t\treturn this._tag;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.2521448-07:00\r\n\r\nimport { Chunk } from \"./Chunk\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * Represents a span of raw text (concrete syntax) between tags in a tree\r\n * pattern string.\r\n */\r\nexport class TextChunk extends Chunk {\r\n\t/**\r\n\t * This is the backing field for {@link #getText}.\r\n\t */\r\n\t@NotNull\r\n\tprivate _text: string;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link TextChunk} with the specified text.\r\n\t *\r\n\t * @param text The text of this chunk.\r\n\t * @exception IllegalArgumentException if `text` is not defined.\r\n\t */\r\n\tconstructor(@NotNull text: string) {\r\n\t\tsuper();\r\n\r\n\t\tif (text == null) {\r\n\t\t\tthrow new Error(\"text cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._text = text;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the raw text of this chunk.\r\n\t *\r\n\t * @returns The text of the chunk.\r\n\t */\r\n\t@NotNull\r\n\tget text(): string {\r\n\t\treturn this._text;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TextChunk} returns the result of\r\n\t * `text` in single quotes.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"'\" + this._text + \"'\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:46.3281988-07:00\r\n\r\nimport { CommonToken } from \"../../CommonToken\";\r\nimport { NotNull, Override } from \"../../Decorators\";\r\n\r\n/**\r\n * A {@link Token} object representing a token of a particular type; e.g.,\r\n * ``. These tokens are created for {@link TagChunk} chunks where the\r\n * tag corresponds to a lexer rule or token type.\r\n */\r\nexport class TokenTagToken extends CommonToken {\r\n\t/**\r\n\t * This is the backing field for `tokenName`.\r\n\t */\r\n\t@NotNull\r\n\tprivate _tokenName: string;\r\n\t/**\r\n\t * This is the backing field for `label`.\r\n\t */\r\n\tprivate _label: string | undefined;\r\n\r\n\t/**\r\n\t * Constructs a new instance of {@link TokenTagToken} with the specified\r\n\t * token name, type, and label.\r\n\t *\r\n\t * @param tokenName The token name.\r\n\t * @param type The token type.\r\n\t * @param label The label associated with the token tag, or `undefined` if\r\n\t * the token tag is unlabeled.\r\n\t */\r\n\tconstructor(@NotNull tokenName: string, type: number, label?: string) {\r\n\t\tsuper(type);\r\n\t\tthis._tokenName = tokenName;\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the token name.\r\n\t * @returns The token name.\r\n\t */\r\n\t@NotNull\r\n\tget tokenName(): string {\r\n\t\treturn this._tokenName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the label associated with the rule tag.\r\n\t *\r\n\t * @returns The name of the label associated with the rule tag, or\r\n\t * `undefined` if this is an unlabeled rule tag.\r\n\t */\r\n\tget label(): string | undefined {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TokenTagToken} returns the token tag\r\n\t * formatted with `<` and `>` delimiters.\r\n\t */\r\n\t@Override\r\n\tget text(): string {\r\n\t\tif (this._label != null) {\r\n\t\t\treturn \"<\" + this._label + \":\" + this._tokenName + \">\";\r\n\t\t}\r\n\r\n\t\treturn \"<\" + this._tokenName + \">\";\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The implementation for {@link TokenTagToken} returns a string of the form\r\n\t * `tokenName:type`.\r\n\t */\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn this._tokenName + \":\" + this.type;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// CONVERSTION complete, Burt Harris 10/14/2016\r\n\r\nimport { BailErrorStrategy } from \"../../BailErrorStrategy\";\r\nimport { CharStreams } from \"../../CharStreams\";\r\nimport { Chunk } from \"./Chunk\";\r\nimport { CommonTokenStream } from \"../../CommonTokenStream\";\r\nimport { Lexer } from \"../../Lexer\";\r\nimport { ListTokenSource } from \"../../ListTokenSource\";\r\nimport { MultiMap } from \"../../misc/MultiMap\";\r\nimport { NotNull } from \"../../Decorators\";\r\nimport { ParseCancellationException } from \"../../misc/ParseCancellationException\";\r\nimport { Parser } from \"../../Parser\";\r\nimport { ParserInterpreter } from \"../../ParserInterpreter\";\r\nimport { ParserRuleContext } from \"../../ParserRuleContext\";\r\nimport { ParseTree } from \"../ParseTree\";\r\nimport { ParseTreeMatch } from \"./ParseTreeMatch\";\r\nimport { ParseTreePattern } from \"./ParseTreePattern\";\r\nimport { RecognitionException } from \"../../RecognitionException\";\r\nimport { RuleNode } from \"../RuleNode\";\r\nimport { RuleTagToken } from \"./RuleTagToken\";\r\nimport { TagChunk } from \"./TagChunk\";\r\nimport { TerminalNode } from \"../TerminalNode\";\r\nimport { TextChunk } from \"./TextChunk\";\r\nimport { Token } from \"../../Token\";\r\nimport { TokenTagToken } from \"./TokenTagToken\";\r\n\r\n/**\r\n * A tree pattern matching mechanism for ANTLR {@link ParseTree}s.\r\n *\r\n * Patterns are strings of source input text with special tags representing\r\n * token or rule references such as:\r\n *\r\n * ```\r\n * = ;\r\n * ```\r\n *\r\n * Given a pattern start rule such as `statement`, this object constructs\r\n * a {@link ParseTree} with placeholders for the `ID` and `expr`\r\n * subtree. Then the {@link #match} routines can compare an actual\r\n * {@link ParseTree} from a parse with this pattern. Tag `` matches\r\n * any `ID` token and tag `` references the result of the\r\n * `expr` rule (generally an instance of `ExprContext`.\r\n *\r\n * Pattern `x = 0;` is a similar pattern that matches the same pattern\r\n * except that it requires the identifier to be `x` and the expression to\r\n * be `0`.\r\n *\r\n * The {@link #matches} routines return `true` or `false` based\r\n * upon a match for the tree rooted at the parameter sent in. The\r\n * {@link #match} routines return a {@link ParseTreeMatch} object that\r\n * contains the parse tree, the parse tree pattern, and a map from tag name to\r\n * matched nodes (more below). A subtree that fails to match, returns with\r\n * {@link ParseTreeMatch#mismatchedNode} set to the first tree node that did not\r\n * match.\r\n *\r\n * For efficiency, you can compile a tree pattern in string form to a\r\n * {@link ParseTreePattern} object.\r\n *\r\n * See `TestParseTreeMatcher` for lots of examples.\r\n * {@link ParseTreePattern} has two static helper methods:\r\n * {@link ParseTreePattern#findAll} and {@link ParseTreePattern#match} that\r\n * are easy to use but not super efficient because they create new\r\n * {@link ParseTreePatternMatcher} objects each time and have to compile the\r\n * pattern in string form before using it.\r\n *\r\n * The lexer and parser that you pass into the {@link ParseTreePatternMatcher}\r\n * constructor are used to parse the pattern in string form. The lexer converts\r\n * the ` = ;` into a sequence of four tokens (assuming lexer\r\n * throws out whitespace or puts it on a hidden channel). Be aware that the\r\n * input stream is reset for the lexer (but not the parser; a\r\n * {@link ParserInterpreter} is created to parse the input.). Any user-defined\r\n * fields you have put into the lexer might get changed when this mechanism asks\r\n * it to scan the pattern string.\r\n *\r\n * Normally a parser does not accept token `` as a valid\r\n * `expr` but, from the parser passed in, we create a special version of\r\n * the underlying grammar representation (an {@link ATN}) that allows imaginary\r\n * tokens representing rules (``) to match entire rules. We call\r\n * these *bypass alternatives*.\r\n *\r\n * Delimiters are `<`} and `>`}, with `\\` as the escape string\r\n * by default, but you can set them to whatever you want using\r\n * {@link #setDelimiters}. You must escape both start and stop strings\r\n * `\\<` and `\\>`.\r\n */\r\nexport class ParseTreePatternMatcher {\r\n\t/**\r\n\t * This is the backing field for `lexer`.\r\n\t */\r\n\tprivate _lexer: Lexer;\r\n\r\n\t/**\r\n\t * This is the backing field for `parser`.\r\n\t */\r\n\tprivate _parser: Parser;\r\n\r\n\tprotected start = \"<\";\r\n\tprotected stop = \">\";\r\n\tprotected escape = \"\\\\\"; // e.g., \\< and \\> must escape BOTH!\r\n\r\n\t/**\r\n\t * Regular expression corresponding to escape, for global replace\r\n\t */\r\n\tprotected escapeRE = /\\\\/g;\r\n\r\n\t/**\r\n\t * Constructs a {@link ParseTreePatternMatcher} or from a {@link Lexer} and\r\n\t * {@link Parser} object. The lexer input stream is altered for tokenizing\r\n\t * the tree patterns. The parser is used as a convenient mechanism to get\r\n\t * the grammar name, plus token, rule names.\r\n\t */\r\n\tconstructor(lexer: Lexer, parser: Parser) {\r\n\t\tthis._lexer = lexer;\r\n\t\tthis._parser = parser;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the delimiters used for marking rule and token tags within concrete\r\n\t * syntax used by the tree pattern parser.\r\n\t *\r\n\t * @param start The start delimiter.\r\n\t * @param stop The stop delimiter.\r\n\t * @param escapeLeft The escape sequence to use for escaping a start or stop delimiter.\r\n\t *\r\n\t * @throws {@link Error} if `start` is not defined or empty.\r\n\t * @throws {@link Error} if `stop` is not defined or empty.\r\n\t */\r\n\tpublic setDelimiters(start: string, stop: string, escapeLeft: string): void {\r\n\t\tif (!start) {\r\n\t\t\tthrow new Error(\"start cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tif (!stop) {\r\n\t\t\tthrow new Error(\"stop cannot be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis.start = start;\r\n\t\tthis.stop = stop;\r\n\t\tthis.escape = escapeLeft;\r\n\t\tthis.escapeRE = new RegExp(escapeLeft.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"g\");\r\n\t}\r\n\r\n\t/** Does `pattern` matched as rule `patternRuleIndex` match `tree`? */\r\n\tpublic matches(tree: ParseTree, pattern: string, patternRuleIndex: number): boolean;\r\n\r\n\t/** Does `pattern` matched as rule patternRuleIndex match tree? Pass in a\r\n\t * compiled pattern instead of a string representation of a tree pattern.\r\n\t */\r\n\tpublic matches(tree: ParseTree, pattern: ParseTreePattern): boolean;\r\n\r\n\tpublic matches(tree: ParseTree, pattern: string | ParseTreePattern, patternRuleIndex: number = 0): boolean {\r\n\t\tif (typeof pattern === \"string\") {\r\n\t\t\tlet p: ParseTreePattern = this.compile(pattern, patternRuleIndex);\r\n\t\t\treturn this.matches(tree, p);\r\n\t\t} else {\r\n\t\t\tlet labels = new MultiMap();\r\n\t\t\tlet mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels);\r\n\t\t\treturn !mismatchedNode;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Compare `pattern` matched as rule `patternRuleIndex` against\r\n\t * `tree` and return a {@link ParseTreeMatch} object that contains the\r\n\t * matched elements, or the node at which the match failed.\r\n\t */\r\n\tpublic match(tree: ParseTree, pattern: string, patternRuleIndex: number): ParseTreeMatch;\r\n\r\n\t/**\r\n\t * Compare `pattern` matched against `tree` and return a\r\n\t * {@link ParseTreeMatch} object that contains the matched elements, or the\r\n\t * node at which the match failed. Pass in a compiled pattern instead of a\r\n\t * string representation of a tree pattern.\r\n\t */\r\n\tpublic match(tree: ParseTree, pattern: ParseTreePattern): ParseTreeMatch;\r\n\r\n\t// Implementation of match\r\n\t@NotNull\r\n\tpublic match(tree: ParseTree, @NotNull pattern: string | ParseTreePattern, patternRuleIndex: number = 0): ParseTreeMatch {\r\n\t\tif (typeof pattern === \"string\") {\r\n\t\t\tlet p: ParseTreePattern = this.compile(pattern, patternRuleIndex);\r\n\t\t\treturn this.match(tree, p);\r\n\t\t} else {\r\n\t\t\tlet labels = new MultiMap();\r\n\t\t\tlet mismatchedNode = this.matchImpl(tree, pattern.patternTree, labels);\r\n\t\t\treturn new ParseTreeMatch(tree, pattern, labels, mismatchedNode);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * For repeated use of a tree pattern, compile it to a\r\n\t * {@link ParseTreePattern} using this method.\r\n\t */\r\n\tpublic compile(pattern: string, patternRuleIndex: number): ParseTreePattern {\r\n\t\tlet tokenList = this.tokenize(pattern);\r\n\t\tlet tokenSrc = new ListTokenSource(tokenList);\r\n\t\tlet tokens = new CommonTokenStream(tokenSrc);\r\n\t\tconst parser = this._parser;\r\n\r\n\t\tlet parserInterp = new ParserInterpreter(\r\n\t\t\tparser.grammarFileName,\r\n\t\t\tparser.vocabulary,\r\n\t\t\tparser.ruleNames,\r\n\t\t\tparser.getATNWithBypassAlts(),\r\n\t\t\ttokens);\r\n\r\n\t\tlet tree: ParseTree;\r\n\t\ttry {\r\n\t\t\tparserInterp.errorHandler = new BailErrorStrategy();\r\n\t\t\ttree = parserInterp.parse(patternRuleIndex);\r\n//\t\t\tSystem.out.println(\"pattern tree = \"+tree.toStringTree(parserInterp));\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof ParseCancellationException) {\r\n\t\t\t\tthrow e.getCause();\r\n\t\t\t} else if (e instanceof RecognitionException) {\r\n\t\t\t\tthrow e;\r\n\t\t\t} else if (e instanceof Error) {\r\n\t\t\t\tthrow new ParseTreePatternMatcher.CannotInvokeStartRule(e);\r\n\t\t\t} else {\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Make sure tree pattern compilation checks for a complete parse\r\n\t\tif (tokens.LA(1) !== Token.EOF) {\r\n\t\t\tthrow new ParseTreePatternMatcher.StartRuleDoesNotConsumeFullPattern();\r\n\t\t}\r\n\r\n\t\treturn new ParseTreePattern(this, pattern, patternRuleIndex, tree);\r\n\t}\r\n\r\n\t/**\r\n\t * Used to convert the tree pattern string into a series of tokens. The\r\n\t * input stream is reset.\r\n\t */\r\n\t@NotNull\r\n\tget lexer(): Lexer {\r\n\t\treturn this._lexer;\r\n\t}\r\n\r\n\t/**\r\n\t * Used to collect to the grammar file name, token names, rule names for\r\n\t * used to parse the pattern into a parse tree.\r\n\t */\r\n\t@NotNull\r\n\tget parser(): Parser {\r\n\t\treturn this._parser;\r\n\t}\r\n\r\n\t// ---- SUPPORT CODE ----\r\n\r\n\t/**\r\n\t * Recursively walk `tree` against `patternTree`, filling\r\n\t * `match.`{@link ParseTreeMatch#labels labels}.\r\n\t *\r\n\t * @returns the first node encountered in `tree` which does not match\r\n\t * a corresponding node in `patternTree`, or `undefined` if the match\r\n\t * was successful. The specific node returned depends on the matching\r\n\t * algorithm used by the implementation, and may be overridden.\r\n\t */\r\n\tprotected matchImpl(\r\n\t\t@NotNull tree: ParseTree,\r\n\t\t@NotNull patternTree: ParseTree,\r\n\t\t@NotNull labels: MultiMap): ParseTree | undefined {\r\n\t\tif (!tree) {\r\n\t\t\tthrow new TypeError(\"tree cannot be null\");\r\n\t\t}\r\n\r\n\t\tif (!patternTree) {\r\n\t\t\tthrow new TypeError(\"patternTree cannot be null\");\r\n\t\t}\r\n\r\n\t\t// x and , x and y, or x and x; or could be mismatched types\r\n\t\tif (tree instanceof TerminalNode && patternTree instanceof TerminalNode) {\r\n\t\t\tlet mismatchedNode: ParseTree | undefined;\r\n\t\t\t// both are tokens and they have same type\r\n\t\t\tif (tree.symbol.type === patternTree.symbol.type) {\r\n\t\t\t\tif (patternTree.symbol instanceof TokenTagToken) { // x and \r\n\t\t\t\t\tlet tokenTagToken = patternTree.symbol;\r\n\t\t\t\t\t// track label->list-of-nodes for both token name and label (if any)\r\n\t\t\t\t\tlabels.map(tokenTagToken.tokenName, tree);\r\n\t\t\t\t\tconst l = tokenTagToken.label;\r\n\t\t\t\t\tif (l) {\r\n\t\t\t\t\t\tlabels.map(l, tree);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (tree.text === patternTree.text) {\r\n\t\t\t\t\t// x and x\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// x and y\r\n\t\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn mismatchedNode;\r\n\t\t}\r\n\r\n\t\tif (tree instanceof ParserRuleContext\r\n\t\t\t&& patternTree instanceof ParserRuleContext) {\r\n\t\t\tlet mismatchedNode: ParseTree | undefined;\r\n\t\t\t// (expr ...) and \r\n\t\t\tlet ruleTagToken = this.getRuleTagToken(patternTree);\r\n\t\t\tif (ruleTagToken) {\r\n\t\t\t\tlet m: ParseTreeMatch;\r\n\t\t\t\tif (tree.ruleContext.ruleIndex === patternTree.ruleContext.ruleIndex) {\r\n\t\t\t\t\t// track label->list-of-nodes for both rule name and label (if any)\r\n\t\t\t\t\tlabels.map(ruleTagToken.ruleName, tree);\r\n\t\t\t\t\tconst l = ruleTagToken.label;\r\n\t\t\t\t\tif (l) {\r\n\t\t\t\t\t\tlabels.map(l, tree);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn mismatchedNode;\r\n\t\t\t}\r\n\r\n\t\t\t// (expr ...) and (expr ...)\r\n\t\t\tif (tree.childCount !== patternTree.childCount) {\r\n\t\t\t\tif (!mismatchedNode) {\r\n\t\t\t\t\tmismatchedNode = tree;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn mismatchedNode;\r\n\t\t\t}\r\n\r\n\t\t\tlet n: number = tree.childCount;\r\n\t\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\t\tlet childMatch = this.matchImpl(tree.getChild(i), patternTree.getChild(i), labels);\r\n\t\t\t\tif (childMatch) {\r\n\t\t\t\t\treturn childMatch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn mismatchedNode;\r\n\t\t}\r\n\r\n\t\t// if nodes aren't both tokens or both rule nodes, can't match\r\n\t\treturn tree;\r\n\t}\r\n\r\n\t/** Is `t` `(expr )` subtree? */\r\n\tprotected getRuleTagToken(t: ParseTree): RuleTagToken | undefined {\r\n\t\tif (t instanceof RuleNode) {\r\n\t\t\tif (t.childCount === 1 && t.getChild(0) instanceof TerminalNode) {\r\n\t\t\t\tlet c = t.getChild(0) as TerminalNode;\r\n\t\t\t\tif (c.symbol instanceof RuleTagToken) {\r\n//\t\t\t\t\tSystem.out.println(\"rule tag subtree \"+t.toStringTree(parser));\r\n\t\t\t\t\treturn c.symbol;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic tokenize(pattern: string): Token[] {\r\n\t\t// split pattern into chunks: sea (raw input) and islands (, )\r\n\t\tlet chunks = this.split(pattern);\r\n\r\n\t\t// create token stream from text and tags\r\n\t\tlet tokens: Token[] = [];\r\n\r\n\t\tfor (let chunk of chunks) {\r\n\t\t\tif (chunk instanceof TagChunk) {\r\n\t\t\t\tlet tagChunk = chunk;\r\n\t\t\t\tconst firstChar = tagChunk.tag.substr(0, 1);\r\n\t\t\t\t// add special rule token or conjure up new token from name\r\n\t\t\t\tif (firstChar === firstChar.toUpperCase()) {\r\n\t\t\t\t\tlet ttype: number = this._parser.getTokenType(tagChunk.tag);\r\n\t\t\t\t\tif (ttype === Token.INVALID_TYPE) {\r\n\t\t\t\t\t\tthrow new Error(\"Unknown token \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet t: TokenTagToken = new TokenTagToken(tagChunk.tag, ttype, tagChunk.label);\r\n\t\t\t\t\ttokens.push(t);\r\n\t\t\t\t}\r\n\t\t\t\telse if (firstChar === firstChar.toLowerCase()) {\r\n\t\t\t\t\tlet ruleIndex: number = this._parser.getRuleIndex(tagChunk.tag);\r\n\t\t\t\t\tif (ruleIndex === -1) {\r\n\t\t\t\t\t\tthrow new Error(\"Unknown rule \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet ruleImaginaryTokenType: number = this._parser.getATNWithBypassAlts().ruleToTokenType[ruleIndex];\r\n\t\t\t\t\ttokens.push(new RuleTagToken(tagChunk.tag, ruleImaginaryTokenType, tagChunk.label));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthrow new Error(\"invalid tag: \" + tagChunk.tag + \" in pattern: \" + pattern);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet textChunk = chunk as TextChunk;\r\n\t\t\t\tthis._lexer.inputStream = CharStreams.fromString(textChunk.text);\r\n\t\t\t\tlet t: Token = this._lexer.nextToken();\r\n\t\t\t\twhile (t.type !== Token.EOF) {\r\n\t\t\t\t\ttokens.push(t);\r\n\t\t\t\t\tt = this._lexer.nextToken();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(\"tokens=\"+tokens);\r\n\t\treturn tokens;\r\n\t}\r\n\r\n\t/** Split ` = ;` into 4 chunks for tokenizing by {@link #tokenize}. */\r\n\tpublic split(pattern: string): Chunk[] {\r\n\t\tlet p: number = 0;\r\n\t\tlet n: number = pattern.length;\r\n\t\tlet chunks: Chunk[] = [];\r\n\t\tlet buf: \"\";\r\n\t\t// find all start and stop indexes first, then collect\r\n\t\tlet starts: number[] = [];\r\n\t\tlet stops: number[] = [];\r\n\t\twhile (p < n) {\r\n\t\t\tif (p === pattern.indexOf(this.escape + this.start, p)) {\r\n\t\t\t\tp += this.escape.length + this.start.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.escape + this.stop, p)) {\r\n\t\t\t\tp += this.escape.length + this.stop.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.start, p)) {\r\n\t\t\t\tstarts.push(p);\r\n\t\t\t\tp += this.start.length;\r\n\t\t\t}\r\n\t\t\telse if (p === pattern.indexOf(this.stop, p)) {\r\n\t\t\t\tstops.push(p);\r\n\t\t\t\tp += this.stop.length;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tp++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n//\t\tSystem.out.println(\"\");\r\n//\t\tSystem.out.println(starts);\r\n//\t\tSystem.out.println(stops);\r\n\t\tif (starts.length > stops.length) {\r\n\t\t\tthrow new Error(\"unterminated tag in pattern: \" + pattern);\r\n\t\t}\r\n\r\n\t\tif (starts.length < stops.length) {\r\n\t\t\tthrow new Error(\"missing start tag in pattern: \" + pattern);\r\n\t\t}\r\n\r\n\t\tlet ntags: number = starts.length;\r\n\t\tfor (let i = 0; i < ntags; i++) {\r\n\t\t\tif (starts[i] >= stops[i]) {\r\n\t\t\t\tthrow new Error(\"tag delimiters out of order in pattern: \" + pattern);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// collect into chunks now\r\n\t\tif (ntags === 0) {\r\n\t\t\tlet text: string = pattern.substring(0, n);\r\n\t\t\tchunks.push(new TextChunk(text));\r\n\t\t}\r\n\r\n\t\tif (ntags > 0 && starts[0] > 0) { // copy text up to first tag into chunks\r\n\t\t\tlet text: string = pattern.substring(0, starts[0]);\r\n\t\t\tchunks.push(new TextChunk(text));\r\n\t\t}\r\n\t\tfor (let i = 0; i < ntags; i++) {\r\n\t\t\t// copy inside of \r\n\t\t\tlet tag: string = pattern.substring(starts[i] + this.start.length, stops[i]);\r\n\t\t\tlet ruleOrToken: string = tag;\r\n\t\t\tlet label: string | undefined;\r\n\t\t\tlet colon: number = tag.indexOf(\":\");\r\n\t\t\tif (colon >= 0) {\r\n\t\t\t\tlabel = tag.substring(0, colon);\r\n\t\t\t\truleOrToken = tag.substring(colon + 1, tag.length);\r\n\t\t\t}\r\n\t\t\tchunks.push(new TagChunk(ruleOrToken, label));\r\n\t\t\tif (i + 1 < ntags) {\r\n\t\t\t\t// copy from end of to start of next\r\n\t\t\t\tlet text: string = pattern.substring(stops[i] + this.stop.length, starts[i + 1]);\r\n\t\t\t\tchunks.push(new TextChunk(text));\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (ntags > 0) {\r\n\t\t\tlet afterLastTag: number = stops[ntags - 1] + this.stop.length;\r\n\t\t\tif (afterLastTag < n) { // copy text from end of last tag to end\r\n\t\t\t\tlet text: string = pattern.substring(afterLastTag, n);\r\n\t\t\t\tchunks.push(new TextChunk(text));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// strip out the escape sequences from text chunks but not tags\r\n\t\tfor (let i = 0; i < chunks.length; i++) {\r\n\t\t\tlet c: Chunk = chunks[i];\r\n\t\t\tif (c instanceof TextChunk) {\r\n\t\t\t\tlet unescaped: string = c.text.replace(this.escapeRE, \"\");\r\n\t\t\t\tif (unescaped.length < c.text.length) {\r\n\t\t\t\t\tchunks[i] = new TextChunk(unescaped);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn chunks;\r\n\t}\r\n}\r\n\r\nexport namespace ParseTreePatternMatcher {\r\n\texport class CannotInvokeStartRule extends Error {\r\n\t\tpublic constructor(public error: Error) {\r\n\t\t\tsuper(`CannotInvokeStartRule: ${error}`);\r\n\t\t}\r\n\t}\r\n\r\n\t// Fixes https://github.com/antlr/antlr4/issues/413\r\n\t// \"Tree pattern compilation doesn't check for a complete parse\"\r\n\texport class StartRuleDoesNotConsumeFullPattern extends Error {\r\n\t\tconstructor() {\r\n\t\t\tsuper(\"StartRuleDoesNotConsumeFullPattern\");\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.2401032-07:00\r\n\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This is the base class for gathering detailed information about prediction\r\n * events which occur during parsing.\r\n *\r\n * Note that we could record the parser call stack at the time this event\r\n * occurred but in the presence of left recursive rules, the stack is kind of\r\n * meaningless. It's better to look at the individual configurations for their\r\n * individual stacks. Of course that is a {@link PredictionContext} object\r\n * not a parse tree node and so it does not have information about the extent\r\n * (start...stop) of the various subtrees. Examining the stack tops of all\r\n * configurations provide the return states for the rule invocations.\r\n * From there you can get the enclosing rule.\r\n *\r\n * @since 4.3\r\n */\r\nexport class DecisionEventInfo {\r\n\t/**\r\n\t * The invoked decision number which this event is related to.\r\n\t *\r\n\t * @see ATN#decisionToState\r\n\t */\r\n\tpublic decision: number;\r\n\r\n\t/**\r\n\t * The simulator state containing additional information relevant to the\r\n\t * prediction state when the current event occurred, or `undefined` if no\r\n\t * additional information is relevant or available.\r\n\t */\r\n\tpublic state: SimulatorState | undefined;\r\n\r\n\t/**\r\n\t * The input token stream which is being parsed.\r\n\t */\r\n\t@NotNull\r\n\tpublic input: TokenStream;\r\n\r\n\t/**\r\n\t * The token index in the input stream at which the current prediction was\r\n\t * originally invoked.\r\n\t */\r\n\tpublic startIndex: number;\r\n\r\n\t/**\r\n\t * The token index in the input stream at which the current event occurred.\r\n\t */\r\n\tpublic stopIndex: number;\r\n\r\n\t/**\r\n\t * `true` if the current event occurred during LL prediction;\r\n\t * otherwise, `false` if the input occurred during SLL prediction.\r\n\t */\r\n\tpublic fullCtx: boolean;\r\n\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\tstate: SimulatorState | undefined,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tfullCtx: boolean) {\r\n\r\n\t\tthis.decision = decision;\r\n\t\tthis.fullCtx = fullCtx;\r\n\t\tthis.stopIndex = stopIndex;\r\n\t\tthis.input = input;\r\n\t\tthis.startIndex = startIndex;\r\n\t\tthis.state = state;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:24.8229279-07:00\r\n\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for an ambiguity.\r\n * Ambiguities are decisions where a particular input resulted in an SLL\r\n * conflict, followed by LL prediction also reaching a conflict state\r\n * (indicating a true ambiguity in the grammar).\r\n *\r\n * This event may be reported during SLL prediction in cases where the\r\n * conflicting SLL configuration set provides sufficient information to\r\n * determine that the SLL conflict is truly an ambiguity. For example, if none\r\n * of the ATN configurations in the conflicting SLL configuration set have\r\n * traversed a global follow transition (i.e.\r\n * {@link ATNConfig#getReachesIntoOuterContext} is `false` for all\r\n * configurations), then the result of SLL prediction for that input is known to\r\n * be equivalent to the result of LL prediction for that input.\r\n *\r\n * In some cases, the minimum represented alternative in the conflicting LL\r\n * configuration set is not equal to the minimum represented alternative in the\r\n * conflicting SLL configuration set. Grammars and inputs which result in this\r\n * scenario are unable to use {@link PredictionMode#SLL}, which in turn means\r\n * they cannot use the two-stage parsing strategy to improve parsing performance\r\n * for that input.\r\n *\r\n * @see ParserATNSimulator#reportAmbiguity\r\n * @see ParserErrorListener#reportAmbiguity\r\n *\r\n * @since 4.3\r\n */\r\nexport class AmbiguityInfo extends DecisionEventInfo {\r\n\t/** The set of alternative numbers for this decision event that lead to a valid parse. */\r\n\t@NotNull\r\n\tprivate ambigAlts: BitSet;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link AmbiguityInfo} class with the\r\n\t * specified detailed ambiguity information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state identifying the ambiguous\r\n\t * alternatives for the current input\r\n\t * @param ambigAlts The set of alternatives in the decision that lead to a valid parse.\r\n\t * The predicted alt is the min(ambigAlts)\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the ambiguity was identified during\r\n\t * prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull ambigAlts: BitSet,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t\tthis.ambigAlts = ambigAlts;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of alternatives in the decision that lead to a valid parse.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\t@NotNull\r\n\tget ambiguousAlternatives(): BitSet {\r\n\t\treturn this.ambigAlts;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.1575933-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for a context sensitivity.\r\n * Context sensitivities are decisions where a particular input resulted in an\r\n * SLL conflict, but LL prediction produced a single unique alternative.\r\n *\r\n * In some cases, the unique alternative identified by LL prediction is not\r\n * equal to the minimum represented alternative in the conflicting SLL\r\n * configuration set. Grammars and inputs which result in this scenario are\r\n * unable to use {@link PredictionMode#SLL}, which in turn means they cannot use\r\n * the two-stage parsing strategy to improve parsing performance for that\r\n * input.\r\n *\r\n * @see ParserATNSimulator#reportContextSensitivity\r\n * @see ParserErrorListener#reportContextSensitivity\r\n *\r\n * @since 4.3\r\n */\r\nexport class ContextSensitivityInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * Constructs a new instance of the {@link ContextSensitivityInfo} class\r\n\t * with the specified detailed context sensitivity information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state containing the unique\r\n\t * alternative identified by full-context prediction\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the context sensitivity was\r\n\t * identified during full-context prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, true);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.3330673-07:00\r\n\r\nimport { AmbiguityInfo } from \"./AmbiguityInfo\";\r\nimport { ContextSensitivityInfo } from \"./ContextSensitivityInfo\";\r\nimport { ErrorInfo } from \"./ErrorInfo\";\r\nimport { LookaheadEventInfo } from \"./LookaheadEventInfo\";\r\nimport { Override } from \"../Decorators\";\r\nimport { PredicateEvalInfo } from \"./PredicateEvalInfo\";\r\n\r\n/**\r\n * This class contains profiling gathered for a particular decision.\r\n *\r\n * Parsing performance in ANTLR 4 is heavily influenced by both static factors\r\n * (e.g. the form of the rules in the grammar) and dynamic factors (e.g. the\r\n * choice of input and the state of the DFA cache at the time profiling\r\n * operations are started). For best results, gather and use aggregate\r\n * statistics from a large sample of inputs representing the inputs expected in\r\n * production before using the results to make changes in the grammar.\r\n *\r\n * @since 4.3\r\n */\r\nexport class DecisionInfo {\r\n\t/**\r\n\t * The decision number, which is an index into {@link ATN#decisionToState}.\r\n\t */\r\n\tpublic decision: number;\r\n\r\n\t/**\r\n\t * The total number of times {@link ParserATNSimulator#adaptivePredict} was\r\n\t * invoked for this decision.\r\n\t */\r\n\tpublic invocations: number = 0;\r\n\r\n\t/**\r\n\t * The total time spent in {@link ParserATNSimulator#adaptivePredict} for\r\n\t * this decision, in nanoseconds.\r\n\t *\r\n\t * The value of this field contains the sum of differential results obtained\r\n\t * by {@link System#nanoTime()}, and is not adjusted to compensate for JIT\r\n\t * and/or garbage collection overhead. For best accuracy, use a modern JVM\r\n\t * implementation that provides precise results from\r\n\t * {@link System#nanoTime()}, and perform profiling in a separate process\r\n\t * which is warmed up by parsing the input prior to profiling. If desired,\r\n\t * call {@link ATNSimulator#clearDFA} to reset the DFA cache to its initial\r\n\t * state before starting the profiling measurement pass.\r\n\t */\r\n\tpublic timeInPrediction: number = 0;\r\n\r\n\t/**\r\n\t * The sum of the lookahead required for SLL prediction for this decision.\r\n\t * Note that SLL prediction is used before LL prediction for performance\r\n\t * reasons even when {@link PredictionMode#LL} or\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} is used.\r\n\t */\r\n\tpublic SLL_TotalLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the minimum lookahead required for any single SLL prediction to\r\n\t * complete for this decision, by reaching a unique prediction, reaching an\r\n\t * SLL conflict state, or encountering a syntax error.\r\n\t */\r\n\tpublic SLL_MinLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the maximum lookahead required for any single SLL prediction to\r\n\t * complete for this decision, by reaching a unique prediction, reaching an\r\n\t * SLL conflict state, or encountering a syntax error.\r\n\t */\r\n\tpublic SLL_MaxLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the {@link LookaheadEventInfo} associated with the event where the\r\n\t * {@link #SLL_MaxLook} value was set.\r\n\t */\r\n\tpublic SLL_MaxLookEvent?: LookaheadEventInfo;\r\n\r\n\t/**\r\n\t * The sum of the lookahead required for LL prediction for this decision.\r\n\t * Note that LL prediction is only used when SLL prediction reaches a\r\n\t * conflict state.\r\n\t */\r\n\tpublic LL_TotalLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the minimum lookahead required for any single LL prediction to\r\n\t * complete for this decision. An LL prediction completes when the algorithm\r\n\t * reaches a unique prediction, a conflict state (for\r\n\t * {@link PredictionMode#LL}, an ambiguity state (for\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}, or a syntax error.\r\n\t */\r\n\tpublic LL_MinLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the maximum lookahead required for any single LL prediction to\r\n\t * complete for this decision. An LL prediction completes when the algorithm\r\n\t * reaches a unique prediction, a conflict state (for\r\n\t * {@link PredictionMode#LL}, an ambiguity state (for\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION}, or a syntax error.\r\n\t */\r\n\tpublic LL_MaxLook: number = 0;\r\n\r\n\t/**\r\n\t * Gets the {@link LookaheadEventInfo} associated with the event where the\r\n\t * {@link #LL_MaxLook} value was set.\r\n\t */\r\n\tpublic LL_MaxLookEvent?: LookaheadEventInfo;\r\n\r\n\t/**\r\n\t * A collection of {@link ContextSensitivityInfo} instances describing the\r\n\t * context sensitivities encountered during LL prediction for this decision.\r\n\t *\r\n\t * @see ContextSensitivityInfo\r\n\t */\r\n\tpublic contextSensitivities: ContextSensitivityInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link ErrorInfo} instances describing the parse errors\r\n\t * identified during calls to {@link ParserATNSimulator#adaptivePredict} for\r\n\t * this decision.\r\n\t *\r\n\t * @see ErrorInfo\r\n\t */\r\n\tpublic errors: ErrorInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link AmbiguityInfo} instances describing the\r\n\t * ambiguities encountered during LL prediction for this decision.\r\n\t *\r\n\t * @see AmbiguityInfo\r\n\t */\r\n\tpublic ambiguities: AmbiguityInfo[] = [];\r\n\r\n\t/**\r\n\t * A collection of {@link PredicateEvalInfo} instances describing the\r\n\t * results of evaluating individual predicates during prediction for this\r\n\t * decision.\r\n\t *\r\n\t * @see PredicateEvalInfo\r\n\t */\r\n\tpublic predicateEvals: PredicateEvalInfo[] = [];\r\n\r\n\t/**\r\n\t * The total number of ATN transitions required during SLL prediction for\r\n\t * this decision. An ATN transition is determined by the number of times the\r\n\t * DFA does not contain an edge that is required for prediction, resulting\r\n\t * in on-the-fly computation of that edge.\r\n\t *\r\n\t * If DFA caching of SLL transitions is employed by the implementation, ATN\r\n\t * computation may cache the computed edge for efficient lookup during\r\n\t * future parsing of this decision. Otherwise, the SLL parsing algorithm\r\n\t * will use ATN transitions exclusively.\r\n\t *\r\n\t * @see #SLL_ATNTransitions\r\n\t * @see ParserATNSimulator#computeTargetState\r\n\t * @see LexerATNSimulator#computeTargetState\r\n\t */\r\n\tpublic SLL_ATNTransitions: number = 0;\r\n\r\n\t/**\r\n\t * The total number of DFA transitions required during SLL prediction for\r\n\t * this decision.\r\n\t *\r\n\t * If the ATN simulator implementation does not use DFA caching for SLL\r\n\t * transitions, this value will be 0.\r\n\t *\r\n\t * @see ParserATNSimulator#getExistingTargetState\r\n\t * @see LexerATNSimulator#getExistingTargetState\r\n\t */\r\n\tpublic SLL_DFATransitions: number = 0;\r\n\r\n\t/**\r\n\t * Gets the total number of times SLL prediction completed in a conflict\r\n\t * state, resulting in fallback to LL prediction.\r\n\t *\r\n\t * Note that this value is not related to whether or not\r\n\t * {@link PredictionMode#SLL} may be used successfully with a particular\r\n\t * grammar. If the ambiguity resolution algorithm applied to the SLL\r\n\t * conflicts for this decision produce the same result as LL prediction for\r\n\t * this decision, {@link PredictionMode#SLL} would produce the same overall\r\n\t * parsing result as {@link PredictionMode#LL}.\r\n\t */\r\n\tpublic LL_Fallback: number = 0;\r\n\r\n\t/**\r\n\t * The total number of ATN transitions required during LL prediction for\r\n\t * this decision. An ATN transition is determined by the number of times the\r\n\t * DFA does not contain an edge that is required for prediction, resulting\r\n\t * in on-the-fly computation of that edge.\r\n\t *\r\n\t * If DFA caching of LL transitions is employed by the implementation, ATN\r\n\t * computation may cache the computed edge for efficient lookup during\r\n\t * future parsing of this decision. Otherwise, the LL parsing algorithm will\r\n\t * use ATN transitions exclusively.\r\n\t *\r\n\t * @see #LL_DFATransitions\r\n\t * @see ParserATNSimulator#computeTargetState\r\n\t * @see LexerATNSimulator#computeTargetState\r\n\t */\r\n\tpublic LL_ATNTransitions: number = 0;\r\n\r\n\t/**\r\n\t * The total number of DFA transitions required during LL prediction for\r\n\t * this decision.\r\n\t *\r\n\t * If the ATN simulator implementation does not use DFA caching for LL\r\n\t * transitions, this value will be 0.\r\n\t *\r\n\t * @see ParserATNSimulator#getExistingTargetState\r\n\t * @see LexerATNSimulator#getExistingTargetState\r\n\t */\r\n\tpublic LL_DFATransitions: number = 0;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link DecisionInfo} class to contain\r\n\t * statistics for a particular decision.\r\n\t *\r\n\t * @param decision The decision number\r\n\t */\r\n\tconstructor(decision: number) {\r\n\t\tthis.decision = decision;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\treturn \"{\" +\r\n\t\t\t\"decision=\" + this.decision +\r\n\t\t\t\", contextSensitivities=\" + this.contextSensitivities.length +\r\n\t\t\t\", errors=\" + this.errors.length +\r\n\t\t\t\", ambiguities=\" + this.ambiguities.length +\r\n\t\t\t\", SLL_lookahead=\" + this.SLL_TotalLook +\r\n\t\t\t\", SLL_ATNTransitions=\" + this.SLL_ATNTransitions +\r\n\t\t\t\", SLL_DFATransitions=\" + this.SLL_DFATransitions +\r\n\t\t\t\", LL_Fallback=\" + this.LL_Fallback +\r\n\t\t\t\", LL_lookahead=\" + this.LL_TotalLook +\r\n\t\t\t\", LL_ATNTransitions=\" + this.LL_ATNTransitions +\r\n\t\t\t\"}\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:28.7213647-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for a syntax error\r\n * identified during prediction. Syntax errors occur when the prediction\r\n * algorithm is unable to identify an alternative which would lead to a\r\n * successful parse.\r\n *\r\n * @see Parser#notifyErrorListeners(Token, String, RecognitionException)\r\n * @see ANTLRErrorListener#syntaxError\r\n *\r\n * @since 4.3\r\n */\r\nexport class ErrorInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * Constructs a new instance of the {@link ErrorInfo} class with the\r\n\t * specified detailed syntax error information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state reached during prediction\r\n\t * prior to reaching the {@link ATNSimulator#ERROR} state\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the syntax error was identified\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\t@NotNull state: SimulatorState,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:30.6852565-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for tracking the lookahead\r\n * depth required in order to make a prediction.\r\n *\r\n * @since 4.3\r\n */\r\nexport class LookaheadEventInfo extends DecisionEventInfo {\r\n\t/** The alternative chosen by adaptivePredict(), not necessarily\r\n\t * the outermost alt shown for a rule; left-recursive rules have\r\n\t * user-level alts that differ from the rewritten rule with a (...) block\r\n\t * and a (..)* loop.\r\n\t */\r\n\tpublic predictedAlt: number;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link LookaheadEventInfo} class with\r\n\t * the specified detailed lookahead information.\r\n\t *\r\n\t * @param decision The decision number\r\n\t * @param state The final simulator state containing the necessary\r\n\t * information to determine the result of a prediction, or `undefined` if\r\n\t * the final state is not available\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the prediction was finally made\r\n\t * @param fullCtx `true` if the current lookahead is part of an LL\r\n\t * prediction; otherwise, `false` if the current lookahead is part of\r\n\t * an SLL prediction\r\n\t */\r\n\tconstructor(\r\n\t\tdecision: number,\r\n\t\tstate: SimulatorState | undefined,\r\n\t\tpredictedAlt: number,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tfullCtx: boolean) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, fullCtx);\r\n\t\tthis.predictedAlt = predictedAlt;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:35.1914305-07:00\r\n\r\nimport { DecisionEventInfo } from \"./DecisionEventInfo\";\r\nimport { NotNull } from \"../Decorators\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * This class represents profiling event information for semantic predicate\r\n * evaluations which occur during prediction.\r\n *\r\n * @see ParserATNSimulator#evalSemanticContext\r\n *\r\n * @since 4.3\r\n */\r\nexport class PredicateEvalInfo extends DecisionEventInfo {\r\n\t/**\r\n\t * The semantic context which was evaluated.\r\n\t */\r\n\tpublic semctx: SemanticContext;\r\n\t/**\r\n\t * The alternative number for the decision which is guarded by the semantic\r\n\t * context {@link #semctx}. Note that other ATN\r\n\t * configurations may predict the same alternative which are guarded by\r\n\t * other semantic contexts and/or {@link SemanticContext#NONE}.\r\n\t */\r\n\tpublic predictedAlt: number;\r\n\t/**\r\n\t * The result of evaluating the semantic context {@link #semctx}.\r\n\t */\r\n\tpublic evalResult: boolean;\r\n\r\n\t/**\r\n\t * Constructs a new instance of the {@link PredicateEvalInfo} class with the\r\n\t * specified detailed predicate evaluation information.\r\n\t *\r\n\t * @param state The simulator state\r\n\t * @param decision The decision number\r\n\t * @param input The input token stream\r\n\t * @param startIndex The start index for the current prediction\r\n\t * @param stopIndex The index at which the predicate evaluation was\r\n\t * triggered. Note that the input stream may be reset to other positions for\r\n\t * the actual evaluation of individual predicates.\r\n\t * @param semctx The semantic context which was evaluated\r\n\t * @param evalResult The results of evaluating the semantic context\r\n\t * @param predictedAlt The alternative number for the decision which is\r\n\t * guarded by the semantic context `semctx`. See {@link #predictedAlt}\r\n\t * for more information.\r\n\t *\r\n\t * @see ParserATNSimulator#evalSemanticContext(SemanticContext, ParserRuleContext, int)\r\n\t * @see SemanticContext#eval(Recognizer, RuleContext)\r\n\t */\r\n\tconstructor(\r\n\t\t@NotNull state: SimulatorState,\r\n\t\tdecision: number,\r\n\t\t@NotNull input: TokenStream,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\t@NotNull semctx: SemanticContext,\r\n\t\tevalResult: boolean,\r\n\t\tpredictedAlt: number) {\r\n\r\n\t\tsuper(decision, state, input, startIndex, stopIndex, state.useContext);\r\n\t\tthis.semctx = semctx;\r\n\t\tthis.evalResult = evalResult;\r\n\t\tthis.predictedAlt = predictedAlt;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:36.4188352-07:00\r\n\r\nimport { AmbiguityInfo } from \"./AmbiguityInfo\";\r\nimport { ATN } from \"./ATN\";\r\nimport { ATNConfigSet } from \"./ATNConfigSet\";\r\nimport { ATNSimulator } from \"./ATNSimulator\";\r\nimport { BitSet } from \"../misc/BitSet\";\r\nimport { ContextSensitivityInfo } from \"./ContextSensitivityInfo\";\r\nimport { DecisionInfo } from \"./DecisionInfo\";\r\nimport { DFA } from \"../dfa/DFA\";\r\nimport { DFAState } from \"../dfa/DFAState\";\r\nimport { ErrorInfo } from \"./ErrorInfo\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { LookaheadEventInfo } from \"./LookaheadEventInfo\";\r\nimport { Parser } from \"../Parser\";\r\nimport { ParserATNSimulator } from \"./ParserATNSimulator\";\r\nimport { ParserRuleContext } from \"../ParserRuleContext\";\r\nimport { PredicateEvalInfo } from \"./PredicateEvalInfo\";\r\nimport { PredictionContextCache } from \"./PredictionContextCache\";\r\nimport { SemanticContext } from \"./SemanticContext\";\r\nimport { SimulatorState } from \"./SimulatorState\";\r\nimport { TokenStream } from \"../TokenStream\";\r\n\r\n/**\r\n * @since 4.3\r\n */\r\nexport class ProfilingATNSimulator extends ParserATNSimulator {\r\n\tprotected decisions: DecisionInfo[];\r\n\tprotected numDecisions: number;\r\n\r\n\tprotected _input: TokenStream | undefined;\r\n\tprotected _startIndex: number = 0;\r\n\tprotected _sllStopIndex: number = 0;\r\n\tprotected _llStopIndex: number = 0;\r\n\r\n\tprotected currentDecision: number = 0;\r\n\tprotected currentState: SimulatorState | undefined;\r\n\r\n\t/** At the point of LL failover, we record how SLL would resolve the conflict so that\r\n\t * we can determine whether or not a decision / input pair is context-sensitive.\r\n\t * If LL gives a different result than SLL's predicted alternative, we have a\r\n\t * context sensitivity for sure. The converse is not necessarily true, however.\r\n\t * It's possible that after conflict resolution chooses minimum alternatives,\r\n\t * SLL could get the same answer as LL. Regardless of whether or not the result indicates\r\n\t * an ambiguity, it is not treated as a context sensitivity because LL prediction\r\n\t * was not required in order to produce a correct prediction for this decision and input sequence.\r\n\t * It may in fact still be a context sensitivity but we don't know by looking at the\r\n\t * minimum alternatives for the current input.\r\n\t */\r\n\tprotected conflictingAltResolvedBySLL: number = 0;\r\n\r\n\tconstructor(parser: Parser) {\r\n\t\tsuper(parser.interpreter.atn, parser);\r\n\t\tthis.optimize_ll1 = false;\r\n\t\tthis.reportAmbiguities = true;\r\n\t\tthis.numDecisions = this.atn.decisionToState.length;\r\n\t\tthis.decisions = [];\r\n\t\tfor (let i = 0; i < this.numDecisions; i++) {\r\n\t\t\tthis.decisions.push(new DecisionInfo(i));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined): number;\r\n\tpublic adaptivePredict(/*@NotNull*/ input: TokenStream, decision: number, outerContext: ParserRuleContext | undefined, useContext: boolean): number;\r\n\t@Override\r\n\tpublic adaptivePredict(\r\n\t\t@NotNull input: TokenStream,\r\n\t\tdecision: number,\r\n\t\touterContext: ParserRuleContext | undefined,\r\n\t\tuseContext?: boolean): number {\r\n\t\tif (useContext !== undefined) {\r\n\t\t\treturn super.adaptivePredict(input, decision, outerContext, useContext);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis._input = input;\r\n\t\t\tthis._startIndex = input.index;\r\n\t\t\t// it's possible for SLL to reach a conflict state without consuming any input\r\n\t\t\tthis._sllStopIndex = this._startIndex - 1;\r\n\t\t\tthis._llStopIndex = -1;\r\n\t\t\tthis.currentDecision = decision;\r\n\t\t\tthis.currentState = undefined;\r\n\t\t\tthis.conflictingAltResolvedBySLL = ATN.INVALID_ALT_NUMBER;\r\n\t\t\tlet start: number[] = process.hrtime();\r\n\t\t\tlet alt: number = super.adaptivePredict(input, decision, outerContext);\r\n\t\t\tlet stop: number[] = process.hrtime();\r\n\r\n\t\t\tlet nanoseconds: number = (stop[0] - start[0]) * 1000000000;\r\n\t\t\tif (nanoseconds === 0) {\r\n\t\t\t\tnanoseconds = stop[1] - start[1];\r\n\t\t\t} else {\r\n\t\t\t\t// Add nanoseconds from start to end of that second, plus start of the end second to end\r\n\t\t\t\tnanoseconds += (1000000000 - start[1]) + stop[1];\r\n\t\t\t}\r\n\r\n\t\t\tthis.decisions[decision].timeInPrediction += nanoseconds;\r\n\t\t\tthis.decisions[decision].invocations++;\r\n\r\n\t\t\tlet SLL_k: number = this._sllStopIndex - this._startIndex + 1;\r\n\t\t\tthis.decisions[decision].SLL_TotalLook += SLL_k;\r\n\t\t\tthis.decisions[decision].SLL_MinLook = this.decisions[decision].SLL_MinLook === 0 ? SLL_k : Math.min(this.decisions[decision].SLL_MinLook, SLL_k);\r\n\t\t\tif (SLL_k > this.decisions[decision].SLL_MaxLook) {\r\n\t\t\t\tthis.decisions[decision].SLL_MaxLook = SLL_k;\r\n\t\t\t\tthis.decisions[decision].SLL_MaxLookEvent =\r\n\t\t\t\t\tnew LookaheadEventInfo(decision, undefined, alt, input, this._startIndex, this._sllStopIndex, false);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._llStopIndex >= 0) {\r\n\t\t\t\tlet LL_k: number = this._llStopIndex - this._startIndex + 1;\r\n\t\t\t\tthis.decisions[decision].LL_TotalLook += LL_k;\r\n\t\t\t\tthis.decisions[decision].LL_MinLook = this.decisions[decision].LL_MinLook === 0 ? LL_k : Math.min(this.decisions[decision].LL_MinLook, LL_k);\r\n\t\t\t\tif (LL_k > this.decisions[decision].LL_MaxLook) {\r\n\t\t\t\t\tthis.decisions[decision].LL_MaxLook = LL_k;\r\n\t\t\t\t\tthis.decisions[decision].LL_MaxLookEvent =\r\n\t\t\t\t\t\tnew LookaheadEventInfo(decision, undefined, alt, input, this._startIndex, this._llStopIndex, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn alt;\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis._input = undefined;\r\n\t\t\tthis.currentDecision = -1;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getStartState(dfa: DFA, input: TokenStream, outerContext: ParserRuleContext, useContext: boolean): SimulatorState | undefined {\r\n\t\tlet state: SimulatorState | undefined = super.getStartState(dfa, input, outerContext, useContext);\r\n\t\tthis.currentState = state;\r\n\t\treturn state;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeStartState(dfa: DFA, globalContext: ParserRuleContext, useContext: boolean): SimulatorState {\r\n\t\tlet state: SimulatorState = super.computeStartState(dfa, globalContext, useContext);\r\n\t\tthis.currentState = state;\r\n\t\treturn state;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeReachSet(dfa: DFA, previous: SimulatorState, t: number, contextCache: PredictionContextCache): SimulatorState | undefined {\r\n\t\tif (this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet reachState: SimulatorState | undefined = super.computeReachSet(dfa, previous, t, contextCache);\r\n\t\tif (reachState == null) {\r\n\t\t\t// no reach on current lookahead symbol. ERROR.\r\n\t\t\tthis.decisions[this.currentDecision].errors.push(\r\n\t\t\t\tnew ErrorInfo(this.currentDecision, previous, this._input, this._startIndex, this._input.index),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.currentState = reachState;\r\n\t\treturn reachState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected getExistingTargetState(previousD: DFAState, t: number): DFAState | undefined {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\t// this method is called after each time the input position advances\r\n\t\tif (this.currentState.useContext) {\r\n\t\t\tthis._llStopIndex = this._input.index;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._sllStopIndex = this._input.index;\r\n\t\t}\r\n\r\n\t\tlet existingTargetState: DFAState | undefined = super.getExistingTargetState(previousD, t);\r\n\t\tif (existingTargetState != null) {\r\n\t\t\t// this method is directly called by execDFA; must construct a SimulatorState\r\n\t\t\t// to represent the current state for this case\r\n\t\t\tthis.currentState = new SimulatorState(this.currentState.outerContext, existingTargetState, this.currentState.useContext, this.currentState.remainingOuterContext);\r\n\r\n\t\t\tif (this.currentState.useContext) {\r\n\t\t\t\tthis.decisions[this.currentDecision].LL_DFATransitions++;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.decisions[this.currentDecision].SLL_DFATransitions++; // count only if we transition over a DFA state\r\n\t\t\t}\r\n\r\n\t\t\tif (existingTargetState === ATNSimulator.ERROR) {\r\n\t\t\t\tlet state: SimulatorState = new SimulatorState(this.currentState.outerContext, previousD, this.currentState.useContext, this.currentState.remainingOuterContext);\r\n\t\t\t\tthis.decisions[this.currentDecision].errors.push(\r\n\t\t\t\t\tnew ErrorInfo(this.currentDecision, state, this._input, this._startIndex, this._input.index),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn existingTargetState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected computeTargetState(dfa: DFA, s: DFAState, remainingGlobalContext: ParserRuleContext, t: number, useContext: boolean, contextCache: PredictionContextCache): [DFAState, ParserRuleContext | undefined] {\r\n\t\tlet targetState: [DFAState, ParserRuleContext | undefined] = super.computeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache);\r\n\r\n\t\tif (useContext) {\r\n\t\t\tthis.decisions[this.currentDecision].LL_ATNTransitions++;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.decisions[this.currentDecision].SLL_ATNTransitions++;\r\n\t\t}\r\n\r\n\t\treturn targetState;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected evalSemanticContextImpl(pred: SemanticContext, parserCallStack: ParserRuleContext, alt: number): boolean {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet result: boolean = super.evalSemanticContextImpl(pred, parserCallStack, alt);\r\n\t\tif (!(pred instanceof SemanticContext.PrecedencePredicate)) {\r\n\t\t\tlet fullContext: boolean = this._llStopIndex >= 0;\r\n\t\t\tlet stopIndex: number = fullContext ? this._llStopIndex : this._sllStopIndex;\r\n\t\t\tthis.decisions[this.currentDecision].predicateEvals.push(\r\n\t\t\t\tnew PredicateEvalInfo(this.currentState, this.currentDecision, this._input, this._startIndex, stopIndex, pred, result, alt),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportContextSensitivity(dfa: DFA, prediction: number, acceptState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tif (prediction !== this.conflictingAltResolvedBySLL) {\r\n\t\t\tthis.decisions[this.currentDecision].contextSensitivities.push(\r\n\t\t\t\tnew ContextSensitivityInfo(this.currentDecision, acceptState, this._input, startIndex, stopIndex),\r\n\t\t\t);\r\n\t\t}\r\n\t\tsuper.reportContextSensitivity(dfa, prediction, acceptState, startIndex, stopIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportAttemptingFullContext(dfa: DFA, conflictingAlts: BitSet, conflictState: SimulatorState, startIndex: number, stopIndex: number): void {\r\n\t\tif (conflictingAlts != null) {\r\n\t\t\tthis.conflictingAltResolvedBySLL = conflictingAlts.nextSetBit(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.conflictingAltResolvedBySLL = conflictState.s0.configs.getRepresentedAlternatives().nextSetBit(0);\r\n\t\t}\r\n\t\tthis.decisions[this.currentDecision].LL_Fallback++;\r\n\t\tsuper.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected reportAmbiguity(@NotNull dfa: DFA, D: DFAState, startIndex: number, stopIndex: number, exact: boolean, @NotNull ambigAlts: BitSet, @NotNull configs: ATNConfigSet): void {\r\n\t\tif (this.currentState === undefined || this._input === undefined) {\r\n\t\t\tthrow new Error(\"Invalid state\");\r\n\t\t}\r\n\r\n\t\tlet prediction: number;\r\n\t\tif (ambigAlts != null) {\r\n\t\t\tprediction = ambigAlts.nextSetBit(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tprediction = configs.getRepresentedAlternatives().nextSetBit(0);\r\n\t\t}\r\n\t\tif (this.conflictingAltResolvedBySLL !== ATN.INVALID_ALT_NUMBER && prediction !== this.conflictingAltResolvedBySLL) {\r\n\t\t\t// Even though this is an ambiguity we are reporting, we can\r\n\t\t\t// still detect some context sensitivities. Both SLL and LL\r\n\t\t\t// are showing a conflict, hence an ambiguity, but if they resolve\r\n\t\t\t// to different minimum alternatives we have also identified a\r\n\t\t\t// context sensitivity.\r\n\t\t\tthis.decisions[this.currentDecision].contextSensitivities.push(\r\n\t\t\t\tnew ContextSensitivityInfo(this.currentDecision, this.currentState, this._input, startIndex, stopIndex),\r\n\t\t\t);\r\n\t\t}\r\n\t\tthis.decisions[this.currentDecision].ambiguities.push(\r\n\t\t\tnew AmbiguityInfo(this.currentDecision, this.currentState, ambigAlts, this._input, startIndex, stopIndex),\r\n\t\t);\r\n\t\tsuper.reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs);\r\n\t}\r\n\r\n\t// ---------------------------------------------------------------------\r\n\r\n\tpublic getDecisionInfo(): DecisionInfo[] {\r\n\t\treturn this.decisions;\r\n\t}\r\n\r\n\tpublic getCurrentState(): SimulatorState | undefined {\r\n\t\treturn this.currentState;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.4399193-07:00\r\n\r\nimport * as assert from \"assert\";\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ANTLRErrorStrategy } from \"./ANTLRErrorStrategy\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNDeserializationOptions } from \"./atn/ATNDeserializationOptions\";\r\nimport { ATNDeserializer } from \"./atn/ATNDeserializer\";\r\nimport { ATNSimulator } from \"./atn/ATNSimulator\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { DefaultErrorStrategy } from \"./DefaultErrorStrategy\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { ErrorNode } from \"./tree/ErrorNode\";\r\nimport { IntegerStack } from \"./misc/IntegerStack\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { Override, NotNull, Nullable } from \"./Decorators\";\r\nimport { ParseInfo } from \"./atn/ParseInfo\";\r\nimport { ParserATNSimulator } from \"./atn/ParserATNSimulator\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { ParseTreeListener } from \"./tree/ParseTreeListener\";\r\nimport { ParseTreePattern } from \"./tree/pattern/ParseTreePattern\";\r\nimport { ProxyParserErrorListener } from \"./ProxyParserErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { TerminalNode } from \"./tree/TerminalNode\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\nclass TraceListener implements ParseTreeListener {\r\n\tconstructor(private ruleNames: string[], private tokenStream: TokenStream) {\r\n\t}\r\n\r\n\t@Override\r\n\tpublic enterEveryRule(ctx: ParserRuleContext): void {\r\n\t\tconsole.log(\"enter \" + this.ruleNames[ctx.ruleIndex] +\r\n\t\t\t\", LT(1)=\" + this.tokenStream.LT(1).text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic exitEveryRule(ctx: ParserRuleContext): void {\r\n\t\tconsole.log(\"exit \" + this.ruleNames[ctx.ruleIndex] +\r\n\t\t\t\", LT(1)=\" + this.tokenStream.LT(1).text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic visitErrorNode(node: ErrorNode): void {\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t@Override\r\n\tpublic visitTerminal(node: TerminalNode): void {\r\n\t\tlet parent = node.parent!.ruleContext;\r\n\t\tlet token: Token = node.symbol;\r\n\t\tconsole.log(\"consume \" + token + \" rule \" + this.ruleNames[parent.ruleIndex]);\r\n\t}\r\n}\r\n\r\n/** This is all the parsing support code essentially; most of it is error recovery stuff. */\r\nexport abstract class Parser extends Recognizer {\r\n\t/**\r\n\t * This field maps from the serialized ATN string to the deserialized {@link ATN} with\r\n\t * bypass alternatives.\r\n\t *\r\n\t * @see ATNDeserializationOptions.isGenerateRuleBypassTransitions\r\n\t */\r\n\tprivate static readonly bypassAltsAtnCache = new Map();\r\n\r\n\t/**\r\n\t * The error handling strategy for the parser. The default value is a new\r\n\t * instance of {@link DefaultErrorStrategy}.\r\n\t *\r\n\t * @see #getErrorHandler\r\n\t * @see #setErrorHandler\r\n\t */\r\n\t@NotNull\r\n\tprotected _errHandler: ANTLRErrorStrategy = new DefaultErrorStrategy();\r\n\r\n\t/**\r\n\t * The input stream.\r\n\t *\r\n\t * @see #getInputStream\r\n\t * @see #setInputStream\r\n\t */\r\n\tprotected _input!: TokenStream;\r\n\r\n\tprotected readonly _precedenceStack: IntegerStack = new IntegerStack();\r\n\r\n\t/**\r\n\t * The {@link ParserRuleContext} object for the currently executing rule.\r\n\t *\r\n\t * This is always non-undefined during the parsing process.\r\n\t */\r\n\tprotected _ctx!: ParserRuleContext;\r\n\r\n\t/**\r\n\t * Specifies whether or not the parser should construct a parse tree during\r\n\t * the parsing process. The default value is `true`.\r\n\t *\r\n\t * @see `buildParseTree`\r\n\t */\r\n\tprivate _buildParseTrees: boolean = true;\r\n\r\n\t/**\r\n\t * When {@link #setTrace}`(true)` is called, a reference to the\r\n\t * {@link TraceListener} is stored here so it can be easily removed in a\r\n\t * later call to {@link #setTrace}`(false)`. The listener itself is\r\n\t * implemented as a parser listener so this field is not directly used by\r\n\t * other parser methods.\r\n\t */\r\n\tprivate _tracer: TraceListener | undefined;\r\n\r\n\t/**\r\n\t * The list of {@link ParseTreeListener} listeners registered to receive\r\n\t * events during the parse.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected _parseListeners: ParseTreeListener[] = [];\r\n\r\n\t/**\r\n\t * The number of syntax errors reported during parsing. This value is\r\n\t * incremented each time {@link #notifyErrorListeners} is called.\r\n\t */\r\n\tprotected _syntaxErrors: number = 0;\r\n\r\n\t/** Indicates parser has match()ed EOF token. See {@link #exitRule()}. */\r\n\tprotected matchedEOF: boolean = false;\r\n\r\n\tconstructor(input: TokenStream) {\r\n\t\tsuper();\r\n\t\tthis._precedenceStack.push(0);\r\n\t\tthis.inputStream = input;\r\n\t}\r\n\r\n\t/** reset the parser's state */\r\n\tpublic reset(): void;\r\n\tpublic reset(resetInput: boolean): void;\r\n\tpublic reset(resetInput?: boolean): void {\r\n\t\t// Note: this method executes when not parsing, so _ctx can be undefined\r\n\t\tif (resetInput === undefined || resetInput) {\r\n\t\t\tthis.inputStream.seek(0);\r\n\t\t}\r\n\r\n\t\tthis._errHandler.reset(this);\r\n\t\tthis._ctx = undefined as any;\r\n\t\tthis._syntaxErrors = 0;\r\n\t\tthis.matchedEOF = false;\r\n\t\tthis.isTrace = false;\r\n\t\tthis._precedenceStack.clear();\r\n\t\tthis._precedenceStack.push(0);\r\n\t\tlet interpreter: ATNSimulator = this.interpreter;\r\n\t\tif (interpreter != null) {\r\n\t\t\tinterpreter.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Match current input symbol against `ttype`. If the symbol type\r\n\t * matches, {@link ANTLRErrorStrategy#reportMatch} and {@link #consume} are\r\n\t * called to complete the match process.\r\n\t *\r\n\t * If the symbol type does not match,\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is called on the current error\r\n\t * strategy to attempt recovery. If {@link #getBuildParseTree} is\r\n\t * `true` and the token index of the symbol returned by\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to\r\n\t * the parse tree by calling {@link #createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)}.\r\n\t *\r\n\t * @param ttype the token type to match\r\n\t * @returns the matched symbol\r\n\t * @ if the current input symbol did not match\r\n\t * `ttype` and the error strategy could not recover from the\r\n\t * mismatched symbol\r\n\t */\r\n\t@NotNull\r\n\tpublic match(ttype: number): Token {\r\n\t\tlet t: Token = this.currentToken;\r\n\t\tif (t.type === ttype) {\r\n\t\t\tif (ttype === Token.EOF) {\r\n\t\t\t\tthis.matchedEOF = true;\r\n\t\t\t}\r\n\t\t\tthis._errHandler.reportMatch(this);\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tt = this._errHandler.recoverInline(this);\r\n\t\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\r\n\t\t\t\t// we must have conjured up a new token during single token insertion\r\n\t\t\t\t// if it's not the current symbol\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, t));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Match current input symbol as a wildcard. If the symbol type matches\r\n\t * (i.e. has a value greater than 0), {@link ANTLRErrorStrategy#reportMatch}\r\n\t * and {@link #consume} are called to complete the match process.\r\n\t *\r\n\t * If the symbol type does not match,\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is called on the current error\r\n\t * strategy to attempt recovery. If {@link #getBuildParseTree} is\r\n\t * `true` and the token index of the symbol returned by\r\n\t * {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to\r\n\t * the parse tree by calling {@link Parser#createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)}.\r\n\t *\r\n\t * @returns the matched symbol\r\n\t * @ if the current input symbol did not match\r\n\t * a wildcard and the error strategy could not recover from the mismatched\r\n\t * symbol\r\n\t */\r\n\t@NotNull\r\n\tpublic matchWildcard(): Token {\r\n\t\tlet t: Token = this.currentToken;\r\n\t\tif (t.type > 0) {\r\n\t\t\tthis._errHandler.reportMatch(this);\r\n\t\t\tthis.consume();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tt = this._errHandler.recoverInline(this);\r\n\t\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\r\n\t\t\t\t// we must have conjured up a new token during single token insertion\r\n\t\t\t\t// if it's not the current symbol\r\n\t\t\t\tthis._ctx.addErrorNode(this.createErrorNode(this._ctx, t));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t}\r\n\r\n\t/**\r\n\t * Track the {@link ParserRuleContext} objects during the parse and hook\r\n\t * them up using the {@link ParserRuleContext#children} list so that it\r\n\t * forms a parse tree. The {@link ParserRuleContext} returned from the start\r\n\t * rule represents the root of the parse tree.\r\n\t *\r\n\t * Note that if we are not building parse trees, rule contexts only point\r\n\t * upwards. When a rule exits, it returns the context but that gets garbage\r\n\t * collected if nobody holds a reference. It points upwards but nobody\r\n\t * points at it.\r\n\t *\r\n\t * When we build parse trees, we are adding all of these contexts to\r\n\t * {@link ParserRuleContext#children} list. Contexts are then not candidates\r\n\t * for garbage collection.\r\n\t */\r\n\tset buildParseTree(buildParseTrees: boolean) {\r\n\t\tthis._buildParseTrees = buildParseTrees;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether or not a complete parse tree will be constructed while\r\n\t * parsing. This property is `true` for a newly constructed parser.\r\n\t *\r\n\t * @returns `true` if a complete parse tree will be constructed while\r\n\t * parsing, otherwise `false`\r\n\t */\r\n\tget buildParseTree(): boolean {\r\n\t\treturn this._buildParseTrees;\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getParseListeners(): ParseTreeListener[] {\r\n\t\treturn this._parseListeners;\r\n\t}\r\n\r\n\t/**\r\n\t * Registers `listener` to receive events during the parsing process.\r\n\t *\r\n\t * To support output-preserving grammar transformations (including but not\r\n\t * limited to left-recursion removal, automated left-factoring, and\r\n\t * optimized code generation), calls to listener methods during the parse\r\n\t * may differ substantially from calls made by\r\n\t * {@link ParseTreeWalker#DEFAULT} used after the parse is complete. In\r\n\t * particular, rule entry and exit events may occur in a different order\r\n\t * during the parse than after the parser. In addition, calls to certain\r\n\t * rule entry methods may be omitted.\r\n\t *\r\n\t * With the following specific exceptions, calls to listener events are\r\n\t * *deterministic*, i.e. for identical input the calls to listener\r\n\t * methods will be the same.\r\n\t *\r\n\t * * Alterations to the grammar used to generate code may change the\r\n\t * behavior of the listener calls.\r\n\t * * Alterations to the command line options passed to ANTLR 4 when\r\n\t * generating the parser may change the behavior of the listener calls.\r\n\t * * Changing the version of the ANTLR Tool used to generate the parser\r\n\t * may change the behavior of the listener calls.\r\n\t *\r\n\t * @param listener the listener to add\r\n\t *\r\n\t * @throws {@link TypeError} if `listener` is `undefined`\r\n\t */\r\n\tpublic addParseListener(@NotNull listener: ParseTreeListener): void {\r\n\t\tif (listener == null) {\r\n\t\t\tthrow new TypeError(\"listener cannot be null\");\r\n\t\t}\r\n\r\n\t\tthis._parseListeners.push(listener);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove `listener` from the list of parse listeners.\r\n\t *\r\n\t * If `listener` is `undefined` or has not been added as a parse\r\n\t * listener, this method does nothing.\r\n\t *\r\n\t * @see #addParseListener\r\n\t *\r\n\t * @param listener the listener to remove\r\n\t */\r\n\tpublic removeParseListener(listener: ParseTreeListener): void {\r\n\t\tlet index = this._parseListeners.findIndex((l) => l === listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tthis._parseListeners.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Remove all parse listeners.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tpublic removeParseListeners(): void {\r\n\t\tthis._parseListeners.length = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Notify any parse listeners of an enter rule event.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected triggerEnterRuleEvent(): void {\r\n\t\tfor (let listener of this._parseListeners) {\r\n\t\t\tif (listener.enterEveryRule) {\r\n\t\t\t\tlistener.enterEveryRule(this._ctx);\r\n\t\t\t}\r\n\r\n\t\t\tthis._ctx.enterRule(listener);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Notify any parse listeners of an exit rule event.\r\n\t *\r\n\t * @see #addParseListener\r\n\t */\r\n\tprotected triggerExitRuleEvent(): void {\r\n\t\t// reverse order walk of listeners\r\n\t\tfor (let i = this._parseListeners.length - 1; i >= 0; i--) {\r\n\t\t\tlet listener: ParseTreeListener = this._parseListeners[i];\r\n\t\t\tthis._ctx.exitRule(listener);\r\n\t\t\tif (listener.exitEveryRule) {\r\n\t\t\t\tlistener.exitEveryRule(this._ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the number of syntax errors reported during parsing. This value is\r\n\t * incremented each time {@link #notifyErrorListeners} is called.\r\n\t *\r\n\t * @see #notifyErrorListeners\r\n\t */\r\n\tget numberOfSyntaxErrors(): number {\r\n\t\treturn this._syntaxErrors;\r\n\t}\r\n\r\n\tget tokenFactory(): TokenFactory {\r\n\t\treturn this._input.tokenSource.tokenFactory;\r\n\t}\r\n\r\n\t/**\r\n\t * The ATN with bypass alternatives is expensive to create so we create it\r\n\t * lazily.\r\n\t *\r\n\t * @ if the current parser does not\r\n\t * implement the `serializedATN` property.\r\n\t */\r\n\t@NotNull\r\n\tpublic getATNWithBypassAlts(): ATN {\r\n\t\tlet serializedAtn: string = this.serializedATN;\r\n\t\tif (serializedAtn == null) {\r\n\t\t\tthrow new Error(\"The current parser does not support an ATN with bypass alternatives.\");\r\n\t\t}\r\n\r\n\t\tlet result = Parser.bypassAltsAtnCache.get(serializedAtn);\r\n\t\tif (result == null) {\r\n\t\t\tlet deserializationOptions: ATNDeserializationOptions = new ATNDeserializationOptions();\r\n\t\t\tdeserializationOptions.isGenerateRuleBypassTransitions = true;\r\n\t\t\tresult = new ATNDeserializer(deserializationOptions).deserialize(Utils.toCharArray(serializedAtn));\r\n\t\t\tParser.bypassAltsAtnCache.set(serializedAtn, result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * The preferred method of getting a tree pattern. For example, here's a\r\n\t * sample use:\r\n\t *\r\n\t * ```\r\n\t * let t: ParseTree = parser.expr();\r\n\t * let p: ParseTreePattern = await parser.compileParseTreePattern(\"+0\", MyParser.RULE_expr);\r\n\t * let m: ParseTreeMatch = p.match(t);\r\n\t * let id: string = m.get(\"ID\");\r\n\t * ```\r\n\t */\r\n\tpublic compileParseTreePattern(pattern: string, patternRuleIndex: number): Promise;\r\n\r\n\t/**\r\n\t * The same as {@link #compileParseTreePattern(String, int)} but specify a\r\n\t * {@link Lexer} rather than trying to deduce it from this parser.\r\n\t */\r\n\tpublic compileParseTreePattern(pattern: string, patternRuleIndex: number, lexer?: Lexer): Promise;\r\n\r\n\tpublic async compileParseTreePattern(pattern: string, patternRuleIndex: number, lexer?: Lexer): Promise {\r\n\t\tif (!lexer) {\r\n\t\t\tif (this.inputStream) {\r\n\t\t\t\tlet tokenSource = this.inputStream.tokenSource;\r\n\t\t\t\tif (tokenSource instanceof Lexer) {\r\n\t\t\t\t\tlexer = tokenSource;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!lexer) {\r\n\t\t\t\tthrow new Error(\"Parser can't discover a lexer to use\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet currentLexer = lexer;\r\n\t\tlet m = await import(\"./tree/pattern/ParseTreePatternMatcher\");\r\n\t\tlet matcher = new m.ParseTreePatternMatcher(currentLexer, this);\r\n\t\treturn matcher.compile(pattern, patternRuleIndex);\r\n\t}\r\n\r\n\t@NotNull\r\n\tget errorHandler(): ANTLRErrorStrategy {\r\n\t\treturn this._errHandler;\r\n\t}\r\n\r\n\tset errorHandler(@NotNull handler: ANTLRErrorStrategy) {\r\n\t\tthis._errHandler = handler;\r\n\t}\r\n\r\n\t@Override\r\n\tget inputStream(): TokenStream {\r\n\t\treturn this._input;\r\n\t}\r\n\r\n\t/** Set the token stream and reset the parser. */\r\n\tset inputStream(input: TokenStream) {\r\n\t\tthis.reset(false);\r\n\t\tthis._input = input;\r\n\t}\r\n\r\n\t/** Match needs to return the current input symbol, which gets put\r\n\t * into the label for the associated token ref; e.g., x=ID.\r\n\t */\r\n\t@NotNull\r\n\tget currentToken(): Token {\r\n\t\treturn this._input.LT(1);\r\n\t}\r\n\r\n\tpublic notifyErrorListeners(/*@NotNull*/ msg: string): void;\r\n\tpublic notifyErrorListeners(/*@NotNull*/ msg: string, /*@NotNull*/ offendingToken: Token | null, e: RecognitionException | undefined): void;\r\n\r\n\tpublic notifyErrorListeners(msg: string, offendingToken?: Token | null, e?: RecognitionException | undefined): void {\r\n\t\tif (offendingToken === undefined) {\r\n\t\t\toffendingToken = this.currentToken;\r\n\t\t} else if (offendingToken === null) {\r\n\t\t\toffendingToken = undefined;\r\n\t\t}\r\n\r\n\t\tthis._syntaxErrors++;\r\n\t\tlet line: number = -1;\r\n\t\tlet charPositionInLine: number = -1;\r\n\t\tif (offendingToken != null) {\r\n\t\t\tline = offendingToken.line;\r\n\t\t\tcharPositionInLine = offendingToken.charPositionInLine;\r\n\t\t}\r\n\r\n\t\tlet listener = this.getErrorListenerDispatch();\r\n\t\tif (listener.syntaxError) {\r\n\t\t\tlistener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Consume and return the [current symbol](`currentToken`).\r\n\t *\r\n\t * E.g., given the following input with `A` being the current\r\n\t * lookahead symbol, this function moves the cursor to `B` and returns\r\n\t * `A`.\r\n\t *\r\n\t * ```\r\n\t * A B\r\n\t * ^\r\n\t * ```\r\n\t *\r\n\t * If the parser is not in error recovery mode, the consumed symbol is added\r\n\t * to the parse tree using {@link ParserRuleContext#addChild(TerminalNode)}, and\r\n\t * {@link ParseTreeListener#visitTerminal} is called on any parse listeners.\r\n\t * If the parser *is* in error recovery mode, the consumed symbol is\r\n\t * added to the parse tree using {@link #createErrorNode(ParserRuleContext, Token)} then\r\n\t * {@link ParserRuleContext#addErrorNode(ErrorNode)} and\r\n\t * {@link ParseTreeListener#visitErrorNode} is called on any parse\r\n\t * listeners.\r\n\t */\r\n\tpublic consume(): Token {\r\n\t\tlet o: Token = this.currentToken;\r\n\t\tif (o.type !== Parser.EOF) {\r\n\t\t\tthis.inputStream.consume();\r\n\t\t}\r\n\t\tlet hasListener: boolean = this._parseListeners.length !== 0;\r\n\t\tif (this._buildParseTrees || hasListener) {\r\n\t\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\r\n\t\t\t\tlet node: ErrorNode = this._ctx.addErrorNode(this.createErrorNode(this._ctx, o));\r\n\t\t\t\tif (hasListener) {\r\n\t\t\t\t\tfor (let listener of this._parseListeners) {\r\n\t\t\t\t\t\tif (listener.visitErrorNode) {\r\n\t\t\t\t\t\t\tlistener.visitErrorNode(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet node: TerminalNode = this.createTerminalNode(this._ctx, o);\r\n\t\t\t\tthis._ctx.addChild(node);\r\n\t\t\t\tif (hasListener) {\r\n\t\t\t\t\tfor (let listener of this._parseListeners) {\r\n\t\t\t\t\t\tif (listener.visitTerminal) {\r\n\t\t\t\t\t\t\tlistener.visitTerminal(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\r\n\t/**\r\n\t * How to create a token leaf node associated with a parent.\r\n\t * Typically, the terminal node to create is not a function of the parent.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic createTerminalNode(parent: ParserRuleContext, t: Token): TerminalNode {\r\n\t\treturn new TerminalNode(t);\r\n\t}\r\n\r\n\t/**\r\n\t * How to create an error node, given a token, associated with a parent.\r\n\t * Typically, the error node to create is not a function of the parent.\r\n\t *\r\n\t * @since 4.7\r\n\t */\r\n\tpublic createErrorNode(parent: ParserRuleContext, t: Token): ErrorNode {\r\n\t\treturn new ErrorNode(t);\r\n\t}\r\n\r\n\tprotected addContextToParseTree(): void {\r\n\t\tlet parent = this._ctx._parent as ParserRuleContext | undefined;\r\n\t\t// add current context to parent if we have a parent\r\n\t\tif (parent != null) {\r\n\t\t\tparent.addChild(this._ctx);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Always called by generated parsers upon entry to a rule. Access field\r\n\t * {@link #_ctx} get the current context.\r\n\t */\r\n\tpublic enterRule(@NotNull localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tthis.state = state;\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis.addContextToParseTree();\r\n\t\t}\r\n\t\tthis.triggerEnterRuleEvent();\r\n\t}\r\n\r\n\tpublic enterLeftFactoredRule(localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tthis.state = state;\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tlet factoredContext = this._ctx.getChild(this._ctx.childCount - 1) as ParserRuleContext;\r\n\t\t\tthis._ctx.removeLastChild();\r\n\t\t\tfactoredContext._parent = localctx;\r\n\t\t\tlocalctx.addChild(factoredContext);\r\n\t\t}\r\n\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis.addContextToParseTree();\r\n\t\t}\r\n\r\n\t\tthis.triggerEnterRuleEvent();\r\n\t}\r\n\r\n\tpublic exitRule(): void {\r\n\t\tif (this.matchedEOF) {\r\n\t\t\t// if we have matched EOF, it cannot consume past EOF so we use LT(1) here\r\n\t\t\tthis._ctx._stop = this._input.LT(1); // LT(1) will be end of file\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ctx._stop = this._input.tryLT(-1); // stop node is what we just matched\r\n\t\t}\r\n\t\t// trigger event on _ctx, before it reverts to parent\r\n\t\tthis.triggerExitRuleEvent();\r\n\t\tthis.state = this._ctx.invokingState;\r\n\t\tthis._ctx = this._ctx._parent as ParserRuleContext;\r\n\t}\r\n\r\n\tpublic enterOuterAlt(localctx: ParserRuleContext, altNum: number): void {\r\n\t\tlocalctx.altNumber = altNum;\r\n\t\t// if we have new localctx, make sure we replace existing ctx\r\n\t\t// that is previous child of parse tree\r\n\t\tif (this._buildParseTrees && this._ctx !== localctx) {\r\n\t\t\tlet parent = this._ctx._parent as ParserRuleContext | undefined;\r\n\t\t\tif (parent != null) {\r\n\t\t\t\tparent.removeLastChild();\r\n\t\t\t\tparent.addChild(localctx);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._ctx = localctx;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the precedence level for the top-most precedence rule.\r\n\t *\r\n\t * @returns The precedence level for the top-most precedence rule, or -1 if\r\n\t * the parser context is not nested within a precedence rule.\r\n\t */\r\n\tget precedence(): number {\r\n\t\tif (this._precedenceStack.isEmpty) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\treturn this._precedenceStack.peek();\r\n\t}\r\n\r\n\tpublic enterRecursionRule(localctx: ParserRuleContext, state: number, ruleIndex: number, precedence: number): void {\r\n\t\tthis.state = state;\r\n\t\tthis._precedenceStack.push(precedence);\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = this._input.LT(1);\r\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\r\n\t}\r\n\r\n\t/** Like {@link #enterRule} but for recursive rules.\r\n\t * Make the current context the child of the incoming localctx.\r\n\t */\r\n\tpublic pushNewRecursionContext(localctx: ParserRuleContext, state: number, ruleIndex: number): void {\r\n\t\tlet previous: ParserRuleContext = this._ctx;\r\n\t\tprevious._parent = localctx;\r\n\t\tprevious.invokingState = state;\r\n\t\tprevious._stop = this._input.tryLT(-1);\r\n\r\n\t\tthis._ctx = localctx;\r\n\t\tthis._ctx._start = previous._start;\r\n\t\tif (this._buildParseTrees) {\r\n\t\t\tthis._ctx.addChild(previous);\r\n\t\t}\r\n\r\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\r\n\t}\r\n\r\n\tpublic unrollRecursionContexts(_parentctx: ParserRuleContext): void {\r\n\t\tthis._precedenceStack.pop();\r\n\t\tthis._ctx._stop = this._input.tryLT(-1);\r\n\t\tlet retctx: ParserRuleContext = this._ctx; // save current ctx (return value)\r\n\r\n\t\t// unroll so _ctx is as it was before call to recursive method\r\n\t\tif (this._parseListeners.length > 0) {\r\n\t\t\twhile (this._ctx !== _parentctx) {\r\n\t\t\t\tthis.triggerExitRuleEvent();\r\n\t\t\t\tthis._ctx = this._ctx._parent as ParserRuleContext;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._ctx = _parentctx;\r\n\t\t}\r\n\r\n\t\t// hook into tree\r\n\t\tretctx._parent = _parentctx;\r\n\r\n\t\tif (this._buildParseTrees && _parentctx != null) {\r\n\t\t\t// add return ctx into invoking rule's tree\r\n\t\t\t_parentctx.addChild(retctx);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getInvokingContext(ruleIndex: number): ParserRuleContext | undefined {\r\n\t\tlet p = this._ctx;\r\n\t\twhile (p && p.ruleIndex !== ruleIndex) {\r\n\t\t\tp = p._parent as ParserRuleContext;\r\n\t\t}\r\n\t\treturn p;\r\n\t}\r\n\r\n\tget context(): ParserRuleContext {\r\n\t\treturn this._ctx;\r\n\t}\r\n\r\n\tset context(ctx: ParserRuleContext) {\r\n\t\tthis._ctx = ctx;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic precpred(@Nullable localctx: RuleContext, precedence: number): boolean {\r\n\t\treturn precedence >= this._precedenceStack.peek();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic getErrorListenerDispatch(): ParserErrorListener {\r\n\t\treturn new ProxyParserErrorListener(this.getErrorListeners());\r\n\t}\r\n\r\n\tpublic inContext(context: string): boolean {\r\n\t\t// TODO: useful in parser?\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether or not `symbol` can follow the current state in the\r\n\t * ATN. The behavior of this method is equivalent to the following, but is\r\n\t * implemented such that the complete context-sensitive follow set does not\r\n\t * need to be explicitly constructed.\r\n\t *\r\n\t * ```\r\n\t * return getExpectedTokens().contains(symbol);\r\n\t * ```\r\n\t *\r\n\t * @param symbol the symbol type to check\r\n\t * @returns `true` if `symbol` can follow the current state in\r\n\t * the ATN, otherwise `false`.\r\n\t */\r\n\tpublic isExpectedToken(symbol: number): boolean {\r\n// \t\treturn interpreter.atn.nextTokens(_ctx);\r\n\t\tlet atn: ATN = this.interpreter.atn;\r\n\t\tlet ctx: ParserRuleContext = this._ctx;\r\n\t\tlet s: ATNState = atn.states[this.state];\r\n\t\tlet following: IntervalSet = atn.nextTokens(s);\r\n\t\tif (following.contains(symbol)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n// System.out.println(\"following \"+s+\"=\"+following);\r\n\t\tif (!following.contains(Token.EPSILON)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\twhile (ctx != null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\r\n\t\t\tlet invokingState: ATNState = atn.states[ctx.invokingState];\r\n\t\t\tlet rt = invokingState.transition(0) as RuleTransition;\r\n\t\t\tfollowing = atn.nextTokens(rt.followState);\r\n\t\t\tif (following.contains(symbol)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tctx = ctx._parent as ParserRuleContext;\r\n\t\t}\r\n\r\n\t\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget isMatchedEOF(): boolean {\r\n\t\treturn this.matchedEOF;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of input symbols which could follow the current parser\r\n\t * state and context, as given by {@link #getState} and {@link #getContext},\r\n\t * respectively.\r\n\t *\r\n\t * @see ATN#getExpectedTokens(int, RuleContext)\r\n\t */\r\n\t@NotNull\r\n\tpublic getExpectedTokens(): IntervalSet {\r\n\t\treturn this.atn.getExpectedTokens(this.state, this.context);\r\n\t}\r\n\r\n\t@NotNull\r\n\tpublic getExpectedTokensWithinCurrentRule(): IntervalSet {\r\n\t\tlet atn: ATN = this.interpreter.atn;\r\n\t\tlet s: ATNState = atn.states[this.state];\r\n\t\treturn atn.nextTokens(s);\r\n\t}\r\n\r\n\t/** Get a rule's index (i.e., `RULE_ruleName` field) or -1 if not found. */\r\n\tpublic getRuleIndex(ruleName: string): number {\r\n\t\tlet ruleIndex = this.getRuleIndexMap().get(ruleName);\r\n\t\tif (ruleIndex != null) {\r\n\t\t\treturn ruleIndex;\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tget ruleContext(): ParserRuleContext { return this._ctx; }\r\n\r\n\t/** Return List<String> of the rule names in your parser instance\r\n\t * leading up to a call to the current rule. You could override if\r\n\t * you want more details such as the file/line info of where\r\n\t * in the ATN a rule is invoked.\r\n\t *\r\n\t * This is very useful for error messages.\r\n\t */\r\n\r\n\tpublic getRuleInvocationStack(ctx: RuleContext = this._ctx): string[] {\r\n\t\tlet p: RuleContext | undefined = ctx; \t\t// Workaround for Microsoft/TypeScript#14487\r\n\t\tlet ruleNames: string[] = this.ruleNames;\r\n\t\tlet stack: string[] = [];\r\n\t\twhile (p != null) {\r\n\t\t\t// compute what follows who invoked us\r\n\t\t\tlet ruleIndex: number = p.ruleIndex;\r\n\t\t\tif (ruleIndex < 0) {\r\n\t\t\t\tstack.push(\"n/a\");\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(ruleNames[ruleIndex]);\r\n\t\t\t}\r\n\t\t\tp = p._parent as RuleContext;\r\n\t\t}\r\n\t\treturn stack;\r\n\t}\r\n\r\n\t/** For debugging and other purposes. */\r\n\tpublic getDFAStrings(): string[] {\r\n\t\tlet s: string[] = [];\r\n\t\tfor (let dfa of this._interp.atn.decisionToDFA) {\r\n\t\t\ts.push(dfa.toString(this.vocabulary, this.ruleNames));\r\n\t\t}\r\n\t\treturn s;\r\n\t}\r\n\r\n\t/** For debugging and other purposes. */\r\n\tpublic dumpDFA(): void {\r\n\t\tlet seenOne: boolean = false;\r\n\t\tfor (let dfa of this._interp.atn.decisionToDFA) {\r\n\t\t\tif (!dfa.isEmpty) {\r\n\t\t\t\tif (seenOne) {\r\n\t\t\t\t\tconsole.log();\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log(\"Decision \" + dfa.decision + \":\");\r\n\t\t\t\tprocess.stdout.write(dfa.toString(this.vocabulary, this.ruleNames));\r\n\t\t\t\tseenOne = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget sourceName(): string {\r\n\t\treturn this._input.sourceName;\r\n\t}\r\n\r\n\t@Override\r\n\tget parseInfo(): Promise {\r\n\t\treturn import(\"./atn/ProfilingATNSimulator\").then((m) => {\r\n\t\t\tlet interp: ParserATNSimulator = this.interpreter;\r\n\t\t\tif (interp instanceof m.ProfilingATNSimulator) {\r\n\t\t\t\treturn new ParseInfo(interp);\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @since 4.3\r\n\t */\r\n\tpublic async setProfile(profile: boolean): Promise {\r\n\t\tlet m = await import(\"./atn/ProfilingATNSimulator\");\r\n\t\tlet interp: ParserATNSimulator = this.interpreter;\r\n\t\tif (profile) {\r\n\t\t\tif (!(interp instanceof m.ProfilingATNSimulator)) {\r\n\t\t\t\tthis.interpreter = new m.ProfilingATNSimulator(this);\r\n\t\t\t}\r\n\t\t} else if (interp instanceof m.ProfilingATNSimulator) {\r\n\t\t\tthis.interpreter = new ParserATNSimulator(this.atn, this);\r\n\t\t}\r\n\r\n\t\tthis.interpreter.setPredictionMode(interp.getPredictionMode());\r\n\t}\r\n\r\n\t/** During a parse is sometimes useful to listen in on the rule entry and exit\r\n\t * events as well as token matches. This is for quick and dirty debugging.\r\n\t */\r\n\tset isTrace(trace: boolean) {\r\n\t\tif (!trace) {\r\n\t\t\tif (this._tracer) {\r\n\t\t\t\tthis.removeParseListener(this._tracer);\r\n\t\t\t\tthis._tracer = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._tracer) {\r\n\t\t\t\tthis.removeParseListener(this._tracer);\r\n\t\t\t} else {\r\n\t\t\t\tthis._tracer = new TraceListener(this.ruleNames, this._input);\r\n\t\t\t}\r\n\r\n\t\t\tthis.addParseListener(this._tracer);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether a {@link TraceListener} is registered as a parse listener\r\n\t * for the parser.\r\n\t */\r\n\tget isTrace(): boolean {\r\n\t\treturn this._tracer != null;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.3255548-07:00\r\n\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { NotNull } from \"./Decorators\";\r\n\r\n/** Indicates that the parser could not decide which of two or more paths\r\n * to take based upon the remaining input. It tracks the starting token\r\n * of the offending input and also knows where the parser was\r\n * in the various paths when the error. Reported by reportNoViableAlternative()\r\n */\r\nexport class NoViableAltException extends RecognitionException {\r\n\t//private static serialVersionUID: number = 5096000008992867052L;\r\n\r\n\t/** Which configurations did we try at input.index that couldn't match input.LT(1)? */\r\n\tprivate _deadEndConfigs?: ATNConfigSet;\r\n\r\n\t/** The token object at the start index; the input stream might\r\n\t * \tnot be buffering tokens so get a reference to it. (At the\r\n\t * time the error occurred, of course the stream needs to keep a\r\n\t * buffer all of the tokens but later we might not have access to those.)\r\n\t */\r\n\t@NotNull\r\n\tprivate _startToken: Token;\r\n\r\n\tconstructor(/*@NotNull*/ recognizer: Parser);\r\n\tconstructor(\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\t/*@NotNull*/\r\n\t\tinput: TokenStream,\r\n\t\t/*@NotNull*/\r\n\t\tstartToken: Token,\r\n\t\t/*@NotNull*/\r\n\t\toffendingToken: Token,\r\n\t\tdeadEndConfigs: ATNConfigSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tctx: ParserRuleContext);\r\n\r\n\tconstructor(\r\n\t\trecognizer: Recognizer,\r\n\t\tinput?: TokenStream,\r\n\t\tstartToken?: Token,\r\n\t\toffendingToken?: Token,\r\n\t\tdeadEndConfigs?: ATNConfigSet,\r\n\t\tctx?: ParserRuleContext) {\r\n\t\tif (recognizer instanceof Parser) {\r\n\t\t\tif (input === undefined) {\r\n\t\t\t\tinput = recognizer.inputStream;\r\n\t\t\t}\r\n\r\n\t\t\tif (startToken === undefined) {\r\n\t\t\t\tstartToken = recognizer.currentToken;\r\n\t\t\t}\r\n\r\n\t\t\tif (offendingToken === undefined) {\r\n\t\t\t\toffendingToken = recognizer.currentToken;\r\n\t\t\t}\r\n\r\n\t\t\tif (ctx === undefined) {\r\n\t\t\t\tctx = recognizer.context;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper(recognizer, input, ctx);\r\n\t\tthis._deadEndConfigs = deadEndConfigs;\r\n\t\tthis._startToken = startToken as Token;\r\n\t\tthis.setOffendingToken(recognizer, offendingToken);\r\n\t}\r\n\r\n\tget startToken(): Token {\r\n\t\treturn this._startToken;\r\n\t}\r\n\r\n\tget deadEndConfigs(): ATNConfigSet | undefined {\r\n\t\treturn this._deadEndConfigs;\r\n\t}\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.8290527-07:00\r\n\r\nimport { ANTLRErrorStrategy } from \"./ANTLRErrorStrategy\";\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNState } from \"./atn/ATNState\";\r\nimport { ATNStateType } from \"./atn/ATNStateType\";\r\nimport { FailedPredicateException } from \"./FailedPredicateException\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { IntervalSet } from \"./misc/IntervalSet\";\r\nimport { NoViableAltException } from \"./NoViableAltException\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { PredictionContext } from \"./atn/PredictionContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { RuleTransition } from \"./atn/RuleTransition\";\r\nimport { TokenStream } from \"./TokenStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\nimport { TokenSource } from \"./TokenSource\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\n\r\n/**\r\n * This is the default implementation of {@link ANTLRErrorStrategy} used for\r\n * error reporting and recovery in ANTLR parsers.\r\n */\r\nexport class DefaultErrorStrategy implements ANTLRErrorStrategy {\r\n\t/**\r\n\t * Indicates whether the error strategy is currently \"recovering from an\r\n\t * error\". This is used to suppress reporting multiple error messages while\r\n\t * attempting to recover from a detected syntax error.\r\n\t *\r\n\t * @see #inErrorRecoveryMode\r\n\t */\r\n\tprotected errorRecoveryMode: boolean = false;\r\n\r\n\t/** The index into the input stream where the last error occurred.\r\n\t * \tThis is used to prevent infinite loops where an error is found\r\n\t * but no token is consumed during recovery...another error is found,\r\n\t * ad nauseum. This is a failsafe mechanism to guarantee that at least\r\n\t * one token/tree node is consumed for two errors.\r\n\t */\r\n\tprotected lastErrorIndex: number = -1;\r\n\r\n\tprotected lastErrorStates?: IntervalSet;\r\n\r\n\t/**\r\n\t * This field is used to propagate information about the lookahead following\r\n\t * the previous match. Since prediction prefers completing the current rule\r\n\t * to error recovery efforts, error reporting may occur later than the\r\n\t * original point where it was discoverable. The original context is used to\r\n\t * compute the true expected sets as though the reporting occurred as early\r\n\t * as possible.\r\n\t */\r\n\tprotected nextTokensContext?: ParserRuleContext;\r\n\r\n\t/**\r\n\t * @see #nextTokensContext\r\n\t */\r\n\tprotected nextTokensState: number = ATNState.INVALID_STATE_NUMBER;\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation simply calls {@link #endErrorCondition} to\r\n\t * ensure that the handler is not in error recovery mode.\r\n\t */\r\n\t@Override\r\n\tpublic reset(recognizer: Parser): void {\r\n\t\tthis.endErrorCondition(recognizer);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to enter error recovery mode when a recognition\r\n\t * exception is reported.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected beginErrorCondition(@NotNull recognizer: Parser): void {\r\n\t\tthis.errorRecoveryMode = true;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic inErrorRecoveryMode(recognizer: Parser): boolean {\r\n\t\treturn this.errorRecoveryMode;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to leave error recovery mode after recovering from\r\n\t * a recognition exception.\r\n\t *\r\n\t * @param recognizer\r\n\t */\r\n\tprotected endErrorCondition(@NotNull recognizer: Parser): void {\r\n\t\tthis.errorRecoveryMode = false;\r\n\t\tthis.lastErrorStates = undefined;\r\n\t\tthis.lastErrorIndex = -1;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation simply calls {@link #endErrorCondition}.\r\n\t */\r\n\t@Override\r\n\tpublic reportMatch(recognizer: Parser): void {\r\n\t\tthis.endErrorCondition(recognizer);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns immediately if the handler is already\r\n\t * in error recovery mode. Otherwise, it calls {@link #beginErrorCondition}\r\n\t * and dispatches the reporting task based on the runtime type of `e`\r\n\t * according to the following table.\r\n\t *\r\n\t * * {@link NoViableAltException}: Dispatches the call to\r\n\t * {@link #reportNoViableAlternative}\r\n\t * * {@link InputMismatchException}: Dispatches the call to\r\n\t * {@link #reportInputMismatch}\r\n\t * * {@link FailedPredicateException}: Dispatches the call to\r\n\t * {@link #reportFailedPredicate}\r\n\t * * All other types: calls {@link Parser#notifyErrorListeners} to report\r\n\t * the exception\r\n\t */\r\n\t@Override\r\n\tpublic reportError(\r\n\t\trecognizer: Parser,\r\n\t\te: RecognitionException): void {\r\n\t\t// if we've already reported an error and have not matched a token\r\n\t\t// yet successfully, don't report any errors.\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n//\t\t\tSystem.err.print(\"[SPURIOUS] \");\r\n\t\t\treturn; // don't report spurious errors\r\n\t\t}\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\t\tif (e instanceof NoViableAltException) {\r\n\t\t\tthis.reportNoViableAlternative(recognizer, e);\r\n\t\t}\r\n\t\telse if (e instanceof InputMismatchException) {\r\n\t\t\tthis.reportInputMismatch(recognizer, e);\r\n\t\t}\r\n\t\telse if (e instanceof FailedPredicateException) {\r\n\t\t\tthis.reportFailedPredicate(recognizer, e);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.error(`unknown recognition error type: ${e}`);\r\n\t\t\tthis.notifyErrorListeners(recognizer, e.toString(), e);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected notifyErrorListeners(@NotNull recognizer: Parser, message: string, e: RecognitionException): void {\r\n\t\tlet offendingToken: Token | null | undefined = e.getOffendingToken(recognizer);\r\n\t\tif (offendingToken === undefined) {\r\n\t\t\t// Pass null to notifyErrorListeners so it in turn calls the error listeners with undefined as the offending\r\n\t\t\t// token. If we passed undefined, it would instead call the listeners with currentToken from the parser.\r\n\t\t\toffendingToken = null;\r\n\t\t}\r\n\r\n\t\trecognizer.notifyErrorListeners(message, offendingToken, e);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation resynchronizes the parser by consuming tokens\r\n\t * until we find one in the resynchronization set--loosely the set of tokens\r\n\t * that can follow the current rule.\r\n\t */\r\n\t@Override\r\n\tpublic recover(recognizer: Parser, e: RecognitionException): void {\r\n//\t\tSystem.out.println(\"recover in \"+recognizer.getRuleInvocationStack()+\r\n//\t\t\t\t\t\t \" index=\"+recognizer.inputStream.index+\r\n//\t\t\t\t\t\t \", lastErrorIndex=\"+\r\n//\t\t\t\t\t\t lastErrorIndex+\r\n//\t\t\t\t\t\t \", states=\"+lastErrorStates);\r\n\t\tif (this.lastErrorIndex === recognizer.inputStream.index &&\r\n\t\t\tthis.lastErrorStates &&\r\n\t\t\tthis.lastErrorStates.contains(recognizer.state)) {\r\n\t\t\t// uh oh, another error at same token index and previously-visited\r\n\t\t\t// state in ATN; must be a case where LT(1) is in the recovery\r\n\t\t\t// token set so nothing got consumed. Consume a single token\r\n\t\t\t// at least to prevent an infinite loop; this is a failsafe.\r\n//\t\t\tSystem.err.println(\"seen error condition before index=\"+\r\n//\t\t\t\t\t\t\t lastErrorIndex+\", states=\"+lastErrorStates);\r\n//\t\t\tSystem.err.println(\"FAILSAFE consumes \"+recognizer.getTokenNames()[recognizer.inputStream.LA(1)]);\r\n\t\t\trecognizer.consume();\r\n\t\t}\r\n\t\tthis.lastErrorIndex = recognizer.inputStream.index;\r\n\t\tif (!this.lastErrorStates) {\r\n\t\t\tthis.lastErrorStates = new IntervalSet();\r\n\t\t}\r\n\t\tthis.lastErrorStates.add(recognizer.state);\r\n\t\tlet followSet: IntervalSet = this.getErrorRecoverySet(recognizer);\r\n\t\tthis.consumeUntil(recognizer, followSet);\r\n\t}\r\n\r\n\t/**\r\n\t * The default implementation of {@link ANTLRErrorStrategy#sync} makes sure\r\n\t * that the current lookahead symbol is consistent with what were expecting\r\n\t * at this point in the ATN. You can call this anytime but ANTLR only\r\n\t * generates code to check before subrules/loops and each iteration.\r\n\t *\r\n\t * Implements Jim Idle's magic sync mechanism in closures and optional\r\n\t * subrules. E.g.,\r\n\t *\r\n\t * ```antlr\r\n\t * a : sync ( stuff sync )* ;\r\n\t * sync : {consume to what can follow sync} ;\r\n\t * ```\r\n\t *\r\n\t * At the start of a sub rule upon error, {@link #sync} performs single\r\n\t * token deletion, if possible. If it can't do that, it bails on the current\r\n\t * rule and uses the default error recovery, which consumes until the\r\n\t * resynchronization set of the current rule.\r\n\t *\r\n\t * If the sub rule is optional (`(...)?`, `(...)*`, or block\r\n\t * with an empty alternative), then the expected set includes what follows\r\n\t * the subrule.\r\n\t *\r\n\t * During loop iteration, it consumes until it sees a token that can start a\r\n\t * sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\r\n\t * stay in the loop as long as possible.\r\n\t *\r\n\t * **ORIGINS**\r\n\t *\r\n\t * Previous versions of ANTLR did a poor job of their recovery within loops.\r\n\t * A single mismatch token or missing token would force the parser to bail\r\n\t * out of the entire rules surrounding the loop. So, for rule\r\n\t *\r\n\t * ```antlr\r\n\t * classDef : 'class' ID '{' member* '}'\r\n\t * ```\r\n\t *\r\n\t * input with an extra token between members would force the parser to\r\n\t * consume until it found the next class definition rather than the next\r\n\t * member definition of the current class.\r\n\t *\r\n\t * This functionality cost a little bit of effort because the parser has to\r\n\t * compare token set at the start of the loop and at each iteration. If for\r\n\t * some reason speed is suffering for you, you can turn off this\r\n\t * functionality by simply overriding this method as a blank { }.\r\n\t */\r\n\t@Override\r\n\tpublic sync(recognizer: Parser): void {\r\n\t\tlet s: ATNState = recognizer.interpreter.atn.states[recognizer.state];\r\n//\t\tSystem.err.println(\"sync @ \"+s.stateNumber+\"=\"+s.getClass().getSimpleName());\r\n\t\t// If already recovering, don't try to sync\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet tokens: TokenStream = recognizer.inputStream;\r\n\t\tlet la: number = tokens.LA(1);\r\n\r\n\t\t// try cheaper subset first; might get lucky. seems to shave a wee bit off\r\n\t\tlet nextTokens: IntervalSet = recognizer.atn.nextTokens(s);\r\n\t\tif (nextTokens.contains(la)) {\r\n\t\t\t// We are sure the token matches\r\n\t\t\tthis.nextTokensContext = undefined;\r\n\t\t\tthis.nextTokensState = ATNState.INVALID_STATE_NUMBER;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (nextTokens.contains(Token.EPSILON)) {\r\n\t\t\tif (this.nextTokensContext === undefined) {\r\n\t\t\t\t// It's possible the next token won't match; information tracked\r\n\t\t\t\t// by sync is restricted for performance.\r\n\t\t\t\tthis.nextTokensContext = recognizer.context;\r\n\t\t\t\tthis.nextTokensState = recognizer.state;\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch (s.stateType) {\r\n\t\tcase ATNStateType.BLOCK_START:\r\n\t\tcase ATNStateType.STAR_BLOCK_START:\r\n\t\tcase ATNStateType.PLUS_BLOCK_START:\r\n\t\tcase ATNStateType.STAR_LOOP_ENTRY:\r\n\t\t\t// report error and recover if possible\r\n\t\t\tif (this.singleTokenDeletion(recognizer)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new InputMismatchException(recognizer);\r\n\r\n\t\tcase ATNStateType.PLUS_LOOP_BACK:\r\n\t\tcase ATNStateType.STAR_LOOP_BACK:\r\n//\t\t\tSystem.err.println(\"at loop back: \"+s.getClass().getSimpleName());\r\n\t\t\tthis.reportUnwantedToken(recognizer);\r\n\t\t\tlet expecting: IntervalSet = recognizer.getExpectedTokens();\r\n\t\t\tlet whatFollowsLoopIterationOrRule: IntervalSet =\r\n\t\t\t\texpecting.or(this.getErrorRecoverySet(recognizer));\r\n\t\t\tthis.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\t// do nothing if we can't identify the exact kind of ATN state\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is a\r\n\t * {@link NoViableAltException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportNoViableAlternative(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: NoViableAltException): void {\r\n\t\tlet tokens: TokenStream = recognizer.inputStream;\r\n\t\tlet input: string;\r\n\t\tif (tokens) {\r\n\t\t\tif (e.startToken.type === Token.EOF) {\r\n\t\t\t\tinput = \"\";\r\n\t\t\t} else {\r\n\t\t\t\tinput = tokens.getTextFromRange(e.startToken, e.getOffendingToken());\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinput = \"\";\r\n\t\t}\r\n\t\tlet msg: string = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is an\r\n\t * {@link InputMismatchException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportInputMismatch(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: InputMismatchException): void {\r\n\t\tlet expected = e.expectedTokens;\r\n\t\tlet expectedString = expected ? expected.toStringVocabulary(recognizer.vocabulary) : \"\";\r\n\t\tlet msg: string = \"mismatched input \" + this.getTokenErrorDisplay(e.getOffendingToken(recognizer)) +\r\n\t\t\t\" expecting \" + expectedString;\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This is called by {@link #reportError} when the exception is a\r\n\t * {@link FailedPredicateException}.\r\n\t *\r\n\t * @see #reportError\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param e the recognition exception\r\n\t */\r\n\tprotected reportFailedPredicate(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull e: FailedPredicateException): void {\r\n\t\tlet ruleName: string = recognizer.ruleNames[recognizer.context.ruleIndex];\r\n\t\tlet msg: string = \"rule \" + ruleName + \" \" + e.message;\r\n\t\tthis.notifyErrorListeners(recognizer, msg, e);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to report a syntax error which requires the removal\r\n\t * of a token from the input stream. At the time this method is called, the\r\n\t * erroneous symbol is current `LT(1)` symbol and has not yet been\r\n\t * removed from the input stream. When this method returns,\r\n\t * `recognizer` is in error recovery mode.\r\n\t *\r\n\t * This method is called when {@link #singleTokenDeletion} identifies\r\n\t * single-token deletion as a viable recovery strategy for a mismatched\r\n\t * input error.\r\n\t *\r\n\t * The default implementation simply returns if the handler is already in\r\n\t * error recovery mode. Otherwise, it calls {@link #beginErrorCondition} to\r\n\t * enter error recovery mode, followed by calling\r\n\t * {@link Parser#notifyErrorListeners}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected reportUnwantedToken(@NotNull recognizer: Parser): void {\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\r\n\t\tlet t: Token = recognizer.currentToken;\r\n\t\tlet tokenName: string = this.getTokenErrorDisplay(t);\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet msg: string = \"extraneous input \" + tokenName + \" expecting \" +\r\n\t\t\texpecting.toStringVocabulary(recognizer.vocabulary);\r\n\t\trecognizer.notifyErrorListeners(msg, t, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called to report a syntax error which requires the\r\n\t * insertion of a missing token into the input stream. At the time this\r\n\t * method is called, the missing token has not yet been inserted. When this\r\n\t * method returns, `recognizer` is in error recovery mode.\r\n\t *\r\n\t * This method is called when {@link #singleTokenInsertion} identifies\r\n\t * single-token insertion as a viable recovery strategy for a mismatched\r\n\t * input error.\r\n\t *\r\n\t * The default implementation simply returns if the handler is already in\r\n\t * error recovery mode. Otherwise, it calls {@link #beginErrorCondition} to\r\n\t * enter error recovery mode, followed by calling\r\n\t * {@link Parser#notifyErrorListeners}.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t */\r\n\tprotected reportMissingToken(@NotNull recognizer: Parser): void {\r\n\t\tif (this.inErrorRecoveryMode(recognizer)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.beginErrorCondition(recognizer);\r\n\r\n\t\tlet t: Token = recognizer.currentToken;\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet msg: string = \"missing \" + expecting.toStringVocabulary(recognizer.vocabulary) +\r\n\t\t\t\" at \" + this.getTokenErrorDisplay(t);\r\n\r\n\t\trecognizer.notifyErrorListeners(msg, t, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation attempts to recover from the mismatched input\r\n\t * by using single token insertion and deletion as described below. If the\r\n\t * recovery attempt fails, this method\r\n\t * {@link InputMismatchException}.\r\n\t *\r\n\t * **EXTRA TOKEN** (single token deletion)\r\n\t *\r\n\t * `LA(1)` is not what we are looking for. If `LA(2)` has the\r\n\t * right token, however, then assume `LA(1)` is some extra spurious\r\n\t * token and delete it. Then consume and return the next token (which was\r\n\t * the `LA(2)` token) as the successful result of the match operation.\r\n\t *\r\n\t * This recovery strategy is implemented by {@link #singleTokenDeletion}.\r\n\t *\r\n\t * **MISSING TOKEN** (single token insertion)\r\n\t *\r\n\t * If current token (at `LA(1)`) is consistent with what could come\r\n\t * after the expected `LA(1)` token, then assume the token is missing\r\n\t * and use the parser's {@link TokenFactory} to create it on the fly. The\r\n\t * \"insertion\" is performed by returning the created token as the successful\r\n\t * result of the match operation.\r\n\t *\r\n\t * This recovery strategy is implemented by {@link #singleTokenInsertion}.\r\n\t *\r\n\t * **EXAMPLE**\r\n\t *\r\n\t * For example, Input `i=(3;` is clearly missing the `')'`. When\r\n\t * the parser returns from the nested call to `expr`, it will have\r\n\t * call chain:\r\n\t *\r\n\t * ```\r\n\t * stat \u2192 expr \u2192 atom\r\n\t * ```\r\n\t *\r\n\t * and it will be trying to match the `')'` at this point in the\r\n\t * derivation:\r\n\t *\r\n\t * ```\r\n\t * => ID '=' '(' INT ')' ('+' atom)* ';'\r\n\t * ^\r\n\t * ```\r\n\t *\r\n\t * The attempt to match `')'` will fail when it sees `';'` and\r\n\t * call {@link #recoverInline}. To recover, it sees that `LA(1)==';'`\r\n\t * is in the set of tokens that can follow the `')'` token reference\r\n\t * in rule `atom`. It can assume that you forgot the `')'`.\r\n\t */\r\n\t@Override\r\n\tpublic recoverInline(recognizer: Parser): Token {\r\n\t\t// SINGLE TOKEN DELETION\r\n\t\tlet matchedSymbol = this.singleTokenDeletion(recognizer);\r\n\t\tif (matchedSymbol) {\r\n\t\t\t// we have deleted the extra token.\r\n\t\t\t// now, move past ttype token as if all were ok\r\n\t\t\trecognizer.consume();\r\n\t\t\treturn matchedSymbol;\r\n\t\t}\r\n\r\n\t\t// SINGLE TOKEN INSERTION\r\n\t\tif (this.singleTokenInsertion(recognizer)) {\r\n\t\t\treturn this.getMissingSymbol(recognizer);\r\n\t\t}\r\n\r\n\t\t// even that didn't work; must throw the exception\r\n\t\tif (this.nextTokensContext === undefined) {\r\n\t\t\tthrow new InputMismatchException(recognizer);\r\n\t\t} else {\r\n\t\t\tthrow new InputMismatchException(recognizer, this.nextTokensState, this.nextTokensContext);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method implements the single-token insertion inline error recovery\r\n\t * strategy. It is called by {@link #recoverInline} if the single-token\r\n\t * deletion strategy fails to recover from the mismatched input. If this\r\n\t * method returns `true`, `recognizer` will be in error recovery\r\n\t * mode.\r\n\t *\r\n\t * This method determines whether or not single-token insertion is viable by\r\n\t * checking if the `LA(1)` input symbol could be successfully matched\r\n\t * if it were instead the `LA(2)` symbol. If this method returns\r\n\t * `true`, the caller is responsible for creating and inserting a\r\n\t * token with the correct type to produce this behavior.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns `true` if single-token insertion is a viable recovery\r\n\t * strategy for the current mismatched input, otherwise `false`\r\n\t */\r\n\tprotected singleTokenInsertion(@NotNull recognizer: Parser): boolean {\r\n\t\tlet currentSymbolType: number = recognizer.inputStream.LA(1);\r\n\t\t// if current token is consistent with what could come after current\r\n\t\t// ATN state, then we know we're missing a token; error recovery\r\n\t\t// is free to conjure up and insert the missing token\r\n\t\tlet currentState = recognizer.interpreter.atn.states[recognizer.state];\r\n\t\tlet next: ATNState = currentState.transition(0).target;\r\n\t\tlet atn: ATN = recognizer.interpreter.atn;\r\n\t\tlet expectingAtLL2: IntervalSet = atn.nextTokens(next, PredictionContext.fromRuleContext(atn, recognizer.context));\r\n//\t\tconsole.warn(\"LT(2) set=\"+expectingAtLL2.toString(recognizer.getTokenNames()));\r\n\t\tif (expectingAtLL2.contains(currentSymbolType)) {\r\n\t\t\tthis.reportMissingToken(recognizer);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * This method implements the single-token deletion inline error recovery\r\n\t * strategy. It is called by {@link #recoverInline} to attempt to recover\r\n\t * from mismatched input. If this method returns `undefined`, the parser and error\r\n\t * handler state will not have changed. If this method returns non-`undefined`,\r\n\t * `recognizer` will *not* be in error recovery mode since the\r\n\t * returned token was a successful match.\r\n\t *\r\n\t * If the single-token deletion is successful, this method calls\r\n\t * {@link #reportUnwantedToken} to report the error, followed by\r\n\t * {@link Parser#consume} to actually \"delete\" the extraneous token. Then,\r\n\t * before returning {@link #reportMatch} is called to signal a successful\r\n\t * match.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @returns the successfully matched {@link Token} instance if single-token\r\n\t * deletion successfully recovers from the mismatched input, otherwise\r\n\t * `undefined`\r\n\t */\r\n\tprotected singleTokenDeletion(@NotNull recognizer: Parser): Token | undefined {\r\n\t\tlet nextTokenType: number = recognizer.inputStream.LA(2);\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tif (expecting.contains(nextTokenType)) {\r\n\t\t\tthis.reportUnwantedToken(recognizer);\r\n\t\t\t/*\r\n\t\t\tSystem.err.println(\"recoverFromMismatchedToken deleting \"+\r\n\t\t\t\t\t\t\t ((TokenStream)recognizer.inputStream).LT(1)+\r\n\t\t\t\t\t\t\t \" since \"+((TokenStream)recognizer.inputStream).LT(2)+\r\n\t\t\t\t\t\t\t \" is what we want\");\r\n\t\t\t*/\r\n\t\t\trecognizer.consume(); // simply delete extra token\r\n\t\t\t// we want to return the token we're actually matching\r\n\t\t\tlet matchedSymbol: Token = recognizer.currentToken;\r\n\t\t\tthis.reportMatch(recognizer); // we know current token is correct\r\n\t\t\treturn matchedSymbol;\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/** Conjure up a missing token during error recovery.\r\n\t *\r\n\t * The recognizer attempts to recover from single missing\r\n\t * symbols. But, actions might refer to that missing symbol.\r\n\t * For example, x=ID {f($x);}. The action clearly assumes\r\n\t * that there has been an identifier matched previously and that\r\n\t * $x points at that token. If that token is missing, but\r\n\t * the next token in the stream is what we want we assume that\r\n\t * this token is missing and we keep going. Because we\r\n\t * have to return some token to replace the missing token,\r\n\t * we have to conjure one up. This method gives the user control\r\n\t * over the tokens returned for missing tokens. Mostly,\r\n\t * you will want to create something special for identifier\r\n\t * tokens. For literals such as '{' and ',', the default\r\n\t * action in the parser or tree parser works. It simply creates\r\n\t * a CommonToken of the appropriate type. The text will be the token.\r\n\t * If you change what tokens must be created by the lexer,\r\n\t * override this method to create the appropriate tokens.\r\n\t */\r\n\t@NotNull\r\n\tprotected getMissingSymbol(@NotNull recognizer: Parser): Token {\r\n\t\tlet currentSymbol: Token = recognizer.currentToken;\r\n\t\tlet expecting: IntervalSet = this.getExpectedTokens(recognizer);\r\n\t\tlet expectedTokenType: number = Token.INVALID_TYPE;\r\n\t\tif (!expecting.isNil) {\r\n\t\t\t// get any element\r\n\t\t\texpectedTokenType = expecting.minElement;\r\n\t\t}\r\n\r\n\t\tlet tokenText: string;\r\n\t\tif (expectedTokenType === Token.EOF) {\r\n\t\t\ttokenText = \"\";\r\n\t\t} else {\r\n\t\t\ttokenText = \"\";\r\n\t\t}\r\n\t\tlet current: Token = currentSymbol;\r\n\t\tlet lookback = recognizer.inputStream.tryLT(-1);\r\n\t\tif (current.type === Token.EOF && lookback != null) {\r\n\t\t\tcurrent = lookback;\r\n\t\t}\r\n\r\n\t\treturn this.constructToken(recognizer.inputStream.tokenSource, expectedTokenType, tokenText, current);\r\n\t}\r\n\r\n\tprotected constructToken(\r\n\t\ttokenSource: TokenSource,\r\n\t\texpectedTokenType: number,\r\n\t\ttokenText: string,\r\n\t\tcurrent: Token): Token {\r\n\t\tlet factory: TokenFactory = tokenSource.tokenFactory;\r\n\t\tlet x = current.tokenSource;\r\n\t\tlet stream = x ? x.inputStream : undefined;\r\n\r\n\t\treturn factory.create(\r\n\t\t\t{ source: tokenSource, stream },\r\n\t\t\texpectedTokenType, tokenText,\r\n\t\t\tToken.DEFAULT_CHANNEL,\r\n\t\t\t-1, -1,\r\n\t\t\tcurrent.line, current.charPositionInLine);\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected getExpectedTokens(@NotNull recognizer: Parser): IntervalSet {\r\n\t\treturn recognizer.getExpectedTokens();\r\n\t}\r\n\r\n\t/** How should a token be displayed in an error message? The default\r\n\t * is to display just the text, but during development you might\r\n\t * want to have a lot of information spit out. Override in that case\r\n\t * to use t.toString() (which, for CommonToken, dumps everything about\r\n\t * the token). This is better than forcing you to override a method in\r\n\t * your token objects because you don't have to go modify your lexer\r\n\t * so that it creates a new Java type.\r\n\t */\r\n\tprotected getTokenErrorDisplay(t: Token | undefined): string {\r\n\t\tif (!t) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\tlet s = this.getSymbolText(t);\r\n\t\tif (!s) {\r\n\t\t\tif (this.getSymbolType(t) === Token.EOF) {\r\n\t\t\t\ts = \"\";\r\n\t\t\t} else {\r\n\t\t\t\ts = `<${this.getSymbolType(t)}>`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.escapeWSAndQuote(s);\r\n\t}\r\n\r\n\tprotected getSymbolText(@NotNull symbol: Token): string | undefined {\r\n\t\treturn symbol.text;\r\n\t}\r\n\r\n\tprotected getSymbolType(@NotNull symbol: Token): number {\r\n\t\treturn symbol.type;\r\n\t}\r\n\r\n\t@NotNull\r\n\tprotected escapeWSAndQuote(@NotNull s: string): string {\r\n//\t\tif ( s==null ) return s;\r\n\t\ts = s.replace(\"\\n\", \"\\\\n\");\r\n\t\ts = s.replace(\"\\r\", \"\\\\r\");\r\n\t\ts = s.replace(\"\\t\", \"\\\\t\");\r\n\t\treturn \"'\" + s + \"'\";\r\n\t}\r\n\r\n\t/* Compute the error recovery set for the current rule. During\r\n\t * rule invocation, the parser pushes the set of tokens that can\r\n\t * follow that rule reference on the stack; this amounts to\r\n\t * computing FIRST of what follows the rule reference in the\r\n\t * enclosing rule. See LinearApproximator.FIRST().\r\n\t * This local follow set only includes tokens\r\n\t * from within the rule; i.e., the FIRST computation done by\r\n\t * ANTLR stops at the end of a rule.\r\n\t *\r\n\t * EXAMPLE\r\n\t *\r\n\t * When you find a \"no viable alt exception\", the input is not\r\n\t * consistent with any of the alternatives for rule r. The best\r\n\t * thing to do is to consume tokens until you see something that\r\n\t * can legally follow a call to r *or* any rule that called r.\r\n\t * You don't want the exact set of viable next tokens because the\r\n\t * input might just be missing a token--you might consume the\r\n\t * rest of the input looking for one of the missing tokens.\r\n\t *\r\n\t * Consider grammar:\r\n\t *\r\n\t * a : '[' b ']'\r\n\t * | '(' b ')'\r\n\t * ;\r\n\t * b : c '^' INT ;\r\n\t * c : ID\r\n\t * | INT\r\n\t * ;\r\n\t *\r\n\t * At each rule invocation, the set of tokens that could follow\r\n\t * that rule is pushed on a stack. Here are the various\r\n\t * context-sensitive follow sets:\r\n\t *\r\n\t * FOLLOW(b1_in_a) = FIRST(']') = ']'\r\n\t * FOLLOW(b2_in_a) = FIRST(')') = ')'\r\n\t * FOLLOW(c_in_b) = FIRST('^') = '^'\r\n\t *\r\n\t * Upon erroneous input \"[]\", the call chain is\r\n\t *\r\n\t * a -> b -> c\r\n\t *\r\n\t * and, hence, the follow context stack is:\r\n\t *\r\n\t * depth follow set start of rule execution\r\n\t * 0 a (from main())\r\n\t * 1 ']' b\r\n\t * 2 '^' c\r\n\t *\r\n\t * Notice that ')' is not included, because b would have to have\r\n\t * been called from a different context in rule a for ')' to be\r\n\t * included.\r\n\t *\r\n\t * For error recovery, we cannot consider FOLLOW(c)\r\n\t * (context-sensitive or otherwise). We need the combined set of\r\n\t * all context-sensitive FOLLOW sets--the set of all tokens that\r\n\t * could follow any reference in the call chain. We need to\r\n\t * resync to one of those tokens. Note that FOLLOW(c)='^' and if\r\n\t * we resync'd to that token, we'd consume until EOF. We need to\r\n\t * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\r\n\t * In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\r\n\t * not consume anything. After printing an error, rule c would\r\n\t * return normally. Rule b would not find the required '^' though.\r\n\t * At this point, it gets a mismatched token error and\r\n\t * exception (since LA(1) is not in the viable following token\r\n\t * set). The rule exception handler tries to recover, but finds\r\n\t * the same recovery set and doesn't consume anything. Rule b\r\n\t * exits normally returning to rule a. Now it finds the ']' (and\r\n\t * with the successful match exits errorRecovery mode).\r\n\t *\r\n\t * So, you can see that the parser walks up the call chain looking\r\n\t * for the token that was a member of the recovery set.\r\n\t *\r\n\t * Errors are not generated in errorRecovery mode.\r\n\t *\r\n\t * ANTLR's error recovery mechanism is based upon original ideas:\r\n\t *\r\n\t * \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\r\n\t *\r\n\t * and\r\n\t *\r\n\t * \"A note on error recovery in recursive descent parsers\":\r\n\t * http://portal.acm.org/citation.cfm?id=947902.947905\r\n\t *\r\n\t * Later, Josef Grosch had some good ideas:\r\n\t *\r\n\t * \"Efficient and Comfortable Error Recovery in Recursive Descent\r\n\t * Parsers\":\r\n\t * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\r\n\t *\r\n\t * Like Grosch I implement context-sensitive FOLLOW sets that are combined\r\n\t * at run-time upon error to avoid overhead during parsing.\r\n\t */\r\n\t@NotNull\r\n\tprotected getErrorRecoverySet(@NotNull recognizer: Parser): IntervalSet {\r\n\t\tlet atn: ATN = recognizer.interpreter.atn;\r\n\t\tlet ctx: RuleContext | undefined = recognizer.context;\r\n\t\tlet recoverSet: IntervalSet = new IntervalSet();\r\n\t\twhile (ctx && ctx.invokingState >= 0) {\r\n\t\t\t// compute what follows who invoked us\r\n\t\t\tlet invokingState: ATNState = atn.states[ctx.invokingState];\r\n\t\t\tlet rt = invokingState.transition(0) as RuleTransition;\r\n\t\t\tlet follow: IntervalSet = atn.nextTokens(rt.followState);\r\n\t\t\trecoverSet.addAll(follow);\r\n\t\t\tctx = ctx._parent;\r\n\t\t}\r\n\t\trecoverSet.remove(Token.EPSILON);\r\n//\t\tSystem.out.println(\"recover set \"+recoverSet.toString(recognizer.getTokenNames()));\r\n\t\treturn recoverSet;\r\n\t}\r\n\r\n\t/** Consume tokens until one matches the given token set. */\r\n\tprotected consumeUntil(@NotNull recognizer: Parser, @NotNull set: IntervalSet): void {\r\n//\t\tSystem.err.println(\"consumeUntil(\"+set.toString(recognizer.getTokenNames())+\")\");\r\n\t\tlet ttype: number = recognizer.inputStream.LA(1);\r\n\t\twhile (ttype !== Token.EOF && !set.contains(ttype)) {\r\n\t\t\t//System.out.println(\"consume during recover LA(1)=\"+getTokenNames()[input.LA(1)]);\r\n//\t\t\trecognizer.inputStream.consume();\r\n\t\t\trecognizer.consume();\r\n\t\t\tttype = recognizer.inputStream.LA(1);\r\n\t\t}\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:49.2855056-07:00\r\n\r\nimport { DefaultErrorStrategy } from \"./DefaultErrorStrategy\";\r\nimport { Parser } from \"./Parser\";\r\nimport { InputMismatchException } from \"./InputMismatchException\";\r\nimport { Override } from \"./Decorators\";\r\nimport { ParseCancellationException } from \"./misc/ParseCancellationException\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Token } from \"./Token\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\r\n * by immediately canceling the parse operation with a\r\n * {@link ParseCancellationException}. The implementation ensures that the\r\n * {@link ParserRuleContext#exception} field is set for all parse tree nodes\r\n * that were not completed prior to encountering the error.\r\n *\r\n * This error strategy is useful in the following scenarios.\r\n *\r\n * * **Two-stage parsing:** This error strategy allows the first\r\n * stage of two-stage parsing to immediately terminate if an error is\r\n * encountered, and immediately fall back to the second stage. In addition to\r\n * avoiding wasted work by attempting to recover from errors here, the empty\r\n * implementation of {@link BailErrorStrategy#sync} improves the performance of\r\n * the first stage.\r\n * * **Silent validation:** When syntax errors are not being\r\n * reported or logged, and the parse result is simply ignored if errors occur,\r\n * the {@link BailErrorStrategy} avoids wasting work on recovering from errors\r\n * when the result will be ignored either way.\r\n *\r\n * ```\r\n * myparser.errorHandler = new BailErrorStrategy();\r\n * ```\r\n *\r\n * @see Parser.errorHandler\r\n */\r\nexport class BailErrorStrategy extends DefaultErrorStrategy {\r\n\t/** Instead of recovering from exception `e`, re-throw it wrapped\r\n\t * in a {@link ParseCancellationException} so it is not caught by the\r\n\t * rule function catches. Use {@link Exception#getCause()} to get the\r\n\t * original {@link RecognitionException}.\r\n\t */\r\n\t@Override\r\n\tpublic recover(recognizer: Parser, e: RecognitionException): void {\r\n\t\tfor (let context: ParserRuleContext | undefined = recognizer.context; context; context = context.parent) {\r\n\t\t\tcontext.exception = e;\r\n\t\t}\r\n\r\n\t\tthrow new ParseCancellationException(e);\r\n\t}\r\n\r\n\t/** Make sure we don't attempt to recover inline; if the parser\r\n\t * successfully recovers, it won't throw an exception.\r\n\t */\r\n\t@Override\r\n\tpublic recoverInline(recognizer: Parser): Token {\r\n\t\tlet e = new InputMismatchException(recognizer);\r\n\t\tfor (let context: ParserRuleContext | undefined = recognizer.context; context; context = context.parent) {\r\n\t\t\tcontext.exception = e;\r\n\t\t}\r\n\r\n\t\tthrow new ParseCancellationException(e);\r\n\t}\r\n\r\n\t/** Make sure we don't attempt to recover from problems in subrules. */\r\n\t@Override\r\n\tpublic sync(recognizer: Parser): void {\r\n\t\t// intentionally empty\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:50.0659297-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\n\r\n/** A source of characters for an ANTLR lexer. */\r\nexport interface CharStream extends IntStream {\r\n\t/**\r\n\t * This method returns the text for a range of characters within this input\r\n\t * stream. This method is guaranteed to not throw an exception if the\r\n\t * specified `interval` lies entirely within a marked range. For more\r\n\t * information about marked ranges, see {@link IntStream#mark}.\r\n\t *\r\n\t * @param interval an interval within the stream\r\n\t * @returns the text of the specified interval\r\n\t *\r\n\t * @throws NullPointerException if `interval` is `undefined`\r\n\t * @throws IllegalArgumentException if `interval.a < 0`, or if\r\n\t * `interval.b < interval.a - 1`, or if `interval.b` lies at or\r\n\t * past the end of the stream\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * getting the text of the specified interval\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ interval: Interval): string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.1349829-07:00\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport enum Dependents {\r\n\r\n\t/**\r\n\t * The element is dependent upon the specified rule.\r\n\t */\r\n\tSELF,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's parents\r\n\t * (rules which directly reference it).\r\n\t */\r\n\tPARENTS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's children\r\n\t * (rules which it directly references).\r\n\t */\r\n\tCHILDREN,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's ancestors\r\n\t * (the transitive closure of `PARENTS` rules).\r\n\t */\r\n\tANCESTORS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's descendants\r\n\t * (the transitive closure of `CHILDREN` rules).\r\n\t */\r\n\tDESCENDANTS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's siblings\r\n\t * (the union of `CHILDREN` of its `PARENTS`).\r\n\t */\r\n\tSIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's preceeding\r\n\t * siblings (the union of `CHILDREN` of its `PARENTS` which\r\n\t * appear before a reference to the rule).\r\n\t */\r\n\tPRECEEDING_SIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's following\r\n\t * siblings (the union of `CHILDREN` of its `PARENTS` which\r\n\t * appear after a reference to the rule).\r\n\t */\r\n\tFOLLOWING_SIBLINGS,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's preceeding\r\n\t * elements (rules which might end before the start of the specified rule\r\n\t * while parsing). This is calculated by taking the\r\n\t * `PRECEEDING_SIBLINGS` of the rule and each of its\r\n\t * `ANCESTORS`, along with the `DESCENDANTS` of those\r\n\t * elements.\r\n\t */\r\n\tPRECEEDING,\r\n\t/**\r\n\t * The element is dependent upon the set of the specified rule's following\r\n\t * elements (rules which might start after the end of the specified rule\r\n\t * while parsing). This is calculated by taking the\r\n\t * `FOLLOWING_SIBLINGS` of the rule and each of its\r\n\t * `ANCESTORS`, along with the `DESCENDANTS` of those\r\n\t * elements.\r\n\t */\r\n\tFOLLOWING,\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.2133685-07:00\r\n\r\nimport { ATNConfig } from \"./atn/ATNConfig\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserErrorListener } from \"./ParserErrorListener\";\r\nimport { RecognitionException } from \"./RecognitionException\";\r\nimport { Recognizer } from \"./Recognizer\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport { Override, NotNull } from \"./Decorators\";\r\nimport { Interval } from \"./misc/Interval\";\r\n\r\n/**\r\n * This implementation of {@link ANTLRErrorListener} can be used to identify\r\n * certain potential correctness and performance problems in grammars. \"Reports\"\r\n * are made by calling {@link Parser#notifyErrorListeners} with the appropriate\r\n * message.\r\n *\r\n * * **Ambiguities**: These are cases where more than one path through the\r\n * grammar can match the input.\r\n * * **Weak context sensitivity**: These are cases where full-context\r\n * prediction resolved an SLL conflict to a unique alternative which equaled the\r\n * minimum alternative of the SLL conflict.\r\n * * **Strong (forced) context sensitivity**: These are cases where the\r\n * full-context prediction resolved an SLL conflict to a unique alternative,\r\n * *and* the minimum alternative of the SLL conflict was found to not be\r\n * a truly viable alternative. Two-stage parsing cannot be used for inputs where\r\n * this situation occurs.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport class DiagnosticErrorListener implements ParserErrorListener {\r\n\r\n\t/**\r\n\t * Initializes a new instance of {@link DiagnosticErrorListener}, specifying\r\n\t * whether all ambiguities or only exact ambiguities are reported.\r\n\t *\r\n\t * @param exactOnly `true` to report only exact ambiguities, otherwise\r\n\t * `false` to report all ambiguities. Defaults to true.\r\n\t */\r\n\tconstructor(protected exactOnly: boolean = true) {\r\n\t\tthis.exactOnly = exactOnly;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic syntaxError(\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Recognizer,\r\n\t\toffendingSymbol: T | undefined,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number,\r\n\t\t/*@NotNull*/\r\n\t\tmsg: string,\r\n\t\te: RecognitionException | undefined): void\r\n\t{\r\n\t\t// intentionally empty\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAmbiguity(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\t@NotNull configs: ATNConfigSet): void {\r\n\t\tif (this.exactOnly && !exact) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet conflictingAlts: BitSet = this.getConflictingAlts(ambigAlts, configs);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportAmbiguity d=${decision}: ambigAlts=${conflictingAlts}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportAttemptingFullContext(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\t@NotNull conflictState: SimulatorState): void {\r\n\t\tlet format: string = \"reportAttemptingFullContext d=%s, input='%s'\";\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportAttemptingFullContext d=${decision}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic reportContextSensitivity(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\t@NotNull acceptState: SimulatorState): void {\r\n\t\tlet format: string = \"reportContextSensitivity d=%s, input='%s'\";\r\n\t\tlet decision: string = this.getDecisionDescription(recognizer, dfa);\r\n\t\tlet text: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex));\r\n\t\tlet message: string = `reportContextSensitivity d=${decision}, input='${text}'`;\r\n\t\trecognizer.notifyErrorListeners(message);\r\n\t}\r\n\r\n\tprotected getDecisionDescription(\r\n\t\t@NotNull recognizer: Parser,\r\n\t\t@NotNull dfa: DFA): string {\r\n\t\tlet decision: number = dfa.decision;\r\n\t\tlet ruleIndex: number = dfa.atnStartState.ruleIndex;\r\n\r\n\t\tlet ruleNames: string[] = recognizer.ruleNames;\r\n\t\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\r\n\t\t\treturn decision.toString();\r\n\t\t}\r\n\r\n\t\tlet ruleName: string = ruleNames[ruleIndex];\r\n\t\tif (!ruleName) {\r\n\t\t\treturn decision.toString();\r\n\t\t}\r\n\r\n\t\treturn `${decision} (${ruleName})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Computes the set of conflicting or ambiguous alternatives from a\r\n\t * configuration set, if that information was not already provided by the\r\n\t * parser.\r\n\t *\r\n\t * @param reportedAlts The set of conflicting or ambiguous alternatives, as\r\n\t * reported by the parser.\r\n\t * @param configs The conflicting or ambiguous configuration set.\r\n\t * @returns Returns `reportedAlts` if it is not `undefined`, otherwise\r\n\t * returns the set of alternatives represented in `configs`.\r\n\t */\r\n\t@NotNull\r\n\tprotected getConflictingAlts(reportedAlts: BitSet | undefined, @NotNull configs: ATNConfigSet): BitSet {\r\n\t\tif (reportedAlts != null) {\r\n\t\t\treturn reportedAlts;\r\n\t\t}\r\n\r\n\t\tlet result: BitSet = new BitSet();\r\n\t\tfor (let config of configs) {\r\n\t\t\tresult.set(config.alt);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:51.9954566-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { ATNType } from \"./atn/ATNType\";\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Lexer } from \"./Lexer\";\r\nimport { LexerATNSimulator } from \"./atn/LexerATNSimulator\";\r\nimport { NotNull } from \"./Decorators\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Vocabulary } from \"./Vocabulary\";\r\n\r\nexport class LexerInterpreter extends Lexer {\r\n\tprotected _grammarFileName: string;\r\n\tprotected _atn: ATN;\r\n\r\n\tprotected _ruleNames: string[];\r\n\tprotected _channelNames: string[];\r\n\tprotected _modeNames: string[];\r\n\t@NotNull\r\n\tprivate _vocabulary: Vocabulary;\r\n\r\n\tconstructor(grammarFileName: string, @NotNull vocabulary: Vocabulary, ruleNames: string[], channelNames: string[], modeNames: string[], atn: ATN, input: CharStream) {\r\n\t\tsuper(input);\r\n\r\n\t\tif (atn.grammarType !== ATNType.LEXER) {\r\n\t\t\tthrow new Error(\"IllegalArgumentException: The ATN must be a lexer ATN.\");\r\n\t\t}\r\n\r\n\t\tthis._grammarFileName = grammarFileName;\r\n\t\tthis._atn = atn;\r\n\r\n\t\tthis._ruleNames = ruleNames.slice(0);\r\n\t\tthis._channelNames = channelNames.slice(0);\r\n\t\tthis._modeNames = modeNames.slice(0);\r\n\t\tthis._vocabulary = vocabulary;\r\n\t\tthis._interp = new LexerATNSimulator(atn, this);\r\n\t}\r\n\r\n\t@Override\r\n\tget atn(): ATN {\r\n\t\treturn this._atn;\r\n\t}\r\n\r\n\t@Override\r\n\tget grammarFileName(): string {\r\n\t\treturn this._grammarFileName;\r\n\t}\r\n\r\n\t@Override\r\n\tget ruleNames(): string[] {\r\n\t\treturn this._ruleNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget channelNames(): string[] {\r\n\t\treturn this._channelNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget modeNames(): string[] {\r\n\t\treturn this._modeNames;\r\n\t}\r\n\r\n\t@Override\r\n\tget vocabulary(): Vocabulary {\r\n\t\treturn this._vocabulary;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:52.9471863-07:00\r\nimport { ANTLRErrorListener } from \"./ANTLRErrorListener\";\r\nimport { ATNConfigSet } from \"./atn/ATNConfigSet\";\r\nimport { BitSet } from \"./misc/BitSet\";\r\nimport { DFA } from \"./dfa/DFA\";\r\nimport { Parser } from \"./Parser\";\r\nimport { SimulatorState } from \"./atn/SimulatorState\";\r\nimport { Token } from \"./Token\";\r\nimport * as Stubs from \"./misc/Stubs\";\r\nimport * as Exception from \"./RecognitionException\";\r\n\r\n/** How to emit recognition errors for parsers.\r\n */\r\nexport interface ParserErrorListener extends ANTLRErrorListener {\r\n\t/**\r\n\t * This method is called by the parser when a full-context prediction\r\n\t * results in an ambiguity.\r\n\t *\r\n\t * Each full-context prediction which does not result in a syntax error\r\n\t * will call either {@link #reportContextSensitivity} or\r\n\t * {@link #reportAmbiguity}.\r\n\t *\r\n\t * When `ambigAlts` is not `undefined`, it contains the set of potentially\r\n\t * viable alternatives identified by the prediction algorithm. When\r\n\t * `ambigAlts` is `undefined`, use\r\n\t * {@link ATNConfigSet#getRepresentedAlternatives} to obtain the represented\r\n\t * alternatives from the `configs` argument.\r\n\t *\r\n\t * When `exact` is `true`, *all* of the potentially\r\n\t * viable alternatives are truly viable, i.e. this is reporting an exact\r\n\t * ambiguity. When `exact` is `false`, *at least two* of\r\n\t * the potentially viable alternatives are viable for the current input, but\r\n\t * the prediction algorithm terminated as soon as it determined that at\r\n\t * least the *minimum* potentially viable alternative is truly\r\n\t * viable.\r\n\t *\r\n\t * When the {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} prediction\r\n\t * mode is used, the parser is required to identify exact ambiguities so\r\n\t * `exact` will always be `true`.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input input where the ambiguity was identified\r\n\t * @param exact `true` if the ambiguity is exactly known, otherwise\r\n\t * `false`. This is always `true` when\r\n\t * {@link PredictionMode#LL_EXACT_AMBIG_DETECTION} is used.\r\n\t * @param ambigAlts the potentially ambiguous alternatives, or `undefined`\r\n\t * to indicate that the potentially ambiguous alternatives are the complete\r\n\t * set of represented alternatives in `configs`\r\n\t * @param configs the ATN configuration set where the ambiguity was\r\n\t * identified\r\n\t */\r\n\treportAmbiguity?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\texact: boolean,\r\n\t\tambigAlts: BitSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tconfigs: ATNConfigSet) => void;\r\n\r\n\t/**\r\n\t * This method is called when an SLL conflict occurs and the parser is about\r\n\t * to use the full context information to make an LL decision.\r\n\t *\r\n\t * If one or more configurations in `configs` contains a semantic\r\n\t * predicate, the predicates are evaluated before this method is called. The\r\n\t * subset of alternatives which are still viable after predicates are\r\n\t * evaluated is reported in `conflictingAlts`.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input index where the SLL conflict occurred\r\n\t * @param conflictingAlts The specific conflicting alternatives. If this is\r\n\t * `undefined`, the conflicting alternatives are all alternatives\r\n\t * represented in `configs`.\r\n\t * @param conflictState the simulator state when the SLL conflict was\r\n\t * detected\r\n\t */\r\n\treportAttemptingFullContext?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tconflictingAlts: BitSet | undefined,\r\n\t\t/*@NotNull*/\r\n\t\tconflictState: SimulatorState) => void;\r\n\r\n\t/**\r\n\t * This method is called by the parser when a full-context prediction has a\r\n\t * unique result.\r\n\t *\r\n\t * Each full-context prediction which does not result in a syntax error\r\n\t * will call either {@link #reportContextSensitivity} or\r\n\t * {@link #reportAmbiguity}.\r\n\t *\r\n\t * For prediction implementations that only evaluate full-context\r\n\t * predictions when an SLL conflict is found (including the default\r\n\t * {@link ParserATNSimulator} implementation), this method reports cases\r\n\t * where SLL conflicts were resolved to unique full-context predictions,\r\n\t * i.e. the decision was context-sensitive. This report does not necessarily\r\n\t * indicate a problem, and it may appear even in completely unambiguous\r\n\t * grammars.\r\n\t *\r\n\t * `configs` may have more than one represented alternative if the\r\n\t * full-context prediction algorithm does not evaluate predicates before\r\n\t * beginning the full-context prediction. In all cases, the final prediction\r\n\t * is passed as the `prediction` argument.\r\n\t *\r\n\t * Note that the definition of \"context sensitivity\" in this method\r\n\t * differs from the concept in {@link DecisionInfo#contextSensitivities}.\r\n\t * This method reports all instances where an SLL conflict occurred but LL\r\n\t * parsing produced a unique result, whether or not that unique result\r\n\t * matches the minimum alternative in the SLL conflicting set.\r\n\t *\r\n\t * @param recognizer the parser instance\r\n\t * @param dfa the DFA for the current decision\r\n\t * @param startIndex the input index where the decision started\r\n\t * @param stopIndex the input index where the context sensitivity was\r\n\t * finally determined\r\n\t * @param prediction the unambiguous result of the full-context prediction\r\n\t * @param acceptState the simulator state when the unambiguous prediction\r\n\t * was determined\r\n\t */\r\n\treportContextSensitivity?: (\r\n\t\t/*@NotNull*/\r\n\t\trecognizer: Parser,\r\n\t\t/*@NotNull*/\r\n\t\tdfa: DFA,\r\n\t\tstartIndex: number,\r\n\t\tstopIndex: number,\r\n\t\tprediction: number,\r\n\t\t/*@NotNull*/\r\n\t\tacceptState: SimulatorState) => void;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.4741196-07:00\r\n\r\nimport { ATN } from \"./atn/ATN\";\r\nimport { Override } from \"./Decorators\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/** A handy class for use with\r\n *\r\n * options {contextSuperClass=org.antlr.v4.runtime.RuleContextWithAltNum;}\r\n *\r\n * that provides a backing field / impl for the outer alternative number\r\n * matched for an internal parse tree node.\r\n *\r\n * I'm only putting into Java runtime as I'm certain I'm the only one that\r\n * will really every use this.\r\n */\r\nexport class RuleContextWithAltNum extends ParserRuleContext {\r\n\tprivate _altNumber: number;\r\n\r\n\tconstructor();\r\n\tconstructor(parent: ParserRuleContext | undefined, invokingStateNumber: number);\r\n\tconstructor(parent?: ParserRuleContext, invokingStateNumber?: number) {\r\n\t\tif (invokingStateNumber !== undefined) {\r\n\t\t\tsuper(parent, invokingStateNumber);\r\n\t\t} else {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tthis._altNumber = ATN.INVALID_ALT_NUMBER;\r\n\t}\r\n\r\n\t@Override\r\n\tget altNumber(): number {\r\n\t\treturn this._altNumber;\r\n\t}\r\n\r\n\t// @Override\r\n\tset altNumber(altNum: number) {\r\n\t\tthis._altNumber = altNum;\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.6271221-07:00\r\n\r\nimport { Dependents } from \"./Dependents\";\r\nimport { Parser } from \"./Parser\";\r\n\r\n/**\r\n * Declares a dependency upon a grammar rule, along with a set of zero or more dependent rules.\r\n *\r\n * Version numbers within a grammar should be assigned on a monotonically increasing basis to allow for accurate\r\n * tracking of dependent rules.\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport function RuleDependency(dependency: DependencySpecification) {\r\n\treturn (target: object, propertyKey: PropertyKey, propertyDescriptor: PropertyDescriptor) => {\r\n\t\t// intentionally empty\r\n\t};\r\n}\r\n\r\nexport interface DependencySpecification {\r\n\treadonly recognizer: { new (...args: any[]): Parser; };\r\n\r\n\treadonly rule: number;\r\n\r\n\treadonly version: number;\r\n\r\n\t/**\r\n\t * Specifies the set of grammar rules related to `rule` which the annotated element depends on. Even when absent\r\n\t * from this set, the annotated element is implicitly dependent upon the explicitly specified `rule`, which\r\n\t * corresponds to the `Dependents.SELF` element.\r\n\t *\r\n\t * By default, the annotated element is dependent upon the specified `rule` and its `Dependents.PARENTS`, i.e. the\r\n\t * rule within one level of context information. The parents are included since the most frequent assumption about a\r\n\t * rule is where it's used in the grammar.\r\n\t */\r\n\treadonly dependents?: Dependents[];\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.7170027-07:00\r\n\r\nimport { Parser } from \"./Parser\";\r\nimport { ParserRuleContext } from \"./ParserRuleContext\";\r\n\r\n/**\r\n *\r\n * @author Sam Harwell\r\n */\r\nexport function RuleVersion(version: number) {\r\n\r\n\treturn (target: Parser, propertyKey: PropertyKey, propertyDescriptor: TypedPropertyDescriptor<(...args: any[]) => T>) => {\r\n\t\t// intentionally empty\r\n\t};\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.8783640-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/** The default mechanism for creating tokens. It's used by default in Lexer and\r\n * the error handling strategy (to create missing tokens). Notifying the parser\r\n * of a new factory means that it notifies its token source and error strategy.\r\n */\r\nexport interface TokenFactory {\r\n\t/** This is the method used to create tokens in the lexer and in the\r\n\t * error handling strategy. If text!=undefined, than the start and stop positions\r\n\t * are wiped to -1 in the text override is set in the CommonToken.\r\n\t */\r\n\t//@NotNull\r\n\tcreate(\r\n\t\t/*@NotNull*/\r\n\t\tsource: { source?: TokenSource, stream?: CharStream },\r\n\t\ttype: number,\r\n\t\ttext: string | undefined,\r\n\t\tchannel: number,\r\n\t\tstart: number,\r\n\t\tstop: number,\r\n\t\tline: number,\r\n\t\tcharPositionInLine: number): Token;\r\n\r\n\t/** Generically useful */\r\n\t//@NotNull\r\n\tcreateSimple(type: number, text: string): Token;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:57.9604200-07:00\r\n\r\nimport { CharStream } from \"./CharStream\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenFactory } from \"./TokenFactory\";\r\n\r\n/**\r\n * A source of tokens must provide a sequence of tokens via {@link #nextToken()}\r\n * and also must reveal it's source of characters; {@link CommonToken}'s text is\r\n * computed from a {@link CharStream}; it only store indices into the char\r\n * stream.\r\n *\r\n * Errors from the lexer are never passed to the parser. Either you want to keep\r\n * going or you do not upon token recognition error. If you do not want to\r\n * continue lexing then you do not want to continue parsing. Just throw an\r\n * exception not under {@link RecognitionException} and Java will naturally toss\r\n * you all the way out of the recognizers. If you want to continue lexing then\r\n * you should not throw an exception to the parser--it has already requested a\r\n * token. Keep lexing until you get a valid one. Just report errors and keep\r\n * going, looking for a valid token.\r\n */\r\nexport interface TokenSource {\r\n\t/**\r\n\t * Return a {@link Token} object from your input stream (usually a\r\n\t * {@link CharStream}). Do not fail/return upon lexing error; keep chewing\r\n\t * on the characters until you get a good one; errors are not passed through\r\n\t * to the parser.\r\n\t */\r\n\t//@NotNull\r\n\tnextToken(): Token;\r\n\r\n\t/**\r\n\t * Get the line number for the current position in the input stream. The\r\n\t * first line in the input is line 1.\r\n\t *\r\n\t * @returns The line number for the current position in the input stream, or\r\n\t * 0 if the current token source does not track line numbers.\r\n\t */\r\n\treadonly line: number;\r\n\r\n\t/**\r\n\t * Get the index into the current line for the current position in the input\r\n\t * stream. The first character on a line has position 0.\r\n\t *\r\n\t * @returns The line number for the current position in the input stream, or\r\n\t * -1 if the current token source does not track character positions.\r\n\t */\r\n\treadonly charPositionInLine: number;\r\n\r\n\t/**\r\n\t * Get the {@link CharStream} from which this token source is currently\r\n\t * providing tokens.\r\n\t *\r\n\t * @returns The {@link CharStream} associated with the current position in\r\n\t * the input, or `undefined` if no input stream is available for the token\r\n\t * source.\r\n\t */\r\n\treadonly inputStream: CharStream | undefined;\r\n\r\n\t/**\r\n\t * Gets the name of the underlying input source. This method returns a\r\n\t * non-undefined, non-empty string. If such a name is not known, this method\r\n\t * returns {@link IntStream#UNKNOWN_SOURCE_NAME}.\r\n\t */\r\n\t//@NotNull\r\n\treadonly sourceName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the `TokenFactory` this token source is currently using for\r\n\t * creating `Token` objects from the input.\r\n\t */\r\n\t//@NotNull\r\n\ttokenFactory: TokenFactory;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:58.0433998-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { IntStream } from \"./IntStream\";\r\nimport { RuleContext } from \"./RuleContext\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenSource } from \"./TokenSource\";\r\n\r\n/**\r\n * An {@link IntStream} whose symbols are {@link Token} instances.\r\n */\r\nexport interface TokenStream extends IntStream {\r\n\t/**\r\n\t * Get the `Token` instance associated with the value returned by `LA(k)`. This method has the same pre- and\r\n\t * post-conditions as `IntStream.LA`. In addition, when the preconditions of this method are met, the return value\r\n\t * is non-undefined and the value of `LT(k).type === LA(k)`.\r\n\t *\r\n\t * A `RangeError` is thrown if `k<0` and fewer than `-k` calls to `consume()` have occurred from the beginning of\r\n\t * the stream before calling this method.\r\n\t *\r\n\t * See `IntStream.LA`\r\n\t */\r\n\tLT(k: number): Token;\r\n\r\n\t/**\r\n\t * Get the `Token` instance associated with the value returned by `LA(k)`. This method has the same pre- and\r\n\t * post-conditions as `IntStream.LA`. In addition, when the preconditions of this method are met, the return value\r\n\t * is non-undefined and the value of `tryLT(k).type === LA(k)`.\r\n\t *\r\n\t * The return value is `undefined` if `k<0` and fewer than `-k` calls to `consume()` have occurred from the\r\n\t * beginning of the stream before calling this method.\r\n\t *\r\n\t * See `IntStream.LA`\r\n\t */\r\n\ttryLT(k: number): Token | undefined;\r\n\r\n\t/**\r\n\t * Gets the {@link Token} at the specified `index` in the stream. When\r\n\t * the preconditions of this method are met, the return value is non-undefined.\r\n\t *\r\n\t * The preconditions for this method are the same as the preconditions of\r\n\t * {@link IntStream#seek}. If the behavior of `seek(index)` is\r\n\t * unspecified for the current state and given `index`, then the\r\n\t * behavior of this method is also unspecified.\r\n\t *\r\n\t * The symbol referred to by `index` differs from `seek()` only\r\n\t * in the case of filtering streams where `index` lies before the end\r\n\t * of the stream. Unlike `seek()`, this method does not adjust\r\n\t * `index` to point to a non-ignored symbol.\r\n\t *\r\n\t * @throws IllegalArgumentException if {code index} is less than 0\r\n\t * @throws UnsupportedOperationException if the stream does not support\r\n\t * retrieving the token at the specified index\r\n\t */\r\n\t//@NotNull\r\n\tget(i: number): Token;\r\n\r\n\t/**\r\n\t * Gets the underlying {@link TokenSource} which provides tokens for this\r\n\t * stream.\r\n\t */\r\n\t//@NotNull\r\n\treadonly tokenSource: TokenSource;\r\n\r\n\t/**\r\n\t * Return the text of all tokens within the specified `interval`. This\r\n\t * method behaves like the following code (including potential exceptions\r\n\t * for violating preconditions of {@link #get}, but may be optimized by the\r\n\t * specific implementation.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = \"\";\r\n\t * for (int i = interval.a; i <= interval.b; i++) {\r\n\t * text += stream.get(i).text;\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param interval The interval of tokens within this stream to get text\r\n\t * for.\r\n\t * @returns The text of all tokens within the specified interval in this\r\n\t * stream.\r\n\t *\r\n\t * @throws NullPointerException if `interval` is `undefined`\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ interval: Interval): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in the stream. This method behaves like the\r\n\t * following code, including potential exceptions from the calls to\r\n\t * {@link IntStream#size} and {@link #getText(Interval)}, but may be\r\n\t * optimized by the specific implementation.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = stream.getText(new Interval(0, stream.size));\r\n\t * ```\r\n\t *\r\n\t * @returns The text of all tokens in the stream.\r\n\t */\r\n\t//@NotNull\r\n\tgetText(): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in the source interval of the specified\r\n\t * context. This method behaves like the following code, including potential\r\n\t * exceptions from the call to {@link #getText(Interval)}, but may be\r\n\t * optimized by the specific implementation.\r\n\t *\r\n\t * If `ctx.sourceInterval` does not return a valid interval of\r\n\t * tokens provided by this stream, the behavior is unspecified.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = stream.getText(ctx.sourceInterval);\r\n\t * ```\r\n\t *\r\n\t * @param ctx The context providing the source interval of tokens to get\r\n\t * text for.\r\n\t * @returns The text of all tokens within the source interval of `ctx`.\r\n\t */\r\n\t//@NotNull\r\n\tgetText(/*@NotNull*/ ctx: RuleContext): string;\r\n\r\n\t/**\r\n\t * Return the text of all tokens in this stream between `start` and\r\n\t * `stop` (inclusive).\r\n\t *\r\n\t * If the specified `start` or `stop` token was not provided by\r\n\t * this stream, or if the `stop` occurred before the `start`}\r\n\t * token, the behavior is unspecified.\r\n\t *\r\n\t * For streams which ensure that the `Token.tokenIndex` method is\r\n\t * accurate for all of its provided tokens, this method behaves like the\r\n\t * following code. Other streams may implement this method in other ways\r\n\t * provided the behavior is consistent with this at a high level.\r\n\t *\r\n\t * ```\r\n\t * TokenStream stream = ...;\r\n\t * String text = \"\";\r\n\t * for (int i = start.tokenIndex; i <= stop.tokenIndex; i++) {\r\n\t * text += stream.get(i).text;\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param start The first token in the interval to get text for.\r\n\t * @param stop The last token in the interval to get text for (inclusive).\r\n\t * @returns The text of all tokens lying between the specified `start`\r\n\t * and `stop` tokens.\r\n\t *\r\n\t * @throws UnsupportedOperationException if this stream does not support\r\n\t * this method for the specified tokens\r\n\t */\r\n\t//@NotNull\r\n\tgetTextFromRange(start: any, stop: any): string;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:58.1768850-07:00\r\n\r\nimport { Interval } from \"./misc/Interval\";\r\nimport { Override } from \"./Decorators\";\r\nimport { Token } from \"./Token\";\r\nimport { TokenStream } from \"./TokenStream\";\r\n\r\nimport * as Utils from \"./misc/Utils\";\r\n\r\n/**\r\n * Useful for rewriting out a buffered input token stream after doing some\r\n * augmentation or other manipulations on it.\r\n *\r\n * You can insert stuff, replace, and delete chunks. Note that the operations\r\n * are done lazily--only if you convert the buffer to a {@link String} with\r\n * {@link TokenStream#getText()}. This is very efficient because you are not\r\n * moving data around all the time. As the buffer of tokens is converted to\r\n * strings, the {@link #getText()} method(s) scan the input token stream and\r\n * check to see if there is an operation at the current index. If so, the\r\n * operation is done and then normal {@link String} rendering continues on the\r\n * buffer. This is like having multiple Turing machine instruction streams\r\n * (programs) operating on a single input tape. :)\r\n *\r\n * This rewriter makes no modifications to the token stream. It does not ask the\r\n * stream to fill itself up nor does it advance the input cursor. The token\r\n * stream `TokenStream.index` will return the same value before and\r\n * after any {@link #getText()} call.\r\n *\r\n * The rewriter only works on tokens that you have in the buffer and ignores the\r\n * current input cursor. If you are buffering tokens on-demand, calling\r\n * {@link #getText()} halfway through the input will only do rewrites for those\r\n * tokens in the first half of the file.\r\n *\r\n * Since the operations are done lazily at {@link #getText}-time, operations do\r\n * not screw up the token index values. That is, an insert operation at token\r\n * index `i` does not change the index values for tokens\r\n * `i`+1..n-1.\r\n *\r\n * Because operations never actually alter the buffer, you may always get the\r\n * original token stream back without undoing anything. Since the instructions\r\n * are queued up, you can easily simulate transactions and roll back any changes\r\n * if there is an error just by removing instructions. For example,\r\n *\r\n * ```\r\n * CharStream input = new ANTLRFileStream(\"input\");\r\n * TLexer lex = new TLexer(input);\r\n * CommonTokenStream tokens = new CommonTokenStream(lex);\r\n * T parser = new T(tokens);\r\n * TokenStreamRewriter rewriter = new TokenStreamRewriter(tokens);\r\n * parser.startRule();\r\n * ```\r\n *\r\n * Then in the rules, you can execute (assuming rewriter is visible):\r\n *\r\n * ```\r\n * Token t,u;\r\n * ...\r\n * rewriter.insertAfter(t, \"text to put after t\");}\r\n * rewriter.insertAfter(u, \"text after u\");}\r\n * System.out.println(rewriter.getText());\r\n * ```\r\n *\r\n * You can also have multiple \"instruction streams\" and get multiple rewrites\r\n * from a single pass over the input. Just name the instruction streams and use\r\n * that name again when printing the buffer. This could be useful for generating\r\n * a C file and also its header file--all from the same buffer:\r\n *\r\n * ```\r\n * rewriter.insertAfter(\"pass1\", t, \"text to put after t\");}\r\n * rewriter.insertAfter(\"pass2\", u, \"text after u\");}\r\n * System.out.println(rewriter.getText(\"pass1\"));\r\n * System.out.println(rewriter.getText(\"pass2\"));\r\n * ```\r\n *\r\n * If you don't use named rewrite streams, a \"default\" stream is used as the\r\n * first example shows.\r\n */\r\nexport class TokenStreamRewriter {\r\n\tpublic static readonly DEFAULT_PROGRAM_NAME: string = \"default\";\r\n\tpublic static readonly PROGRAM_INIT_SIZE: number = 100;\r\n\tpublic static readonly MIN_TOKEN_INDEX: number = 0;\r\n\r\n\t/** Our source stream */\r\n\tprotected tokens: TokenStream;\r\n\r\n\t/** You may have multiple, named streams of rewrite operations.\r\n\t * I'm calling these things \"programs.\"\r\n\t * Maps String (name) → rewrite (List)\r\n\t */\r\n\tprotected programs: Map;\r\n\r\n\t/** Map String (program name) → Integer index */\r\n\tprotected lastRewriteTokenIndexes: Map;\r\n\r\n\tconstructor(tokens: TokenStream) {\r\n\t\tthis.tokens = tokens;\r\n\t\tthis.programs = new Map();\r\n\t\tthis.programs.set(TokenStreamRewriter.DEFAULT_PROGRAM_NAME, []);\r\n\t\tthis.lastRewriteTokenIndexes = new Map();\r\n\t}\r\n\r\n\tpublic getTokenStream(): TokenStream {\r\n\t\treturn this.tokens;\r\n\t}\r\n\r\n\tpublic rollback(instructionIndex: number): void;\r\n\t/** Rollback the instruction stream for a program so that\r\n\t * the indicated instruction (via instructionIndex) is no\r\n\t * longer in the stream. UNTESTED!\r\n\t */\r\n\tpublic rollback(instructionIndex: number, programName: string): void;\r\n\tpublic rollback(instructionIndex: number, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet is: RewriteOperation[] | undefined = this.programs.get(programName);\r\n\t\tif ( is != null ) {\r\n\t\t\tthis.programs.set(programName, is.slice(TokenStreamRewriter.MIN_TOKEN_INDEX, instructionIndex));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic deleteProgram(): void;\r\n\r\n\t/** Reset the program so that no instructions exist */\r\n\tpublic deleteProgram(programName: string): void;\r\n\tpublic deleteProgram(programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tthis.rollback(TokenStreamRewriter.MIN_TOKEN_INDEX, programName);\r\n\t}\r\n\r\n\tpublic insertAfter(t: Token, text: {}): void;\r\n\tpublic insertAfter(index: number, text: {}): void;\r\n\tpublic insertAfter(t: Token, text: {}, programName: string): void;\r\n\tpublic insertAfter(index: number, text: {}, programName: string): void;\r\n\tpublic insertAfter(tokenOrIndex: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet index: number;\r\n\t\tif (typeof tokenOrIndex === \"number\") {\r\n\t\t\tindex = tokenOrIndex;\r\n\t\t} else {\r\n\t\t\tindex = tokenOrIndex.tokenIndex;\r\n\t\t}\r\n\r\n\t\t// to insert after, just insert before next index (even if past end)\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op = new InsertAfterOp(this.tokens, index, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic insertBefore(t: Token, text: {}): void;\r\n\tpublic insertBefore(index: number, text: {}): void;\r\n\tpublic insertBefore(t: Token, text: {}, programName: string): void;\r\n\tpublic insertBefore(index: number, text: {}, programName: string): void;\r\n\tpublic insertBefore(tokenOrIndex: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tlet index: number;\r\n\t\tif (typeof tokenOrIndex === \"number\") {\r\n\t\t\tindex = tokenOrIndex;\r\n\t\t} else {\r\n\t\t\tindex = tokenOrIndex.tokenIndex;\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op: RewriteOperation = new InsertBeforeOp(this.tokens, index, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic replaceSingle(index: number, text: {}): void;\r\n\tpublic replaceSingle(indexT: Token, text: {}): void;\r\n\tpublic replaceSingle(index: Token | number, text: {}): void {\r\n\t\tif (typeof index === \"number\") {\r\n\t\t\tthis.replace(index, index, text);\r\n\t\t} else {\r\n\t\t\tthis.replace(index, index, text);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic replace(from: number, to: number, text: {}): void;\r\n\r\n\tpublic replace(from: Token, to: Token, text: {}): void;\r\n\r\n\tpublic replace(from: number, to: number, text: {}, programName: string): void;\r\n\r\n\tpublic replace(from: Token, to: Token, text: {}, programName: string): void;\r\n\r\n\tpublic replace(from: Token | number, to: Token | number, text: {}, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tif (typeof from !== \"number\") {\r\n\t\t\tfrom = from.tokenIndex;\r\n\t\t}\r\n\r\n\t\tif (typeof to !== \"number\") {\r\n\t\t\tto = to.tokenIndex;\r\n\t\t}\r\n\r\n\t\tif ( from > to || from < 0 || to < 0 || to >= this.tokens.size ) {\r\n\t\t\tthrow new RangeError(`replace: range invalid: ${from}..${to}(size=${this.tokens.size})`);\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] = this.getProgram(programName);\r\n\t\tlet op: RewriteOperation = new ReplaceOp(this.tokens, from, to, rewrites.length, text);\r\n\t\trewrites.push(op);\r\n\t}\r\n\r\n\tpublic delete(index: number): void;\r\n\r\n\tpublic delete(from: number, to: number): void;\r\n\r\n\tpublic delete(indexT: Token): void;\r\n\r\n\tpublic delete(from: Token, to: Token): void;\r\n\r\n\tpublic delete(from: number, to: number, programName: string): void;\r\n\r\n\tpublic delete(from: Token, to: Token, programName: string): void;\r\n\r\n\tpublic delete(from: Token | number, to?: Token | number, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): void {\r\n\t\tif (to === undefined) {\r\n\t\t\tto = from;\r\n\t\t}\r\n\r\n\t\tif (typeof from === \"number\") {\r\n\t\t\tthis.replace(from, to as number, \"\", programName);\r\n\t\t} else {\r\n\t\t\tthis.replace(from, to as Token, \"\", programName);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getLastRewriteTokenIndex(): number;\r\n\r\n\tprotected getLastRewriteTokenIndex(programName: string): number;\r\n\r\n\tprotected getLastRewriteTokenIndex(programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): number {\r\n\t\tlet I: number | undefined = this.lastRewriteTokenIndexes.get(programName);\r\n\t\tif ( I == null ) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\treturn I;\r\n\t}\r\n\r\n\tprotected setLastRewriteTokenIndex(programName: string, i: number): void {\r\n\t\tthis.lastRewriteTokenIndexes.set(programName, i);\r\n\t}\r\n\r\n\tprotected getProgram(name: string): RewriteOperation[] {\r\n\t\tlet is: RewriteOperation[] | undefined = this.programs.get(name);\r\n\t\tif ( is == null ) {\r\n\t\t\tis = this.initializeProgram(name);\r\n\t\t}\r\n\r\n\t\treturn is;\r\n\t}\r\n\r\n\tprivate initializeProgram(name: string): RewriteOperation[] {\r\n\t\tlet is: RewriteOperation[] = [];\r\n\t\tthis.programs.set(name, is);\r\n\t\treturn is;\r\n\t}\r\n\r\n\t/** Return the text from the original tokens altered per the\r\n\t * instructions given to this rewriter.\r\n\t */\r\n\tpublic getText(): string;\r\n\r\n\t/** Return the text from the original tokens altered per the\r\n\t * instructions given to this rewriter in programName.\r\n\t *\r\n\t * @since 4.5\r\n\t */\r\n\tpublic getText(programName: string): string;\r\n\r\n\t/** Return the text associated with the tokens in the interval from the\r\n\t * original token stream but with the alterations given to this rewriter.\r\n\t * The interval refers to the indexes in the original token stream.\r\n\t * We do not alter the token stream in any way, so the indexes\r\n\t * and intervals are still consistent. Includes any operations done\r\n\t * to the first and last token in the interval. So, if you did an\r\n\t * insertBefore on the first token, you would get that insertion.\r\n\t * The same is true if you do an insertAfter the stop token.\r\n\t */\r\n\tpublic getText(interval: Interval): string;\r\n\r\n\tpublic getText(interval: Interval, programName: string): string;\r\n\r\n\tpublic getText(intervalOrProgram?: Interval | string, programName: string = TokenStreamRewriter.DEFAULT_PROGRAM_NAME): string {\r\n\t\tlet interval: Interval;\r\n\t\tif (intervalOrProgram instanceof Interval) {\r\n\t\t\tinterval = intervalOrProgram;\r\n\t\t} else {\r\n\t\t\tinterval = Interval.of(0, this.tokens.size - 1);\r\n\t\t}\r\n\r\n\t\tif (typeof intervalOrProgram === \"string\") {\r\n\t\t\tprogramName = intervalOrProgram;\r\n\t\t}\r\n\r\n\t\tlet rewrites: RewriteOperation[] | undefined = this.programs.get(programName);\r\n\t\tlet start: number = interval.a;\r\n\t\tlet stop: number = interval.b;\r\n\r\n\t\t// ensure start/end are in range\r\n\t\tif ( stop > this.tokens.size - 1 ) {\r\n\t\t\tstop = this.tokens.size - 1;\r\n\t\t}\r\n\t\tif ( start < 0 ) {\r\n\t\t\tstart = 0;\r\n\t\t}\r\n\r\n\t\tif ( rewrites == null || rewrites.length === 0 ) {\r\n\t\t\treturn this.tokens.getText(interval); // no instructions to execute\r\n\t\t}\r\n\r\n\t\tlet buf: string[] = [];\r\n\r\n\t\t// First, optimize instruction stream\r\n\t\tlet indexToOp: Map = this.reduceToSingleOperationPerIndex(rewrites);\r\n\r\n\t\t// Walk buffer, executing instructions and emitting tokens\r\n\t\tlet i: number = start;\r\n\t\twhile ( i <= stop && i < this.tokens.size ) {\r\n\t\t\tlet op: RewriteOperation | undefined = indexToOp.get(i);\r\n\t\t\tindexToOp.delete(i); // remove so any left have index size-1\r\n\t\t\tlet t: Token = this.tokens.get(i);\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// no operation at that index, just dump token\r\n\t\t\t\tif ( t.type !== Token.EOF ) {\r\n\t\t\t\t\tbuf.push(String(t.text));\r\n\t\t\t\t}\r\n\t\t\t\ti++; // move to next token\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ti = op.execute(buf); // execute operation and skip\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// include stuff after end if it's last index in buffer\r\n\t\t// So, if they did an insertAfter(lastValidIndex, \"foo\"), include\r\n\t\t// foo if end==lastValidIndex.\r\n\t\tif ( stop === this.tokens.size - 1 ) {\r\n\t\t\t// Scan any remaining operations after last token\r\n\t\t\t// should be included (they will be inserts).\r\n\t\t\tfor (let op of indexToOp.values()) {\r\n\t\t\t\tif ( op.index >= this.tokens.size - 1 ) {\r\n\t\t\t\t\tbuf.push(op.text.toString());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn buf.join(\"\");\r\n\t}\r\n\r\n\t/** We need to combine operations and report invalid operations (like\r\n\t * overlapping replaces that are not completed nested). Inserts to\r\n\t * same index need to be combined etc... Here are the cases:\r\n\t *\r\n\t * I.i.u I.j.v\t\t\t\t\t\t\t\tleave alone, nonoverlapping\r\n\t * I.i.u I.i.v\t\t\t\t\t\t\t\tcombine: Iivu\r\n\t *\r\n\t * R.i-j.u R.x-y.v\t| i-j in x-y\t\t\tdelete first R\r\n\t * R.i-j.u R.i-j.v\t\t\t\t\t\t\tdelete first R\r\n\t * R.i-j.u R.x-y.v\t| x-y in i-j\t\t\tERROR\r\n\t * R.i-j.u R.x-y.v\t| boundaries overlap\tERROR\r\n\t *\r\n\t * Delete special case of replace (text==undefined):\r\n\t * D.i-j.u D.x-y.v\t| boundaries overlap\tcombine to max(min)..max(right)\r\n\t *\r\n\t * I.i.u R.x-y.v | i in (x+1)-y\t\t\tdelete I (since insert before\r\n\t * \t\t\t\t\t\t\t\t\t\t\twe're not deleting i)\r\n\t * I.i.u R.x-y.v | i not in (x+1)-y\t\tleave alone, nonoverlapping\r\n\t * R.x-y.v I.i.u | i in x-y\t\t\t\tERROR\r\n\t * R.x-y.v I.x.u \t\t\t\t\t\t\tR.x-y.uv (combine, delete I)\r\n\t * R.x-y.v I.i.u | i not in x-y\t\t\tleave alone, nonoverlapping\r\n\t *\r\n\t * I.i.u = insert u before op @ index i\r\n\t * R.x-y.u = replace x-y indexed tokens with u\r\n\t *\r\n\t * First we need to examine replaces. For any replace op:\r\n\t *\r\n\t * \t\t1. wipe out any insertions before op within that range.\r\n\t * \t\t2. Drop any replace op before that is contained completely within\r\n\t * \t that range.\r\n\t * \t\t3. Throw exception upon boundary overlap with any previous replace.\r\n\t *\r\n\t * Then we can deal with inserts:\r\n\t *\r\n\t * \t\t1. for any inserts to same index, combine even if not adjacent.\r\n\t * \t\t2. for any prior replace with same left boundary, combine this\r\n\t * \t insert with replace and delete this replace.\r\n\t * \t\t3. throw exception if index in same range as previous replace\r\n\t *\r\n\t * Don't actually delete; make op undefined in list. Easier to walk list.\r\n\t * Later we can throw as we add to index → op map.\r\n\t *\r\n\t * Note that I.2 R.2-2 will wipe out I.2 even though, technically, the\r\n\t * inserted stuff would be before the replace range. But, if you\r\n\t * add tokens in front of a method body '{' and then delete the method\r\n\t * body, I think the stuff before the '{' you added should disappear too.\r\n\t *\r\n\t * Return a map from token index to operation.\r\n\t */\r\n\tprotected reduceToSingleOperationPerIndex(rewrites: Array): Map {\r\n\t\t// console.log(`rewrites=[${Utils.join(rewrites, \", \")}]`);\r\n\r\n\t\t// WALK REPLACES\r\n\t\tfor (let i = 0; i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( !(op instanceof ReplaceOp) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet rop: ReplaceOp = op;\r\n\t\t\t// Wipe prior inserts within range\r\n\t\t\tlet inserts: InsertBeforeOp[] = this.getKindOfOps(rewrites, InsertBeforeOp, i);\r\n\t\t\tfor (let iop of inserts) {\r\n\t\t\t\tif ( iop.index === rop.index ) {\r\n\t\t\t\t\t// E.g., insert before 2, delete 2..2; update replace\r\n\t\t\t\t\t// text to include insert before, kill insert\r\n\t\t\t\t\trewrites[iop.instructionIndex] = undefined;\r\n\t\t\t\t\trop.text = iop.text.toString() + (rop.text != null ? rop.text.toString() : \"\");\r\n\t\t\t\t}\r\n\t\t\t\telse if ( iop.index > rop.index && iop.index <= rop.lastIndex ) {\r\n\t\t\t\t\t// delete insert as it's a no-op.\r\n\t\t\t\t\trewrites[iop.instructionIndex] = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Drop any prior replaces contained within\r\n\t\t\tlet prevReplaces: ReplaceOp[] = this.getKindOfOps(rewrites, ReplaceOp, i);\r\n\t\t\tfor (let prevRop of prevReplaces) {\r\n\t\t\t\tif ( prevRop.index >= rop.index && prevRop.lastIndex <= rop.lastIndex ) {\r\n\t\t\t\t\t// delete replace as it's a no-op.\r\n\t\t\t\t\trewrites[prevRop.instructionIndex] = undefined;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t// throw exception unless disjoint or identical\r\n\t\t\t\tlet disjoint: boolean =\r\n\t\t\t\t\tprevRop.lastIndex < rop.index || prevRop.index > rop.lastIndex;\r\n\t\t\t\t// Delete special case of replace (text==null):\r\n\t\t\t\t// D.i-j.u D.x-y.v\t| boundaries overlap\tcombine to max(min)..max(right)\r\n\t\t\t\tif ( prevRop.text == null && rop.text == null && !disjoint ) {\r\n\t\t\t\t\t// console.log(`overlapping deletes: ${prevRop}, ${rop}`);\r\n\t\t\t\t\trewrites[prevRop.instructionIndex] = undefined; // kill first delete\r\n\t\t\t\t\trop.index = Math.min(prevRop.index, rop.index);\r\n\t\t\t\t\trop.lastIndex = Math.max(prevRop.lastIndex, rop.lastIndex);\r\n\t\t\t\t\t// console.log(`new rop ${rop}`);\r\n\t\t\t\t}\r\n\t\t\t\telse if ( !disjoint ) {\r\n\t\t\t\t\tthrow new Error(`replace op boundaries of ${rop} overlap with previous ${prevRop}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// WALK INSERTS\r\n\t\tfor (let i = 0; i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( !(op instanceof InsertBeforeOp) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet iop: InsertBeforeOp = op;\r\n\t\t\t// combine current insert with prior if any at same index\r\n\t\t\tlet prevInserts: InsertBeforeOp[] = this.getKindOfOps(rewrites, InsertBeforeOp, i);\r\n\t\t\tfor (let prevIop of prevInserts) {\r\n\t\t\t\tif ( prevIop.index === iop.index ) {\r\n\t\t\t\t\tif (prevIop instanceof InsertAfterOp) {\r\n\t\t\t\t\t\tiop.text = this.catOpText(prevIop.text, iop.text);\r\n\t\t\t\t\t\trewrites[prevIop.instructionIndex] = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (prevIop instanceof InsertBeforeOp) { // combine objects\r\n\t\t\t\t\t\t// convert to strings...we're in process of toString'ing\r\n\t\t\t\t\t\t// whole token buffer so no lazy eval issue with any templates\r\n\t\t\t\t\t\tiop.text = this.catOpText(iop.text, prevIop.text);\r\n\t\t\t\t\t\t// delete redundant prior insert\r\n\t\t\t\t\t\trewrites[prevIop.instructionIndex] = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// look for replaces where iop.index is in range; error\r\n\t\t\tlet prevReplaces: ReplaceOp[] = this.getKindOfOps(rewrites, ReplaceOp, i);\r\n\t\t\tfor (let rop of prevReplaces) {\r\n\t\t\t\tif ( iop.index === rop.index ) {\r\n\t\t\t\t\trop.text = this.catOpText(iop.text, rop.text);\r\n\t\t\t\t\trewrites[i] = undefined;\t// delete current insert\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif ( iop.index >= rop.index && iop.index <= rop.lastIndex ) {\r\n\t\t\t\t\tthrow new Error(`insert op ${iop} within boundaries of previous ${rop}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// console.log(`rewrites after=[${Utils.join(rewrites, \", \")}]`);\r\n\t\tlet m: Map = new Map();\r\n\t\tfor (let op of rewrites) {\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// ignore deleted ops\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( m.get(op.index) != null ) {\r\n\t\t\t\tthrow new Error(\"should only be one op per index\");\r\n\t\t\t}\r\n\t\t\tm.set(op.index, op);\r\n\t\t}\r\n\t\t// console.log(`index to op: ${m}`);\r\n\t\treturn m;\r\n\t}\r\n\r\n\tprotected catOpText(a: {}, b: {}): string {\r\n\t\tlet x: string = \"\";\r\n\t\tlet y: string = \"\";\r\n\t\tif ( a != null ) {\r\n\t\t\tx = a.toString();\r\n\t\t}\r\n\t\tif ( b != null ) {\r\n\t\t\ty = b.toString();\r\n\t\t}\r\n\t\treturn x + y;\r\n\t}\r\n\r\n\t/** Get all operations before an index of a particular kind */\r\n\tprotected getKindOfOps(rewrites: Array, kind: {new(...args: any[]): T}, before: number): T[] {\r\n\t\tlet ops: T[] = [];\r\n\t\tfor (let i = 0; i < before && i < rewrites.length; i++) {\r\n\t\t\tlet op: RewriteOperation | undefined = rewrites[i];\r\n\t\t\tif ( op == null ) {\r\n\t\t\t\t// ignore deleted\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ( op instanceof kind ) {\r\n\t\t\t\tops.push(op);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ops;\r\n\t}\r\n}\r\n\r\n// Define the rewrite operation hierarchy\r\n\r\nexport class RewriteOperation {\r\n\tprotected readonly tokens: TokenStream;\r\n\t/** What index into rewrites List are we? */\r\n\tpublic readonly instructionIndex: number;\r\n\t/** Token buffer index. */\r\n\tpublic index: number;\r\n\tpublic text: {};\r\n\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number);\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {});\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text?: {}) {\r\n\t\tthis.tokens = tokens;\r\n\t\tthis.instructionIndex = instructionIndex;\r\n\t\tthis.index = index;\r\n\t\tthis.text = text === undefined ? \"\" : text;\r\n\t}\r\n\r\n\t/** Execute the rewrite operation by possibly adding to the buffer.\r\n\t * Return the index of the next token to operate on.\r\n\t */\r\n\tpublic execute(buf: string[]): number {\r\n\t\treturn this.index;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tlet opName: string = this.constructor.name;\r\n\t\tlet $index = opName.indexOf(\"$\");\r\n\t\topName = opName.substring($index + 1, opName.length);\r\n\t\treturn \"<\" + opName + \"@\" + this.tokens.get(this.index) +\r\n\t\t\t\t\":\\\"\" + this.text + \"\\\">\";\r\n\t}\r\n}\r\n\r\nclass InsertBeforeOp extends RewriteOperation {\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, index, instructionIndex, text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic execute(buf: string[]): number {\r\n\t\tbuf.push(this.text.toString());\r\n\t\tif ( this.tokens.get(this.index).type !== Token.EOF ) {\r\n\t\t\tbuf.push(String(this.tokens.get(this.index).text));\r\n\t\t}\r\n\t\treturn this.index + 1;\r\n\t}\r\n}\r\n\r\n/** Distinguish between insert after/before to do the \"insert afters\"\r\n * first and then the \"insert befores\" at same index. Implementation\r\n * of \"insert after\" is \"insert before index+1\".\r\n */\r\nclass InsertAfterOp extends InsertBeforeOp {\r\n\tconstructor(tokens: TokenStream, index: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, index + 1, instructionIndex, text); // insert after is insert before index+1\r\n\t}\r\n}\r\n\r\n/** I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp\r\n * instructions.\r\n */\r\nclass ReplaceOp extends RewriteOperation {\r\n\tpublic lastIndex: number;\r\n\tconstructor(tokens: TokenStream, from: number, to: number, instructionIndex: number, text: {}) {\r\n\t\tsuper(tokens, from, instructionIndex, text);\r\n\t\tthis.lastIndex = to;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic execute(buf: string[]): number {\r\n\t\tif ( this.text != null ) {\r\n\t\t\tbuf.push(this.text.toString());\r\n\t\t}\r\n\t\treturn this.lastIndex + 1;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic toString(): string {\r\n\t\tif ( this.text == null ) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.4986610-07:00\r\n\r\n/**\r\n * This interface provides information about the vocabulary used by a\r\n * recognizer.\r\n *\r\n * @see Recognizer.vocabulary\r\n * @author Sam Harwell\r\n */\r\nexport interface Vocabulary {\r\n\r\n\t/**\r\n\t * Returns the highest token type value. It can be used to iterate from\r\n\t * zero to that number, inclusively, thus querying all stored entries.\r\n\t * @returns the highest token type value\r\n\t */\r\n\treadonly maxTokenType: number;\r\n\r\n\t/**\r\n\t * Gets the string literal associated with a token type. The string returned\r\n\t * by this method, when not `undefined`, can be used unaltered in a parser\r\n\t * grammar to represent this token type.\r\n\t *\r\n\t * The following table shows examples of lexer rules and the literal\r\n\t * names assigned to the corresponding token types.\r\n\t *\r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t *
        RuleLiteral NameJava String Literal
        `THIS : 'this';``'this'``\"'this'\"`
        `SQUOTE : '\\'';``'\\''``\"'\\\\''\"`
        `ID : [A-Z]+;`n/a`undefined`
        \r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The string literal associated with the specified token type, or\r\n\t * `undefined` if no string literal is associated with the type.\r\n\t */\r\n\tgetLiteralName(tokenType: number): string | undefined;\r\n\r\n\t/**\r\n\t * Gets the symbolic name associated with a token type. The string returned\r\n\t * by this method, when not `undefined`, can be used unaltered in a parser\r\n\t * grammar to represent this token type.\r\n\t *\r\n\t * This method supports token types defined by any of the following\r\n\t * methods:\r\n\t *\r\n\t * * Tokens created by lexer rules.\r\n\t * * Tokens defined in a `tokens{}` block in a lexer or parser\r\n\t * grammar.\r\n\t * * The implicitly defined `EOF` token, which has the token type\r\n\t * {@link Token#EOF}.\r\n\t *\r\n\t * The following table shows examples of lexer rules and the literal\r\n\t * names assigned to the corresponding token types.\r\n\t *\r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t * \r\n\t *
        RuleSymbolic Name
        `THIS : 'this';``THIS`
        `SQUOTE : '\\'';``SQUOTE`
        `ID : [A-Z]+;``ID`
        \r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The symbolic name associated with the specified token type, or\r\n\t * `undefined` if no symbolic name is associated with the type.\r\n\t */\r\n\tgetSymbolicName(tokenType: number): string | undefined;\r\n\r\n\t/**\r\n\t * Gets the display name of a token type.\r\n\t *\r\n\t * ANTLR provides a default implementation of this method, but\r\n\t * applications are free to override the behavior in any manner which makes\r\n\t * sense for the application. The default implementation returns the first\r\n\t * result from the following list which produces a non-`undefined`\r\n\t * result.\r\n\t *\r\n\t * 1. The result of {@link #getLiteralName}\r\n\t * 1. The result of {@link #getSymbolicName}\r\n\t * 1. The result of {@link Integer#toString}\r\n\t *\r\n\t * @param tokenType The token type.\r\n\t *\r\n\t * @returns The display name of the token type, for use in error reporting or\r\n\t * other user-visible messages which reference specific token types.\r\n\t */\r\n\t//@NotNull\r\n\tgetDisplayName(tokenType: number): string;\r\n\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:59.7015751-07:00\r\n\r\nimport { Token } from \"./Token\";\r\n\r\nexport interface WritableToken extends Token {\r\n\ttext: string | undefined;\r\n\r\n\ttype: number;\r\n\r\n\tline: number;\r\n\r\n\tcharPositionInLine: number;\r\n\r\n\tchannel: number;\r\n\r\n\ttokenIndex: number;\r\n}\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\nexport * from \"./ANTLRErrorListener\";\r\nexport * from \"./ANTLRErrorStrategy\";\r\n// export * from \"./ANTLRFileStream\";\r\nexport * from \"./ANTLRInputStream\";\r\nexport * from \"./BailErrorStrategy\";\r\nexport * from \"./BufferedTokenStream\";\r\nexport * from \"./CharStream\";\r\nexport * from \"./CharStreams\";\r\nexport * from \"./CodePointBuffer\";\r\nexport * from \"./CodePointCharStream\";\r\nexport * from \"./CommonToken\";\r\nexport * from \"./CommonTokenFactory\";\r\nexport * from \"./CommonTokenStream\";\r\nexport * from \"./ConsoleErrorListener\";\r\nexport * from \"./DefaultErrorStrategy\";\r\nexport * from \"./Dependents\";\r\nexport * from \"./DiagnosticErrorListener\";\r\nexport * from \"./FailedPredicateException\";\r\nexport * from \"./InputMismatchException\";\r\nexport * from \"./InterpreterRuleContext\";\r\nexport * from \"./IntStream\";\r\nexport * from \"./Lexer\";\r\nexport * from \"./LexerInterpreter\";\r\nexport * from \"./LexerNoViableAltException\";\r\nexport * from \"./ListTokenSource\";\r\nexport * from \"./NoViableAltException\";\r\nexport * from \"./Parser\";\r\nexport * from \"./ParserErrorListener\";\r\nexport * from \"./ParserInterpreter\";\r\nexport * from \"./ParserRuleContext\";\r\nexport * from \"./ProxyErrorListener\";\r\nexport * from \"./ProxyParserErrorListener\";\r\nexport * from \"./RecognitionException\";\r\nexport * from \"./Recognizer\";\r\nexport * from \"./RuleContext\";\r\nexport * from \"./RuleContextWithAltNum\";\r\nexport * from \"./RuleDependency\";\r\nexport * from \"./RuleVersion\";\r\nexport * from \"./Token\";\r\nexport * from \"./TokenFactory\";\r\nexport * from \"./TokenSource\";\r\nexport * from \"./TokenStream\";\r\nexport * from \"./TokenStreamRewriter\";\r\n// export * from \"./UnbufferedCharStream\";\r\n// export * from \"./UnbufferedTokenStream\";\r\nexport * from \"./Vocabulary\";\r\nexport * from \"./VocabularyImpl\";\r\nexport * from \"./WritableToken\";\r\n", "/*!\r\n * Copyright 2016 The ANTLR Project. All rights reserved.\r\n * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.\r\n */\r\n\r\n// ConvertTo-TS run at 2016-10-04T11:26:47.3092279-07:00\r\n\r\nimport { ErrorNode } from \"./ErrorNode\";\r\nimport { NotNull, Override } from \"../Decorators\";\r\nimport { ParseTree } from \"./ParseTree\";\r\nimport { ParseTreeVisitor } from \"./ParseTreeVisitor\";\r\nimport { RuleNode } from \"./RuleNode\";\r\nimport { TerminalNode } from \"./TerminalNode\";\r\n\r\nexport abstract class AbstractParseTreeVisitor implements ParseTreeVisitor {\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation calls {@link ParseTree#accept} on the\r\n\t * specified tree.\r\n\t */\r\n\t@Override\r\n\tpublic visit(@NotNull tree: ParseTree): Result {\r\n\t\treturn tree.accept(this);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation initializes the aggregate result to\r\n\t * {@link #defaultResult defaultResult()}. Before visiting each child, it\r\n\t * calls {@link #shouldVisitNextChild shouldVisitNextChild}; if the result\r\n\t * is `false` no more children are visited and the current aggregate\r\n\t * result is returned. After visiting a child, the aggregate result is\r\n\t * updated by calling {@link #aggregateResult aggregateResult} with the\r\n\t * previous aggregate result and the result of visiting the child.\r\n\t *\r\n\t * The default implementation is not safe for use in visitors that modify\r\n\t * the tree structure. Visitors that modify the tree should override this\r\n\t * method to behave properly in respect to the specific algorithm in use.\r\n\t */\r\n\t@Override\r\n\tpublic visitChildren(@NotNull node: RuleNode): Result {\r\n\t\tlet result: Result = this.defaultResult();\r\n\t\tlet n: number = node.childCount;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tif (!this.shouldVisitNextChild(node, result)) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet c: ParseTree = node.getChild(i);\r\n\t\t\tlet childResult: Result = c.accept(this);\r\n\t\t\tresult = this.aggregateResult(result, childResult);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns the result of\r\n\t * {@link #defaultResult defaultResult}.\r\n\t */\r\n\t@Override\r\n\tpublic visitTerminal(@NotNull node: TerminalNode): Result {\r\n\t\treturn this.defaultResult();\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t *\r\n\t * The default implementation returns the result of\r\n\t * {@link #defaultResult defaultResult}.\r\n\t */\r\n\t@Override\r\n\tpublic visitErrorNode(@NotNull node: ErrorNode): Result {\r\n\t\treturn this.defaultResult();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default value returned by visitor methods. This value is\r\n\t * returned by the default implementations of\r\n\t * {@link #visitTerminal visitTerminal}, {@link #visitErrorNode visitErrorNode}.\r\n\t * The default implementation of {@link #visitChildren visitChildren}\r\n\t * initializes its aggregate result to this value.\r\n\t *\r\n\t * @returns The default value returned by visitor methods.\r\n\t */\r\n\tprotected abstract defaultResult(): Result;\r\n\r\n\t/**\r\n\t * Aggregates the results of visiting multiple children of a node. After\r\n\t * either all children are visited or {@link #shouldVisitNextChild} returns\r\n\t * `false`, the aggregate value is returned as the result of\r\n\t * {@link #visitChildren}.\r\n\t *\r\n\t * The default implementation returns `nextResult`, meaning\r\n\t * {@link #visitChildren} will return the result of the last child visited\r\n\t * (or return the initial value if the node has no children).\r\n\t *\r\n\t * @param aggregate The previous aggregate value. In the default\r\n\t * implementation, the aggregate value is initialized to\r\n\t * {@link #defaultResult}, which is passed as the `aggregate` argument\r\n\t * to this method after the first child node is visited.\r\n\t * @param nextResult The result of the immediately preceeding call to visit\r\n\t * a child node.\r\n\t *\r\n\t * @returns The updated aggregate result.\r\n\t */\r\n\tprotected aggregateResult(aggregate: Result, nextResult: Result): Result {\r\n\t\treturn nextResult;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is called after visiting each child in\r\n\t * {@link #visitChildren}. This method is first called before the first\r\n\t * child is visited; at that point `currentResult` will be the initial\r\n\t * value (in the default implementation, the initial value is returned by a\r\n\t * call to {@link #defaultResult}. This method is not called after the last\r\n\t * child is visited.\r\n\t *\r\n\t * The default implementation always returns `true`, indicating that\r\n\t * `visitChildren` should only return after all children are visited.\r\n\t * One reason to override this method is to provide a \"short circuit\"\r\n\t * evaluation option for situations where the result of visiting a single\r\n\t * child has the potential to determine the result of the visit operation as\r\n\t * a whole.\r\n\t *\r\n\t * @param node The {@link RuleNode} whose children are currently being\r\n\t * visited.\r\n\t * @param currentResult The current aggregate result of the children visited\r\n\t * to the current point.\r\n\t *\r\n\t * @returns `true` to continue visiting children. Otherwise return\r\n\t * `false` to stop visiting children and immediately return the\r\n\t * current aggregate result from {@link #visitChildren}.\r\n\t */\r\n\tprotected shouldVisitNextChild(@NotNull node: RuleNode, currentResult: Result): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n", "", "// This is an indirect file to import the tokens string\n// It needs to be a js file so that tsc doesn't complain\n\nif (typeof BROWSER !== \"undefined\") {\n module.exports = require('./antlr/Solidity.tokens')\n} else {\n module.exports = require('fs')\n .readFileSync(require('path').join(__dirname, './antlr/Solidity.tokens'))\n .toString()\n}\n", "export * from \"./parser\";\n\nexport type { ParseOptions } from \"./types\";\n", "import { ANTLRInputStream, CommonTokenStream } from 'antlr4ts'\n\nimport { SolidityLexer } from './antlr/SolidityLexer'\nimport { SolidityParser } from './antlr/SolidityParser'\nimport { ASTNode, astNodeTypes, ASTNodeTypeString, ASTVisitor, SourceUnit } from './ast-types'\nimport { ASTBuilder } from './ASTBuilder'\nimport ErrorListener from './ErrorListener'\nimport { buildTokenList } from './tokens'\nimport { ParseOptions, Token, TokenizeOptions } from './types'\n\ninterface ParserErrorItem {\n message: string\n line: number\n column: number\n}\n\ntype ParseResult = SourceUnit & {\n errors?: any[]\n tokens?: Token[]\n}\n\nexport class ParserError extends Error {\n public errors: ParserErrorItem[]\n\n constructor(args: { errors: ParserErrorItem[] }) {\n super()\n const { message, line, column } = args.errors[0]\n this.message = `${message} (${line}:${column})`\n this.errors = args.errors\n\n if (Error.captureStackTrace !== undefined) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = new Error().stack\n }\n }\n}\n\nexport function tokenize(input: string, options: TokenizeOptions = {}): any {\n const inputStream = new ANTLRInputStream(input)\n const lexer = new SolidityLexer(inputStream)\n\n return buildTokenList(lexer.getAllTokens(), options)\n}\n\nexport function parse(\n input: string,\n options: ParseOptions = {}\n): ParseResult {\n const inputStream = new ANTLRInputStream(input)\n const lexer = new SolidityLexer(inputStream)\n const tokenStream = new CommonTokenStream(lexer)\n const parser = new SolidityParser(tokenStream)\n\n const listener = new ErrorListener()\n lexer.removeErrorListeners()\n lexer.addErrorListener(listener)\n\n parser.removeErrorListeners()\n parser.addErrorListener(listener)\n parser.buildParseTree = true\n\n const sourceUnit = parser.sourceUnit()\n\n const astBuilder = new ASTBuilder(options)\n\n astBuilder.visit(sourceUnit)\n\n const ast: ParseResult | null = astBuilder.result as any\n\n if (ast === null) {\n throw new Error('ast should never be null')\n }\n\n let tokenList: Token[] = []\n if (options.tokens === true) {\n tokenList = buildTokenList(tokenStream.getTokens(), options)\n }\n\n if (options.tolerant !== true && listener.hasErrors()) {\n throw new ParserError({ errors: listener.getErrors() })\n }\n if (options.tolerant === true && listener.hasErrors()) {\n ast.errors = listener.getErrors()\n }\n if (options.tokens === true) {\n ast.tokens = tokenList\n }\n\n return ast\n}\n\nfunction _isASTNode(node: unknown): node is ASTNode {\n if (typeof node !== 'object' || node === null) {\n return false\n }\n\n const nodeAsAny: any = node\n\n if (Object.prototype.hasOwnProperty.call(nodeAsAny, 'type') && typeof nodeAsAny.type === \"string\") {\n return astNodeTypes.includes(nodeAsAny.type)\n }\n\n return false;\n}\n\nexport function visit(node: unknown, visitor: ASTVisitor, nodeParent?: ASTNode): void {\n if (Array.isArray(node)) {\n node.forEach((child) => visit(child, visitor, nodeParent))\n }\n\n if (!_isASTNode(node)) return\n\n let cont = true\n\n if (visitor[node.type] !== undefined) {\n // TODO can we avoid this `as any`\n cont = visitor[node.type]!(node as any, nodeParent)\n }\n\n if (cont === false) return\n\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n // TODO can we avoid this `as any`\n visit((node as any)[prop], visitor, node)\n }\n }\n\n const selector = (node.type + ':exit') as `${ASTNodeTypeString}:exit`\n if (visitor[selector] !== undefined) {\n // TODO can we avoid this `as any`\n visitor[selector]!(node as any, nodeParent)\n }\n}\n", "// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT\n\n\nimport { ATN } from \"antlr4ts/atn/ATN\";\nimport { ATNDeserializer } from \"antlr4ts/atn/ATNDeserializer\";\nimport { CharStream } from \"antlr4ts/CharStream\";\nimport { Lexer } from \"antlr4ts/Lexer\";\nimport { LexerATNSimulator } from \"antlr4ts/atn/LexerATNSimulator\";\nimport { NotNull } from \"antlr4ts/Decorators\";\nimport { Override } from \"antlr4ts/Decorators\";\nimport { RuleContext } from \"antlr4ts/RuleContext\";\nimport { Vocabulary } from \"antlr4ts/Vocabulary\";\nimport { VocabularyImpl } from \"antlr4ts/VocabularyImpl\";\n\nimport * as Utils from \"antlr4ts/misc/Utils\";\n\n\nexport class SolidityLexer extends Lexer {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly T__11 = 12;\n\tpublic static readonly T__12 = 13;\n\tpublic static readonly T__13 = 14;\n\tpublic static readonly T__14 = 15;\n\tpublic static readonly T__15 = 16;\n\tpublic static readonly T__16 = 17;\n\tpublic static readonly T__17 = 18;\n\tpublic static readonly T__18 = 19;\n\tpublic static readonly T__19 = 20;\n\tpublic static readonly T__20 = 21;\n\tpublic static readonly T__21 = 22;\n\tpublic static readonly T__22 = 23;\n\tpublic static readonly T__23 = 24;\n\tpublic static readonly T__24 = 25;\n\tpublic static readonly T__25 = 26;\n\tpublic static readonly T__26 = 27;\n\tpublic static readonly T__27 = 28;\n\tpublic static readonly T__28 = 29;\n\tpublic static readonly T__29 = 30;\n\tpublic static readonly T__30 = 31;\n\tpublic static readonly T__31 = 32;\n\tpublic static readonly T__32 = 33;\n\tpublic static readonly T__33 = 34;\n\tpublic static readonly T__34 = 35;\n\tpublic static readonly T__35 = 36;\n\tpublic static readonly T__36 = 37;\n\tpublic static readonly T__37 = 38;\n\tpublic static readonly T__38 = 39;\n\tpublic static readonly T__39 = 40;\n\tpublic static readonly T__40 = 41;\n\tpublic static readonly T__41 = 42;\n\tpublic static readonly T__42 = 43;\n\tpublic static readonly T__43 = 44;\n\tpublic static readonly T__44 = 45;\n\tpublic static readonly T__45 = 46;\n\tpublic static readonly T__46 = 47;\n\tpublic static readonly T__47 = 48;\n\tpublic static readonly T__48 = 49;\n\tpublic static readonly T__49 = 50;\n\tpublic static readonly T__50 = 51;\n\tpublic static readonly T__51 = 52;\n\tpublic static readonly T__52 = 53;\n\tpublic static readonly T__53 = 54;\n\tpublic static readonly T__54 = 55;\n\tpublic static readonly T__55 = 56;\n\tpublic static readonly T__56 = 57;\n\tpublic static readonly T__57 = 58;\n\tpublic static readonly T__58 = 59;\n\tpublic static readonly T__59 = 60;\n\tpublic static readonly T__60 = 61;\n\tpublic static readonly T__61 = 62;\n\tpublic static readonly T__62 = 63;\n\tpublic static readonly T__63 = 64;\n\tpublic static readonly T__64 = 65;\n\tpublic static readonly T__65 = 66;\n\tpublic static readonly T__66 = 67;\n\tpublic static readonly T__67 = 68;\n\tpublic static readonly T__68 = 69;\n\tpublic static readonly T__69 = 70;\n\tpublic static readonly T__70 = 71;\n\tpublic static readonly T__71 = 72;\n\tpublic static readonly T__72 = 73;\n\tpublic static readonly T__73 = 74;\n\tpublic static readonly T__74 = 75;\n\tpublic static readonly T__75 = 76;\n\tpublic static readonly T__76 = 77;\n\tpublic static readonly T__77 = 78;\n\tpublic static readonly T__78 = 79;\n\tpublic static readonly T__79 = 80;\n\tpublic static readonly T__80 = 81;\n\tpublic static readonly T__81 = 82;\n\tpublic static readonly T__82 = 83;\n\tpublic static readonly T__83 = 84;\n\tpublic static readonly T__84 = 85;\n\tpublic static readonly T__85 = 86;\n\tpublic static readonly T__86 = 87;\n\tpublic static readonly T__87 = 88;\n\tpublic static readonly T__88 = 89;\n\tpublic static readonly T__89 = 90;\n\tpublic static readonly T__90 = 91;\n\tpublic static readonly T__91 = 92;\n\tpublic static readonly T__92 = 93;\n\tpublic static readonly T__93 = 94;\n\tpublic static readonly T__94 = 95;\n\tpublic static readonly T__95 = 96;\n\tpublic static readonly T__96 = 97;\n\tpublic static readonly Int = 98;\n\tpublic static readonly Uint = 99;\n\tpublic static readonly Byte = 100;\n\tpublic static readonly Fixed = 101;\n\tpublic static readonly Ufixed = 102;\n\tpublic static readonly BooleanLiteral = 103;\n\tpublic static readonly DecimalNumber = 104;\n\tpublic static readonly HexNumber = 105;\n\tpublic static readonly NumberUnit = 106;\n\tpublic static readonly HexLiteralFragment = 107;\n\tpublic static readonly ReservedKeyword = 108;\n\tpublic static readonly AnonymousKeyword = 109;\n\tpublic static readonly BreakKeyword = 110;\n\tpublic static readonly ConstantKeyword = 111;\n\tpublic static readonly ImmutableKeyword = 112;\n\tpublic static readonly ContinueKeyword = 113;\n\tpublic static readonly LeaveKeyword = 114;\n\tpublic static readonly ExternalKeyword = 115;\n\tpublic static readonly IndexedKeyword = 116;\n\tpublic static readonly InternalKeyword = 117;\n\tpublic static readonly PayableKeyword = 118;\n\tpublic static readonly PrivateKeyword = 119;\n\tpublic static readonly PublicKeyword = 120;\n\tpublic static readonly VirtualKeyword = 121;\n\tpublic static readonly PureKeyword = 122;\n\tpublic static readonly TypeKeyword = 123;\n\tpublic static readonly ViewKeyword = 124;\n\tpublic static readonly GlobalKeyword = 125;\n\tpublic static readonly ConstructorKeyword = 126;\n\tpublic static readonly FallbackKeyword = 127;\n\tpublic static readonly ReceiveKeyword = 128;\n\tpublic static readonly Identifier = 129;\n\tpublic static readonly StringLiteralFragment = 130;\n\tpublic static readonly VersionLiteral = 131;\n\tpublic static readonly WS = 132;\n\tpublic static readonly COMMENT = 133;\n\tpublic static readonly LINE_COMMENT = 134;\n\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly channelNames: string[] = [\n\t\t\"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\",\n\t];\n\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly modeNames: string[] = [\n\t\t\"DEFAULT_MODE\",\n\t];\n\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"T__0\", \"T__1\", \"T__2\", \"T__3\", \"T__4\", \"T__5\", \"T__6\", \"T__7\", \"T__8\", \n\t\t\"T__9\", \"T__10\", \"T__11\", \"T__12\", \"T__13\", \"T__14\", \"T__15\", \"T__16\", \n\t\t\"T__17\", \"T__18\", \"T__19\", \"T__20\", \"T__21\", \"T__22\", \"T__23\", \"T__24\", \n\t\t\"T__25\", \"T__26\", \"T__27\", \"T__28\", \"T__29\", \"T__30\", \"T__31\", \"T__32\", \n\t\t\"T__33\", \"T__34\", \"T__35\", \"T__36\", \"T__37\", \"T__38\", \"T__39\", \"T__40\", \n\t\t\"T__41\", \"T__42\", \"T__43\", \"T__44\", \"T__45\", \"T__46\", \"T__47\", \"T__48\", \n\t\t\"T__49\", \"T__50\", \"T__51\", \"T__52\", \"T__53\", \"T__54\", \"T__55\", \"T__56\", \n\t\t\"T__57\", \"T__58\", \"T__59\", \"T__60\", \"T__61\", \"T__62\", \"T__63\", \"T__64\", \n\t\t\"T__65\", \"T__66\", \"T__67\", \"T__68\", \"T__69\", \"T__70\", \"T__71\", \"T__72\", \n\t\t\"T__73\", \"T__74\", \"T__75\", \"T__76\", \"T__77\", \"T__78\", \"T__79\", \"T__80\", \n\t\t\"T__81\", \"T__82\", \"T__83\", \"T__84\", \"T__85\", \"T__86\", \"T__87\", \"T__88\", \n\t\t\"T__89\", \"T__90\", \"T__91\", \"T__92\", \"T__93\", \"T__94\", \"T__95\", \"T__96\", \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"DecimalDigits\", \"HexNumber\", \"HexDigits\", \"NumberUnit\", \"HexLiteralFragment\", \n\t\t\"HexPair\", \"HexCharacter\", \"ReservedKeyword\", \"AnonymousKeyword\", \"BreakKeyword\", \n\t\t\"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \"LeaveKeyword\", \n\t\t\"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \"PayableKeyword\", \n\t\t\"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \"PureKeyword\", \"TypeKeyword\", \n\t\t\"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \"FallbackKeyword\", \n\t\t\"ReceiveKeyword\", \"Identifier\", \"IdentifierStart\", \"IdentifierPart\", \"StringLiteralFragment\", \n\t\t\"DoubleQuotedStringCharacter\", \"SingleQuotedStringCharacter\", \"VersionLiteral\", \n\t\t\"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\n\tprivate static readonly _LITERAL_NAMES: Array = [\n\t\tundefined, \"'pragma'\", \"';'\", \"'*'\", \"'||'\", \"'^'\", \"'~'\", \"'>='\", \"'>'\", \n\t\t\"'<'\", \"'<='\", \"'='\", \"'as'\", \"'import'\", \"'from'\", \"'{'\", \"','\", \"'}'\", \n\t\t\"'abstract'\", \"'contract'\", \"'interface'\", \"'library'\", \"'is'\", \"'('\", \n\t\t\"')'\", \"'error'\", \"'using'\", \"'for'\", \"'struct'\", \"'modifier'\", \"'function'\", \n\t\t\"'returns'\", \"'event'\", \"'enum'\", \"'['\", \"']'\", \"'address'\", \"'.'\", \"'mapping'\", \n\t\t\"'=>'\", \"'memory'\", \"'storage'\", \"'calldata'\", \"'if'\", \"'else'\", \"'try'\", \n\t\t\"'catch'\", \"'while'\", \"'unchecked'\", \"'assembly'\", \"'do'\", \"'return'\", \n\t\t\"'throw'\", \"'emit'\", \"'revert'\", \"'var'\", \"'bool'\", \"'string'\", \"'byte'\", \n\t\t\"'++'\", \"'--'\", \"'new'\", \"':'\", \"'+'\", \"'-'\", \"'after'\", \"'delete'\", \"'!'\", \n\t\t\"'**'\", \"'/'\", \"'%'\", \"'<<'\", \"'>>'\", \"'&'\", \"'|'\", \"'=='\", \"'!='\", \"'&&'\", \n\t\t\"'?'\", \"'|='\", \"'^='\", \"'&='\", \"'<<='\", \"'>>='\", \"'+='\", \"'-='\", \"'*='\", \n\t\t\"'/='\", \"'%='\", \"'let'\", \"':='\", \"'=:'\", \"'switch'\", \"'case'\", \"'default'\", \n\t\t\"'->'\", \"'callback'\", \"'override'\", undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"'anonymous'\", \"'break'\", \"'constant'\", \"'immutable'\", \"'continue'\", \"'leave'\", \n\t\t\"'external'\", \"'indexed'\", \"'internal'\", \"'payable'\", \"'private'\", \"'public'\", \n\t\t\"'virtual'\", \"'pure'\", \"'type'\", \"'view'\", \"'global'\", \"'constructor'\", \n\t\t\"'fallback'\", \"'receive'\",\n\t];\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"HexNumber\", \"NumberUnit\", \"HexLiteralFragment\", \"ReservedKeyword\", \"AnonymousKeyword\", \n\t\t\"BreakKeyword\", \"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \n\t\t\"LeaveKeyword\", \"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \n\t\t\"PayableKeyword\", \"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \n\t\t\"PureKeyword\", \"TypeKeyword\", \"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \n\t\t\"FallbackKeyword\", \"ReceiveKeyword\", \"Identifier\", \"StringLiteralFragment\", \n\t\t\"VersionLiteral\", \"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityLexer._LITERAL_NAMES, SolidityLexer._SYMBOLIC_NAMES, []);\n\n\t// @Override\n\t// @NotNull\n\tpublic get vocabulary(): Vocabulary {\n\t\treturn SolidityLexer.VOCABULARY;\n\t}\n\t// tslint:enable:no-trailing-whitespace\n\n\n\tconstructor(input: CharStream) {\n\t\tsuper(input);\n\t\tthis._interp = new LexerATNSimulator(SolidityLexer._ATN, this);\n\t}\n\n\t// @Override\n\tpublic get grammarFileName(): string { return \"Solidity.g4\"; }\n\n\t// @Override\n\tpublic get ruleNames(): string[] { return SolidityLexer.ruleNames; }\n\n\t// @Override\n\tpublic get serializedATN(): string { return SolidityLexer._serializedATN; }\n\n\t// @Override\n\tpublic get channelNames(): string[] { return SolidityLexer.channelNames; }\n\n\t// @Override\n\tpublic get modeNames(): string[] { return SolidityLexer.modeNames; }\n\n\tprivate static readonly _serializedATNSegments: number = 4;\n\tprivate static readonly _serializedATNSegment0: string =\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x02\\x88\\u0757\\b\\x01\" +\n\t\t\"\\x04\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\" +\n\t\t\"\\x04\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x04\\n\\t\\n\\x04\\v\\t\\v\\x04\\f\\t\\f\\x04\\r\" +\n\t\t\"\\t\\r\\x04\\x0E\\t\\x0E\\x04\\x0F\\t\\x0F\\x04\\x10\\t\\x10\\x04\\x11\\t\\x11\\x04\\x12\\t\" +\n\t\t\"\\x12\\x04\\x13\\t\\x13\\x04\\x14\\t\\x14\\x04\\x15\\t\\x15\\x04\\x16\\t\\x16\\x04\\x17\\t\" +\n\t\t\"\\x17\\x04\\x18\\t\\x18\\x04\\x19\\t\\x19\\x04\\x1A\\t\\x1A\\x04\\x1B\\t\\x1B\\x04\\x1C\\t\" +\n\t\t\"\\x1C\\x04\\x1D\\t\\x1D\\x04\\x1E\\t\\x1E\\x04\\x1F\\t\\x1F\\x04 \\t \\x04!\\t!\\x04\\\"\\t\" +\n\t\t\"\\\"\\x04#\\t#\\x04$\\t$\\x04%\\t%\\x04&\\t&\\x04\\'\\t\\'\\x04(\\t(\\x04)\\t)\\x04*\\t*\\x04\" +\n\t\t\"+\\t+\\x04,\\t,\\x04-\\t-\\x04.\\t.\\x04/\\t/\\x040\\t0\\x041\\t1\\x042\\t2\\x043\\t3\\x04\" +\n\t\t\"4\\t4\\x045\\t5\\x046\\t6\\x047\\t7\\x048\\t8\\x049\\t9\\x04:\\t:\\x04;\\t;\\x04<\\t<\\x04\" +\n\t\t\"=\\t=\\x04>\\t>\\x04?\\t?\\x04@\\t@\\x04A\\tA\\x04B\\tB\\x04C\\tC\\x04D\\tD\\x04E\\tE\\x04\" +\n\t\t\"F\\tF\\x04G\\tG\\x04H\\tH\\x04I\\tI\\x04J\\tJ\\x04K\\tK\\x04L\\tL\\x04M\\tM\\x04N\\tN\\x04\" +\n\t\t\"O\\tO\\x04P\\tP\\x04Q\\tQ\\x04R\\tR\\x04S\\tS\\x04T\\tT\\x04U\\tU\\x04V\\tV\\x04W\\tW\\x04\" +\n\t\t\"X\\tX\\x04Y\\tY\\x04Z\\tZ\\x04[\\t[\\x04\\\\\\t\\\\\\x04]\\t]\\x04^\\t^\\x04_\\t_\\x04`\\t\" +\n\t\t\"`\\x04a\\ta\\x04b\\tb\\x04c\\tc\\x04d\\td\\x04e\\te\\x04f\\tf\\x04g\\tg\\x04h\\th\\x04\" +\n\t\t\"i\\ti\\x04j\\tj\\x04k\\tk\\x04l\\tl\\x04m\\tm\\x04n\\tn\\x04o\\to\\x04p\\tp\\x04q\\tq\\x04\" +\n\t\t\"r\\tr\\x04s\\ts\\x04t\\tt\\x04u\\tu\\x04v\\tv\\x04w\\tw\\x04x\\tx\\x04y\\ty\\x04z\\tz\\x04\" +\n\t\t\"{\\t{\\x04|\\t|\\x04}\\t}\\x04~\\t~\\x04\\x7F\\t\\x7F\\x04\\x80\\t\\x80\\x04\\x81\\t\\x81\" +\n\t\t\"\\x04\\x82\\t\\x82\\x04\\x83\\t\\x83\\x04\\x84\\t\\x84\\x04\\x85\\t\\x85\\x04\\x86\\t\\x86\" +\n\t\t\"\\x04\\x87\\t\\x87\\x04\\x88\\t\\x88\\x04\\x89\\t\\x89\\x04\\x8A\\t\\x8A\\x04\\x8B\\t\\x8B\" +\n\t\t\"\\x04\\x8C\\t\\x8C\\x04\\x8D\\t\\x8D\\x04\\x8E\\t\\x8E\\x04\\x8F\\t\\x8F\\x03\\x02\\x03\\x02\" +\n\t\t\"\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x04\\x03\\x04\" +\n\t\t\"\\x03\\x05\\x03\\x05\\x03\\x05\\x03\\x06\\x03\\x06\\x03\\x07\\x03\\x07\\x03\\b\\x03\\b\\x03\" +\n\t\t\"\\b\\x03\\t\\x03\\t\\x03\\n\\x03\\n\\x03\\v\\x03\\v\\x03\\v\\x03\\f\\x03\\f\\x03\\r\\x03\\r\\x03\" +\n\t\t\"\\r\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0F\\x03\" +\n\t\t\"\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x10\\x03\\x10\\x03\\x11\\x03\\x11\\x03\\x12\\x03\" +\n\t\t\"\\x12\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\" +\n\t\t\"\\x13\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\" +\n\t\t\"\\x14\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\" +\n\t\t\"\\x15\\x03\\x15\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\\x16\\x03\" +\n\t\t\"\\x16\\x03\\x17\\x03\\x17\\x03\\x17\\x03\\x18\\x03\\x18\\x03\\x19\\x03\\x19\\x03\\x1A\\x03\" +\n\t\t\"\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\" +\n\t\t\"\\x1B\\x03\\x1B\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1D\\x03\\x1D\\x03\\x1D\\x03\" +\n\t\t\"\\x1D\\x03\\x1D\\x03\\x1D\\x03\\x1D\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\" +\n\t\t\"\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\" +\n\t\t\"\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03 \\x03\" +\n\t\t\"!\\x03!\\x03!\\x03!\\x03!\\x03!\\x03\\\"\\x03\\\"\\x03\\\"\\x03\\\"\\x03\\\"\\x03#\\x03#\\x03\" +\n\t\t\"$\\x03$\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03%\\x03&\\x03&\\x03\\'\\x03\\'\\x03\" +\n\t\t\"\\'\\x03\\'\\x03\\'\\x03\\'\\x03\\'\\x03\\'\\x03(\\x03(\\x03(\\x03)\\x03)\\x03)\\x03)\\x03\" +\n\t\t\")\\x03)\\x03)\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03*\\x03+\\x03+\\x03+\\x03\" +\n\t\t\"+\\x03+\\x03+\\x03+\\x03+\\x03+\\x03,\\x03,\\x03,\\x03-\\x03-\\x03-\\x03-\\x03-\\x03\" +\n\t\t\".\\x03.\\x03.\\x03.\\x03/\\x03/\\x03/\\x03/\\x03/\\x03/\\x030\\x030\\x030\\x030\\x03\" +\n\t\t\"0\\x030\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x031\\x032\\x032\\x03\" +\n\t\t\"2\\x032\\x032\\x032\\x032\\x032\\x032\\x033\\x033\\x033\\x034\\x034\\x034\\x034\\x03\" +\n\t\t\"4\\x034\\x034\\x035\\x035\\x035\\x035\\x035\\x035\\x036\\x036\\x036\\x036\\x036\\x03\" +\n\t\t\"7\\x037\\x037\\x037\\x037\\x037\\x037\\x038\\x038\\x038\\x038\\x039\\x039\\x039\\x03\" +\n\t\t\"9\\x039\\x03:\\x03:\\x03:\\x03:\\x03:\\x03:\\x03:\\x03;\\x03;\\x03;\\x03;\\x03;\\x03\" +\n\t\t\"<\\x03<\\x03<\\x03=\\x03=\\x03=\\x03>\\x03>\\x03>\\x03>\\x03?\\x03?\\x03@\\x03@\\x03\" +\n\t\t\"A\\x03A\\x03B\\x03B\\x03B\\x03B\\x03B\\x03B\\x03C\\x03C\\x03C\\x03C\\x03C\\x03C\\x03\" +\n\t\t\"C\\x03D\\x03D\\x03E\\x03E\\x03E\\x03F\\x03F\\x03G\\x03G\\x03H\\x03H\\x03H\\x03I\\x03\" +\n\t\t\"I\\x03I\\x03J\\x03J\\x03K\\x03K\\x03L\\x03L\\x03L\\x03M\\x03M\\x03M\\x03N\\x03N\\x03\" +\n\t\t\"N\\x03O\\x03O\\x03P\\x03P\\x03P\\x03Q\\x03Q\\x03Q\\x03R\\x03R\\x03R\\x03S\\x03S\\x03\" +\n\t\t\"S\\x03S\\x03T\\x03T\\x03T\\x03T\\x03U\\x03U\\x03U\\x03V\\x03V\\x03V\\x03W\\x03W\\x03\" +\n\t\t\"W\\x03X\\x03X\\x03X\\x03Y\\x03Y\\x03Y\\x03Z\\x03Z\\x03Z\\x03Z\\x03[\\x03[\\x03[\\x03\" +\n\t\t\"\\\\\\x03\\\\\\x03\\\\\\x03]\\x03]\\x03]\\x03]\\x03]\\x03]\\x03]\\x03^\\x03^\\x03^\\x03^\" +\n\t\t\"\\x03^\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03_\\x03`\\x03`\\x03`\\x03a\\x03\" +\n\t\t\"a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03a\\x03b\\x03b\\x03b\\x03b\\x03b\\x03b\\x03\" +\n\t\t\"b\\x03b\\x03b\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03c\\x03\" +\n\t\t\"c\\x03c\\x03c\\x05c\\u038B\\nc\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03\" +\n\t\t\"d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x03d\\x05d\\u0464\\nd\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03\" +\n\t\t\"e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x03e\\x05e\\u0542\\ne\\x03f\\x03\" +\n\t\t\"f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x03f\\x06f\\u0550\\nf\\rf\\x0E\" +\n\t\t\"f\\u0551\\x03f\\x03f\\x06f\\u0556\\nf\\rf\\x0Ef\\u0557\\x05f\\u055A\\nf\\x03g\\x03g\" +\n\t\t\"\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x03g\\x06g\\u056A\" +\n\t\t\"\\ng\\rg\\x0Eg\\u056B\\x03g\\x03g\\x06g\\u0570\\ng\\rg\\x0Eg\\u0571\\x05g\\u0574\\ng\" +\n\t\t\"\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x03h\\x05h\\u057F\\nh\\x03i\\x03i\" +\n\t\t\"\\x05i\\u0583\\ni\\x03i\\x03i\\x05i\\u0587\\ni\\x03i\\x03i\\x05i\\u058B\\ni\\x03j\\x03\" +\n\t\t\"j\\x05j\\u058F\\nj\\x03j\\x07j\\u0592\\nj\\fj\\x0Ej\\u0595\\vj\\x03k\\x03k\\x03k\\x03\" +\n\t\t\"k\\x03l\\x03l\\x05l\\u059D\\nl\\x03l\\x07l\\u05A0\\nl\\fl\\x0El\\u05A3\\vl\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03\" +\n\t\t\"m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x03m\\x05m\\u05DD\" +\n\t\t\"\\nm\\x03n\\x03n\\x03n\\x03n\\x03n\\x03n\\x05n\\u05E5\\nn\\x03n\\x03n\\x03n\\x05n\\u05EA\" +\n\t\t\"\\nn\\x03n\\x05n\\u05ED\\nn\\x03o\\x03o\\x03o\\x03p\\x03p\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03\" +\n\t\t\"q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x03q\\x05\" +\n\t\t\"q\\u064C\\nq\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03r\\x03s\\x03\" +\n\t\t\"s\\x03s\\x03s\\x03s\\x03s\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03t\\x03\" +\n\t\t\"u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03u\\x03v\\x03v\\x03v\\x03v\\x03\" +\n\t\t\"v\\x03v\\x03v\\x03v\\x03v\\x03w\\x03w\\x03w\\x03w\\x03w\\x03w\\x03x\\x03x\\x03x\\x03\" +\n\t\t\"x\\x03x\\x03x\\x03x\\x03x\\x03x\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03y\\x03\" +\n\t\t\"z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03z\\x03{\\x03{\\x03{\\x03{\\x03{\\x03\" +\n\t\t\"{\\x03{\\x03{\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03|\\x03}\\x03}\\x03}\\x03\" +\n\t\t\"}\\x03}\\x03}\\x03}\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03~\\x03\\x7F\\x03\\x7F\" +\n\t\t\"\\x03\\x7F\\x03\\x7F\\x03\\x7F\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x80\\x03\\x81\" +\n\t\t\"\\x03\\x81\\x03\\x81\\x03\\x81\\x03\\x81\\x03\\x82\\x03\\x82\\x03\\x82\\x03\\x82\\x03\\x82\" +\n\t\t\"\\x03\\x82\\x03\\x82\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\" +\n\t\t\"\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x83\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\" +\n\t\t\"\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x84\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x85\" +\n\t\t\"\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x85\\x03\\x86\\x03\\x86\\x07\\x86\\u06EE\\n\\x86\\f\" +\n\t\t\"\\x86\\x0E\\x86\\u06F1\\v\\x86\\x03\\x87\\x03\\x87\\x03\\x88\\x03\\x88\\x03\\x89\\x03\\x89\" +\n\t\t\"\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x05\\x89\\u06FE\\n\\x89\\x03\\x89\\x03\" +\n\t\t\"\\x89\\x07\\x89\\u0702\\n\\x89\\f\\x89\\x0E\\x89\\u0705\\v\\x89\\x03\\x89\\x03\\x89\\x03\" +\n\t\t\"\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x03\\x89\\x05\\x89\\u070F\\n\\x89\\x03\\x89\" +\n\t\t\"\\x03\\x89\\x07\\x89\\u0713\\n\\x89\\f\\x89\\x0E\\x89\\u0716\\v\\x89\\x03\\x89\\x05\\x89\" +\n\t\t\"\\u0719\\n\\x89\\x03\\x8A\\x03\\x8A\\x03\\x8A\\x05\\x8A\\u071E\\n\\x8A\\x03\\x8B\\x03\\x8B\" +\n\t\t\"\\x03\\x8B\\x05\\x8B\\u0723\\n\\x8B\\x03\\x8C\\x06\\x8C\\u0726\\n\\x8C\\r\\x8C\\x0E\\x8C\" +\n\t\t\"\\u0727\\x03\\x8C\\x03\\x8C\\x06\\x8C\\u072C\\n\\x8C\\r\\x8C\\x0E\\x8C\\u072D\\x03\\x8C\" +\n\t\t\"\\x03\\x8C\\x06\\x8C\\u0732\\n\\x8C\\r\\x8C\\x0E\\x8C\\u0733\\x05\\x8C\\u0736\\n\\x8C\\x03\" +\n\t\t\"\\x8D\\x06\\x8D\\u0739\\n\\x8D\\r\\x8D\\x0E\\x8D\\u073A\\x03\\x8D\\x03\\x8D\\x03\\x8E\\x03\" +\n\t\t\"\\x8E\\x03\\x8E\\x03\\x8E\\x07\\x8E\\u0743\\n\\x8E\\f\\x8E\\x0E\\x8E\\u0746\\v\\x8E\\x03\" +\n\t\t\"\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8E\\x03\\x8F\\x03\\x8F\\x03\\x8F\\x03\\x8F\\x07\" +\n\t\t\"\\x8F\\u0751\\n\\x8F\\f\\x8F\\x0E\\x8F\\u0754\\v\\x8F\\x03\\x8F\\x03\\x8F\\x03\\u0744\\x02\" +\n\t\t\"\\x02\\x90\\x03\\x02\\x03\\x05\\x02\\x04\\x07\\x02\\x05\\t\\x02\\x06\\v\\x02\\x07\\r\\x02\" +\n\t\t\"\\b\\x0F\\x02\\t\\x11\\x02\\n\\x13\\x02\\v\\x15\\x02\\f\\x17\\x02\\r\\x19\\x02\\x0E\\x1B\\x02\" +\n\t\t\"\\x0F\\x1D\\x02\\x10\\x1F\\x02\\x11!\\x02\\x12#\\x02\\x13%\\x02\\x14\\'\\x02\\x15)\\x02\" +\n\t\t\"\\x16+\\x02\\x17-\\x02\\x18/\\x02\\x191\\x02\\x1A3\\x02\\x1B5\\x02\\x1C7\\x02\\x1D9\\x02\" +\n\t\t\"\\x1E;\\x02\\x1F=\\x02 ?\\x02!A\\x02\\\"C\\x02#E\\x02$G\\x02%I\\x02&K\\x02\\'M\\x02(\" +\n\t\t\"O\\x02)Q\\x02*S\\x02+U\\x02,W\\x02-Y\\x02.[\\x02/]\\x020_\\x021a\\x022c\\x023e\\x02\" +\n\t\t\"4g\\x025i\\x026k\\x027m\\x028o\\x029q\\x02:s\\x02;u\\x02{\\x02?}\\x02\" +\n\t\t\"@\\x7F\\x02A\\x81\\x02B\\x83\\x02C\\x85\\x02D\\x87\\x02E\\x89\\x02F\\x8B\\x02G\\x8D\\x02\" +\n\t\t\"H\\x8F\\x02I\\x91\\x02J\\x93\\x02K\\x95\\x02L\\x97\\x02M\\x99\\x02N\\x9B\\x02O\\x9D\\x02\" +\n\t\t\"P\\x9F\\x02Q\\xA1\\x02R\\xA3\\x02S\\xA5\\x02T\\xA7\\x02U\\xA9\\x02V\\xAB\\x02W\\xAD\\x02\" +\n\t\t\"X\\xAF\\x02Y\\xB1\\x02Z\\xB3\\x02[\\xB5\\x02\\\\\\xB7\\x02]\\xB9\\x02^\\xBB\\x02_\\xBD\" +\n\t\t\"\\x02`\\xBF\\x02a\\xC1\\x02b\\xC3\\x02c\\xC5\\x02d\\xC7\\x02e\\xC9\\x02f\\xCB\\x02g\\xCD\" +\n\t\t\"\\x02h\\xCF\\x02i\\xD1\\x02j\\xD3\\x02\\x02\\xD5\\x02k\\xD7\\x02\\x02\\xD9\\x02l\\xDB\" +\n\t\t\"\\x02m\\xDD\\x02\\x02\\xDF\\x02\\x02\\xE1\\x02n\\xE3\\x02o\\xE5\\x02p\\xE7\\x02q\\xE9\" +\n\t\t\"\\x02r\\xEB\\x02s\\xED\\x02t\\xEF\\x02u\\xF1\\x02v\\xF3\\x02w\\xF5\\x02x\\xF7\\x02y\\xF9\" +\n\t\t\"\\x02z\\xFB\\x02{\\xFD\\x02|\\xFF\\x02}\\u0101\\x02~\\u0103\\x02\\x7F\\u0105\\x02\\x80\" +\n\t\t\"\\u0107\\x02\\x81\\u0109\\x02\\x82\\u010B\\x02\\x83\\u010D\\x02\\x02\\u010F\\x02\\x02\" +\n\t\t\"\\u0111\\x02\\x84\\u0113\\x02\\x02\\u0115\\x02\\x02\\u0117\\x02\\x85\\u0119\\x02\\x86\" +\n\t\t\"\\u011B\\x02\\x87\\u011D\\x02\\x88\\x03\\x02\\f\\x03\\x022;\\x04\\x02GGgg\\x04\\x02Z\" +\n\t\t\"Zzz\\x05\\x022;CHch\\x06\\x02&&C\\\\aac|\\x07\\x02&&2;C\\\\aac|\\x06\\x02\\f\\f\\x0F\" +\n\t\t\"\\x0F$$^^\\x06\\x02\\f\\f\\x0F\\x0F))^^\\x05\\x02\\v\\f\\x0E\\x0F\\\"\\\"\\x04\\x02\\f\\f\\x0F\" +\n\t\t\"\\x0F\\x02\\u07E8\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x05\\x03\\x02\\x02\\x02\\x02\\x07\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x02\\t\\x03\\x02\\x02\\x02\\x02\\v\\x03\\x02\\x02\\x02\\x02\\r\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x0F\\x03\\x02\\x02\\x02\\x02\\x11\\x03\\x02\\x02\\x02\\x02\\x13\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x15\\x03\\x02\\x02\\x02\\x02\\x17\\x03\\x02\\x02\\x02\\x02\\x19\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02\\x1B\\x03\\x02\\x02\\x02\\x02\\x1D\\x03\\x02\\x02\\x02\\x02\\x1F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02!\\x03\\x02\\x02\\x02\\x02#\\x03\\x02\\x02\\x02\\x02%\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02\\'\\x03\\x02\\x02\\x02\\x02)\\x03\\x02\\x02\\x02\\x02+\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"-\\x03\\x02\\x02\\x02\\x02/\\x03\\x02\\x02\\x02\\x021\\x03\\x02\\x02\\x02\\x023\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x025\\x03\\x02\\x02\\x02\\x027\\x03\\x02\\x02\\x02\\x029\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02;\\x03\\x02\\x02\\x02\\x02=\\x03\\x02\\x02\\x02\\x02?\\x03\\x02\\x02\\x02\\x02A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02C\\x03\\x02\\x02\\x02\\x02E\\x03\\x02\\x02\\x02\\x02G\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02I\\x03\\x02\\x02\\x02\\x02K\\x03\\x02\\x02\\x02\\x02M\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"O\\x03\\x02\\x02\\x02\\x02Q\\x03\\x02\\x02\\x02\\x02S\\x03\\x02\\x02\\x02\\x02U\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02W\\x03\\x02\\x02\\x02\\x02Y\\x03\\x02\\x02\\x02\\x02[\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02]\\x03\\x02\\x02\\x02\\x02_\\x03\\x02\\x02\\x02\\x02a\\x03\\x02\\x02\\x02\\x02c\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x02e\\x03\\x02\\x02\\x02\\x02g\\x03\\x02\\x02\\x02\\x02i\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x02k\\x03\\x02\\x02\\x02\\x02m\\x03\\x02\\x02\\x02\\x02o\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"q\\x03\\x02\\x02\\x02\\x02s\\x03\\x02\\x02\\x02\\x02u\\x03\\x02\\x02\\x02\\x02w\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02y\\x03\\x02\\x02\\x02\\x02{\\x03\\x02\\x02\\x02\\x02}\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x7F\\x03\\x02\\x02\\x02\\x02\\x81\\x03\\x02\\x02\\x02\\x02\\x83\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x85\\x03\\x02\\x02\\x02\\x02\\x87\\x03\\x02\\x02\\x02\\x02\\x89\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x8B\\x03\\x02\\x02\\x02\\x02\\x8D\\x03\\x02\\x02\\x02\\x02\\x8F\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x91\\x03\\x02\\x02\\x02\\x02\\x93\\x03\\x02\\x02\\x02\\x02\\x95\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x97\\x03\\x02\\x02\\x02\\x02\\x99\\x03\\x02\\x02\\x02\\x02\\x9B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\x9D\\x03\\x02\\x02\\x02\\x02\\x9F\\x03\\x02\\x02\\x02\\x02\\xA1\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xA3\\x03\\x02\\x02\\x02\\x02\\xA5\\x03\\x02\\x02\\x02\\x02\\xA7\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xA9\\x03\\x02\\x02\\x02\\x02\\xAB\\x03\\x02\\x02\\x02\\x02\\xAD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xAF\\x03\\x02\\x02\\x02\\x02\\xB1\\x03\\x02\\x02\\x02\\x02\\xB3\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xB5\\x03\\x02\\x02\\x02\\x02\\xB7\\x03\\x02\\x02\\x02\\x02\\xB9\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xBB\\x03\\x02\\x02\\x02\\x02\\xBD\\x03\\x02\\x02\\x02\\x02\\xBF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xC1\\x03\\x02\\x02\\x02\\x02\\xC3\\x03\\x02\\x02\\x02\\x02\\xC5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xC7\\x03\\x02\\x02\\x02\\x02\\xC9\\x03\\x02\\x02\\x02\\x02\\xCB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xCD\\x03\\x02\\x02\\x02\\x02\\xCF\\x03\\x02\\x02\\x02\\x02\\xD1\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xD5\\x03\\x02\\x02\\x02\\x02\\xD9\\x03\\x02\\x02\\x02\\x02\\xDB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xE1\\x03\\x02\\x02\\x02\\x02\\xE3\\x03\\x02\\x02\\x02\\x02\\xE5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xE7\\x03\\x02\\x02\\x02\";\n\tprivate static readonly _serializedATNSegment1: string =\n\t\t\"\\x02\\xE9\\x03\\x02\\x02\\x02\\x02\\xEB\\x03\\x02\\x02\\x02\\x02\\xED\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xEF\\x03\\x02\\x02\\x02\\x02\\xF1\\x03\\x02\\x02\\x02\\x02\\xF3\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xF5\\x03\\x02\\x02\\x02\\x02\\xF7\\x03\\x02\\x02\\x02\\x02\\xF9\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\xFB\\x03\\x02\\x02\\x02\\x02\\xFD\\x03\\x02\\x02\\x02\\x02\\xFF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\x02\\u0101\\x03\\x02\\x02\\x02\\x02\\u0103\\x03\\x02\\x02\\x02\\x02\\u0105\\x03\\x02\" +\n\t\t\"\\x02\\x02\\x02\\u0107\\x03\\x02\\x02\\x02\\x02\\u0109\\x03\\x02\\x02\\x02\\x02\\u010B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x02\\u0111\\x03\\x02\\x02\\x02\\x02\\u0117\\x03\\x02\\x02\\x02\\x02\" +\n\t\t\"\\u0119\\x03\\x02\\x02\\x02\\x02\\u011B\\x03\\x02\\x02\\x02\\x02\\u011D\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x03\\u011F\\x03\\x02\\x02\\x02\\x05\\u0126\\x03\\x02\\x02\\x02\\x07\\u0128\\x03\" +\n\t\t\"\\x02\\x02\\x02\\t\\u012A\\x03\\x02\\x02\\x02\\v\\u012D\\x03\\x02\\x02\\x02\\r\\u012F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x0F\\u0131\\x03\\x02\\x02\\x02\\x11\\u0134\\x03\\x02\\x02\\x02\\x13\\u0136\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x15\\u0138\\x03\\x02\\x02\\x02\\x17\\u013B\\x03\\x02\\x02\\x02\\x19\" +\n\t\t\"\\u013D\\x03\\x02\\x02\\x02\\x1B\\u0140\\x03\\x02\\x02\\x02\\x1D\\u0147\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x1F\\u014C\\x03\\x02\\x02\\x02!\\u014E\\x03\\x02\\x02\\x02#\\u0150\\x03\\x02\\x02\" +\n\t\t\"\\x02%\\u0152\\x03\\x02\\x02\\x02\\'\\u015B\\x03\\x02\\x02\\x02)\\u0164\\x03\\x02\\x02\" +\n\t\t\"\\x02+\\u016E\\x03\\x02\\x02\\x02-\\u0176\\x03\\x02\\x02\\x02/\\u0179\\x03\\x02\\x02\" +\n\t\t\"\\x021\\u017B\\x03\\x02\\x02\\x023\\u017D\\x03\\x02\\x02\\x025\\u0183\\x03\\x02\\x02\" +\n\t\t\"\\x027\\u0189\\x03\\x02\\x02\\x029\\u018D\\x03\\x02\\x02\\x02;\\u0194\\x03\\x02\\x02\" +\n\t\t\"\\x02=\\u019D\\x03\\x02\\x02\\x02?\\u01A6\\x03\\x02\\x02\\x02A\\u01AE\\x03\\x02\\x02\" +\n\t\t\"\\x02C\\u01B4\\x03\\x02\\x02\\x02E\\u01B9\\x03\\x02\\x02\\x02G\\u01BB\\x03\\x02\\x02\" +\n\t\t\"\\x02I\\u01BD\\x03\\x02\\x02\\x02K\\u01C5\\x03\\x02\\x02\\x02M\\u01C7\\x03\\x02\\x02\" +\n\t\t\"\\x02O\\u01CF\\x03\\x02\\x02\\x02Q\\u01D2\\x03\\x02\\x02\\x02S\\u01D9\\x03\\x02\\x02\" +\n\t\t\"\\x02U\\u01E1\\x03\\x02\\x02\\x02W\\u01EA\\x03\\x02\\x02\\x02Y\\u01ED\\x03\\x02\\x02\" +\n\t\t\"\\x02[\\u01F2\\x03\\x02\\x02\\x02]\\u01F6\\x03\\x02\\x02\\x02_\\u01FC\\x03\\x02\\x02\" +\n\t\t\"\\x02a\\u0202\\x03\\x02\\x02\\x02c\\u020C\\x03\\x02\\x02\\x02e\\u0215\\x03\\x02\\x02\" +\n\t\t\"\\x02g\\u0218\\x03\\x02\\x02\\x02i\\u021F\\x03\\x02\\x02\\x02k\\u0225\\x03\\x02\\x02\" +\n\t\t\"\\x02m\\u022A\\x03\\x02\\x02\\x02o\\u0231\\x03\\x02\\x02\\x02q\\u0235\\x03\\x02\\x02\" +\n\t\t\"\\x02s\\u023A\\x03\\x02\\x02\\x02u\\u0241\\x03\\x02\\x02\\x02w\\u0246\\x03\\x02\\x02\" +\n\t\t\"\\x02y\\u0249\\x03\\x02\\x02\\x02{\\u024C\\x03\\x02\\x02\\x02}\\u0250\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x7F\\u0252\\x03\\x02\\x02\\x02\\x81\\u0254\\x03\\x02\\x02\\x02\\x83\\u0256\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x85\\u025C\\x03\\x02\\x02\\x02\\x87\\u0263\\x03\\x02\\x02\\x02\\x89\\u0265\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x8B\\u0268\\x03\\x02\\x02\\x02\\x8D\\u026A\\x03\\x02\\x02\\x02\\x8F\" +\n\t\t\"\\u026C\\x03\\x02\\x02\\x02\\x91\\u026F\\x03\\x02\\x02\\x02\\x93\\u0272\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x95\\u0274\\x03\\x02\\x02\\x02\\x97\\u0276\\x03\\x02\\x02\\x02\\x99\\u0279\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x9B\\u027C\\x03\\x02\\x02\\x02\\x9D\\u027F\\x03\\x02\\x02\\x02\\x9F\\u0281\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xA1\\u0284\\x03\\x02\\x02\\x02\\xA3\\u0287\\x03\\x02\\x02\\x02\\xA5\" +\n\t\t\"\\u028A\\x03\\x02\\x02\\x02\\xA7\\u028E\\x03\\x02\\x02\\x02\\xA9\\u0292\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xAB\\u0295\\x03\\x02\\x02\\x02\\xAD\\u0298\\x03\\x02\\x02\\x02\\xAF\\u029B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xB1\\u029E\\x03\\x02\\x02\\x02\\xB3\\u02A1\\x03\\x02\\x02\\x02\\xB5\\u02A5\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xB7\\u02A8\\x03\\x02\\x02\\x02\\xB9\\u02AB\\x03\\x02\\x02\\x02\\xBB\" +\n\t\t\"\\u02B2\\x03\\x02\\x02\\x02\\xBD\\u02B7\\x03\\x02\\x02\\x02\\xBF\\u02BF\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xC1\\u02C2\\x03\\x02\\x02\\x02\\xC3\\u02CB\\x03\\x02\\x02\\x02\\xC5\\u038A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xC7\\u0463\\x03\\x02\\x02\\x02\\xC9\\u0541\\x03\\x02\\x02\\x02\\xCB\\u0559\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xCD\\u0573\\x03\\x02\\x02\\x02\\xCF\\u057E\\x03\\x02\\x02\\x02\\xD1\" +\n\t\t\"\\u0586\\x03\\x02\\x02\\x02\\xD3\\u058C\\x03\\x02\\x02\\x02\\xD5\\u0596\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xD7\\u059A\\x03\\x02\\x02\\x02\\xD9\\u05DC\\x03\\x02\\x02\\x02\\xDB\\u05DE\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xDD\\u05EE\\x03\\x02\\x02\\x02\\xDF\\u05F1\\x03\\x02\\x02\\x02\\xE1\\u064B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xE3\\u064D\\x03\\x02\\x02\\x02\\xE5\\u0657\\x03\\x02\\x02\\x02\\xE7\" +\n\t\t\"\\u065D\\x03\\x02\\x02\\x02\\xE9\\u0666\\x03\\x02\\x02\\x02\\xEB\\u0670\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xED\\u0679\\x03\\x02\\x02\\x02\\xEF\\u067F\\x03\\x02\\x02\\x02\\xF1\\u0688\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xF3\\u0690\\x03\\x02\\x02\\x02\\xF5\\u0699\\x03\\x02\\x02\\x02\\xF7\\u06A1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF9\\u06A9\\x03\\x02\\x02\\x02\\xFB\\u06B0\\x03\\x02\\x02\\x02\\xFD\" +\n\t\t\"\\u06B8\\x03\\x02\\x02\\x02\\xFF\\u06BD\\x03\\x02\\x02\\x02\\u0101\\u06C2\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0103\\u06C7\\x03\\x02\\x02\\x02\\u0105\\u06CE\\x03\\x02\\x02\\x02\\u0107\\u06DA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0109\\u06E3\\x03\\x02\\x02\\x02\\u010B\\u06EB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u010D\\u06F2\\x03\\x02\\x02\\x02\\u010F\\u06F4\\x03\\x02\\x02\\x02\\u0111\\u0718\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0113\\u071D\\x03\\x02\\x02\\x02\\u0115\\u0722\\x03\\x02\\x02\\x02\\u0117\" +\n\t\t\"\\u0725\\x03\\x02\\x02\\x02\\u0119\\u0738\\x03\\x02\\x02\\x02\\u011B\\u073E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u011D\\u074C\\x03\\x02\\x02\\x02\\u011F\\u0120\\x07r\\x02\\x02\\u0120\\u0121\" +\n\t\t\"\\x07t\\x02\\x02\\u0121\\u0122\\x07c\\x02\\x02\\u0122\\u0123\\x07i\\x02\\x02\\u0123\" +\n\t\t\"\\u0124\\x07o\\x02\\x02\\u0124\\u0125\\x07c\\x02\\x02\\u0125\\x04\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0126\\u0127\\x07=\\x02\\x02\\u0127\\x06\\x03\\x02\\x02\\x02\\u0128\\u0129\\x07,\\x02\" +\n\t\t\"\\x02\\u0129\\b\\x03\\x02\\x02\\x02\\u012A\\u012B\\x07~\\x02\\x02\\u012B\\u012C\\x07\" +\n\t\t\"~\\x02\\x02\\u012C\\n\\x03\\x02\\x02\\x02\\u012D\\u012E\\x07`\\x02\\x02\\u012E\\f\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u012F\\u0130\\x07\\x80\\x02\\x02\\u0130\\x0E\\x03\\x02\\x02\\x02\\u0131\" +\n\t\t\"\\u0132\\x07@\\x02\\x02\\u0132\\u0133\\x07?\\x02\\x02\\u0133\\x10\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0134\\u0135\\x07@\\x02\\x02\\u0135\\x12\\x03\\x02\\x02\\x02\\u0136\\u0137\\x07>\\x02\" +\n\t\t\"\\x02\\u0137\\x14\\x03\\x02\\x02\\x02\\u0138\\u0139\\x07>\\x02\\x02\\u0139\\u013A\\x07\" +\n\t\t\"?\\x02\\x02\\u013A\\x16\\x03\\x02\\x02\\x02\\u013B\\u013C\\x07?\\x02\\x02\\u013C\\x18\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u013D\\u013E\\x07c\\x02\\x02\\u013E\\u013F\\x07u\\x02\\x02\\u013F\" +\n\t\t\"\\x1A\\x03\\x02\\x02\\x02\\u0140\\u0141\\x07k\\x02\\x02\\u0141\\u0142\\x07o\\x02\\x02\" +\n\t\t\"\\u0142\\u0143\\x07r\\x02\\x02\\u0143\\u0144\\x07q\\x02\\x02\\u0144\\u0145\\x07t\\x02\" +\n\t\t\"\\x02\\u0145\\u0146\\x07v\\x02\\x02\\u0146\\x1C\\x03\\x02\\x02\\x02\\u0147\\u0148\\x07\" +\n\t\t\"h\\x02\\x02\\u0148\\u0149\\x07t\\x02\\x02\\u0149\\u014A\\x07q\\x02\\x02\\u014A\\u014B\" +\n\t\t\"\\x07o\\x02\\x02\\u014B\\x1E\\x03\\x02\\x02\\x02\\u014C\\u014D\\x07}\\x02\\x02\\u014D\" +\n\t\t\" \\x03\\x02\\x02\\x02\\u014E\\u014F\\x07.\\x02\\x02\\u014F\\\"\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u0151\\x07\\x7F\\x02\\x02\\u0151$\\x03\\x02\\x02\\x02\\u0152\\u0153\\x07c\\x02\\x02\" +\n\t\t\"\\u0153\\u0154\\x07d\\x02\\x02\\u0154\\u0155\\x07u\\x02\\x02\\u0155\\u0156\\x07v\\x02\" +\n\t\t\"\\x02\\u0156\\u0157\\x07t\\x02\\x02\\u0157\\u0158\\x07c\\x02\\x02\\u0158\\u0159\\x07\" +\n\t\t\"e\\x02\\x02\\u0159\\u015A\\x07v\\x02\\x02\\u015A&\\x03\\x02\\x02\\x02\\u015B\\u015C\" +\n\t\t\"\\x07e\\x02\\x02\\u015C\\u015D\\x07q\\x02\\x02\\u015D\\u015E\\x07p\\x02\\x02\\u015E\" +\n\t\t\"\\u015F\\x07v\\x02\\x02\\u015F\\u0160\\x07t\\x02\\x02\\u0160\\u0161\\x07c\\x02\\x02\" +\n\t\t\"\\u0161\\u0162\\x07e\\x02\\x02\\u0162\\u0163\\x07v\\x02\\x02\\u0163(\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0164\\u0165\\x07k\\x02\\x02\\u0165\\u0166\\x07p\\x02\\x02\\u0166\\u0167\\x07\" +\n\t\t\"v\\x02\\x02\\u0167\\u0168\\x07g\\x02\\x02\\u0168\\u0169\\x07t\\x02\\x02\\u0169\\u016A\" +\n\t\t\"\\x07h\\x02\\x02\\u016A\\u016B\\x07c\\x02\\x02\\u016B\\u016C\\x07e\\x02\\x02\\u016C\" +\n\t\t\"\\u016D\\x07g\\x02\\x02\\u016D*\\x03\\x02\\x02\\x02\\u016E\\u016F\\x07n\\x02\\x02\\u016F\" +\n\t\t\"\\u0170\\x07k\\x02\\x02\\u0170\\u0171\\x07d\\x02\\x02\\u0171\\u0172\\x07t\\x02\\x02\" +\n\t\t\"\\u0172\\u0173\\x07c\\x02\\x02\\u0173\\u0174\\x07t\\x02\\x02\\u0174\\u0175\\x07{\\x02\" +\n\t\t\"\\x02\\u0175,\\x03\\x02\\x02\\x02\\u0176\\u0177\\x07k\\x02\\x02\\u0177\\u0178\\x07u\" +\n\t\t\"\\x02\\x02\\u0178.\\x03\\x02\\x02\\x02\\u0179\\u017A\\x07*\\x02\\x02\\u017A0\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u017B\\u017C\\x07+\\x02\\x02\\u017C2\\x03\\x02\\x02\\x02\\u017D\\u017E\\x07\" +\n\t\t\"g\\x02\\x02\\u017E\\u017F\\x07t\\x02\\x02\\u017F\\u0180\\x07t\\x02\\x02\\u0180\\u0181\" +\n\t\t\"\\x07q\\x02\\x02\\u0181\\u0182\\x07t\\x02\\x02\\u01824\\x03\\x02\\x02\\x02\\u0183\\u0184\" +\n\t\t\"\\x07w\\x02\\x02\\u0184\\u0185\\x07u\\x02\\x02\\u0185\\u0186\\x07k\\x02\\x02\\u0186\" +\n\t\t\"\\u0187\\x07p\\x02\\x02\\u0187\\u0188\\x07i\\x02\\x02\\u01886\\x03\\x02\\x02\\x02\\u0189\" +\n\t\t\"\\u018A\\x07h\\x02\\x02\\u018A\\u018B\\x07q\\x02\\x02\\u018B\\u018C\\x07t\\x02\\x02\" +\n\t\t\"\\u018C8\\x03\\x02\\x02\\x02\\u018D\\u018E\\x07u\\x02\\x02\\u018E\\u018F\\x07v\\x02\" +\n\t\t\"\\x02\\u018F\\u0190\\x07t\\x02\\x02\\u0190\\u0191\\x07w\\x02\\x02\\u0191\\u0192\\x07\" +\n\t\t\"e\\x02\\x02\\u0192\\u0193\\x07v\\x02\\x02\\u0193:\\x03\\x02\\x02\\x02\\u0194\\u0195\" +\n\t\t\"\\x07o\\x02\\x02\\u0195\\u0196\\x07q\\x02\\x02\\u0196\\u0197\\x07f\\x02\\x02\\u0197\" +\n\t\t\"\\u0198\\x07k\\x02\\x02\\u0198\\u0199\\x07h\\x02\\x02\\u0199\\u019A\\x07k\\x02\\x02\" +\n\t\t\"\\u019A\\u019B\\x07g\\x02\\x02\\u019B\\u019C\\x07t\\x02\\x02\\u019C<\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u019D\\u019E\\x07h\\x02\\x02\\u019E\\u019F\\x07w\\x02\\x02\\u019F\\u01A0\\x07\" +\n\t\t\"p\\x02\\x02\\u01A0\\u01A1\\x07e\\x02\\x02\\u01A1\\u01A2\\x07v\\x02\\x02\\u01A2\\u01A3\" +\n\t\t\"\\x07k\\x02\\x02\\u01A3\\u01A4\\x07q\\x02\\x02\\u01A4\\u01A5\\x07p\\x02\\x02\\u01A5\" +\n\t\t\">\\x03\\x02\\x02\\x02\\u01A6\\u01A7\\x07t\\x02\\x02\\u01A7\\u01A8\\x07g\\x02\\x02\\u01A8\" +\n\t\t\"\\u01A9\\x07v\\x02\\x02\\u01A9\\u01AA\\x07w\\x02\\x02\\u01AA\\u01AB\\x07t\\x02\\x02\" +\n\t\t\"\\u01AB\\u01AC\\x07p\\x02\\x02\\u01AC\\u01AD\\x07u\\x02\\x02\\u01AD@\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01AE\\u01AF\\x07g\\x02\\x02\\u01AF\\u01B0\\x07x\\x02\\x02\\u01B0\\u01B1\\x07\" +\n\t\t\"g\\x02\\x02\\u01B1\\u01B2\\x07p\\x02\\x02\\u01B2\\u01B3\\x07v\\x02\\x02\\u01B3B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01B4\\u01B5\\x07g\\x02\\x02\\u01B5\\u01B6\\x07p\\x02\\x02\\u01B6\\u01B7\" +\n\t\t\"\\x07w\\x02\\x02\\u01B7\\u01B8\\x07o\\x02\\x02\\u01B8D\\x03\\x02\\x02\\x02\\u01B9\\u01BA\" +\n\t\t\"\\x07]\\x02\\x02\\u01BAF\\x03\\x02\\x02\\x02\\u01BB\\u01BC\\x07_\\x02\\x02\\u01BCH\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01BD\\u01BE\\x07c\\x02\\x02\\u01BE\\u01BF\\x07f\\x02\\x02\\u01BF\\u01C0\" +\n\t\t\"\\x07f\\x02\\x02\\u01C0\\u01C1\\x07t\\x02\\x02\\u01C1\\u01C2\\x07g\\x02\\x02\\u01C2\" +\n\t\t\"\\u01C3\\x07u\\x02\\x02\\u01C3\\u01C4\\x07u\\x02\\x02\\u01C4J\\x03\\x02\\x02\\x02\\u01C5\" +\n\t\t\"\\u01C6\\x070\\x02\\x02\\u01C6L\\x03\\x02\\x02\\x02\\u01C7\\u01C8\\x07o\\x02\\x02\\u01C8\" +\n\t\t\"\\u01C9\\x07c\\x02\\x02\\u01C9\\u01CA\\x07r\\x02\\x02\\u01CA\\u01CB\\x07r\\x02\\x02\" +\n\t\t\"\\u01CB\\u01CC\\x07k\\x02\\x02\\u01CC\\u01CD\\x07p\\x02\\x02\\u01CD\\u01CE\\x07i\\x02\" +\n\t\t\"\\x02\\u01CEN\\x03\\x02\\x02\\x02\\u01CF\\u01D0\\x07?\\x02\\x02\\u01D0\\u01D1\\x07@\" +\n\t\t\"\\x02\\x02\\u01D1P\\x03\\x02\\x02\\x02\\u01D2\\u01D3\\x07o\\x02\\x02\\u01D3\\u01D4\\x07\" +\n\t\t\"g\\x02\\x02\\u01D4\\u01D5\\x07o\\x02\\x02\\u01D5\\u01D6\\x07q\\x02\\x02\\u01D6\\u01D7\" +\n\t\t\"\\x07t\\x02\\x02\\u01D7\\u01D8\\x07{\\x02\\x02\\u01D8R\\x03\\x02\\x02\\x02\\u01D9\\u01DA\" +\n\t\t\"\\x07u\\x02\\x02\\u01DA\\u01DB\\x07v\\x02\\x02\\u01DB\\u01DC\\x07q\\x02\\x02\\u01DC\" +\n\t\t\"\\u01DD\\x07t\\x02\\x02\\u01DD\\u01DE\\x07c\\x02\\x02\\u01DE\\u01DF\\x07i\\x02\\x02\" +\n\t\t\"\\u01DF\\u01E0\\x07g\\x02\\x02\\u01E0T\\x03\\x02\\x02\\x02\\u01E1\\u01E2\\x07e\\x02\" +\n\t\t\"\\x02\\u01E2\\u01E3\\x07c\\x02\\x02\\u01E3\\u01E4\\x07n\\x02\\x02\\u01E4\\u01E5\\x07\" +\n\t\t\"n\\x02\\x02\\u01E5\\u01E6\\x07f\\x02\\x02\\u01E6\\u01E7\\x07c\\x02\\x02\\u01E7\\u01E8\" +\n\t\t\"\\x07v\\x02\\x02\\u01E8\\u01E9\\x07c\\x02\\x02\\u01E9V\\x03\\x02\\x02\\x02\\u01EA\\u01EB\" +\n\t\t\"\\x07k\\x02\\x02\\u01EB\\u01EC\\x07h\\x02\\x02\\u01ECX\\x03\\x02\\x02\\x02\\u01ED\\u01EE\" +\n\t\t\"\\x07g\\x02\\x02\\u01EE\\u01EF\\x07n\\x02\\x02\\u01EF\\u01F0\\x07u\\x02\\x02\\u01F0\" +\n\t\t\"\\u01F1\\x07g\\x02\\x02\\u01F1Z\\x03\\x02\\x02\\x02\\u01F2\\u01F3\\x07v\\x02\\x02\\u01F3\" +\n\t\t\"\\u01F4\\x07t\\x02\\x02\\u01F4\\u01F5\\x07{\\x02\\x02\\u01F5\\\\\\x03\\x02\\x02\\x02\\u01F6\" +\n\t\t\"\\u01F7\\x07e\\x02\\x02\\u01F7\\u01F8\\x07c\\x02\\x02\\u01F8\\u01F9\\x07v\\x02\\x02\" +\n\t\t\"\\u01F9\\u01FA\\x07e\\x02\\x02\\u01FA\\u01FB\\x07j\\x02\\x02\\u01FB^\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01FC\\u01FD\\x07y\\x02\\x02\\u01FD\\u01FE\\x07j\\x02\\x02\\u01FE\\u01FF\\x07\" +\n\t\t\"k\\x02\\x02\\u01FF\\u0200\\x07n\\x02\\x02\\u0200\\u0201\\x07g\\x02\\x02\\u0201`\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0202\\u0203\\x07w\\x02\\x02\\u0203\\u0204\\x07p\\x02\\x02\\u0204\\u0205\" +\n\t\t\"\\x07e\\x02\\x02\\u0205\\u0206\\x07j\\x02\\x02\\u0206\\u0207\\x07g\\x02\\x02\\u0207\" +\n\t\t\"\\u0208\\x07e\\x02\\x02\\u0208\\u0209\\x07m\\x02\\x02\\u0209\\u020A\\x07g\\x02\\x02\" +\n\t\t\"\\u020A\\u020B\\x07f\\x02\\x02\\u020Bb\\x03\\x02\\x02\\x02\\u020C\\u020D\\x07c\\x02\" +\n\t\t\"\\x02\\u020D\\u020E\\x07u\\x02\\x02\\u020E\\u020F\\x07u\\x02\\x02\\u020F\\u0210\\x07\" +\n\t\t\"g\\x02\\x02\\u0210\\u0211\\x07o\\x02\\x02\\u0211\\u0212\\x07d\\x02\\x02\\u0212\\u0213\" +\n\t\t\"\\x07n\\x02\\x02\\u0213\\u0214\\x07{\\x02\\x02\\u0214d\\x03\\x02\\x02\\x02\\u0215\\u0216\" +\n\t\t\"\\x07f\\x02\\x02\\u0216\\u0217\\x07q\\x02\\x02\\u0217f\\x03\\x02\\x02\\x02\\u0218\\u0219\" +\n\t\t\"\\x07t\\x02\\x02\\u0219\\u021A\\x07g\\x02\\x02\\u021A\\u021B\\x07v\\x02\\x02\\u021B\" +\n\t\t\"\\u021C\\x07w\\x02\\x02\\u021C\\u021D\\x07t\\x02\\x02\\u021D\\u021E\\x07p\\x02\\x02\" +\n\t\t\"\\u021Eh\\x03\\x02\\x02\\x02\\u021F\\u0220\\x07v\\x02\\x02\\u0220\\u0221\\x07j\\x02\" +\n\t\t\"\\x02\\u0221\\u0222\\x07t\\x02\\x02\\u0222\\u0223\\x07q\\x02\\x02\\u0223\\u0224\\x07\" +\n\t\t\"y\\x02\\x02\\u0224j\\x03\\x02\\x02\\x02\\u0225\\u0226\\x07g\\x02\\x02\\u0226\\u0227\" +\n\t\t\"\\x07o\\x02\\x02\\u0227\\u0228\\x07k\\x02\\x02\\u0228\\u0229\\x07v\\x02\\x02\\u0229\" +\n\t\t\"l\\x03\\x02\\x02\\x02\\u022A\\u022B\\x07t\\x02\\x02\\u022B\\u022C\\x07g\\x02\\x02\\u022C\" +\n\t\t\"\\u022D\\x07x\\x02\\x02\\u022D\\u022E\\x07g\\x02\\x02\\u022E\\u022F\\x07t\\x02\\x02\" +\n\t\t\"\\u022F\\u0230\\x07v\\x02\\x02\\u0230n\\x03\\x02\\x02\\x02\\u0231\\u0232\\x07x\\x02\" +\n\t\t\"\\x02\\u0232\\u0233\\x07c\\x02\\x02\\u0233\\u0234\\x07t\\x02\\x02\\u0234p\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0235\\u0236\\x07d\\x02\\x02\\u0236\\u0237\\x07q\\x02\\x02\\u0237\\u0238\" +\n\t\t\"\\x07q\\x02\\x02\\u0238\\u0239\\x07n\\x02\\x02\\u0239r\\x03\\x02\\x02\\x02\\u023A\\u023B\" +\n\t\t\"\\x07u\\x02\\x02\\u023B\\u023C\\x07v\\x02\\x02\\u023C\\u023D\\x07t\\x02\\x02\\u023D\" +\n\t\t\"\\u023E\\x07k\\x02\\x02\\u023E\\u023F\\x07p\\x02\\x02\\u023F\\u0240\\x07i\\x02\\x02\" +\n\t\t\"\\u0240t\\x03\\x02\\x02\\x02\\u0241\\u0242\\x07d\\x02\\x02\\u0242\\u0243\\x07{\\x02\" +\n\t\t\"\\x02\\u0243\\u0244\\x07v\\x02\\x02\\u0244\\u0245\\x07g\\x02\\x02\\u0245v\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0246\\u0247\\x07-\\x02\\x02\\u0247\\u0248\\x07-\\x02\\x02\\u0248x\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0249\\u024A\\x07/\\x02\\x02\\u024A\\u024B\\x07/\\x02\\x02\\u024Bz\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u024C\\u024D\\x07p\\x02\\x02\\u024D\\u024E\\x07g\\x02\\x02\\u024E\" +\n\t\t\"\\u024F\\x07y\\x02\\x02\\u024F|\\x03\\x02\\x02\\x02\\u0250\\u0251\\x07<\\x02\\x02\\u0251\" +\n\t\t\"~\\x03\\x02\\x02\\x02\\u0252\\u0253\\x07-\\x02\\x02\\u0253\\x80\\x03\\x02\\x02\\x02\\u0254\" +\n\t\t\"\\u0255\\x07/\\x02\\x02\\u0255\\x82\\x03\\x02\\x02\\x02\\u0256\\u0257\\x07c\\x02\\x02\" +\n\t\t\"\\u0257\\u0258\\x07h\\x02\\x02\\u0258\\u0259\\x07v\\x02\\x02\\u0259\\u025A\\x07g\\x02\" +\n\t\t\"\\x02\\u025A\\u025B\\x07t\\x02\\x02\\u025B\\x84\\x03\\x02\\x02\\x02\\u025C\\u025D\\x07\" +\n\t\t\"f\\x02\\x02\\u025D\\u025E\\x07g\\x02\\x02\\u025E\\u025F\\x07n\\x02\\x02\\u025F\\u0260\" +\n\t\t\"\\x07g\\x02\\x02\\u0260\\u0261\\x07v\\x02\\x02\\u0261\\u0262\\x07g\\x02\\x02\\u0262\" +\n\t\t\"\\x86\\x03\\x02\\x02\\x02\\u0263\\u0264\\x07#\\x02\\x02\\u0264\\x88\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0265\\u0266\\x07,\\x02\\x02\\u0266\\u0267\\x07,\\x02\\x02\\u0267\\x8A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0268\\u0269\\x071\\x02\\x02\\u0269\\x8C\\x03\\x02\\x02\\x02\\u026A\\u026B\\x07\" +\n\t\t\"\\'\\x02\\x02\\u026B\\x8E\\x03\\x02\\x02\\x02\\u026C\\u026D\\x07>\\x02\\x02\\u026D\\u026E\" +\n\t\t\"\\x07>\\x02\\x02\\u026E\\x90\\x03\\x02\\x02\\x02\\u026F\\u0270\\x07@\\x02\\x02\\u0270\" +\n\t\t\"\\u0271\\x07@\\x02\\x02\\u0271\\x92\\x03\\x02\\x02\\x02\\u0272\\u0273\\x07(\\x02\\x02\" +\n\t\t\"\\u0273\\x94\\x03\\x02\\x02\\x02\\u0274\\u0275\\x07~\\x02\\x02\\u0275\\x96\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0276\\u0277\\x07?\\x02\\x02\\u0277\\u0278\\x07?\\x02\\x02\\u0278\\x98\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0279\\u027A\\x07#\\x02\\x02\\u027A\\u027B\\x07?\\x02\\x02\\u027B\\x9A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u027C\\u027D\\x07(\\x02\\x02\\u027D\\u027E\\x07(\\x02\\x02\\u027E\" +\n\t\t\"\\x9C\\x03\\x02\\x02\\x02\\u027F\\u0280\\x07A\\x02\\x02\\u0280\\x9E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0281\\u0282\\x07~\\x02\\x02\\u0282\\u0283\\x07?\\x02\\x02\\u0283\\xA0\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0284\\u0285\\x07`\\x02\\x02\\u0285\\u0286\\x07?\\x02\\x02\\u0286\\xA2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0287\\u0288\\x07(\\x02\\x02\\u0288\\u0289\\x07?\\x02\\x02\\u0289\\xA4\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u028A\\u028B\\x07>\\x02\\x02\\u028B\\u028C\\x07>\\x02\\x02\\u028C\\u028D\" +\n\t\t\"\\x07?\\x02\\x02\\u028D\\xA6\\x03\\x02\\x02\\x02\\u028E\\u028F\\x07@\\x02\\x02\\u028F\" +\n\t\t\"\\u0290\\x07@\\x02\\x02\\u0290\\u0291\\x07?\\x02\\x02\\u0291\\xA8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0292\\u0293\\x07-\\x02\\x02\\u0293\\u0294\\x07?\\x02\\x02\\u0294\\xAA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0295\\u0296\\x07/\\x02\\x02\\u0296\\u0297\\x07?\\x02\\x02\\u0297\\xAC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0298\\u0299\\x07,\\x02\\x02\\u0299\\u029A\\x07?\\x02\\x02\\u029A\\xAE\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u029B\\u029C\\x071\\x02\\x02\\u029C\\u029D\\x07?\\x02\\x02\\u029D\\xB0\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u029E\\u029F\\x07\\'\\x02\\x02\\u029F\\u02A0\\x07?\\x02\\x02\\u02A0\" +\n\t\t\"\\xB2\\x03\\x02\\x02\\x02\\u02A1\\u02A2\\x07n\\x02\\x02\\u02A2\\u02A3\\x07g\\x02\\x02\" +\n\t\t\"\\u02A3\\u02A4\\x07v\\x02\\x02\\u02A4\\xB4\\x03\\x02\\x02\\x02\\u02A5\\u02A6\\x07<\\x02\" +\n\t\t\"\\x02\\u02A6\\u02A7\\x07?\\x02\\x02\\u02A7\\xB6\\x03\\x02\\x02\\x02\\u02A8\\u02A9\\x07\" +\n\t\t\"?\\x02\\x02\\u02A9\\u02AA\\x07<\\x02\\x02\\u02AA\\xB8\\x03\\x02\\x02\\x02\\u02AB\\u02AC\" +\n\t\t\"\\x07u\\x02\\x02\\u02AC\\u02AD\\x07y\\x02\\x02\\u02AD\\u02AE\\x07k\\x02\\x02\\u02AE\" +\n\t\t\"\\u02AF\\x07v\\x02\\x02\\u02AF\\u02B0\\x07e\\x02\\x02\\u02B0\\u02B1\\x07j\\x02\\x02\" +\n\t\t\"\\u02B1\\xBA\\x03\\x02\\x02\\x02\\u02B2\\u02B3\\x07e\\x02\\x02\\u02B3\\u02B4\\x07c\\x02\" +\n\t\t\"\\x02\\u02B4\\u02B5\\x07u\\x02\\x02\\u02B5\\u02B6\\x07g\\x02\\x02\\u02B6\\xBC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02B7\\u02B8\\x07f\\x02\\x02\\u02B8\\u02B9\\x07g\\x02\\x02\\u02B9\\u02BA\" +\n\t\t\"\\x07h\\x02\\x02\\u02BA\\u02BB\\x07c\\x02\\x02\\u02BB\\u02BC\\x07w\\x02\\x02\\u02BC\" +\n\t\t\"\\u02BD\\x07n\\x02\\x02\\u02BD\\u02BE\\x07v\\x02\\x02\\u02BE\\xBE\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02BF\\u02C0\\x07/\\x02\\x02\\u02C0\\u02C1\\x07@\\x02\\x02\\u02C1\\xC0\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02C2\\u02C3\\x07e\\x02\\x02\\u02C3\\u02C4\\x07c\\x02\\x02\\u02C4\\u02C5\\x07\" +\n\t\t\"n\\x02\\x02\\u02C5\\u02C6\\x07n\\x02\\x02\\u02C6\\u02C7\\x07d\\x02\\x02\\u02C7\\u02C8\" +\n\t\t\"\\x07c\\x02\\x02\\u02C8\\u02C9\\x07e\\x02\\x02\\u02C9\\u02CA\\x07m\\x02\\x02\\u02CA\" +\n\t\t\"\\xC2\\x03\\x02\\x02\\x02\\u02CB\\u02CC\\x07q\\x02\\x02\\u02CC\\u02CD\\x07x\\x02\\x02\" +\n\t\t\"\\u02CD\\u02CE\\x07g\\x02\\x02\\u02CE\\u02CF\\x07t\\x02\\x02\\u02CF\\u02D0\\x07t\\x02\" +\n\t\t\"\\x02\\u02D0\\u02D1\\x07k\\x02\\x02\\u02D1\\u02D2\\x07f\\x02\\x02\\u02D2\\u02D3\\x07\" +\n\t\t\"g\\x02\\x02\\u02D3\\xC4\\x03\\x02\\x02\\x02\\u02D4\\u02D5\\x07k\\x02\\x02\\u02D5\\u02D6\" +\n\t\t\"\\x07p\\x02\\x02\\u02D6\\u038B\\x07v\\x02\\x02\\u02D7\\u02D8\\x07k\\x02\\x02\\u02D8\" +\n\t\t\"\\u02D9\\x07p\\x02\\x02\\u02D9\\u02DA\\x07v\\x02\\x02\\u02DA\\u038B\\x07:\\x02\\x02\" +\n\t\t\"\\u02DB\\u02DC\\x07k\\x02\\x02\\u02DC\\u02DD\\x07p\\x02\\x02\\u02DD\\u02DE\\x07v\\x02\" +\n\t\t\"\\x02\\u02DE\\u02DF\\x073\\x02\\x02\\u02DF\\u038B\\x078\\x02\\x02\\u02E0\\u02E1\\x07\" +\n\t\t\"k\\x02\\x02\\u02E1\\u02E2\\x07p\\x02\\x02\\u02E2\\u02E3\\x07v\\x02\\x02\\u02E3\\u02E4\" +\n\t\t\"\\x074\\x02\\x02\\u02E4\\u038B\\x076\\x02\\x02\\u02E5\\u02E6\\x07k\\x02\\x02\\u02E6\" +\n\t\t\"\\u02E7\\x07p\\x02\\x02\\u02E7\\u02E8\\x07v\\x02\\x02\\u02E8\\u02E9\\x075\\x02\\x02\" +\n\t\t\"\\u02E9\\u038B\\x074\\x02\\x02\\u02EA\\u02EB\\x07k\\x02\\x02\\u02EB\\u02EC\\x07p\\x02\" +\n\t\t\"\\x02\\u02EC\\u02ED\\x07v\\x02\\x02\\u02ED\\u02EE\\x076\\x02\\x02\\u02EE\\u038B\\x07\" +\n\t\t\"2\\x02\\x02\\u02EF\\u02F0\\x07k\\x02\\x02\\u02F0\\u02F1\\x07p\\x02\\x02\\u02F1\\u02F2\" +\n\t\t\"\\x07v\\x02\\x02\\u02F2\\u02F3\\x076\\x02\\x02\\u02F3\\u038B\\x07:\\x02\\x02\\u02F4\" +\n\t\t\"\\u02F5\\x07k\\x02\\x02\\u02F5\\u02F6\\x07p\\x02\\x02\\u02F6\\u02F7\\x07v\\x02\\x02\" +\n\t\t\"\\u02F7\\u02F8\\x077\\x02\\x02\\u02F8\\u038B\\x078\\x02\\x02\\u02F9\\u02FA\\x07k\\x02\" +\n\t\t\"\\x02\\u02FA\\u02FB\\x07p\\x02\\x02\\u02FB\\u02FC\\x07v\\x02\\x02\\u02FC\\u02FD\\x07\" +\n\t\t\"8\\x02\\x02\\u02FD\\u038B\\x076\\x02\\x02\\u02FE\\u02FF\\x07k\\x02\\x02\\u02FF\\u0300\" +\n\t\t\"\\x07p\\x02\\x02\\u0300\\u0301\\x07v\\x02\\x02\\u0301\\u0302\\x079\\x02\\x02\\u0302\" +\n\t\t\"\\u038B\\x074\\x02\\x02\\u0303\\u0304\\x07k\\x02\\x02\\u0304\\u0305\\x07p\\x02\\x02\" +\n\t\t\"\\u0305\\u0306\\x07v\\x02\\x02\\u0306\\u0307\\x07:\\x02\\x02\\u0307\\u038B\\x072\\x02\" +\n\t\t\"\\x02\\u0308\\u0309\\x07k\\x02\\x02\\u0309\\u030A\\x07p\\x02\\x02\\u030A\\u030B\\x07\" +\n\t\t\"v\\x02\\x02\\u030B\\u030C\\x07:\\x02\\x02\\u030C\\u038B\\x07:\\x02\\x02\\u030D\\u030E\" +\n\t\t\"\\x07k\\x02\\x02\\u030E\\u030F\\x07p\\x02\\x02\\u030F\\u0310\\x07v\\x02\\x02\\u0310\" +\n\t\t\"\\u0311\\x07;\\x02\\x02\\u0311\\u038B\\x078\\x02\\x02\\u0312\\u0313\\x07k\\x02\\x02\" +\n\t\t\"\\u0313\\u0314\\x07p\\x02\\x02\\u0314\\u0315\\x07v\\x02\\x02\\u0315\\u0316\\x073\\x02\" +\n\t\t\"\\x02\\u0316\\u0317\\x072\\x02\\x02\\u0317\\u038B\\x076\\x02\\x02\\u0318\\u0319\\x07\" +\n\t\t\"k\\x02\\x02\\u0319\\u031A\\x07p\\x02\\x02\\u031A\\u031B\\x07v\\x02\\x02\\u031B\\u031C\" +\n\t\t\"\\x073\\x02\\x02\\u031C\\u031D\\x073\\x02\\x02\\u031D\\u038B\\x074\\x02\\x02\\u031E\" +\n\t\t\"\\u031F\\x07k\\x02\\x02\\u031F\\u0320\\x07p\\x02\\x02\\u0320\\u0321\\x07v\\x02\\x02\" +\n\t\t\"\\u0321\\u0322\\x073\\x02\\x02\\u0322\\u0323\\x074\\x02\\x02\\u0323\\u038B\\x072\\x02\" +\n\t\t\"\\x02\\u0324\\u0325\\x07k\\x02\\x02\\u0325\\u0326\\x07p\\x02\\x02\\u0326\\u0327\\x07\" +\n\t\t\"v\\x02\\x02\\u0327\\u0328\\x073\\x02\\x02\\u0328\\u0329\\x074\\x02\\x02\\u0329\\u038B\" +\n\t\t\"\\x07:\\x02\\x02\\u032A\\u032B\\x07k\\x02\\x02\\u032B\\u032C\\x07p\\x02\\x02\\u032C\" +\n\t\t\"\\u032D\\x07v\\x02\\x02\\u032D\\u032E\\x073\\x02\\x02\\u032E\\u032F\\x075\\x02\\x02\" +\n\t\t\"\\u032F\\u038B\\x078\\x02\\x02\\u0330\\u0331\\x07k\\x02\\x02\\u0331\\u0332\\x07p\\x02\" +\n\t\t\"\\x02\\u0332\\u0333\\x07v\\x02\\x02\\u0333\\u0334\\x073\\x02\\x02\\u0334\\u0335\\x07\" +\n\t\t\"6\\x02\\x02\\u0335\\u038B\\x076\\x02\\x02\\u0336\\u0337\\x07k\\x02\\x02\\u0337\\u0338\" +\n\t\t\"\\x07p\\x02\\x02\\u0338\\u0339\\x07v\\x02\\x02\\u0339\\u033A\\x073\\x02\\x02\\u033A\" +\n\t\t\"\\u033B\\x077\\x02\\x02\\u033B\\u038B\\x074\\x02\\x02\\u033C\\u033D\\x07k\\x02\\x02\" +\n\t\t\"\\u033D\\u033E\\x07p\\x02\\x02\\u033E\\u033F\\x07v\\x02\\x02\\u033F\\u0340\\x073\\x02\" +\n\t\t\"\\x02\\u0340\\u0341\\x078\\x02\\x02\\u0341\\u038B\\x072\\x02\\x02\\u0342\\u0343\\x07\" +\n\t\t\"k\\x02\\x02\\u0343\\u0344\\x07p\\x02\\x02\\u0344\\u0345\\x07v\\x02\\x02\\u0345\\u0346\" +\n\t\t\"\\x073\\x02\\x02\\u0346\\u0347\\x078\\x02\\x02\\u0347\\u038B\\x07:\\x02\\x02\\u0348\" +\n\t\t\"\\u0349\\x07k\\x02\\x02\\u0349\\u034A\\x07p\\x02\\x02\\u034A\\u034B\\x07v\\x02\\x02\" +\n\t\t\"\\u034B\\u034C\\x073\\x02\\x02\\u034C\\u034D\\x079\\x02\\x02\\u034D\\u038B\\x078\\x02\" +\n\t\t\"\\x02\\u034E\\u034F\\x07k\\x02\\x02\\u034F\\u0350\\x07p\\x02\\x02\\u0350\\u0351\\x07\" +\n\t\t\"v\\x02\\x02\\u0351\\u0352\\x073\\x02\\x02\\u0352\\u0353\\x07:\\x02\\x02\\u0353\\u038B\" +\n\t\t\"\\x076\\x02\\x02\\u0354\\u0355\\x07k\\x02\\x02\\u0355\\u0356\\x07p\\x02\\x02\\u0356\" +\n\t\t\"\\u0357\\x07v\\x02\\x02\\u0357\\u0358\\x073\\x02\\x02\\u0358\\u0359\\x07;\\x02\\x02\" +\n\t\t\"\\u0359\\u038B\\x074\\x02\\x02\\u035A\\u035B\\x07k\\x02\\x02\\u035B\\u035C\\x07p\\x02\" +\n\t\t\"\\x02\\u035C\\u035D\\x07v\\x02\\x02\\u035D\\u035E\\x074\\x02\\x02\\u035E\\u035F\\x07\" +\n\t\t\"2\\x02\\x02\\u035F\\u038B\\x072\\x02\\x02\\u0360\\u0361\\x07k\\x02\\x02\\u0361\\u0362\" +\n\t\t\"\\x07p\\x02\\x02\\u0362\\u0363\\x07v\\x02\\x02\\u0363\\u0364\\x074\\x02\\x02\\u0364\" +\n\t\t\"\\u0365\\x072\\x02\\x02\\u0365\\u038B\\x07:\\x02\\x02\\u0366\\u0367\\x07k\\x02\\x02\" +\n\t\t\"\\u0367\\u0368\\x07p\\x02\\x02\\u0368\\u0369\\x07v\\x02\\x02\\u0369\\u036A\\x074\\x02\" +\n\t\t\"\\x02\\u036A\\u036B\\x073\\x02\\x02\\u036B\\u038B\\x078\\x02\\x02\\u036C\\u036D\\x07\" +\n\t\t\"k\\x02\\x02\\u036D\\u036E\\x07p\\x02\\x02\\u036E\\u036F\\x07v\\x02\\x02\\u036F\\u0370\" +\n\t\t\"\\x074\\x02\\x02\\u0370\\u0371\\x074\\x02\\x02\\u0371\\u038B\\x076\\x02\\x02\\u0372\" +\n\t\t\"\\u0373\\x07k\\x02\\x02\\u0373\\u0374\\x07p\\x02\\x02\\u0374\\u0375\\x07v\\x02\\x02\" +\n\t\t\"\\u0375\\u0376\\x074\\x02\\x02\\u0376\\u0377\\x075\\x02\\x02\\u0377\\u038B\\x074\\x02\" +\n\t\t\"\\x02\\u0378\\u0379\\x07k\\x02\\x02\\u0379\\u037A\\x07p\\x02\\x02\\u037A\\u037B\\x07\" +\n\t\t\"v\\x02\\x02\\u037B\\u037C\\x074\\x02\\x02\\u037C\\u037D\\x076\\x02\\x02\\u037D\\u038B\" +\n\t\t\"\\x072\\x02\\x02\\u037E\\u037F\\x07k\\x02\\x02\\u037F\\u0380\\x07p\\x02\\x02\\u0380\" +\n\t\t\"\\u0381\\x07v\\x02\\x02\\u0381\\u0382\\x074\\x02\\x02\\u0382\\u0383\\x076\\x02\\x02\" +\n\t\t\"\\u0383\\u038B\\x07:\\x02\\x02\\u0384\\u0385\\x07k\\x02\\x02\\u0385\\u0386\\x07p\\x02\" +\n\t\t\"\\x02\\u0386\\u0387\\x07v\\x02\\x02\\u0387\\u0388\\x074\\x02\\x02\\u0388\\u0389\\x07\" +\n\t\t\"7\\x02\\x02\\u0389\\u038B\\x078\\x02\\x02\\u038A\\u02D4\\x03\\x02\\x02\\x02\\u038A\\u02D7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u038A\\u02DB\\x03\\x02\\x02\\x02\\u038A\\u02E0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u038A\\u02E5\\x03\\x02\\x02\\x02\\u038A\\u02EA\\x03\\x02\\x02\\x02\\u038A\\u02EF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u038A\\u02F4\\x03\\x02\\x02\\x02\\u038A\\u02F9\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u02FE\\x03\\x02\\x02\\x02\\u038A\\u0303\\x03\\x02\\x02\\x02\\u038A\\u0308\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u030D\\x03\\x02\\x02\\x02\\u038A\\u0312\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0318\\x03\\x02\\x02\\x02\\u038A\\u031E\\x03\\x02\\x02\\x02\\u038A\\u0324\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u032A\\x03\\x02\\x02\\x02\\u038A\\u0330\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0336\\x03\\x02\\x02\\x02\\u038A\\u033C\\x03\\x02\\x02\\x02\\u038A\\u0342\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0348\\x03\\x02\\x02\\x02\\u038A\\u034E\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0354\\x03\\x02\\x02\\x02\\u038A\\u035A\\x03\\x02\\x02\\x02\\u038A\\u0360\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0366\\x03\\x02\\x02\\x02\\u038A\\u036C\\x03\\x02\\x02\\x02\\u038A\" +\n\t\t\"\\u0372\\x03\\x02\\x02\\x02\\u038A\\u0378\\x03\\x02\\x02\\x02\\u038A\\u037E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u038A\\u0384\\x03\\x02\\x02\\x02\\u038B\\xC6\\x03\\x02\\x02\\x02\\u038C\\u038D\" +\n\t\t\"\\x07w\\x02\\x02\\u038D\\u038E\\x07k\\x02\\x02\\u038E\\u038F\\x07p\\x02\\x02\\u038F\" +\n\t\t\"\\u0464\\x07v\\x02\\x02\\u0390\\u0391\\x07w\\x02\\x02\\u0391\\u0392\\x07k\\x02\\x02\" +\n\t\t\"\\u0392\\u0393\\x07p\\x02\\x02\\u0393\\u0394\\x07v\\x02\\x02\\u0394\\u0464\\x07:\\x02\" +\n\t\t\"\\x02\\u0395\\u0396\\x07w\\x02\\x02\\u0396\\u0397\\x07k\\x02\\x02\\u0397\\u0398\\x07\" +\n\t\t\"p\\x02\\x02\\u0398\\u0399\\x07v\\x02\\x02\\u0399\\u039A\\x073\\x02\\x02\\u039A\\u0464\" +\n\t\t\"\\x078\\x02\\x02\\u039B\\u039C\";\n\tprivate static readonly _serializedATNSegment2: string =\n\t\t\"\\x07w\\x02\\x02\\u039C\\u039D\\x07k\\x02\\x02\\u039D\\u039E\\x07p\\x02\\x02\\u039E\" +\n\t\t\"\\u039F\\x07v\\x02\\x02\\u039F\\u03A0\\x074\\x02\\x02\\u03A0\\u0464\\x076\\x02\\x02\" +\n\t\t\"\\u03A1\\u03A2\\x07w\\x02\\x02\\u03A2\\u03A3\\x07k\\x02\\x02\\u03A3\\u03A4\\x07p\\x02\" +\n\t\t\"\\x02\\u03A4\\u03A5\\x07v\\x02\\x02\\u03A5\\u03A6\\x075\\x02\\x02\\u03A6\\u0464\\x07\" +\n\t\t\"4\\x02\\x02\\u03A7\\u03A8\\x07w\\x02\\x02\\u03A8\\u03A9\\x07k\\x02\\x02\\u03A9\\u03AA\" +\n\t\t\"\\x07p\\x02\\x02\\u03AA\\u03AB\\x07v\\x02\\x02\\u03AB\\u03AC\\x076\\x02\\x02\\u03AC\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u03AD\\u03AE\\x07w\\x02\\x02\\u03AE\\u03AF\\x07k\\x02\\x02\" +\n\t\t\"\\u03AF\\u03B0\\x07p\\x02\\x02\\u03B0\\u03B1\\x07v\\x02\\x02\\u03B1\\u03B2\\x076\\x02\" +\n\t\t\"\\x02\\u03B2\\u0464\\x07:\\x02\\x02\\u03B3\\u03B4\\x07w\\x02\\x02\\u03B4\\u03B5\\x07\" +\n\t\t\"k\\x02\\x02\\u03B5\\u03B6\\x07p\\x02\\x02\\u03B6\\u03B7\\x07v\\x02\\x02\\u03B7\\u03B8\" +\n\t\t\"\\x077\\x02\\x02\\u03B8\\u0464\\x078\\x02\\x02\\u03B9\\u03BA\\x07w\\x02\\x02\\u03BA\" +\n\t\t\"\\u03BB\\x07k\\x02\\x02\\u03BB\\u03BC\\x07p\\x02\\x02\\u03BC\\u03BD\\x07v\\x02\\x02\" +\n\t\t\"\\u03BD\\u03BE\\x078\\x02\\x02\\u03BE\\u0464\\x076\\x02\\x02\\u03BF\\u03C0\\x07w\\x02\" +\n\t\t\"\\x02\\u03C0\\u03C1\\x07k\\x02\\x02\\u03C1\\u03C2\\x07p\\x02\\x02\\u03C2\\u03C3\\x07\" +\n\t\t\"v\\x02\\x02\\u03C3\\u03C4\\x079\\x02\\x02\\u03C4\\u0464\\x074\\x02\\x02\\u03C5\\u03C6\" +\n\t\t\"\\x07w\\x02\\x02\\u03C6\\u03C7\\x07k\\x02\\x02\\u03C7\\u03C8\\x07p\\x02\\x02\\u03C8\" +\n\t\t\"\\u03C9\\x07v\\x02\\x02\\u03C9\\u03CA\\x07:\\x02\\x02\\u03CA\\u0464\\x072\\x02\\x02\" +\n\t\t\"\\u03CB\\u03CC\\x07w\\x02\\x02\\u03CC\\u03CD\\x07k\\x02\\x02\\u03CD\\u03CE\\x07p\\x02\" +\n\t\t\"\\x02\\u03CE\\u03CF\\x07v\\x02\\x02\\u03CF\\u03D0\\x07:\\x02\\x02\\u03D0\\u0464\\x07\" +\n\t\t\":\\x02\\x02\\u03D1\\u03D2\\x07w\\x02\\x02\\u03D2\\u03D3\\x07k\\x02\\x02\\u03D3\\u03D4\" +\n\t\t\"\\x07p\\x02\\x02\\u03D4\\u03D5\\x07v\\x02\\x02\\u03D5\\u03D6\\x07;\\x02\\x02\\u03D6\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u03D7\\u03D8\\x07w\\x02\\x02\\u03D8\\u03D9\\x07k\\x02\\x02\" +\n\t\t\"\\u03D9\\u03DA\\x07p\\x02\\x02\\u03DA\\u03DB\\x07v\\x02\\x02\\u03DB\\u03DC\\x073\\x02\" +\n\t\t\"\\x02\\u03DC\\u03DD\\x072\\x02\\x02\\u03DD\\u0464\\x076\\x02\\x02\\u03DE\\u03DF\\x07\" +\n\t\t\"w\\x02\\x02\\u03DF\\u03E0\\x07k\\x02\\x02\\u03E0\\u03E1\\x07p\\x02\\x02\\u03E1\\u03E2\" +\n\t\t\"\\x07v\\x02\\x02\\u03E2\\u03E3\\x073\\x02\\x02\\u03E3\\u03E4\\x073\\x02\\x02\\u03E4\" +\n\t\t\"\\u0464\\x074\\x02\\x02\\u03E5\\u03E6\\x07w\\x02\\x02\\u03E6\\u03E7\\x07k\\x02\\x02\" +\n\t\t\"\\u03E7\\u03E8\\x07p\\x02\\x02\\u03E8\\u03E9\\x07v\\x02\\x02\\u03E9\\u03EA\\x073\\x02\" +\n\t\t\"\\x02\\u03EA\\u03EB\\x074\\x02\\x02\\u03EB\\u0464\\x072\\x02\\x02\\u03EC\\u03ED\\x07\" +\n\t\t\"w\\x02\\x02\\u03ED\\u03EE\\x07k\\x02\\x02\\u03EE\\u03EF\\x07p\\x02\\x02\\u03EF\\u03F0\" +\n\t\t\"\\x07v\\x02\\x02\\u03F0\\u03F1\\x073\\x02\\x02\\u03F1\\u03F2\\x074\\x02\\x02\\u03F2\" +\n\t\t\"\\u0464\\x07:\\x02\\x02\\u03F3\\u03F4\\x07w\\x02\\x02\\u03F4\\u03F5\\x07k\\x02\\x02\" +\n\t\t\"\\u03F5\\u03F6\\x07p\\x02\\x02\\u03F6\\u03F7\\x07v\\x02\\x02\\u03F7\\u03F8\\x073\\x02\" +\n\t\t\"\\x02\\u03F8\\u03F9\\x075\\x02\\x02\\u03F9\\u0464\\x078\\x02\\x02\\u03FA\\u03FB\\x07\" +\n\t\t\"w\\x02\\x02\\u03FB\\u03FC\\x07k\\x02\\x02\\u03FC\\u03FD\\x07p\\x02\\x02\\u03FD\\u03FE\" +\n\t\t\"\\x07v\\x02\\x02\\u03FE\\u03FF\\x073\\x02\\x02\\u03FF\\u0400\\x076\\x02\\x02\\u0400\" +\n\t\t\"\\u0464\\x076\\x02\\x02\\u0401\\u0402\\x07w\\x02\\x02\\u0402\\u0403\\x07k\\x02\\x02\" +\n\t\t\"\\u0403\\u0404\\x07p\\x02\\x02\\u0404\\u0405\\x07v\\x02\\x02\\u0405\\u0406\\x073\\x02\" +\n\t\t\"\\x02\\u0406\\u0407\\x077\\x02\\x02\\u0407\\u0464\\x074\\x02\\x02\\u0408\\u0409\\x07\" +\n\t\t\"w\\x02\\x02\\u0409\\u040A\\x07k\\x02\\x02\\u040A\\u040B\\x07p\\x02\\x02\\u040B\\u040C\" +\n\t\t\"\\x07v\\x02\\x02\\u040C\\u040D\\x073\\x02\\x02\\u040D\\u040E\\x078\\x02\\x02\\u040E\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u040F\\u0410\\x07w\\x02\\x02\\u0410\\u0411\\x07k\\x02\\x02\" +\n\t\t\"\\u0411\\u0412\\x07p\\x02\\x02\\u0412\\u0413\\x07v\\x02\\x02\\u0413\\u0414\\x073\\x02\" +\n\t\t\"\\x02\\u0414\\u0415\\x078\\x02\\x02\\u0415\\u0464\\x07:\\x02\\x02\\u0416\\u0417\\x07\" +\n\t\t\"w\\x02\\x02\\u0417\\u0418\\x07k\\x02\\x02\\u0418\\u0419\\x07p\\x02\\x02\\u0419\\u041A\" +\n\t\t\"\\x07v\\x02\\x02\\u041A\\u041B\\x073\\x02\\x02\\u041B\\u041C\\x079\\x02\\x02\\u041C\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u041D\\u041E\\x07w\\x02\\x02\\u041E\\u041F\\x07k\\x02\\x02\" +\n\t\t\"\\u041F\\u0420\\x07p\\x02\\x02\\u0420\\u0421\\x07v\\x02\\x02\\u0421\\u0422\\x073\\x02\" +\n\t\t\"\\x02\\u0422\\u0423\\x07:\\x02\\x02\\u0423\\u0464\\x076\\x02\\x02\\u0424\\u0425\\x07\" +\n\t\t\"w\\x02\\x02\\u0425\\u0426\\x07k\\x02\\x02\\u0426\\u0427\\x07p\\x02\\x02\\u0427\\u0428\" +\n\t\t\"\\x07v\\x02\\x02\\u0428\\u0429\\x073\\x02\\x02\\u0429\\u042A\\x07;\\x02\\x02\\u042A\" +\n\t\t\"\\u0464\\x074\\x02\\x02\\u042B\\u042C\\x07w\\x02\\x02\\u042C\\u042D\\x07k\\x02\\x02\" +\n\t\t\"\\u042D\\u042E\\x07p\\x02\\x02\\u042E\\u042F\\x07v\\x02\\x02\\u042F\\u0430\\x074\\x02\" +\n\t\t\"\\x02\\u0430\\u0431\\x072\\x02\\x02\\u0431\\u0464\\x072\\x02\\x02\\u0432\\u0433\\x07\" +\n\t\t\"w\\x02\\x02\\u0433\\u0434\\x07k\\x02\\x02\\u0434\\u0435\\x07p\\x02\\x02\\u0435\\u0436\" +\n\t\t\"\\x07v\\x02\\x02\\u0436\\u0437\\x074\\x02\\x02\\u0437\\u0438\\x072\\x02\\x02\\u0438\" +\n\t\t\"\\u0464\\x07:\\x02\\x02\\u0439\\u043A\\x07w\\x02\\x02\\u043A\\u043B\\x07k\\x02\\x02\" +\n\t\t\"\\u043B\\u043C\\x07p\\x02\\x02\\u043C\\u043D\\x07v\\x02\\x02\\u043D\\u043E\\x074\\x02\" +\n\t\t\"\\x02\\u043E\\u043F\\x073\\x02\\x02\\u043F\\u0464\\x078\\x02\\x02\\u0440\\u0441\\x07\" +\n\t\t\"w\\x02\\x02\\u0441\\u0442\\x07k\\x02\\x02\\u0442\\u0443\\x07p\\x02\\x02\\u0443\\u0444\" +\n\t\t\"\\x07v\\x02\\x02\\u0444\\u0445\\x074\\x02\\x02\\u0445\\u0446\\x074\\x02\\x02\\u0446\" +\n\t\t\"\\u0464\\x076\\x02\\x02\\u0447\\u0448\\x07w\\x02\\x02\\u0448\\u0449\\x07k\\x02\\x02\" +\n\t\t\"\\u0449\\u044A\\x07p\\x02\\x02\\u044A\\u044B\\x07v\\x02\\x02\\u044B\\u044C\\x074\\x02\" +\n\t\t\"\\x02\\u044C\\u044D\\x075\\x02\\x02\\u044D\\u0464\\x074\\x02\\x02\\u044E\\u044F\\x07\" +\n\t\t\"w\\x02\\x02\\u044F\\u0450\\x07k\\x02\\x02\\u0450\\u0451\\x07p\\x02\\x02\\u0451\\u0452\" +\n\t\t\"\\x07v\\x02\\x02\\u0452\\u0453\\x074\\x02\\x02\\u0453\\u0454\\x076\\x02\\x02\\u0454\" +\n\t\t\"\\u0464\\x072\\x02\\x02\\u0455\\u0456\\x07w\\x02\\x02\\u0456\\u0457\\x07k\\x02\\x02\" +\n\t\t\"\\u0457\\u0458\\x07p\\x02\\x02\\u0458\\u0459\\x07v\\x02\\x02\\u0459\\u045A\\x074\\x02\" +\n\t\t\"\\x02\\u045A\\u045B\\x076\\x02\\x02\\u045B\\u0464\\x07:\\x02\\x02\\u045C\\u045D\\x07\" +\n\t\t\"w\\x02\\x02\\u045D\\u045E\\x07k\\x02\\x02\\u045E\\u045F\\x07p\\x02\\x02\\u045F\\u0460\" +\n\t\t\"\\x07v\\x02\\x02\\u0460\\u0461\\x074\\x02\\x02\\u0461\\u0462\\x077\\x02\\x02\\u0462\" +\n\t\t\"\\u0464\\x078\\x02\\x02\\u0463\\u038C\\x03\\x02\\x02\\x02\\u0463\\u0390\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0463\\u0395\\x03\\x02\\x02\\x02\\u0463\\u039B\\x03\\x02\\x02\\x02\\u0463\\u03A1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0463\\u03A7\\x03\\x02\\x02\\x02\\u0463\\u03AD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0463\\u03B3\\x03\\x02\\x02\\x02\\u0463\\u03B9\\x03\\x02\\x02\\x02\\u0463\\u03BF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0463\\u03C5\\x03\\x02\\x02\\x02\\u0463\\u03CB\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u03D1\\x03\\x02\\x02\\x02\\u0463\\u03D7\\x03\\x02\\x02\\x02\\u0463\\u03DE\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u03E5\\x03\\x02\\x02\\x02\\u0463\\u03EC\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u03F3\\x03\\x02\\x02\\x02\\u0463\\u03FA\\x03\\x02\\x02\\x02\\u0463\\u0401\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u0408\\x03\\x02\\x02\\x02\\u0463\\u040F\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u0416\\x03\\x02\\x02\\x02\\u0463\\u041D\\x03\\x02\\x02\\x02\\u0463\\u0424\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u042B\\x03\\x02\\x02\\x02\\u0463\\u0432\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u0439\\x03\\x02\\x02\\x02\\u0463\\u0440\\x03\\x02\\x02\\x02\\u0463\\u0447\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0463\\u044E\\x03\\x02\\x02\\x02\\u0463\\u0455\\x03\\x02\\x02\\x02\\u0463\" +\n\t\t\"\\u045C\\x03\\x02\\x02\\x02\\u0464\\xC8\\x03\\x02\\x02\\x02\\u0465\\u0466\\x07d\\x02\" +\n\t\t\"\\x02\\u0466\\u0467\\x07{\\x02\\x02\\u0467\\u0468\\x07v\\x02\\x02\\u0468\\u0469\\x07\" +\n\t\t\"g\\x02\\x02\\u0469\\u0542\\x07u\\x02\\x02\\u046A\\u046B\\x07d\\x02\\x02\\u046B\\u046C\" +\n\t\t\"\\x07{\\x02\\x02\\u046C\\u046D\\x07v\\x02\\x02\\u046D\\u046E\\x07g\\x02\\x02\\u046E\" +\n\t\t\"\\u046F\\x07u\\x02\\x02\\u046F\\u0542\\x073\\x02\\x02\\u0470\\u0471\\x07d\\x02\\x02\" +\n\t\t\"\\u0471\\u0472\\x07{\\x02\\x02\\u0472\\u0473\\x07v\\x02\\x02\\u0473\\u0474\\x07g\\x02\" +\n\t\t\"\\x02\\u0474\\u0475\\x07u\\x02\\x02\\u0475\\u0542\\x074\\x02\\x02\\u0476\\u0477\\x07\" +\n\t\t\"d\\x02\\x02\\u0477\\u0478\\x07{\\x02\\x02\\u0478\\u0479\\x07v\\x02\\x02\\u0479\\u047A\" +\n\t\t\"\\x07g\\x02\\x02\\u047A\\u047B\\x07u\\x02\\x02\\u047B\\u0542\\x075\\x02\\x02\\u047C\" +\n\t\t\"\\u047D\\x07d\\x02\\x02\\u047D\\u047E\\x07{\\x02\\x02\\u047E\\u047F\\x07v\\x02\\x02\" +\n\t\t\"\\u047F\\u0480\\x07g\\x02\\x02\\u0480\\u0481\\x07u\\x02\\x02\\u0481\\u0542\\x076\\x02\" +\n\t\t\"\\x02\\u0482\\u0483\\x07d\\x02\\x02\\u0483\\u0484\\x07{\\x02\\x02\\u0484\\u0485\\x07\" +\n\t\t\"v\\x02\\x02\\u0485\\u0486\\x07g\\x02\\x02\\u0486\\u0487\\x07u\\x02\\x02\\u0487\\u0542\" +\n\t\t\"\\x077\\x02\\x02\\u0488\\u0489\\x07d\\x02\\x02\\u0489\\u048A\\x07{\\x02\\x02\\u048A\" +\n\t\t\"\\u048B\\x07v\\x02\\x02\\u048B\\u048C\\x07g\\x02\\x02\\u048C\\u048D\\x07u\\x02\\x02\" +\n\t\t\"\\u048D\\u0542\\x078\\x02\\x02\\u048E\\u048F\\x07d\\x02\\x02\\u048F\\u0490\\x07{\\x02\" +\n\t\t\"\\x02\\u0490\\u0491\\x07v\\x02\\x02\\u0491\\u0492\\x07g\\x02\\x02\\u0492\\u0493\\x07\" +\n\t\t\"u\\x02\\x02\\u0493\\u0542\\x079\\x02\\x02\\u0494\\u0495\\x07d\\x02\\x02\\u0495\\u0496\" +\n\t\t\"\\x07{\\x02\\x02\\u0496\\u0497\\x07v\\x02\\x02\\u0497\\u0498\\x07g\\x02\\x02\\u0498\" +\n\t\t\"\\u0499\\x07u\\x02\\x02\\u0499\\u0542\\x07:\\x02\\x02\\u049A\\u049B\\x07d\\x02\\x02\" +\n\t\t\"\\u049B\\u049C\\x07{\\x02\\x02\\u049C\\u049D\\x07v\\x02\\x02\\u049D\\u049E\\x07g\\x02\" +\n\t\t\"\\x02\\u049E\\u049F\\x07u\\x02\\x02\\u049F\\u0542\\x07;\\x02\\x02\\u04A0\\u04A1\\x07\" +\n\t\t\"d\\x02\\x02\\u04A1\\u04A2\\x07{\\x02\\x02\\u04A2\\u04A3\\x07v\\x02\\x02\\u04A3\\u04A4\" +\n\t\t\"\\x07g\\x02\\x02\\u04A4\\u04A5\\x07u\\x02\\x02\\u04A5\\u04A6\\x073\\x02\\x02\\u04A6\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u04A7\\u04A8\\x07d\\x02\\x02\\u04A8\\u04A9\\x07{\\x02\\x02\" +\n\t\t\"\\u04A9\\u04AA\\x07v\\x02\\x02\\u04AA\\u04AB\\x07g\\x02\\x02\\u04AB\\u04AC\\x07u\\x02\" +\n\t\t\"\\x02\\u04AC\\u04AD\\x073\\x02\\x02\\u04AD\\u0542\\x073\\x02\\x02\\u04AE\\u04AF\\x07\" +\n\t\t\"d\\x02\\x02\\u04AF\\u04B0\\x07{\\x02\\x02\\u04B0\\u04B1\\x07v\\x02\\x02\\u04B1\\u04B2\" +\n\t\t\"\\x07g\\x02\\x02\\u04B2\\u04B3\\x07u\\x02\\x02\\u04B3\\u04B4\\x073\\x02\\x02\\u04B4\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u04B5\\u04B6\\x07d\\x02\\x02\\u04B6\\u04B7\\x07{\\x02\\x02\" +\n\t\t\"\\u04B7\\u04B8\\x07v\\x02\\x02\\u04B8\\u04B9\\x07g\\x02\\x02\\u04B9\\u04BA\\x07u\\x02\" +\n\t\t\"\\x02\\u04BA\\u04BB\\x073\\x02\\x02\\u04BB\\u0542\\x075\\x02\\x02\\u04BC\\u04BD\\x07\" +\n\t\t\"d\\x02\\x02\\u04BD\\u04BE\\x07{\\x02\\x02\\u04BE\\u04BF\\x07v\\x02\\x02\\u04BF\\u04C0\" +\n\t\t\"\\x07g\\x02\\x02\\u04C0\\u04C1\\x07u\\x02\\x02\\u04C1\\u04C2\\x073\\x02\\x02\\u04C2\" +\n\t\t\"\\u0542\\x076\\x02\\x02\\u04C3\\u04C4\\x07d\\x02\\x02\\u04C4\\u04C5\\x07{\\x02\\x02\" +\n\t\t\"\\u04C5\\u04C6\\x07v\\x02\\x02\\u04C6\\u04C7\\x07g\\x02\\x02\\u04C7\\u04C8\\x07u\\x02\" +\n\t\t\"\\x02\\u04C8\\u04C9\\x073\\x02\\x02\\u04C9\\u0542\\x077\\x02\\x02\\u04CA\\u04CB\\x07\" +\n\t\t\"d\\x02\\x02\\u04CB\\u04CC\\x07{\\x02\\x02\\u04CC\\u04CD\\x07v\\x02\\x02\\u04CD\\u04CE\" +\n\t\t\"\\x07g\\x02\\x02\\u04CE\\u04CF\\x07u\\x02\\x02\\u04CF\\u04D0\\x073\\x02\\x02\\u04D0\" +\n\t\t\"\\u0542\\x078\\x02\\x02\\u04D1\\u04D2\\x07d\\x02\\x02\\u04D2\\u04D3\\x07{\\x02\\x02\" +\n\t\t\"\\u04D3\\u04D4\\x07v\\x02\\x02\\u04D4\\u04D5\\x07g\\x02\\x02\\u04D5\\u04D6\\x07u\\x02\" +\n\t\t\"\\x02\\u04D6\\u04D7\\x073\\x02\\x02\\u04D7\\u0542\\x079\\x02\\x02\\u04D8\\u04D9\\x07\" +\n\t\t\"d\\x02\\x02\\u04D9\\u04DA\\x07{\\x02\\x02\\u04DA\\u04DB\\x07v\\x02\\x02\\u04DB\\u04DC\" +\n\t\t\"\\x07g\\x02\\x02\\u04DC\\u04DD\\x07u\\x02\\x02\\u04DD\\u04DE\\x073\\x02\\x02\\u04DE\" +\n\t\t\"\\u0542\\x07:\\x02\\x02\\u04DF\\u04E0\\x07d\\x02\\x02\\u04E0\\u04E1\\x07{\\x02\\x02\" +\n\t\t\"\\u04E1\\u04E2\\x07v\\x02\\x02\\u04E2\\u04E3\\x07g\\x02\\x02\\u04E3\\u04E4\\x07u\\x02\" +\n\t\t\"\\x02\\u04E4\\u04E5\\x073\\x02\\x02\\u04E5\\u0542\\x07;\\x02\\x02\\u04E6\\u04E7\\x07\" +\n\t\t\"d\\x02\\x02\\u04E7\\u04E8\\x07{\\x02\\x02\\u04E8\\u04E9\\x07v\\x02\\x02\\u04E9\\u04EA\" +\n\t\t\"\\x07g\\x02\\x02\\u04EA\\u04EB\\x07u\\x02\\x02\\u04EB\\u04EC\\x074\\x02\\x02\\u04EC\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u04ED\\u04EE\\x07d\\x02\\x02\\u04EE\\u04EF\\x07{\\x02\\x02\" +\n\t\t\"\\u04EF\\u04F0\\x07v\\x02\\x02\\u04F0\\u04F1\\x07g\\x02\\x02\\u04F1\\u04F2\\x07u\\x02\" +\n\t\t\"\\x02\\u04F2\\u04F3\\x074\\x02\\x02\\u04F3\\u0542\\x073\\x02\\x02\\u04F4\\u04F5\\x07\" +\n\t\t\"d\\x02\\x02\\u04F5\\u04F6\\x07{\\x02\\x02\\u04F6\\u04F7\\x07v\\x02\\x02\\u04F7\\u04F8\" +\n\t\t\"\\x07g\\x02\\x02\\u04F8\\u04F9\\x07u\\x02\\x02\\u04F9\\u04FA\\x074\\x02\\x02\\u04FA\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u04FB\\u04FC\\x07d\\x02\\x02\\u04FC\\u04FD\\x07{\\x02\\x02\" +\n\t\t\"\\u04FD\\u04FE\\x07v\\x02\\x02\\u04FE\\u04FF\\x07g\\x02\\x02\\u04FF\\u0500\\x07u\\x02\" +\n\t\t\"\\x02\\u0500\\u0501\\x074\\x02\\x02\\u0501\\u0542\\x075\\x02\\x02\\u0502\\u0503\\x07\" +\n\t\t\"d\\x02\\x02\\u0503\\u0504\\x07{\\x02\\x02\\u0504\\u0505\\x07v\\x02\\x02\\u0505\\u0506\" +\n\t\t\"\\x07g\\x02\\x02\\u0506\\u0507\\x07u\\x02\\x02\\u0507\\u0508\\x074\\x02\\x02\\u0508\" +\n\t\t\"\\u0542\\x076\\x02\\x02\\u0509\\u050A\\x07d\\x02\\x02\\u050A\\u050B\\x07{\\x02\\x02\" +\n\t\t\"\\u050B\\u050C\\x07v\\x02\\x02\\u050C\\u050D\\x07g\\x02\\x02\\u050D\\u050E\\x07u\\x02\" +\n\t\t\"\\x02\\u050E\\u050F\\x074\\x02\\x02\\u050F\\u0542\\x077\\x02\\x02\\u0510\\u0511\\x07\" +\n\t\t\"d\\x02\\x02\\u0511\\u0512\\x07{\\x02\\x02\\u0512\\u0513\\x07v\\x02\\x02\\u0513\\u0514\" +\n\t\t\"\\x07g\\x02\\x02\\u0514\\u0515\\x07u\\x02\\x02\\u0515\\u0516\\x074\\x02\\x02\\u0516\" +\n\t\t\"\\u0542\\x078\\x02\\x02\\u0517\\u0518\\x07d\\x02\\x02\\u0518\\u0519\\x07{\\x02\\x02\" +\n\t\t\"\\u0519\\u051A\\x07v\\x02\\x02\\u051A\\u051B\\x07g\\x02\\x02\\u051B\\u051C\\x07u\\x02\" +\n\t\t\"\\x02\\u051C\\u051D\\x074\\x02\\x02\\u051D\\u0542\\x079\\x02\\x02\\u051E\\u051F\\x07\" +\n\t\t\"d\\x02\\x02\\u051F\\u0520\\x07{\\x02\\x02\\u0520\\u0521\\x07v\\x02\\x02\\u0521\\u0522\" +\n\t\t\"\\x07g\\x02\\x02\\u0522\\u0523\\x07u\\x02\\x02\\u0523\\u0524\\x074\\x02\\x02\\u0524\" +\n\t\t\"\\u0542\\x07:\\x02\\x02\\u0525\\u0526\\x07d\\x02\\x02\\u0526\\u0527\\x07{\\x02\\x02\" +\n\t\t\"\\u0527\\u0528\\x07v\\x02\\x02\\u0528\\u0529\\x07g\\x02\\x02\\u0529\\u052A\\x07u\\x02\" +\n\t\t\"\\x02\\u052A\\u052B\\x074\\x02\\x02\\u052B\\u0542\\x07;\\x02\\x02\\u052C\\u052D\\x07\" +\n\t\t\"d\\x02\\x02\\u052D\\u052E\\x07{\\x02\\x02\\u052E\\u052F\\x07v\\x02\\x02\\u052F\\u0530\" +\n\t\t\"\\x07g\\x02\\x02\\u0530\\u0531\\x07u\\x02\\x02\\u0531\\u0532\\x075\\x02\\x02\\u0532\" +\n\t\t\"\\u0542\\x072\\x02\\x02\\u0533\\u0534\\x07d\\x02\\x02\\u0534\\u0535\\x07{\\x02\\x02\" +\n\t\t\"\\u0535\\u0536\\x07v\\x02\\x02\\u0536\\u0537\\x07g\\x02\\x02\\u0537\\u0538\\x07u\\x02\" +\n\t\t\"\\x02\\u0538\\u0539\\x075\\x02\\x02\\u0539\\u0542\\x073\\x02\\x02\\u053A\\u053B\\x07\" +\n\t\t\"d\\x02\\x02\\u053B\\u053C\\x07{\\x02\\x02\\u053C\\u053D\\x07v\\x02\\x02\\u053D\\u053E\" +\n\t\t\"\\x07g\\x02\\x02\\u053E\\u053F\\x07u\\x02\\x02\\u053F\\u0540\\x075\\x02\\x02\\u0540\" +\n\t\t\"\\u0542\\x074\\x02\\x02\\u0541\\u0465\\x03\\x02\\x02\\x02\\u0541\\u046A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0541\\u0470\\x03\\x02\\x02\\x02\\u0541\\u0476\\x03\\x02\\x02\\x02\\u0541\\u047C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0541\\u0482\\x03\\x02\\x02\\x02\\u0541\\u0488\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0541\\u048E\\x03\\x02\\x02\\x02\\u0541\\u0494\\x03\\x02\\x02\\x02\\u0541\\u049A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0541\\u04A0\\x03\\x02\\x02\\x02\\u0541\\u04A7\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04AE\\x03\\x02\\x02\\x02\\u0541\\u04B5\\x03\\x02\\x02\\x02\\u0541\\u04BC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u04C3\\x03\\x02\\x02\\x02\\u0541\\u04CA\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04D1\\x03\\x02\\x02\\x02\\u0541\\u04D8\\x03\\x02\\x02\\x02\\u0541\\u04DF\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u04E6\\x03\\x02\\x02\\x02\\u0541\\u04ED\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u04F4\\x03\\x02\\x02\\x02\\u0541\\u04FB\\x03\\x02\\x02\\x02\\u0541\\u0502\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u0509\\x03\\x02\\x02\\x02\\u0541\\u0510\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u0517\\x03\\x02\\x02\\x02\\u0541\\u051E\\x03\\x02\\x02\\x02\\u0541\\u0525\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0541\\u052C\\x03\\x02\\x02\\x02\\u0541\\u0533\\x03\\x02\\x02\\x02\\u0541\" +\n\t\t\"\\u053A\\x03\\x02\\x02\\x02\\u0542\\xCA\\x03\\x02\\x02\\x02\\u0543\\u0544\\x07h\\x02\" +\n\t\t\"\\x02\\u0544\\u0545\\x07k\\x02\\x02\\u0545\\u0546\\x07z\\x02\\x02\\u0546\\u0547\\x07\" +\n\t\t\"g\\x02\\x02\\u0547\\u055A\\x07f\\x02\\x02\\u0548\\u0549\\x07h\\x02\\x02\\u0549\\u054A\" +\n\t\t\"\\x07k\\x02\\x02\\u054A\\u054B\\x07z\\x02\\x02\\u054B\\u054C\\x07g\\x02\\x02\\u054C\" +\n\t\t\"\\u054D\\x07f\\x02\\x02\\u054D\\u054F\\x03\\x02\\x02\\x02\\u054E\\u0550\\t\\x02\\x02\" +\n\t\t\"\\x02\\u054F\\u054E\\x03\\x02\\x02\\x02\\u0550\\u0551\\x03\\x02\\x02\\x02\\u0551\\u054F\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0551\\u0552\\x03\\x02\\x02\\x02\\u0552\\u0553\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0553\\u0555\\x07z\\x02\\x02\\u0554\\u0556\\t\\x02\\x02\\x02\\u0555\\u0554\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0556\\u0557\\x03\\x02\\x02\\x02\\u0557\\u0555\\x03\\x02\\x02\\x02\\u0557\" +\n\t\t\"\\u0558\\x03\\x02\\x02\\x02\\u0558\\u055A\\x03\\x02\\x02\\x02\\u0559\\u0543\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0559\\u0548\\x03\\x02\\x02\\x02\\u055A\\xCC\\x03\\x02\\x02\\x02\\u055B\\u055C\" +\n\t\t\"\\x07w\\x02\\x02\\u055C\\u055D\\x07h\\x02\\x02\\u055D\\u055E\\x07k\\x02\\x02\\u055E\" +\n\t\t\"\\u055F\\x07z\\x02\\x02\\u055F\\u0560\\x07g\\x02\\x02\\u0560\\u0574\\x07f\\x02\\x02\" +\n\t\t\"\\u0561\\u0562\\x07w\\x02\\x02\\u0562\\u0563\\x07h\\x02\\x02\\u0563\\u0564\\x07k\\x02\" +\n\t\t\"\\x02\\u0564\\u0565\\x07z\\x02\\x02\\u0565\\u0566\\x07g\\x02\\x02\\u0566\\u0567\\x07\" +\n\t\t\"f\\x02\\x02\\u0567\\u0569\\x03\\x02\\x02\\x02\\u0568\\u056A\\t\\x02\\x02\\x02\\u0569\" +\n\t\t\"\\u0568\\x03\\x02\\x02\\x02\\u056A\\u056B\\x03\\x02\\x02\\x02\\u056B\\u0569\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u056B\\u056C\\x03\\x02\\x02\\x02\\u056C\\u056D\\x03\\x02\\x02\\x02\\u056D\" +\n\t\t\"\\u056F\\x07z\\x02\\x02\\u056E\\u0570\\t\\x02\\x02\\x02\\u056F\\u056E\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0570\\u0571\\x03\\x02\\x02\\x02\\u0571\\u056F\\x03\\x02\\x02\\x02\\u0571\\u0572\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0572\\u0574\\x03\\x02\\x02\\x02\\u0573\\u055B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0573\\u0561\\x03\\x02\\x02\\x02\\u0574\\xCE\\x03\\x02\\x02\\x02\\u0575\\u0576\\x07\" +\n\t\t\"v\\x02\\x02\\u0576\\u0577\\x07t\\x02\\x02\\u0577\\u0578\\x07w\\x02\\x02\\u0578\\u057F\" +\n\t\t\"\\x07g\\x02\\x02\\u0579\\u057A\\x07h\\x02\\x02\\u057A\\u057B\\x07c\\x02\\x02\\u057B\" +\n\t\t\"\\u057C\\x07n\\x02\\x02\\u057C\\u057D\\x07u\\x02\\x02\\u057D\\u057F\\x07g\\x02\\x02\" +\n\t\t\"\\u057E\\u0575\\x03\\x02\\x02\\x02\\u057E\\u0579\\x03\\x02\\x02\\x02\\u057F\\xD0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0580\\u0587\\x05\\xD3j\\x02\\u0581\\u0583\\x05\\xD3j\\x02\\u0582\\u0581\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0582\\u0583\\x03\\x02\\x02\\x02\\u0583\\u0584\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0584\\u0585\\x070\\x02\\x02\\u0585\\u0587\\x05\\xD3j\\x02\\u0586\\u0580\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0586\\u0582\\x03\\x02\\x02\\x02\\u0587\\u058A\\x03\\x02\\x02\\x02\\u0588\" +\n\t\t\"\\u0589\\t\\x03\\x02\\x02\\u0589\\u058B\\x05\\xD3j\\x02\\u058A\\u0588\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u058A\\u058B\\x03\\x02\\x02\\x02\\u058B\\xD2\\x03\\x02\\x02\\x02\\u058C\\u0593\" +\n\t\t\"\\t\\x02\\x02\\x02\\u058D\\u058F\\x07a\\x02\\x02\\u058E\\u058D\\x03\\x02\\x02\\x02\\u058E\" +\n\t\t\"\\u058F\\x03\\x02\\x02\\x02\\u058F\\u0590\\x03\\x02\\x02\\x02\\u0590\\u0592\\t\\x02\\x02\" +\n\t\t\"\\x02\\u0591\\u058E\\x03\\x02\\x02\\x02\\u0592\\u0595\\x03\\x02\\x02\\x02\\u0593\\u0591\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0593\\u0594\\x03\\x02\\x02\\x02\\u0594\\xD4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0595\\u0593\\x03\\x02\\x02\\x02\\u0596\\u0597\\x072\\x02\\x02\\u0597\\u0598\\t\\x04\" +\n\t\t\"\\x02\\x02\\u0598\\u0599\\x05\\xD7l\\x02\\u0599\\xD6\\x03\\x02\\x02\\x02\\u059A\\u05A1\" +\n\t\t\"\\x05\\xDFp\\x02\\u059B\\u059D\\x07a\\x02\\x02\\u059C\\u059B\\x03\\x02\\x02\\x02\\u059C\" +\n\t\t\"\\u059D\\x03\\x02\\x02\\x02\\u059D\\u059E\\x03\\x02\\x02\\x02\\u059E\\u05A0\\x05\\xDF\" +\n\t\t\"p\\x02\\u059F\\u059C\\x03\\x02\\x02\\x02\\u05A0\\u05A3\\x03\\x02\\x02\\x02\\u05A1\\u059F\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05A1\\u05A2\\x03\\x02\\x02\\x02\\u05A2\\xD8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05A3\\u05A1\\x03\\x02\\x02\\x02\\u05A4\\u05A5\\x07y\\x02\\x02\\u05A5\\u05A6\\x07\" +\n\t\t\"g\\x02\\x02\\u05A6\\u05DD\\x07k\\x02\\x02\\u05A7\\u05A8\\x07i\\x02\\x02\\u05A8\\u05A9\" +\n\t\t\"\\x07y\\x02\\x02\\u05A9\\u05AA\\x07g\\x02\\x02\\u05AA\\u05DD\\x07k\\x02\\x02\\u05AB\" +\n\t\t\"\\u05AC\\x07u\\x02\\x02\\u05AC\\u05AD\\x07|\\x02\\x02\\u05AD\\u05AE\\x07c\\x02\\x02\" +\n\t\t\"\\u05AE\\u05AF\\x07d\\x02\\x02\\u05AF\\u05DD\\x07q\\x02\\x02\\u05B0\\u05B1\\x07h\\x02\" +\n\t\t\"\\x02\\u05B1\\u05B2\\x07k\\x02\\x02\\u05B2\\u05B3\\x07p\\x02\\x02\\u05B3\\u05B4\\x07\" +\n\t\t\"p\\x02\\x02\\u05B4\\u05B5\\x07g\\x02\\x02\\u05B5\\u05DD\\x07{\\x02\\x02\\u05B6\\u05B7\" +\n\t\t\"\\x07g\\x02\\x02\\u05B7\\u05B8\\x07v\\x02\\x02\\u05B8\\u05B9\\x07j\\x02\\x02\\u05B9\" +\n\t\t\"\\u05BA\\x07g\\x02\\x02\\u05BA\\u05DD\\x07t\\x02\\x02\\u05BB\\u05BC\\x07u\\x02\\x02\" +\n\t\t\"\\u05BC\\u05BD\\x07g\\x02\\x02\\u05BD\\u05BE\\x07e\\x02\\x02\\u05BE\\u05BF\\x07q\\x02\" +\n\t\t\"\\x02\\u05BF\\u05C0\\x07p\\x02\\x02\\u05C0\\u05C1\\x07f\\x02\\x02\\u05C1\\u05DD\\x07\" +\n\t\t\"u\\x02\\x02\\u05C2\\u05C3\\x07o\\x02\\x02\\u05C3\\u05C4\\x07k\\x02\\x02\\u05C4\\u05C5\" +\n\t\t\"\\x07p\\x02\\x02\\u05C5\\u05C6\\x07w\\x02\\x02\\u05C6\\u05C7\\x07v\\x02\\x02\\u05C7\" +\n\t\t\"\\u05C8\\x07g\\x02\\x02\\u05C8\\u05DD\\x07u\\x02\\x02\\u05C9\\u05CA\\x07j\\x02\\x02\" +\n\t\t\"\\u05CA\\u05CB\\x07q\\x02\\x02\\u05CB\\u05CC\\x07w\\x02\\x02\\u05CC\\u05CD\\x07t\\x02\" +\n\t\t\"\\x02\\u05CD\\u05DD\\x07u\\x02\\x02\\u05CE\\u05CF\\x07f\\x02\\x02\\u05CF\\u05D0\\x07\" +\n\t\t\"c\\x02\\x02\\u05D0\\u05D1\\x07{\\x02\\x02\\u05D1\\u05DD\\x07u\\x02\\x02\\u05D2\\u05D3\" +\n\t\t\"\\x07y\\x02\\x02\\u05D3\\u05D4\\x07g\\x02\\x02\\u05D4\\u05D5\\x07g\\x02\\x02\\u05D5\" +\n\t\t\"\\u05D6\\x07m\\x02\\x02\\u05D6\\u05DD\\x07u\\x02\\x02\\u05D7\\u05D8\\x07{\\x02\\x02\" +\n\t\t\"\\u05D8\\u05D9\\x07g\\x02\\x02\\u05D9\\u05DA\\x07c\\x02\\x02\\u05DA\\u05DB\\x07t\\x02\" +\n\t\t\"\\x02\\u05DB\\u05DD\\x07u\\x02\\x02\\u05DC\\u05A4\\x03\\x02\\x02\\x02\\u05DC\\u05A7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05DC\\u05AB\\x03\\x02\\x02\\x02\\u05DC\\u05B0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05DC\\u05B6\\x03\\x02\\x02\\x02\\u05DC\\u05BB\\x03\\x02\\x02\\x02\\u05DC\\u05C2\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u05DC\\u05C9\\x03\\x02\\x02\\x02\\u05DC\\u05CE\\x03\\x02\\x02\\x02\\u05DC\" +\n\t\t\"\\u05D2\\x03\\x02\\x02\\x02\\u05DC\\u05D7\\x03\\x02\\x02\\x02\\u05DD\\xDA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u05DE\\u05DF\\x07j\\x02\\x02\\u05DF\\u05E0\\x07g\\x02\\x02\\u05E0\\u05E1\\x07\" +\n\t\t\"z\\x02\\x02\\u05E1\\u05EC\\x03\\x02\\x02\\x02\\u05E2\\u05E4\\x07$\\x02\\x02\\u05E3\\u05E5\" +\n\t\t\"\\x05\\xD7l\\x02\\u05E4\\u05E3\\x03\\x02\\x02\\x02\\u05E4\\u05E5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u05E5\\u05E6\\x03\\x02\\x02\\x02\\u05E6\\u05ED\\x07$\\x02\\x02\\u05E7\\u05E9\\x07\" +\n\t\t\")\\x02\\x02\\u05E8\\u05EA\\x05\\xD7l\\x02\\u05E9\\u05E8\\x03\\x02\\x02\\x02\\u05E9\\u05EA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05EA\\u05EB\\x03\\x02\\x02\\x02\\u05EB\\u05ED\\x07)\\x02\\x02\" +\n\t\t\"\\u05EC\\u05E2\\x03\\x02\\x02\\x02\\u05EC\\u05E7\\x03\\x02\\x02\\x02\\u05ED\\xDC\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u05EE\\u05EF\\x05\\xDFp\\x02\\u05EF\\u05F0\\x05\\xDFp\\x02\\u05F0\\xDE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u05F1\\u05F2\\t\\x05\\x02\\x02\\u05F2\\xE0\\x03\\x02\\x02\\x02\\u05F3\" +\n\t\t\"\\u05F4\\x07c\\x02\\x02\\u05F4\\u05F5\\x07d\\x02\\x02\\u05F5\\u05F6\\x07u\\x02\\x02\" +\n\t\t\"\\u05F6\\u05F7\\x07v\\x02\\x02\\u05F7\\u05F8\\x07t\\x02\\x02\\u05F8\\u05F9\\x07c\\x02\" +\n\t\t\"\\x02\\u05F9\\u05FA\\x07e\\x02\\x02\\u05FA\\u064C\\x07v\\x02\\x02\\u05FB\\u05FC\\x07\" +\n\t\t\"c\\x02\\x02\\u05FC\\u05FD\\x07h\\x02\\x02\\u05FD\\u05FE\\x07v\\x02\\x02\\u05FE\\u05FF\" +\n\t\t\"\\x07g\\x02\\x02\\u05FF\\u064C\\x07t\\x02\\x02\\u0600\\u0601\\x07e\\x02\\x02\\u0601\" +\n\t\t\"\\u0602\\x07c\\x02\\x02\\u0602\\u0603\\x07u\\x02\\x02\\u0603\\u064C\\x07g\\x02\\x02\" +\n\t\t\"\\u0604\\u0605\\x07e\\x02\\x02\\u0605\\u0606\\x07c\\x02\\x02\\u0606\\u0607\\x07v\\x02\" +\n\t\t\"\\x02\\u0607\\u0608\\x07e\\x02\\x02\\u0608\\u064C\\x07j\\x02\\x02\\u0609\\u060A\\x07\" +\n\t\t\"f\\x02\\x02\\u060A\\u060B\\x07g\\x02\\x02\\u060B\\u060C\\x07h\\x02\\x02\\u060C\\u060D\" +\n\t\t\"\\x07c\\x02\\x02\\u060D\\u060E\\x07w\\x02\\x02\\u060E\\u060F\\x07n\\x02\\x02\\u060F\" +\n\t\t\"\\u064C\\x07v\\x02\\x02\\u0610\\u0611\\x07h\\x02\\x02\\u0611\\u0612\\x07k\\x02\\x02\" +\n\t\t\"\\u0612\\u0613\\x07p\\x02\\x02\\u0613\\u0614\\x07c\\x02\\x02\\u0614\\u064C\\x07n\\x02\" +\n\t\t\"\\x02\\u0615\\u0616\\x07k\\x02\\x02\\u0616\\u064C\\x07p\\x02\\x02\\u0617\\u0618\\x07\" +\n\t\t\"k\\x02\\x02\\u0618\\u0619\\x07p\\x02\\x02\\u0619\\u061A\\x07n\\x02\\x02\\u061A\\u061B\" +\n\t\t\"\\x07k\\x02\\x02\\u061B\\u061C\\x07p\\x02\\x02\\u061C\\u064C\\x07g\\x02\\x02\\u061D\" +\n\t\t\"\\u061E\\x07n\\x02\\x02\\u061E\\u061F\\x07g\\x02\\x02\\u061F\\u064C\\x07v\\x02\\x02\" +\n\t\t\"\\u0620\\u0621\\x07o\\x02\\x02\\u0621\\u0622\\x07c\\x02\\x02\\u0622\\u0623\\x07v\\x02\" +\n\t\t\"\\x02\\u0623\\u0624\\x07e\\x02\\x02\\u0624\\u064C\\x07j\\x02\\x02\\u0625\\u0626\\x07\" +\n\t\t\"p\\x02\\x02\\u0626\\u0627\\x07w\\x02\\x02\\u0627\\u0628\\x07n\\x02\\x02\\u0628\\u064C\" +\n\t\t\"\\x07n\\x02\\x02\\u0629\\u062A\\x07q\\x02\\x02\\u062A\\u064C\\x07h\\x02\\x02\\u062B\" +\n\t\t\"\\u062C\\x07t\\x02\\x02\\u062C\\u062D\\x07g\\x02\\x02\\u062D\\u062E\\x07n\\x02\\x02\" +\n\t\t\"\\u062E\\u062F\\x07q\\x02\\x02\\u062F\\u0630\\x07e\\x02\\x02\\u0630\\u0631\\x07c\\x02\" +\n\t\t\"\\x02\\u0631\\u0632\\x07v\\x02\\x02\\u0632\\u0633\\x07c\\x02\\x02\\u0633\\u0634\\x07\" +\n\t\t\"d\\x02\\x02\\u0634\\u0635\\x07n\\x02\\x02\\u0635\\u064C\\x07g\\x02\\x02\\u0636\\u0637\" +\n\t\t\"\\x07u\\x02\\x02\\u0637\\u0638\\x07v\\x02\\x02\\u0638\\u0639\\x07c\\x02\\x02\\u0639\" +\n\t\t\"\\u063A\\x07v\\x02\\x02\\u063A\\u063B\\x07k\\x02\\x02\\u063B\\u064C\\x07e\\x02\\x02\" +\n\t\t\"\\u063C\\u063D\\x07u\\x02\\x02\\u063D\\u063E\\x07y\\x02\\x02\\u063E\\u063F\\x07k\\x02\" +\n\t\t\"\\x02\\u063F\\u0640\\x07v\\x02\\x02\\u0640\\u0641\\x07e\\x02\\x02\\u0641\\u064C\\x07\" +\n\t\t\"j\\x02\\x02\\u0642\\u0643\\x07v\\x02\\x02\\u0643\\u0644\\x07t\\x02\\x02\\u0644\\u064C\" +\n\t\t\"\\x07{\\x02\\x02\\u0645\\u0646\\x07v\\x02\\x02\\u0646\\u0647\\x07{\\x02\\x02\\u0647\" +\n\t\t\"\\u0648\\x07r\\x02\\x02\\u0648\\u0649\\x07g\\x02\\x02\\u0649\\u064A\\x07q\\x02\\x02\" +\n\t\t\"\\u064A\\u064C\\x07h\\x02\\x02\\u064B\\u05F3\\x03\\x02\\x02\\x02\\u064B\\u05FB\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u064B\\u0600\\x03\\x02\\x02\\x02\\u064B\\u0604\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u0609\\x03\\x02\\x02\\x02\\u064B\\u0610\\x03\\x02\\x02\\x02\\u064B\\u0615\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064B\\u0617\\x03\\x02\\x02\\x02\\u064B\\u061D\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u0620\\x03\\x02\\x02\\x02\\u064B\\u0625\\x03\\x02\\x02\\x02\\u064B\\u0629\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064B\\u062B\\x03\\x02\\x02\\x02\\u064B\\u0636\\x03\\x02\\x02\\x02\\u064B\" +\n\t\t\"\\u063C\\x03\\x02\\x02\\x02\\u064B\\u0642\\x03\\x02\\x02\\x02\\u064B\\u0645\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u064C\\xE2\\x03\\x02\\x02\\x02\\u064D\\u064E\\x07c\\x02\\x02\\u064E\\u064F\" +\n\t\t\"\\x07p\\x02\\x02\\u064F\\u0650\\x07q\\x02\\x02\\u0650\\u0651\\x07p\\x02\\x02\\u0651\" +\n\t\t\"\\u0652\\x07{\\x02\\x02\\u0652\\u0653\\x07o\\x02\\x02\\u0653\\u0654\\x07q\\x02\\x02\" +\n\t\t\"\\u0654\\u0655\\x07w\\x02\\x02\\u0655\\u0656\\x07u\\x02\\x02\\u0656\\xE4\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0657\\u0658\\x07d\\x02\\x02\\u0658\\u0659\\x07t\\x02\\x02\\u0659\\u065A\\x07\" +\n\t\t\"g\\x02\\x02\\u065A\\u065B\\x07c\\x02\\x02\\u065B\\u065C\\x07m\\x02\\x02\\u065C\\xE6\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u065D\\u065E\\x07e\\x02\\x02\\u065E\\u065F\\x07q\\x02\\x02\\u065F\" +\n\t\t\"\\u0660\\x07p\\x02\\x02\\u0660\\u0661\\x07u\\x02\\x02\\u0661\\u0662\\x07v\\x02\\x02\" +\n\t\t\"\\u0662\\u0663\\x07c\\x02\\x02\\u0663\\u0664\\x07p\\x02\\x02\\u0664\\u0665\\x07v\\x02\" +\n\t\t\"\\x02\\u0665\\xE8\\x03\\x02\\x02\\x02\\u0666\\u0667\\x07k\\x02\\x02\\u0667\\u0668\\x07\" +\n\t\t\"o\\x02\\x02\\u0668\\u0669\\x07o\\x02\\x02\\u0669\\u066A\\x07w\\x02\\x02\\u066A\\u066B\" +\n\t\t\"\\x07v\\x02\\x02\\u066B\\u066C\\x07c\\x02\\x02\\u066C\\u066D\\x07d\\x02\\x02\\u066D\" +\n\t\t\"\\u066E\\x07n\\x02\\x02\\u066E\\u066F\\x07g\\x02\\x02\\u066F\\xEA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0670\\u0671\\x07e\\x02\\x02\\u0671\\u0672\\x07q\";\n\tprivate static readonly _serializedATNSegment3: string =\n\t\t\"\\x02\\x02\\u0672\\u0673\\x07p\\x02\\x02\\u0673\\u0674\\x07v\\x02\\x02\\u0674\\u0675\" +\n\t\t\"\\x07k\\x02\\x02\\u0675\\u0676\\x07p\\x02\\x02\\u0676\\u0677\\x07w\\x02\\x02\\u0677\" +\n\t\t\"\\u0678\\x07g\\x02\\x02\\u0678\\xEC\\x03\\x02\\x02\\x02\\u0679\\u067A\\x07n\\x02\\x02\" +\n\t\t\"\\u067A\\u067B\\x07g\\x02\\x02\\u067B\\u067C\\x07c\\x02\\x02\\u067C\\u067D\\x07x\\x02\" +\n\t\t\"\\x02\\u067D\\u067E\\x07g\\x02\\x02\\u067E\\xEE\\x03\\x02\\x02\\x02\\u067F\\u0680\\x07\" +\n\t\t\"g\\x02\\x02\\u0680\\u0681\\x07z\\x02\\x02\\u0681\\u0682\\x07v\\x02\\x02\\u0682\\u0683\" +\n\t\t\"\\x07g\\x02\\x02\\u0683\\u0684\\x07t\\x02\\x02\\u0684\\u0685\\x07p\\x02\\x02\\u0685\" +\n\t\t\"\\u0686\\x07c\\x02\\x02\\u0686\\u0687\\x07n\\x02\\x02\\u0687\\xF0\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0688\\u0689\\x07k\\x02\\x02\\u0689\\u068A\\x07p\\x02\\x02\\u068A\\u068B\\x07f\\x02\" +\n\t\t\"\\x02\\u068B\\u068C\\x07g\\x02\\x02\\u068C\\u068D\\x07z\\x02\\x02\\u068D\\u068E\\x07\" +\n\t\t\"g\\x02\\x02\\u068E\\u068F\\x07f\\x02\\x02\\u068F\\xF2\\x03\\x02\\x02\\x02\\u0690\\u0691\" +\n\t\t\"\\x07k\\x02\\x02\\u0691\\u0692\\x07p\\x02\\x02\\u0692\\u0693\\x07v\\x02\\x02\\u0693\" +\n\t\t\"\\u0694\\x07g\\x02\\x02\\u0694\\u0695\\x07t\\x02\\x02\\u0695\\u0696\\x07p\\x02\\x02\" +\n\t\t\"\\u0696\\u0697\\x07c\\x02\\x02\\u0697\\u0698\\x07n\\x02\\x02\\u0698\\xF4\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0699\\u069A\\x07r\\x02\\x02\\u069A\\u069B\\x07c\\x02\\x02\\u069B\\u069C\\x07\" +\n\t\t\"{\\x02\\x02\\u069C\\u069D\\x07c\\x02\\x02\\u069D\\u069E\\x07d\\x02\\x02\\u069E\\u069F\" +\n\t\t\"\\x07n\\x02\\x02\\u069F\\u06A0\\x07g\\x02\\x02\\u06A0\\xF6\\x03\\x02\\x02\\x02\\u06A1\" +\n\t\t\"\\u06A2\\x07r\\x02\\x02\\u06A2\\u06A3\\x07t\\x02\\x02\\u06A3\\u06A4\\x07k\\x02\\x02\" +\n\t\t\"\\u06A4\\u06A5\\x07x\\x02\\x02\\u06A5\\u06A6\\x07c\\x02\\x02\\u06A6\\u06A7\\x07v\\x02\" +\n\t\t\"\\x02\\u06A7\\u06A8\\x07g\\x02\\x02\\u06A8\\xF8\\x03\\x02\\x02\\x02\\u06A9\\u06AA\\x07\" +\n\t\t\"r\\x02\\x02\\u06AA\\u06AB\\x07w\\x02\\x02\\u06AB\\u06AC\\x07d\\x02\\x02\\u06AC\\u06AD\" +\n\t\t\"\\x07n\\x02\\x02\\u06AD\\u06AE\\x07k\\x02\\x02\\u06AE\\u06AF\\x07e\\x02\\x02\\u06AF\" +\n\t\t\"\\xFA\\x03\\x02\\x02\\x02\\u06B0\\u06B1\\x07x\\x02\\x02\\u06B1\\u06B2\\x07k\\x02\\x02\" +\n\t\t\"\\u06B2\\u06B3\\x07t\\x02\\x02\\u06B3\\u06B4\\x07v\\x02\\x02\\u06B4\\u06B5\\x07w\\x02\" +\n\t\t\"\\x02\\u06B5\\u06B6\\x07c\\x02\\x02\\u06B6\\u06B7\\x07n\\x02\\x02\\u06B7\\xFC\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06B8\\u06B9\\x07r\\x02\\x02\\u06B9\\u06BA\\x07w\\x02\\x02\\u06BA\\u06BB\" +\n\t\t\"\\x07t\\x02\\x02\\u06BB\\u06BC\\x07g\\x02\\x02\\u06BC\\xFE\\x03\\x02\\x02\\x02\\u06BD\" +\n\t\t\"\\u06BE\\x07v\\x02\\x02\\u06BE\\u06BF\\x07{\\x02\\x02\\u06BF\\u06C0\\x07r\\x02\\x02\" +\n\t\t\"\\u06C0\\u06C1\\x07g\\x02\\x02\\u06C1\\u0100\\x03\\x02\\x02\\x02\\u06C2\\u06C3\\x07\" +\n\t\t\"x\\x02\\x02\\u06C3\\u06C4\\x07k\\x02\\x02\\u06C4\\u06C5\\x07g\\x02\\x02\\u06C5\\u06C6\" +\n\t\t\"\\x07y\\x02\\x02\\u06C6\\u0102\\x03\\x02\\x02\\x02\\u06C7\\u06C8\\x07i\\x02\\x02\\u06C8\" +\n\t\t\"\\u06C9\\x07n\\x02\\x02\\u06C9\\u06CA\\x07q\\x02\\x02\\u06CA\\u06CB\\x07d\\x02\\x02\" +\n\t\t\"\\u06CB\\u06CC\\x07c\\x02\\x02\\u06CC\\u06CD\\x07n\\x02\\x02\\u06CD\\u0104\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06CE\\u06CF\\x07e\\x02\\x02\\u06CF\\u06D0\\x07q\\x02\\x02\\u06D0\\u06D1\" +\n\t\t\"\\x07p\\x02\\x02\\u06D1\\u06D2\\x07u\\x02\\x02\\u06D2\\u06D3\\x07v\\x02\\x02\\u06D3\" +\n\t\t\"\\u06D4\\x07t\\x02\\x02\\u06D4\\u06D5\\x07w\\x02\\x02\\u06D5\\u06D6\\x07e\\x02\\x02\" +\n\t\t\"\\u06D6\\u06D7\\x07v\\x02\\x02\\u06D7\\u06D8\\x07q\\x02\\x02\\u06D8\\u06D9\\x07t\\x02\" +\n\t\t\"\\x02\\u06D9\\u0106\\x03\\x02\\x02\\x02\\u06DA\\u06DB\\x07h\\x02\\x02\\u06DB\\u06DC\" +\n\t\t\"\\x07c\\x02\\x02\\u06DC\\u06DD\\x07n\\x02\\x02\\u06DD\\u06DE\\x07n\\x02\\x02\\u06DE\" +\n\t\t\"\\u06DF\\x07d\\x02\\x02\\u06DF\\u06E0\\x07c\\x02\\x02\\u06E0\\u06E1\\x07e\\x02\\x02\" +\n\t\t\"\\u06E1\\u06E2\\x07m\\x02\\x02\\u06E2\\u0108\\x03\\x02\\x02\\x02\\u06E3\\u06E4\\x07\" +\n\t\t\"t\\x02\\x02\\u06E4\\u06E5\\x07g\\x02\\x02\\u06E5\\u06E6\\x07e\\x02\\x02\\u06E6\\u06E7\" +\n\t\t\"\\x07g\\x02\\x02\\u06E7\\u06E8\\x07k\\x02\\x02\\u06E8\\u06E9\\x07x\\x02\\x02\\u06E9\" +\n\t\t\"\\u06EA\\x07g\\x02\\x02\\u06EA\\u010A\\x03\\x02\\x02\\x02\\u06EB\\u06EF\\x05\\u010D\" +\n\t\t\"\\x87\\x02\\u06EC\\u06EE\\x05\\u010F\\x88\\x02\\u06ED\\u06EC\\x03\\x02\\x02\\x02\\u06EE\" +\n\t\t\"\\u06F1\\x03\\x02\\x02\\x02\\u06EF\\u06ED\\x03\\x02\\x02\\x02\\u06EF\\u06F0\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u06F0\\u010C\\x03\\x02\\x02\\x02\\u06F1\\u06EF\\x03\\x02\\x02\\x02\\u06F2\" +\n\t\t\"\\u06F3\\t\\x06\\x02\\x02\\u06F3\\u010E\\x03\\x02\\x02\\x02\\u06F4\\u06F5\\t\\x07\\x02\" +\n\t\t\"\\x02\\u06F5\\u0110\\x03\\x02\\x02\\x02\\u06F6\\u06F7\\x07w\\x02\\x02\\u06F7\\u06F8\" +\n\t\t\"\\x07p\\x02\\x02\\u06F8\\u06F9\\x07k\\x02\\x02\\u06F9\\u06FA\\x07e\\x02\\x02\\u06FA\" +\n\t\t\"\\u06FB\\x07q\\x02\\x02\\u06FB\\u06FC\\x07f\\x02\\x02\\u06FC\\u06FE\\x07g\\x02\\x02\" +\n\t\t\"\\u06FD\\u06F6\\x03\\x02\\x02\\x02\\u06FD\\u06FE\\x03\\x02\\x02\\x02\\u06FE\\u06FF\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u06FF\\u0703\\x07$\\x02\\x02\\u0700\\u0702\\x05\\u0113\\x8A\\x02\\u0701\" +\n\t\t\"\\u0700\\x03\\x02\\x02\\x02\\u0702\\u0705\\x03\\x02\\x02\\x02\\u0703\\u0701\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0703\\u0704\\x03\\x02\\x02\\x02\\u0704\\u0706\\x03\\x02\\x02\\x02\\u0705\" +\n\t\t\"\\u0703\\x03\\x02\\x02\\x02\\u0706\\u0719\\x07$\\x02\\x02\\u0707\\u0708\\x07w\\x02\\x02\" +\n\t\t\"\\u0708\\u0709\\x07p\\x02\\x02\\u0709\\u070A\\x07k\\x02\\x02\\u070A\\u070B\\x07e\\x02\" +\n\t\t\"\\x02\\u070B\\u070C\\x07q\\x02\\x02\\u070C\\u070D\\x07f\\x02\\x02\\u070D\\u070F\\x07\" +\n\t\t\"g\\x02\\x02\\u070E\\u0707\\x03\\x02\\x02\\x02\\u070E\\u070F\\x03\\x02\\x02\\x02\\u070F\" +\n\t\t\"\\u0710\\x03\\x02\\x02\\x02\\u0710\\u0714\\x07)\\x02\\x02\\u0711\\u0713\\x05\\u0115\" +\n\t\t\"\\x8B\\x02\\u0712\\u0711\\x03\\x02\\x02\\x02\\u0713\\u0716\\x03\\x02\\x02\\x02\\u0714\" +\n\t\t\"\\u0712\\x03\\x02\\x02\\x02\\u0714\\u0715\\x03\\x02\\x02\\x02\\u0715\\u0717\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0716\\u0714\\x03\\x02\\x02\\x02\\u0717\\u0719\\x07)\\x02\\x02\\u0718\\u06FD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0718\\u070E\\x03\\x02\\x02\\x02\\u0719\\u0112\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u071A\\u071E\\n\\b\\x02\\x02\\u071B\\u071C\\x07^\\x02\\x02\\u071C\\u071E\\v\\x02\\x02\" +\n\t\t\"\\x02\\u071D\\u071A\\x03\\x02\\x02\\x02\\u071D\\u071B\\x03\\x02\\x02\\x02\\u071E\\u0114\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u071F\\u0723\\n\\t\\x02\\x02\\u0720\\u0721\\x07^\\x02\\x02\\u0721\" +\n\t\t\"\\u0723\\v\\x02\\x02\\x02\\u0722\\u071F\\x03\\x02\\x02\\x02\\u0722\\u0720\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0723\\u0116\\x03\\x02\\x02\\x02\\u0724\\u0726\\t\\x02\\x02\\x02\\u0725\\u0724\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0726\\u0727\\x03\\x02\\x02\\x02\\u0727\\u0725\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0727\\u0728\\x03\\x02\\x02\\x02\\u0728\\u0729\\x03\\x02\\x02\\x02\\u0729\\u072B\\x07\" +\n\t\t\"0\\x02\\x02\\u072A\\u072C\\t\\x02\\x02\\x02\\u072B\\u072A\\x03\\x02\\x02\\x02\\u072C\" +\n\t\t\"\\u072D\\x03\\x02\\x02\\x02\\u072D\\u072B\\x03\\x02\\x02\\x02\\u072D\\u072E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u072E\\u0735\\x03\\x02\\x02\\x02\\u072F\\u0731\\x070\\x02\\x02\\u0730\\u0732\" +\n\t\t\"\\t\\x02\\x02\\x02\\u0731\\u0730\\x03\\x02\\x02\\x02\\u0732\\u0733\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0733\\u0731\\x03\\x02\\x02\\x02\\u0733\\u0734\\x03\\x02\\x02\\x02\\u0734\\u0736\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0735\\u072F\\x03\\x02\\x02\\x02\\u0735\\u0736\\x03\\x02\\x02\\x02\\u0736\" +\n\t\t\"\\u0118\\x03\\x02\\x02\\x02\\u0737\\u0739\\t\\n\\x02\\x02\\u0738\\u0737\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0739\\u073A\\x03\\x02\\x02\\x02\\u073A\\u0738\\x03\\x02\\x02\\x02\\u073A\\u073B\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u073B\\u073C\\x03\\x02\\x02\\x02\\u073C\\u073D\\b\\x8D\\x02\\x02\" +\n\t\t\"\\u073D\\u011A\\x03\\x02\\x02\\x02\\u073E\\u073F\\x071\\x02\\x02\\u073F\\u0740\\x07\" +\n\t\t\",\\x02\\x02\\u0740\\u0744\\x03\\x02\\x02\\x02\\u0741\\u0743\\v\\x02\\x02\\x02\\u0742\" +\n\t\t\"\\u0741\\x03\\x02\\x02\\x02\\u0743\\u0746\\x03\\x02\\x02\\x02\\u0744\\u0745\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0744\\u0742\\x03\\x02\\x02\\x02\\u0745\\u0747\\x03\\x02\\x02\\x02\\u0746\" +\n\t\t\"\\u0744\\x03\\x02\\x02\\x02\\u0747\\u0748\\x07,\\x02\\x02\\u0748\\u0749\\x071\\x02\\x02\" +\n\t\t\"\\u0749\\u074A\\x03\\x02\\x02\\x02\\u074A\\u074B\\b\\x8E\\x03\\x02\\u074B\\u011C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u074C\\u074D\\x071\\x02\\x02\\u074D\\u074E\\x071\\x02\\x02\\u074E\\u0752\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u074F\\u0751\\n\\v\\x02\\x02\\u0750\\u074F\\x03\\x02\\x02\\x02\\u0751\" +\n\t\t\"\\u0754\\x03\\x02\\x02\\x02\\u0752\\u0750\\x03\\x02\\x02\\x02\\u0752\\u0753\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0753\\u0755\\x03\\x02\\x02\\x02\\u0754\\u0752\\x03\\x02\\x02\\x02\\u0755\" +\n\t\t\"\\u0756\\b\\x8F\\x03\\x02\\u0756\\u011E\\x03\\x02\\x02\\x02(\\x02\\u038A\\u0463\\u0541\" +\n\t\t\"\\u0551\\u0557\\u0559\\u056B\\u0571\\u0573\\u057E\\u0582\\u0586\\u058A\\u058E\\u0593\" +\n\t\t\"\\u059C\\u05A1\\u05DC\\u05E4\\u05E9\\u05EC\\u064B\\u06EF\\u06FD\\u0703\\u070E\\u0714\" +\n\t\t\"\\u0718\\u071D\\u0722\\u0727\\u072D\\u0733\\u0735\\u073A\\u0744\\u0752\\x04\\b\\x02\" +\n\t\t\"\\x02\\x02\\x03\\x02\";\n\tpublic static readonly _serializedATN: string = Utils.join(\n\t\t[\n\t\t\tSolidityLexer._serializedATNSegment0,\n\t\t\tSolidityLexer._serializedATNSegment1,\n\t\t\tSolidityLexer._serializedATNSegment2,\n\t\t\tSolidityLexer._serializedATNSegment3,\n\t\t],\n\t\t\"\",\n\t);\n\tpublic static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!SolidityLexer.__ATN) {\n\t\t\tSolidityLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityLexer._serializedATN));\n\t\t}\n\n\t\treturn SolidityLexer.__ATN;\n\t}\n\n}\n\n", "// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT\n\n\nimport { ATN } from \"antlr4ts/atn/ATN\";\nimport { ATNDeserializer } from \"antlr4ts/atn/ATNDeserializer\";\nimport { FailedPredicateException } from \"antlr4ts/FailedPredicateException\";\nimport { NotNull } from \"antlr4ts/Decorators\";\nimport { NoViableAltException } from \"antlr4ts/NoViableAltException\";\nimport { Override } from \"antlr4ts/Decorators\";\nimport { Parser } from \"antlr4ts/Parser\";\nimport { ParserRuleContext } from \"antlr4ts/ParserRuleContext\";\nimport { ParserATNSimulator } from \"antlr4ts/atn/ParserATNSimulator\";\nimport { ParseTreeListener } from \"antlr4ts/tree/ParseTreeListener\";\nimport { ParseTreeVisitor } from \"antlr4ts/tree/ParseTreeVisitor\";\nimport { RecognitionException } from \"antlr4ts/RecognitionException\";\nimport { RuleContext } from \"antlr4ts/RuleContext\";\n//import { RuleVersion } from \"antlr4ts/RuleVersion\";\nimport { TerminalNode } from \"antlr4ts/tree/TerminalNode\";\nimport { Token } from \"antlr4ts/Token\";\nimport { TokenStream } from \"antlr4ts/TokenStream\";\nimport { Vocabulary } from \"antlr4ts/Vocabulary\";\nimport { VocabularyImpl } from \"antlr4ts/VocabularyImpl\";\n\nimport * as Utils from \"antlr4ts/misc/Utils\";\n\nimport { SolidityListener } from \"./SolidityListener\";\nimport { SolidityVisitor } from \"./SolidityVisitor\";\n\n\nexport class SolidityParser extends Parser {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly T__11 = 12;\n\tpublic static readonly T__12 = 13;\n\tpublic static readonly T__13 = 14;\n\tpublic static readonly T__14 = 15;\n\tpublic static readonly T__15 = 16;\n\tpublic static readonly T__16 = 17;\n\tpublic static readonly T__17 = 18;\n\tpublic static readonly T__18 = 19;\n\tpublic static readonly T__19 = 20;\n\tpublic static readonly T__20 = 21;\n\tpublic static readonly T__21 = 22;\n\tpublic static readonly T__22 = 23;\n\tpublic static readonly T__23 = 24;\n\tpublic static readonly T__24 = 25;\n\tpublic static readonly T__25 = 26;\n\tpublic static readonly T__26 = 27;\n\tpublic static readonly T__27 = 28;\n\tpublic static readonly T__28 = 29;\n\tpublic static readonly T__29 = 30;\n\tpublic static readonly T__30 = 31;\n\tpublic static readonly T__31 = 32;\n\tpublic static readonly T__32 = 33;\n\tpublic static readonly T__33 = 34;\n\tpublic static readonly T__34 = 35;\n\tpublic static readonly T__35 = 36;\n\tpublic static readonly T__36 = 37;\n\tpublic static readonly T__37 = 38;\n\tpublic static readonly T__38 = 39;\n\tpublic static readonly T__39 = 40;\n\tpublic static readonly T__40 = 41;\n\tpublic static readonly T__41 = 42;\n\tpublic static readonly T__42 = 43;\n\tpublic static readonly T__43 = 44;\n\tpublic static readonly T__44 = 45;\n\tpublic static readonly T__45 = 46;\n\tpublic static readonly T__46 = 47;\n\tpublic static readonly T__47 = 48;\n\tpublic static readonly T__48 = 49;\n\tpublic static readonly T__49 = 50;\n\tpublic static readonly T__50 = 51;\n\tpublic static readonly T__51 = 52;\n\tpublic static readonly T__52 = 53;\n\tpublic static readonly T__53 = 54;\n\tpublic static readonly T__54 = 55;\n\tpublic static readonly T__55 = 56;\n\tpublic static readonly T__56 = 57;\n\tpublic static readonly T__57 = 58;\n\tpublic static readonly T__58 = 59;\n\tpublic static readonly T__59 = 60;\n\tpublic static readonly T__60 = 61;\n\tpublic static readonly T__61 = 62;\n\tpublic static readonly T__62 = 63;\n\tpublic static readonly T__63 = 64;\n\tpublic static readonly T__64 = 65;\n\tpublic static readonly T__65 = 66;\n\tpublic static readonly T__66 = 67;\n\tpublic static readonly T__67 = 68;\n\tpublic static readonly T__68 = 69;\n\tpublic static readonly T__69 = 70;\n\tpublic static readonly T__70 = 71;\n\tpublic static readonly T__71 = 72;\n\tpublic static readonly T__72 = 73;\n\tpublic static readonly T__73 = 74;\n\tpublic static readonly T__74 = 75;\n\tpublic static readonly T__75 = 76;\n\tpublic static readonly T__76 = 77;\n\tpublic static readonly T__77 = 78;\n\tpublic static readonly T__78 = 79;\n\tpublic static readonly T__79 = 80;\n\tpublic static readonly T__80 = 81;\n\tpublic static readonly T__81 = 82;\n\tpublic static readonly T__82 = 83;\n\tpublic static readonly T__83 = 84;\n\tpublic static readonly T__84 = 85;\n\tpublic static readonly T__85 = 86;\n\tpublic static readonly T__86 = 87;\n\tpublic static readonly T__87 = 88;\n\tpublic static readonly T__88 = 89;\n\tpublic static readonly T__89 = 90;\n\tpublic static readonly T__90 = 91;\n\tpublic static readonly T__91 = 92;\n\tpublic static readonly T__92 = 93;\n\tpublic static readonly T__93 = 94;\n\tpublic static readonly T__94 = 95;\n\tpublic static readonly T__95 = 96;\n\tpublic static readonly T__96 = 97;\n\tpublic static readonly Int = 98;\n\tpublic static readonly Uint = 99;\n\tpublic static readonly Byte = 100;\n\tpublic static readonly Fixed = 101;\n\tpublic static readonly Ufixed = 102;\n\tpublic static readonly BooleanLiteral = 103;\n\tpublic static readonly DecimalNumber = 104;\n\tpublic static readonly HexNumber = 105;\n\tpublic static readonly NumberUnit = 106;\n\tpublic static readonly HexLiteralFragment = 107;\n\tpublic static readonly ReservedKeyword = 108;\n\tpublic static readonly AnonymousKeyword = 109;\n\tpublic static readonly BreakKeyword = 110;\n\tpublic static readonly ConstantKeyword = 111;\n\tpublic static readonly ImmutableKeyword = 112;\n\tpublic static readonly ContinueKeyword = 113;\n\tpublic static readonly LeaveKeyword = 114;\n\tpublic static readonly ExternalKeyword = 115;\n\tpublic static readonly IndexedKeyword = 116;\n\tpublic static readonly InternalKeyword = 117;\n\tpublic static readonly PayableKeyword = 118;\n\tpublic static readonly PrivateKeyword = 119;\n\tpublic static readonly PublicKeyword = 120;\n\tpublic static readonly VirtualKeyword = 121;\n\tpublic static readonly PureKeyword = 122;\n\tpublic static readonly TypeKeyword = 123;\n\tpublic static readonly ViewKeyword = 124;\n\tpublic static readonly GlobalKeyword = 125;\n\tpublic static readonly ConstructorKeyword = 126;\n\tpublic static readonly FallbackKeyword = 127;\n\tpublic static readonly ReceiveKeyword = 128;\n\tpublic static readonly Identifier = 129;\n\tpublic static readonly StringLiteralFragment = 130;\n\tpublic static readonly VersionLiteral = 131;\n\tpublic static readonly WS = 132;\n\tpublic static readonly COMMENT = 133;\n\tpublic static readonly LINE_COMMENT = 134;\n\tpublic static readonly RULE_sourceUnit = 0;\n\tpublic static readonly RULE_pragmaDirective = 1;\n\tpublic static readonly RULE_pragmaName = 2;\n\tpublic static readonly RULE_pragmaValue = 3;\n\tpublic static readonly RULE_version = 4;\n\tpublic static readonly RULE_versionOperator = 5;\n\tpublic static readonly RULE_versionConstraint = 6;\n\tpublic static readonly RULE_importDeclaration = 7;\n\tpublic static readonly RULE_importDirective = 8;\n\tpublic static readonly RULE_importPath = 9;\n\tpublic static readonly RULE_contractDefinition = 10;\n\tpublic static readonly RULE_inheritanceSpecifier = 11;\n\tpublic static readonly RULE_contractPart = 12;\n\tpublic static readonly RULE_stateVariableDeclaration = 13;\n\tpublic static readonly RULE_fileLevelConstant = 14;\n\tpublic static readonly RULE_customErrorDefinition = 15;\n\tpublic static readonly RULE_typeDefinition = 16;\n\tpublic static readonly RULE_usingForDeclaration = 17;\n\tpublic static readonly RULE_usingForObject = 18;\n\tpublic static readonly RULE_structDefinition = 19;\n\tpublic static readonly RULE_modifierDefinition = 20;\n\tpublic static readonly RULE_modifierInvocation = 21;\n\tpublic static readonly RULE_functionDefinition = 22;\n\tpublic static readonly RULE_functionDescriptor = 23;\n\tpublic static readonly RULE_returnParameters = 24;\n\tpublic static readonly RULE_modifierList = 25;\n\tpublic static readonly RULE_eventDefinition = 26;\n\tpublic static readonly RULE_enumValue = 27;\n\tpublic static readonly RULE_enumDefinition = 28;\n\tpublic static readonly RULE_parameterList = 29;\n\tpublic static readonly RULE_parameter = 30;\n\tpublic static readonly RULE_eventParameterList = 31;\n\tpublic static readonly RULE_eventParameter = 32;\n\tpublic static readonly RULE_functionTypeParameterList = 33;\n\tpublic static readonly RULE_functionTypeParameter = 34;\n\tpublic static readonly RULE_variableDeclaration = 35;\n\tpublic static readonly RULE_typeName = 36;\n\tpublic static readonly RULE_userDefinedTypeName = 37;\n\tpublic static readonly RULE_mappingKey = 38;\n\tpublic static readonly RULE_mapping = 39;\n\tpublic static readonly RULE_functionTypeName = 40;\n\tpublic static readonly RULE_storageLocation = 41;\n\tpublic static readonly RULE_stateMutability = 42;\n\tpublic static readonly RULE_block = 43;\n\tpublic static readonly RULE_statement = 44;\n\tpublic static readonly RULE_expressionStatement = 45;\n\tpublic static readonly RULE_ifStatement = 46;\n\tpublic static readonly RULE_tryStatement = 47;\n\tpublic static readonly RULE_catchClause = 48;\n\tpublic static readonly RULE_whileStatement = 49;\n\tpublic static readonly RULE_simpleStatement = 50;\n\tpublic static readonly RULE_uncheckedStatement = 51;\n\tpublic static readonly RULE_forStatement = 52;\n\tpublic static readonly RULE_inlineAssemblyStatement = 53;\n\tpublic static readonly RULE_inlineAssemblyStatementFlag = 54;\n\tpublic static readonly RULE_doWhileStatement = 55;\n\tpublic static readonly RULE_continueStatement = 56;\n\tpublic static readonly RULE_breakStatement = 57;\n\tpublic static readonly RULE_returnStatement = 58;\n\tpublic static readonly RULE_throwStatement = 59;\n\tpublic static readonly RULE_emitStatement = 60;\n\tpublic static readonly RULE_revertStatement = 61;\n\tpublic static readonly RULE_variableDeclarationStatement = 62;\n\tpublic static readonly RULE_variableDeclarationList = 63;\n\tpublic static readonly RULE_identifierList = 64;\n\tpublic static readonly RULE_elementaryTypeName = 65;\n\tpublic static readonly RULE_expression = 66;\n\tpublic static readonly RULE_primaryExpression = 67;\n\tpublic static readonly RULE_expressionList = 68;\n\tpublic static readonly RULE_nameValueList = 69;\n\tpublic static readonly RULE_nameValue = 70;\n\tpublic static readonly RULE_functionCallArguments = 71;\n\tpublic static readonly RULE_functionCall = 72;\n\tpublic static readonly RULE_assemblyBlock = 73;\n\tpublic static readonly RULE_assemblyItem = 74;\n\tpublic static readonly RULE_assemblyExpression = 75;\n\tpublic static readonly RULE_assemblyMember = 76;\n\tpublic static readonly RULE_assemblyCall = 77;\n\tpublic static readonly RULE_assemblyLocalDefinition = 78;\n\tpublic static readonly RULE_assemblyAssignment = 79;\n\tpublic static readonly RULE_assemblyIdentifierOrList = 80;\n\tpublic static readonly RULE_assemblyIdentifierList = 81;\n\tpublic static readonly RULE_assemblyStackAssignment = 82;\n\tpublic static readonly RULE_labelDefinition = 83;\n\tpublic static readonly RULE_assemblySwitch = 84;\n\tpublic static readonly RULE_assemblyCase = 85;\n\tpublic static readonly RULE_assemblyFunctionDefinition = 86;\n\tpublic static readonly RULE_assemblyFunctionReturns = 87;\n\tpublic static readonly RULE_assemblyFor = 88;\n\tpublic static readonly RULE_assemblyIf = 89;\n\tpublic static readonly RULE_assemblyLiteral = 90;\n\tpublic static readonly RULE_subAssembly = 91;\n\tpublic static readonly RULE_tupleExpression = 92;\n\tpublic static readonly RULE_numberLiteral = 93;\n\tpublic static readonly RULE_identifier = 94;\n\tpublic static readonly RULE_hexLiteral = 95;\n\tpublic static readonly RULE_overrideSpecifier = 96;\n\tpublic static readonly RULE_stringLiteral = 97;\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"sourceUnit\", \"pragmaDirective\", \"pragmaName\", \"pragmaValue\", \"version\", \n\t\t\"versionOperator\", \"versionConstraint\", \"importDeclaration\", \"importDirective\", \n\t\t\"importPath\", \"contractDefinition\", \"inheritanceSpecifier\", \"contractPart\", \n\t\t\"stateVariableDeclaration\", \"fileLevelConstant\", \"customErrorDefinition\", \n\t\t\"typeDefinition\", \"usingForDeclaration\", \"usingForObject\", \"structDefinition\", \n\t\t\"modifierDefinition\", \"modifierInvocation\", \"functionDefinition\", \"functionDescriptor\", \n\t\t\"returnParameters\", \"modifierList\", \"eventDefinition\", \"enumValue\", \"enumDefinition\", \n\t\t\"parameterList\", \"parameter\", \"eventParameterList\", \"eventParameter\", \n\t\t\"functionTypeParameterList\", \"functionTypeParameter\", \"variableDeclaration\", \n\t\t\"typeName\", \"userDefinedTypeName\", \"mappingKey\", \"mapping\", \"functionTypeName\", \n\t\t\"storageLocation\", \"stateMutability\", \"block\", \"statement\", \"expressionStatement\", \n\t\t\"ifStatement\", \"tryStatement\", \"catchClause\", \"whileStatement\", \"simpleStatement\", \n\t\t\"uncheckedStatement\", \"forStatement\", \"inlineAssemblyStatement\", \"inlineAssemblyStatementFlag\", \n\t\t\"doWhileStatement\", \"continueStatement\", \"breakStatement\", \"returnStatement\", \n\t\t\"throwStatement\", \"emitStatement\", \"revertStatement\", \"variableDeclarationStatement\", \n\t\t\"variableDeclarationList\", \"identifierList\", \"elementaryTypeName\", \"expression\", \n\t\t\"primaryExpression\", \"expressionList\", \"nameValueList\", \"nameValue\", \"functionCallArguments\", \n\t\t\"functionCall\", \"assemblyBlock\", \"assemblyItem\", \"assemblyExpression\", \n\t\t\"assemblyMember\", \"assemblyCall\", \"assemblyLocalDefinition\", \"assemblyAssignment\", \n\t\t\"assemblyIdentifierOrList\", \"assemblyIdentifierList\", \"assemblyStackAssignment\", \n\t\t\"labelDefinition\", \"assemblySwitch\", \"assemblyCase\", \"assemblyFunctionDefinition\", \n\t\t\"assemblyFunctionReturns\", \"assemblyFor\", \"assemblyIf\", \"assemblyLiteral\", \n\t\t\"subAssembly\", \"tupleExpression\", \"numberLiteral\", \"identifier\", \"hexLiteral\", \n\t\t\"overrideSpecifier\", \"stringLiteral\",\n\t];\n\n\tprivate static readonly _LITERAL_NAMES: Array = [\n\t\tundefined, \"'pragma'\", \"';'\", \"'*'\", \"'||'\", \"'^'\", \"'~'\", \"'>='\", \"'>'\", \n\t\t\"'<'\", \"'<='\", \"'='\", \"'as'\", \"'import'\", \"'from'\", \"'{'\", \"','\", \"'}'\", \n\t\t\"'abstract'\", \"'contract'\", \"'interface'\", \"'library'\", \"'is'\", \"'('\", \n\t\t\"')'\", \"'error'\", \"'using'\", \"'for'\", \"'struct'\", \"'modifier'\", \"'function'\", \n\t\t\"'returns'\", \"'event'\", \"'enum'\", \"'['\", \"']'\", \"'address'\", \"'.'\", \"'mapping'\", \n\t\t\"'=>'\", \"'memory'\", \"'storage'\", \"'calldata'\", \"'if'\", \"'else'\", \"'try'\", \n\t\t\"'catch'\", \"'while'\", \"'unchecked'\", \"'assembly'\", \"'do'\", \"'return'\", \n\t\t\"'throw'\", \"'emit'\", \"'revert'\", \"'var'\", \"'bool'\", \"'string'\", \"'byte'\", \n\t\t\"'++'\", \"'--'\", \"'new'\", \"':'\", \"'+'\", \"'-'\", \"'after'\", \"'delete'\", \"'!'\", \n\t\t\"'**'\", \"'/'\", \"'%'\", \"'<<'\", \"'>>'\", \"'&'\", \"'|'\", \"'=='\", \"'!='\", \"'&&'\", \n\t\t\"'?'\", \"'|='\", \"'^='\", \"'&='\", \"'<<='\", \"'>>='\", \"'+='\", \"'-='\", \"'*='\", \n\t\t\"'/='\", \"'%='\", \"'let'\", \"':='\", \"'=:'\", \"'switch'\", \"'case'\", \"'default'\", \n\t\t\"'->'\", \"'callback'\", \"'override'\", undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"'anonymous'\", \"'break'\", \"'constant'\", \"'immutable'\", \"'continue'\", \"'leave'\", \n\t\t\"'external'\", \"'indexed'\", \"'internal'\", \"'payable'\", \"'private'\", \"'public'\", \n\t\t\"'virtual'\", \"'pure'\", \"'type'\", \"'view'\", \"'global'\", \"'constructor'\", \n\t\t\"'fallback'\", \"'receive'\",\n\t];\n\tprivate static readonly _SYMBOLIC_NAMES: Array = [\n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\tundefined, undefined, undefined, undefined, undefined, undefined, undefined, \n\t\t\"Int\", \"Uint\", \"Byte\", \"Fixed\", \"Ufixed\", \"BooleanLiteral\", \"DecimalNumber\", \n\t\t\"HexNumber\", \"NumberUnit\", \"HexLiteralFragment\", \"ReservedKeyword\", \"AnonymousKeyword\", \n\t\t\"BreakKeyword\", \"ConstantKeyword\", \"ImmutableKeyword\", \"ContinueKeyword\", \n\t\t\"LeaveKeyword\", \"ExternalKeyword\", \"IndexedKeyword\", \"InternalKeyword\", \n\t\t\"PayableKeyword\", \"PrivateKeyword\", \"PublicKeyword\", \"VirtualKeyword\", \n\t\t\"PureKeyword\", \"TypeKeyword\", \"ViewKeyword\", \"GlobalKeyword\", \"ConstructorKeyword\", \n\t\t\"FallbackKeyword\", \"ReceiveKeyword\", \"Identifier\", \"StringLiteralFragment\", \n\t\t\"VersionLiteral\", \"WS\", \"COMMENT\", \"LINE_COMMENT\",\n\t];\n\tpublic static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityParser._LITERAL_NAMES, SolidityParser._SYMBOLIC_NAMES, []);\n\n\t// @Override\n\t// @NotNull\n\tpublic get vocabulary(): Vocabulary {\n\t\treturn SolidityParser.VOCABULARY;\n\t}\n\t// tslint:enable:no-trailing-whitespace\n\n\t// @Override\n\tpublic get grammarFileName(): string { return \"Solidity.g4\"; }\n\n\t// @Override\n\tpublic get ruleNames(): string[] { return SolidityParser.ruleNames; }\n\n\t// @Override\n\tpublic get serializedATN(): string { return SolidityParser._serializedATN; }\n\n\tprotected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {\n\t\treturn new FailedPredicateException(this, predicate, message);\n\t}\n\n\tconstructor(input: TokenStream) {\n\t\tsuper(input);\n\t\tthis._interp = new ParserATNSimulator(SolidityParser._ATN, this);\n\t}\n\t// @RuleVersion(0)\n\tpublic sourceUnit(): SourceUnitContext {\n\t\tlet _localctx: SourceUnitContext = new SourceUnitContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 0, SolidityParser.RULE_sourceUnit);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 208;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__0) | (1 << SolidityParser.T__12) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__17) | (1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25) | (1 << SolidityParser.T__27) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (SolidityParser.T__32 - 33)) | (1 << (SolidityParser.T__35 - 33)) | (1 << (SolidityParser.T__37 - 33)) | (1 << (SolidityParser.T__41 - 33)) | (1 << (SolidityParser.T__53 - 33)) | (1 << (SolidityParser.T__54 - 33)) | (1 << (SolidityParser.T__55 - 33)) | (1 << (SolidityParser.T__56 - 33)) | (1 << (SolidityParser.T__57 - 33)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)) | (1 << (SolidityParser.FallbackKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 206;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 0, this._ctx) ) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 196;\n\t\t\t\t\tthis.pragmaDirective();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 197;\n\t\t\t\t\tthis.importDirective();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 198;\n\t\t\t\t\tthis.contractDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 199;\n\t\t\t\t\tthis.enumDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 5:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 200;\n\t\t\t\t\tthis.structDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 6:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 201;\n\t\t\t\t\tthis.functionDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 7:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 202;\n\t\t\t\t\tthis.fileLevelConstant();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 8:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 203;\n\t\t\t\t\tthis.customErrorDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 9:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 204;\n\t\t\t\t\tthis.typeDefinition();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 10:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 205;\n\t\t\t\t\tthis.usingForDeclaration();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 210;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 211;\n\t\t\tthis.match(SolidityParser.EOF);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaDirective(): PragmaDirectiveContext {\n\t\tlet _localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 2, SolidityParser.RULE_pragmaDirective);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 213;\n\t\t\tthis.match(SolidityParser.T__0);\n\t\t\tthis.state = 214;\n\t\t\tthis.pragmaName();\n\t\t\tthis.state = 215;\n\t\t\tthis.pragmaValue();\n\t\t\tthis.state = 216;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaName(): PragmaNameContext {\n\t\tlet _localctx: PragmaNameContext = new PragmaNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 4, SolidityParser.RULE_pragmaName);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 218;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic pragmaValue(): PragmaValueContext {\n\t\tlet _localctx: PragmaValueContext = new PragmaValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 6, SolidityParser.RULE_pragmaValue);\n\t\ttry {\n\t\t\tthis.state = 223;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 220;\n\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 221;\n\t\t\t\tthis.version();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 222;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic version(): VersionContext {\n\t\tlet _localctx: VersionContext = new VersionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 8, SolidityParser.RULE_version);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 225;\n\t\t\tthis.versionConstraint();\n\t\t\tthis.state = 232;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__3) | (1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0) || _la === SolidityParser.DecimalNumber || _la === SolidityParser.VersionLiteral) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 227;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__3) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 226;\n\t\t\t\t\tthis.match(SolidityParser.T__3);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 229;\n\t\t\t\tthis.versionConstraint();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 234;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic versionOperator(): VersionOperatorContext {\n\t\tlet _localctx: VersionOperatorContext = new VersionOperatorContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 10, SolidityParser.RULE_versionOperator);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 235;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic versionConstraint(): VersionConstraintContext {\n\t\tlet _localctx: VersionConstraintContext = new VersionConstraintContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 12, SolidityParser.RULE_versionConstraint);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 245;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 238;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 237;\n\t\t\t\t\tthis.versionOperator();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 240;\n\t\t\t\tthis.match(SolidityParser.VersionLiteral);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 242;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 241;\n\t\t\t\t\tthis.versionOperator();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 244;\n\t\t\t\tthis.match(SolidityParser.DecimalNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importDeclaration(): ImportDeclarationContext {\n\t\tlet _localctx: ImportDeclarationContext = new ImportDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 14, SolidityParser.RULE_importDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 247;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 250;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t{\n\t\t\t\tthis.state = 248;\n\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\tthis.state = 249;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importDirective(): ImportDirectiveContext {\n\t\tlet _localctx: ImportDirectiveContext = new ImportDirectiveContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 16, SolidityParser.RULE_importDirective);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 288;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 252;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 253;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 256;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 254;\n\t\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\t\tthis.state = 255;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 258;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 260;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 263;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.T__2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 261;\n\t\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__13:\n\t\t\t\tcase SolidityParser.T__24:\n\t\t\t\tcase SolidityParser.T__41:\n\t\t\t\tcase SolidityParser.T__53:\n\t\t\t\tcase SolidityParser.T__95:\n\t\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 262;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 267;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__11) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 265;\n\t\t\t\t\tthis.match(SolidityParser.T__11);\n\t\t\t\t\tthis.state = 266;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 269;\n\t\t\t\tthis.match(SolidityParser.T__13);\n\t\t\t\tthis.state = 270;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 271;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 273;\n\t\t\t\tthis.match(SolidityParser.T__12);\n\t\t\t\tthis.state = 274;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 275;\n\t\t\t\tthis.importDeclaration();\n\t\t\t\tthis.state = 280;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 276;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 277;\n\t\t\t\t\tthis.importDeclaration();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 282;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 283;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\tthis.state = 284;\n\t\t\t\tthis.match(SolidityParser.T__13);\n\t\t\t\tthis.state = 285;\n\t\t\t\tthis.importPath();\n\t\t\t\tthis.state = 286;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic importPath(): ImportPathContext {\n\t\tlet _localctx: ImportPathContext = new ImportPathContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 18, SolidityParser.RULE_importPath);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 290;\n\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic contractDefinition(): ContractDefinitionContext {\n\t\tlet _localctx: ContractDefinitionContext = new ContractDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 20, SolidityParser.RULE_contractDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 293;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__17) {\n\t\t\t\t{\n\t\t\t\tthis.state = 292;\n\t\t\t\tthis.match(SolidityParser.T__17);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 295;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\tthis.state = 296;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 306;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__21) {\n\t\t\t\t{\n\t\t\t\tthis.state = 297;\n\t\t\t\tthis.match(SolidityParser.T__21);\n\t\t\t\tthis.state = 298;\n\t\t\t\tthis.inheritanceSpecifier();\n\t\t\t\tthis.state = 303;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 299;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 300;\n\t\t\t\t\tthis.inheritanceSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 305;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 308;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 312;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25) | (1 << SolidityParser.T__27) | (1 << SolidityParser.T__28) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (SolidityParser.T__31 - 32)) | (1 << (SolidityParser.T__32 - 32)) | (1 << (SolidityParser.T__35 - 32)) | (1 << (SolidityParser.T__37 - 32)) | (1 << (SolidityParser.T__41 - 32)) | (1 << (SolidityParser.T__53 - 32)) | (1 << (SolidityParser.T__54 - 32)) | (1 << (SolidityParser.T__55 - 32)) | (1 << (SolidityParser.T__56 - 32)) | (1 << (SolidityParser.T__57 - 32)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)) | (1 << (SolidityParser.FallbackKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 309;\n\t\t\t\tthis.contractPart();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 314;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 315;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inheritanceSpecifier(): InheritanceSpecifierContext {\n\t\tlet _localctx: InheritanceSpecifierContext = new InheritanceSpecifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 22, SolidityParser.RULE_inheritanceSpecifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 317;\n\t\t\tthis.userDefinedTypeName();\n\t\t\tthis.state = 323;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 318;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 320;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 319;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 322;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic contractPart(): ContractPartContext {\n\t\tlet _localctx: ContractPartContext = new ContractPartContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 24, SolidityParser.RULE_contractPart);\n\t\ttry {\n\t\t\tthis.state = 334;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 325;\n\t\t\t\tthis.stateVariableDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 326;\n\t\t\t\tthis.usingForDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 327;\n\t\t\t\tthis.structDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 328;\n\t\t\t\tthis.modifierDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 329;\n\t\t\t\tthis.functionDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 330;\n\t\t\t\tthis.eventDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 331;\n\t\t\t\tthis.enumDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 332;\n\t\t\t\tthis.customErrorDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 333;\n\t\t\t\tthis.typeDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stateVariableDeclaration(): StateVariableDeclarationContext {\n\t\tlet _localctx: StateVariableDeclarationContext = new StateVariableDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 26, SolidityParser.RULE_stateVariableDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 336;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 345;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (SolidityParser.T__96 - 97)) | (1 << (SolidityParser.ConstantKeyword - 97)) | (1 << (SolidityParser.ImmutableKeyword - 97)) | (1 << (SolidityParser.InternalKeyword - 97)) | (1 << (SolidityParser.PrivateKeyword - 97)) | (1 << (SolidityParser.PublicKeyword - 97)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 343;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.PublicKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 337;\n\t\t\t\t\tthis.match(SolidityParser.PublicKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.InternalKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 338;\n\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.PrivateKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 339;\n\t\t\t\t\tthis.match(SolidityParser.PrivateKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.ConstantKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 340;\n\t\t\t\t\tthis.match(SolidityParser.ConstantKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.ImmutableKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 341;\n\t\t\t\t\tthis.match(SolidityParser.ImmutableKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__96:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 342;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 347;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 348;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 351;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__10) {\n\t\t\t\t{\n\t\t\t\tthis.state = 349;\n\t\t\t\tthis.match(SolidityParser.T__10);\n\t\t\t\tthis.state = 350;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 353;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic fileLevelConstant(): FileLevelConstantContext {\n\t\tlet _localctx: FileLevelConstantContext = new FileLevelConstantContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 28, SolidityParser.RULE_fileLevelConstant);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 355;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 356;\n\t\t\tthis.match(SolidityParser.ConstantKeyword);\n\t\t\tthis.state = 357;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 358;\n\t\t\tthis.match(SolidityParser.T__10);\n\t\t\tthis.state = 359;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 360;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext {\n\t\tlet _localctx: CustomErrorDefinitionContext = new CustomErrorDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 30, SolidityParser.RULE_customErrorDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 362;\n\t\t\tthis.match(SolidityParser.T__24);\n\t\t\tthis.state = 363;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 364;\n\t\t\tthis.parameterList();\n\t\t\tthis.state = 365;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic typeDefinition(): TypeDefinitionContext {\n\t\tlet _localctx: TypeDefinitionContext = new TypeDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 32, SolidityParser.RULE_typeDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 367;\n\t\t\tthis.match(SolidityParser.TypeKeyword);\n\t\t\tthis.state = 368;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 369;\n\t\t\tthis.match(SolidityParser.T__21);\n\t\t\tthis.state = 370;\n\t\t\tthis.elementaryTypeName();\n\t\t\tthis.state = 371;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic usingForDeclaration(): UsingForDeclarationContext {\n\t\tlet _localctx: UsingForDeclarationContext = new UsingForDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 34, SolidityParser.RULE_usingForDeclaration);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 373;\n\t\t\tthis.match(SolidityParser.T__25);\n\t\t\tthis.state = 374;\n\t\t\tthis.usingForObject();\n\t\t\tthis.state = 375;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 378;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__2:\n\t\t\t\t{\n\t\t\t\tthis.state = 376;\n\t\t\t\tthis.match(SolidityParser.T__2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t{\n\t\t\t\tthis.state = 377;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 381;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.GlobalKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 380;\n\t\t\t\tthis.match(SolidityParser.GlobalKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 383;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic usingForObject(): UsingForObjectContext {\n\t\tlet _localctx: UsingForObjectContext = new UsingForObjectContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 36, SolidityParser.RULE_usingForObject);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 397;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 385;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 386;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 387;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\tthis.state = 392;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 388;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 389;\n\t\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 394;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 395;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic structDefinition(): StructDefinitionContext {\n\t\tlet _localctx: StructDefinitionContext = new StructDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 38, SolidityParser.RULE_structDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 399;\n\t\t\tthis.match(SolidityParser.T__27);\n\t\t\tthis.state = 400;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 401;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 412;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 402;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\tthis.state = 403;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\tthis.state = 409;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 404;\n\t\t\t\t\tthis.variableDeclaration();\n\t\t\t\t\tthis.state = 405;\n\t\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 411;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 414;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierDefinition(): ModifierDefinitionContext {\n\t\tlet _localctx: ModifierDefinitionContext = new ModifierDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 40, SolidityParser.RULE_modifierDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 416;\n\t\t\tthis.match(SolidityParser.T__28);\n\t\t\tthis.state = 417;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 419;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 418;\n\t\t\t\tthis.parameterList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 425;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__96 || _la === SolidityParser.VirtualKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 423;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\tcase SolidityParser.VirtualKeyword:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 421;\n\t\t\t\t\tthis.match(SolidityParser.VirtualKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SolidityParser.T__96:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 422;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 427;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 430;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 428;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 429;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierInvocation(): ModifierInvocationContext {\n\t\tlet _localctx: ModifierInvocationContext = new ModifierInvocationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 42, SolidityParser.RULE_modifierInvocation);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 432;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 438;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 433;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 435;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 434;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 437;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionDefinition(): FunctionDefinitionContext {\n\t\tlet _localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 44, SolidityParser.RULE_functionDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 440;\n\t\t\tthis.functionDescriptor();\n\t\t\tthis.state = 441;\n\t\t\tthis.parameterList();\n\t\t\tthis.state = 442;\n\t\t\tthis.modifierList();\n\t\t\tthis.state = 444;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__30) {\n\t\t\t\t{\n\t\t\t\tthis.state = 443;\n\t\t\t\tthis.returnParameters();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 448;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 446;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 447;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionDescriptor(): FunctionDescriptorContext {\n\t\tlet _localctx: FunctionDescriptorContext = new FunctionDescriptorContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 46, SolidityParser.RULE_functionDescriptor);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 457;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__29:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 450;\n\t\t\t\tthis.match(SolidityParser.T__29);\n\t\t\t\tthis.state = 452;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 451;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 454;\n\t\t\t\tthis.match(SolidityParser.ConstructorKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.FallbackKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 455;\n\t\t\t\tthis.match(SolidityParser.FallbackKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 456;\n\t\t\t\tthis.match(SolidityParser.ReceiveKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic returnParameters(): ReturnParametersContext {\n\t\tlet _localctx: ReturnParametersContext = new ReturnParametersContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 48, SolidityParser.RULE_returnParameters);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 459;\n\t\t\tthis.match(SolidityParser.T__30);\n\t\t\tthis.state = 460;\n\t\t\tthis.parameterList();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic modifierList(): ModifierListContext {\n\t\tlet _localctx: ModifierListContext = new ModifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 50, SolidityParser.RULE_modifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 472;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.T__96 - 96)) | (1 << (SolidityParser.ConstantKeyword - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.ExternalKeyword - 96)) | (1 << (SolidityParser.InternalKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.PrivateKeyword - 96)) | (1 << (SolidityParser.PublicKeyword - 96)) | (1 << (SolidityParser.VirtualKeyword - 96)) | (1 << (SolidityParser.PureKeyword - 96)) | (1 << (SolidityParser.ViewKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 470;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 462;\n\t\t\t\t\tthis.match(SolidityParser.ExternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 463;\n\t\t\t\t\tthis.match(SolidityParser.PublicKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 464;\n\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 465;\n\t\t\t\t\tthis.match(SolidityParser.PrivateKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 5:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 466;\n\t\t\t\t\tthis.match(SolidityParser.VirtualKeyword);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 6:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 467;\n\t\t\t\t\tthis.stateMutability();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 7:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 468;\n\t\t\t\t\tthis.modifierInvocation();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 8:\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 469;\n\t\t\t\t\tthis.overrideSpecifier();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 474;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventDefinition(): EventDefinitionContext {\n\t\tlet _localctx: EventDefinitionContext = new EventDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 52, SolidityParser.RULE_eventDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 475;\n\t\t\tthis.match(SolidityParser.T__31);\n\t\t\tthis.state = 476;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 477;\n\t\t\tthis.eventParameterList();\n\t\t\tthis.state = 479;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.AnonymousKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 478;\n\t\t\t\tthis.match(SolidityParser.AnonymousKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 481;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic enumValue(): EnumValueContext {\n\t\tlet _localctx: EnumValueContext = new EnumValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 54, SolidityParser.RULE_enumValue);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 483;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic enumDefinition(): EnumDefinitionContext {\n\t\tlet _localctx: EnumDefinitionContext = new EnumDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 56, SolidityParser.RULE_enumDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 485;\n\t\t\tthis.match(SolidityParser.T__32);\n\t\t\tthis.state = 486;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 487;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 489;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 488;\n\t\t\t\tthis.enumValue();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 495;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 491;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 492;\n\t\t\t\tthis.enumValue();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 497;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 498;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic parameterList(): ParameterListContext {\n\t\tlet _localctx: ParameterListContext = new ParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 58, SolidityParser.RULE_parameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 500;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 509;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 501;\n\t\t\t\tthis.parameter();\n\t\t\t\tthis.state = 506;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 502;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 503;\n\t\t\t\t\tthis.parameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 508;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 511;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic parameter(): ParameterContext {\n\t\tlet _localctx: ParameterContext = new ParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 60, SolidityParser.RULE_parameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 513;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 515;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 47, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 514;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 518;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 517;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventParameterList(): EventParameterListContext {\n\t\tlet _localctx: EventParameterListContext = new EventParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 62, SolidityParser.RULE_eventParameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 520;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 529;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 521;\n\t\t\t\tthis.eventParameter();\n\t\t\t\tthis.state = 526;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 522;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 523;\n\t\t\t\t\tthis.eventParameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 528;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 531;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic eventParameter(): EventParameterContext {\n\t\tlet _localctx: EventParameterContext = new EventParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 64, SolidityParser.RULE_eventParameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 533;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 535;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.IndexedKeyword) {\n\t\t\t\t{\n\t\t\t\tthis.state = 534;\n\t\t\t\tthis.match(SolidityParser.IndexedKeyword);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 538;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 537;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeParameterList(): FunctionTypeParameterListContext {\n\t\tlet _localctx: FunctionTypeParameterListContext = new FunctionTypeParameterListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 66, SolidityParser.RULE_functionTypeParameterList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 540;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 549;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 541;\n\t\t\t\tthis.functionTypeParameter();\n\t\t\t\tthis.state = 546;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 542;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 543;\n\t\t\t\t\tthis.functionTypeParameter();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 548;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 551;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeParameter(): FunctionTypeParameterContext {\n\t\tlet _localctx: FunctionTypeParameterContext = new FunctionTypeParameterContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 68, SolidityParser.RULE_functionTypeParameter);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 553;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 555;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (SolidityParser.T__39 - 40)) | (1 << (SolidityParser.T__40 - 40)) | (1 << (SolidityParser.T__41 - 40)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 554;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclaration(): VariableDeclarationContext {\n\t\tlet _localctx: VariableDeclarationContext = new VariableDeclarationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 70, SolidityParser.RULE_variableDeclaration);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 557;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 559;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 56, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 558;\n\t\t\t\tthis.storageLocation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 561;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic typeName(): TypeNameContext;\n\tpublic typeName(_p: number): TypeNameContext;\n\t// @RuleVersion(0)\n\tpublic typeName(_p?: number): TypeNameContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet _localctx: TypeNameContext = new TypeNameContext(this._ctx, _parentState);\n\t\tlet _prevctx: TypeNameContext = _localctx;\n\t\tlet _startState: number = 72;\n\t\tthis.enterRecursionRule(_localctx, 72, SolidityParser.RULE_typeName, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 570;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 57, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 564;\n\t\t\t\tthis.elementaryTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 565;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 566;\n\t\t\t\tthis.mapping();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\t{\n\t\t\t\tthis.state = 567;\n\t\t\t\tthis.functionTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tthis.state = 568;\n\t\t\t\tthis.match(SolidityParser.T__35);\n\t\t\t\tthis.state = 569;\n\t\t\t\tthis.match(SolidityParser.PayableKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._ctx._stop = this._input.tryLT(-1);\n\t\t\tthis.state = 580;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = _localctx;\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t_localctx = new TypeNameContext(_parentctx, _parentState);\n\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_typeName);\n\t\t\t\t\tthis.state = 572;\n\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 573;\n\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\tthis.state = 575;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 574;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.state = 577;\n\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 582;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext {\n\t\tlet _localctx: UserDefinedTypeNameContext = new UserDefinedTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 74, SolidityParser.RULE_userDefinedTypeName);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 583;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 588;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 584;\n\t\t\t\t\tthis.match(SolidityParser.T__36);\n\t\t\t\t\tthis.state = 585;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 590;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic mappingKey(): MappingKeyContext {\n\t\tlet _localctx: MappingKeyContext = new MappingKeyContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 76, SolidityParser.RULE_mappingKey);\n\t\ttry {\n\t\t\tthis.state = 593;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 591;\n\t\t\t\tthis.elementaryTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 592;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic mapping(): MappingContext {\n\t\tlet _localctx: MappingContext = new MappingContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 78, SolidityParser.RULE_mapping);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 595;\n\t\t\tthis.match(SolidityParser.T__37);\n\t\t\tthis.state = 596;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 597;\n\t\t\tthis.mappingKey();\n\t\t\tthis.state = 598;\n\t\t\tthis.match(SolidityParser.T__38);\n\t\t\tthis.state = 599;\n\t\t\tthis.typeName(0);\n\t\t\tthis.state = 600;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionTypeName(): FunctionTypeNameContext {\n\t\tlet _localctx: FunctionTypeNameContext = new FunctionTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 80, SolidityParser.RULE_functionTypeName);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 602;\n\t\t\tthis.match(SolidityParser.T__29);\n\t\t\tthis.state = 603;\n\t\t\tthis.functionTypeParameterList();\n\t\t\tthis.state = 609;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 63, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 607;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch (this._input.LA(1)) {\n\t\t\t\t\tcase SolidityParser.InternalKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 604;\n\t\t\t\t\t\tthis.match(SolidityParser.InternalKeyword);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SolidityParser.ExternalKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 605;\n\t\t\t\t\t\tthis.match(SolidityParser.ExternalKeyword);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SolidityParser.ConstantKeyword:\n\t\t\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\t\t\tcase SolidityParser.PureKeyword:\n\t\t\t\t\tcase SolidityParser.ViewKeyword:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 606;\n\t\t\t\t\t\tthis.stateMutability();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 611;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 63, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 614;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 64, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 612;\n\t\t\t\tthis.match(SolidityParser.T__30);\n\t\t\t\tthis.state = 613;\n\t\t\t\tthis.functionTypeParameterList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic storageLocation(): StorageLocationContext {\n\t\tlet _localctx: StorageLocationContext = new StorageLocationContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 82, SolidityParser.RULE_storageLocation);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 616;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (SolidityParser.T__39 - 40)) | (1 << (SolidityParser.T__40 - 40)) | (1 << (SolidityParser.T__41 - 40)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stateMutability(): StateMutabilityContext {\n\t\tlet _localctx: StateMutabilityContext = new StateMutabilityContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 84, SolidityParser.RULE_stateMutability);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 618;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & ((1 << (SolidityParser.ConstantKeyword - 111)) | (1 << (SolidityParser.PayableKeyword - 111)) | (1 << (SolidityParser.PureKeyword - 111)) | (1 << (SolidityParser.ViewKeyword - 111)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic block(): BlockContext {\n\t\tlet _localctx: BlockContext = new BlockContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 86, SolidityParser.RULE_block);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 620;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 624;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__14 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__26 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__42 - 38)) | (1 << (SolidityParser.T__44 - 38)) | (1 << (SolidityParser.T__46 - 38)) | (1 << (SolidityParser.T__47 - 38)) | (1 << (SolidityParser.T__48 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__50 - 38)) | (1 << (SolidityParser.T__51 - 38)) | (1 << (SolidityParser.T__52 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.BreakKeyword - 96)) | (1 << (SolidityParser.ContinueKeyword - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 621;\n\t\t\t\tthis.statement();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 626;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 627;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic statement(): StatementContext {\n\t\tlet _localctx: StatementContext = new StatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 88, SolidityParser.RULE_statement);\n\t\ttry {\n\t\t\tthis.state = 644;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 629;\n\t\t\t\tthis.ifStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 630;\n\t\t\t\tthis.tryStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 631;\n\t\t\t\tthis.whileStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 632;\n\t\t\t\tthis.forStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 633;\n\t\t\t\tthis.block();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 634;\n\t\t\t\tthis.inlineAssemblyStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 635;\n\t\t\t\tthis.doWhileStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 636;\n\t\t\t\tthis.continueStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 637;\n\t\t\t\tthis.breakStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 10:\n\t\t\t\tthis.enterOuterAlt(_localctx, 10);\n\t\t\t\t{\n\t\t\t\tthis.state = 638;\n\t\t\t\tthis.returnStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 11:\n\t\t\t\tthis.enterOuterAlt(_localctx, 11);\n\t\t\t\t{\n\t\t\t\tthis.state = 639;\n\t\t\t\tthis.throwStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 12:\n\t\t\t\tthis.enterOuterAlt(_localctx, 12);\n\t\t\t\t{\n\t\t\t\tthis.state = 640;\n\t\t\t\tthis.emitStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 13:\n\t\t\t\tthis.enterOuterAlt(_localctx, 13);\n\t\t\t\t{\n\t\t\t\tthis.state = 641;\n\t\t\t\tthis.simpleStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 14);\n\t\t\t\t{\n\t\t\t\tthis.state = 642;\n\t\t\t\tthis.uncheckedStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 15:\n\t\t\t\tthis.enterOuterAlt(_localctx, 15);\n\t\t\t\t{\n\t\t\t\tthis.state = 643;\n\t\t\t\tthis.revertStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic expressionStatement(): ExpressionStatementContext {\n\t\tlet _localctx: ExpressionStatementContext = new ExpressionStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 90, SolidityParser.RULE_expressionStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 646;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 647;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic ifStatement(): IfStatementContext {\n\t\tlet _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 92, SolidityParser.RULE_ifStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 649;\n\t\t\tthis.match(SolidityParser.T__42);\n\t\t\tthis.state = 650;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 651;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 652;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 653;\n\t\t\tthis.statement();\n\t\t\tthis.state = 656;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 654;\n\t\t\t\tthis.match(SolidityParser.T__43);\n\t\t\t\tthis.state = 655;\n\t\t\t\tthis.statement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic tryStatement(): TryStatementContext {\n\t\tlet _localctx: TryStatementContext = new TryStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 94, SolidityParser.RULE_tryStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 658;\n\t\t\tthis.match(SolidityParser.T__44);\n\t\t\tthis.state = 659;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 661;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__30) {\n\t\t\t\t{\n\t\t\t\tthis.state = 660;\n\t\t\t\tthis.returnParameters();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 663;\n\t\t\tthis.block();\n\t\t\tthis.state = 665;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tdo {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 664;\n\t\t\t\tthis.catchClause();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 667;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t} while (_la === SolidityParser.T__45);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic catchClause(): CatchClauseContext {\n\t\tlet _localctx: CatchClauseContext = new CatchClauseContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 96, SolidityParser.RULE_catchClause);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 669;\n\t\t\tthis.match(SolidityParser.T__45);\n\t\t\tthis.state = 674;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24))) !== 0) || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 671;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 670;\n\t\t\t\t\tthis.identifier();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 673;\n\t\t\t\tthis.parameterList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 676;\n\t\t\tthis.block();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic whileStatement(): WhileStatementContext {\n\t\tlet _localctx: WhileStatementContext = new WhileStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 98, SolidityParser.RULE_whileStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 678;\n\t\t\tthis.match(SolidityParser.T__46);\n\t\t\tthis.state = 679;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 680;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 681;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 682;\n\t\t\tthis.statement();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic simpleStatement(): SimpleStatementContext {\n\t\tlet _localctx: SimpleStatementContext = new SimpleStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 100, SolidityParser.RULE_simpleStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 686;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 72, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 684;\n\t\t\t\tthis.variableDeclarationStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 685;\n\t\t\t\tthis.expressionStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic uncheckedStatement(): UncheckedStatementContext {\n\t\tlet _localctx: UncheckedStatementContext = new UncheckedStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 102, SolidityParser.RULE_uncheckedStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 688;\n\t\t\tthis.match(SolidityParser.T__47);\n\t\t\tthis.state = 689;\n\t\t\tthis.block();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic forStatement(): ForStatementContext {\n\t\tlet _localctx: ForStatementContext = new ForStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 104, SolidityParser.RULE_forStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 691;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 692;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 695;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 693;\n\t\t\t\tthis.simpleStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 694;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 699;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 697;\n\t\t\t\tthis.expressionStatement();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__1:\n\t\t\t\t{\n\t\t\t\tthis.state = 698;\n\t\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 702;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 701;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 704;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 705;\n\t\t\tthis.statement();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inlineAssemblyStatement(): InlineAssemblyStatementContext {\n\t\tlet _localctx: InlineAssemblyStatementContext = new InlineAssemblyStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 106, SolidityParser.RULE_inlineAssemblyStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 707;\n\t\t\tthis.match(SolidityParser.T__48);\n\t\t\tthis.state = 709;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.StringLiteralFragment) {\n\t\t\t\t{\n\t\t\t\tthis.state = 708;\n\t\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 715;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 711;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 712;\n\t\t\t\tthis.inlineAssemblyStatementFlag();\n\t\t\t\tthis.state = 713;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 717;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext {\n\t\tlet _localctx: InlineAssemblyStatementFlagContext = new InlineAssemblyStatementFlagContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 108, SolidityParser.RULE_inlineAssemblyStatementFlag);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 719;\n\t\t\tthis.stringLiteral();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic doWhileStatement(): DoWhileStatementContext {\n\t\tlet _localctx: DoWhileStatementContext = new DoWhileStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 110, SolidityParser.RULE_doWhileStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 721;\n\t\t\tthis.match(SolidityParser.T__49);\n\t\t\tthis.state = 722;\n\t\t\tthis.statement();\n\t\t\tthis.state = 723;\n\t\t\tthis.match(SolidityParser.T__46);\n\t\t\tthis.state = 724;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 725;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 726;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 727;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic continueStatement(): ContinueStatementContext {\n\t\tlet _localctx: ContinueStatementContext = new ContinueStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 112, SolidityParser.RULE_continueStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 729;\n\t\t\tthis.match(SolidityParser.ContinueKeyword);\n\t\t\tthis.state = 730;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic breakStatement(): BreakStatementContext {\n\t\tlet _localctx: BreakStatementContext = new BreakStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 114, SolidityParser.RULE_breakStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 732;\n\t\t\tthis.match(SolidityParser.BreakKeyword);\n\t\t\tthis.state = 733;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic returnStatement(): ReturnStatementContext {\n\t\tlet _localctx: ReturnStatementContext = new ReturnStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 116, SolidityParser.RULE_returnStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 735;\n\t\t\tthis.match(SolidityParser.T__50);\n\t\t\tthis.state = 737;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\tthis.state = 736;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 739;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic throwStatement(): ThrowStatementContext {\n\t\tlet _localctx: ThrowStatementContext = new ThrowStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 118, SolidityParser.RULE_throwStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 741;\n\t\t\tthis.match(SolidityParser.T__51);\n\t\t\tthis.state = 742;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic emitStatement(): EmitStatementContext {\n\t\tlet _localctx: EmitStatementContext = new EmitStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 120, SolidityParser.RULE_emitStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 744;\n\t\t\tthis.match(SolidityParser.T__52);\n\t\t\tthis.state = 745;\n\t\t\tthis.functionCall();\n\t\t\tthis.state = 746;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic revertStatement(): RevertStatementContext {\n\t\tlet _localctx: RevertStatementContext = new RevertStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 122, SolidityParser.RULE_revertStatement);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 748;\n\t\t\tthis.match(SolidityParser.T__53);\n\t\t\tthis.state = 749;\n\t\t\tthis.functionCall();\n\t\t\tthis.state = 750;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclarationStatement(): VariableDeclarationStatementContext {\n\t\tlet _localctx: VariableDeclarationStatementContext = new VariableDeclarationStatementContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 124, SolidityParser.RULE_variableDeclarationStatement);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 759;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 79, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 752;\n\t\t\t\tthis.match(SolidityParser.T__54);\n\t\t\t\tthis.state = 753;\n\t\t\t\tthis.identifierList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 754;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 755;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 756;\n\t\t\t\tthis.variableDeclarationList();\n\t\t\t\tthis.state = 757;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.state = 763;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__10) {\n\t\t\t\t{\n\t\t\t\tthis.state = 761;\n\t\t\t\tthis.match(SolidityParser.T__10);\n\t\t\t\tthis.state = 762;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 765;\n\t\t\tthis.match(SolidityParser.T__1);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic variableDeclarationList(): VariableDeclarationListContext {\n\t\tlet _localctx: VariableDeclarationListContext = new VariableDeclarationListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 126, SolidityParser.RULE_variableDeclarationList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 768;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 767;\n\t\t\t\tthis.variableDeclaration();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 776;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 770;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 772;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 771;\n\t\t\t\t\tthis.variableDeclaration();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 778;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic identifierList(): IdentifierListContext {\n\t\tlet _localctx: IdentifierListContext = new IdentifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 128, SolidityParser.RULE_identifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 779;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 786;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 781;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 780;\n\t\t\t\t\t\tthis.identifier();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.state = 783;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 788;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 790;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 789;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 792;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic elementaryTypeName(): ElementaryTypeNameContext {\n\t\tlet _localctx: ElementaryTypeNameContext = new ElementaryTypeNameContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 130, SolidityParser.RULE_elementaryTypeName);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 794;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__54 - 36)) | (1 << (SolidityParser.T__55 - 36)) | (1 << (SolidityParser.T__56 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (SolidityParser.Int - 98)) | (1 << (SolidityParser.Uint - 98)) | (1 << (SolidityParser.Byte - 98)) | (1 << (SolidityParser.Fixed - 98)) | (1 << (SolidityParser.Ufixed - 98)))) !== 0))) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic expression(): ExpressionContext;\n\tpublic expression(_p: number): ExpressionContext;\n\t// @RuleVersion(0)\n\tpublic expression(_p?: number): ExpressionContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet _localctx: ExpressionContext = new ExpressionContext(this._ctx, _parentState);\n\t\tlet _prevctx: ExpressionContext = _localctx;\n\t\tlet _startState: number = 132;\n\t\tthis.enterRecursionRule(_localctx, 132, SolidityParser.RULE_expression, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 814;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 87, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 797;\n\t\t\t\tthis.match(SolidityParser.T__60);\n\t\t\t\tthis.state = 798;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\t{\n\t\t\t\tthis.state = 799;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 800;\n\t\t\t\tthis.expression(0);\n\t\t\t\tthis.state = 801;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\t{\n\t\t\t\tthis.state = 803;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__58 || _la === SolidityParser.T__59)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 804;\n\t\t\t\tthis.expression(19);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\t{\n\t\t\t\tthis.state = 805;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__62 || _la === SolidityParser.T__63)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 806;\n\t\t\t\tthis.expression(18);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tthis.state = 807;\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (!(_la === SolidityParser.T__64 || _la === SolidityParser.T__65)) {\n\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\tthis.consume();\n\t\t\t\t}\n\t\t\t\tthis.state = 808;\n\t\t\t\tthis.expression(17);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\t{\n\t\t\t\tthis.state = 809;\n\t\t\t\tthis.match(SolidityParser.T__66);\n\t\t\t\tthis.state = 810;\n\t\t\t\tthis.expression(16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\t{\n\t\t\t\tthis.state = 811;\n\t\t\t\tthis.match(SolidityParser.T__5);\n\t\t\t\tthis.state = 812;\n\t\t\t\tthis.expression(15);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\t{\n\t\t\t\tthis.state = 813;\n\t\t\t\tthis.primaryExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._ctx._stop = this._input.tryLT(-1);\n\t\t\tthis.state = 890;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = _localctx;\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 888;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 90, this._ctx) ) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 816;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 14))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 14)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 817;\n\t\t\t\t\t\tthis.match(SolidityParser.T__67);\n\t\t\t\t\t\tthis.state = 818;\n\t\t\t\t\t\tthis.expression(15);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 819;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 13))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 13)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 820;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__2 || _la === SolidityParser.T__68 || _la === SolidityParser.T__69)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 821;\n\t\t\t\t\t\tthis.expression(14);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 822;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 12))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 12)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 823;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__62 || _la === SolidityParser.T__63)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 824;\n\t\t\t\t\t\tthis.expression(13);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 825;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 11))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 11)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 826;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__70 || _la === SolidityParser.T__71)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 827;\n\t\t\t\t\t\tthis.expression(12);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 828;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 10))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 10)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 829;\n\t\t\t\t\t\tthis.match(SolidityParser.T__72);\n\t\t\t\t\t\tthis.state = 830;\n\t\t\t\t\t\tthis.expression(11);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 831;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 9))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 9)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 832;\n\t\t\t\t\t\tthis.match(SolidityParser.T__4);\n\t\t\t\t\t\tthis.state = 833;\n\t\t\t\t\t\tthis.expression(10);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 834;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 8))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 8)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 835;\n\t\t\t\t\t\tthis.match(SolidityParser.T__73);\n\t\t\t\t\t\tthis.state = 836;\n\t\t\t\t\t\tthis.expression(9);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 837;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 7))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 7)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 838;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9))) !== 0))) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 839;\n\t\t\t\t\t\tthis.expression(8);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 840;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 6))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 6)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 841;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__74 || _la === SolidityParser.T__75)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 842;\n\t\t\t\t\t\tthis.expression(7);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 843;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 5))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 5)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 844;\n\t\t\t\t\t\tthis.match(SolidityParser.T__76);\n\t\t\t\t\t\tthis.state = 845;\n\t\t\t\t\t\tthis.expression(6);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 11:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 846;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 4))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 4)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 847;\n\t\t\t\t\t\tthis.match(SolidityParser.T__3);\n\t\t\t\t\t\tthis.state = 848;\n\t\t\t\t\t\tthis.expression(5);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 849;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 850;\n\t\t\t\t\t\tthis.match(SolidityParser.T__77);\n\t\t\t\t\t\tthis.state = 851;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\tthis.state = 852;\n\t\t\t\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t\t\t\tthis.state = 853;\n\t\t\t\t\t\tthis.expression(4);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 855;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 2))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 2)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 856;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__10 || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & ((1 << (SolidityParser.T__78 - 79)) | (1 << (SolidityParser.T__79 - 79)) | (1 << (SolidityParser.T__80 - 79)) | (1 << (SolidityParser.T__81 - 79)) | (1 << (SolidityParser.T__82 - 79)) | (1 << (SolidityParser.T__83 - 79)) | (1 << (SolidityParser.T__84 - 79)) | (1 << (SolidityParser.T__85 - 79)) | (1 << (SolidityParser.T__86 - 79)) | (1 << (SolidityParser.T__87 - 79)))) !== 0))) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 857;\n\t\t\t\t\t\tthis.expression(3);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 14:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 858;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 27))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 27)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 859;\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (!(_la === SolidityParser.T__58 || _la === SolidityParser.T__59)) {\n\t\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t\tthis.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 15:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 860;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 25))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 25)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 861;\n\t\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\t\tthis.state = 862;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\tthis.state = 863;\n\t\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 865;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 24))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 24)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 866;\n\t\t\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\t\t\tthis.state = 868;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.state = 867;\n\t\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.state = 870;\n\t\t\t\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t\t\t\tthis.state = 872;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.state = 871;\n\t\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.state = 874;\n\t\t\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 17:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 875;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 23))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 23)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 876;\n\t\t\t\t\t\tthis.match(SolidityParser.T__36);\n\t\t\t\t\t\tthis.state = 877;\n\t\t\t\t\t\tthis.identifier();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 18:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 878;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 22))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 22)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 879;\n\t\t\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\t\t\tthis.state = 880;\n\t\t\t\t\t\tthis.nameValueList();\n\t\t\t\t\t\tthis.state = 881;\n\t\t\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 19:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t_localctx = new ExpressionContext(_parentctx, _parentState);\n\t\t\t\t\t\tthis.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression);\n\t\t\t\t\t\tthis.state = 883;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 21))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 21)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 884;\n\t\t\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\t\t\tthis.state = 885;\n\t\t\t\t\t\tthis.functionCallArguments();\n\t\t\t\t\t\tthis.state = 886;\n\t\t\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 892;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic primaryExpression(): PrimaryExpressionContext {\n\t\tlet _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 134, SolidityParser.RULE_primaryExpression);\n\t\ttry {\n\t\t\tthis.state = 902;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 92, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 893;\n\t\t\t\tthis.match(SolidityParser.BooleanLiteral);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 894;\n\t\t\t\tthis.numberLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 895;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 896;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 897;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 898;\n\t\t\t\tthis.match(SolidityParser.TypeKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 899;\n\t\t\t\tthis.match(SolidityParser.PayableKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 900;\n\t\t\t\tthis.tupleExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 901;\n\t\t\t\tthis.typeName(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic expressionList(): ExpressionListContext {\n\t\tlet _localctx: ExpressionListContext = new ExpressionListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 136, SolidityParser.RULE_expressionList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 904;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 909;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 905;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 906;\n\t\t\t\tthis.expression(0);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 911;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nameValueList(): NameValueListContext {\n\t\tlet _localctx: NameValueListContext = new NameValueListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 138, SolidityParser.RULE_nameValueList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 912;\n\t\t\tthis.nameValue();\n\t\t\tthis.state = 917;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 913;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 914;\n\t\t\t\t\tthis.nameValue();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 919;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);\n\t\t\t}\n\t\t\tthis.state = 921;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\tthis.state = 920;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nameValue(): NameValueContext {\n\t\tlet _localctx: NameValueContext = new NameValueContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 140, SolidityParser.RULE_nameValue);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 923;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 924;\n\t\t\tthis.match(SolidityParser.T__61);\n\t\t\tthis.state = 925;\n\t\t\tthis.expression(0);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCallArguments(): FunctionCallArgumentsContext {\n\t\tlet _localctx: FunctionCallArgumentsContext = new FunctionCallArgumentsContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 142, SolidityParser.RULE_functionCallArguments);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 935;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 927;\n\t\t\t\tthis.match(SolidityParser.T__14);\n\t\t\t\tthis.state = 929;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 928;\n\t\t\t\t\tthis.nameValueList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 931;\n\t\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__5:\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__22:\n\t\t\tcase SolidityParser.T__23:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__29:\n\t\t\tcase SolidityParser.T__33:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__37:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__54:\n\t\t\tcase SolidityParser.T__55:\n\t\t\tcase SolidityParser.T__56:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__58:\n\t\t\tcase SolidityParser.T__59:\n\t\t\tcase SolidityParser.T__60:\n\t\t\tcase SolidityParser.T__62:\n\t\t\tcase SolidityParser.T__63:\n\t\t\tcase SolidityParser.T__64:\n\t\t\tcase SolidityParser.T__65:\n\t\t\tcase SolidityParser.T__66:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.Int:\n\t\t\tcase SolidityParser.Uint:\n\t\t\tcase SolidityParser.Byte:\n\t\t\tcase SolidityParser.Fixed:\n\t\t\tcase SolidityParser.Ufixed:\n\t\t\tcase SolidityParser.BooleanLiteral:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.TypeKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 933;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 932;\n\t\t\t\t\tthis.expressionList();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCall(): FunctionCallContext {\n\t\tlet _localctx: FunctionCallContext = new FunctionCallContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 144, SolidityParser.RULE_functionCall);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 937;\n\t\t\tthis.expression(0);\n\t\t\tthis.state = 938;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 939;\n\t\t\tthis.functionCallArguments();\n\t\t\tthis.state = 940;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\tlet _localctx: AssemblyBlockContext = new AssemblyBlockContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 146, SolidityParser.RULE_assemblyBlock);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 942;\n\t\t\tthis.match(SolidityParser.T__14);\n\t\t\tthis.state = 946;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__14) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__26) | (1 << SolidityParser.T__29))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__42 - 36)) | (1 << (SolidityParser.T__48 - 36)) | (1 << (SolidityParser.T__50 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 89)) & ~0x1F) === 0 && ((1 << (_la - 89)) & ((1 << (SolidityParser.T__88 - 89)) | (1 << (SolidityParser.T__91 - 89)) | (1 << (SolidityParser.T__95 - 89)) | (1 << (SolidityParser.DecimalNumber - 89)) | (1 << (SolidityParser.HexNumber - 89)) | (1 << (SolidityParser.HexLiteralFragment - 89)) | (1 << (SolidityParser.BreakKeyword - 89)) | (1 << (SolidityParser.ContinueKeyword - 89)) | (1 << (SolidityParser.LeaveKeyword - 89)) | (1 << (SolidityParser.PayableKeyword - 89)))) !== 0) || ((((_la - 126)) & ~0x1F) === 0 && ((1 << (_la - 126)) & ((1 << (SolidityParser.ConstructorKeyword - 126)) | (1 << (SolidityParser.ReceiveKeyword - 126)) | (1 << (SolidityParser.Identifier - 126)) | (1 << (SolidityParser.StringLiteralFragment - 126)))) !== 0)) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 943;\n\t\t\t\tthis.assemblyItem();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 948;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\tthis.state = 949;\n\t\t\tthis.match(SolidityParser.T__16);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyItem(): AssemblyItemContext {\n\t\tlet _localctx: AssemblyItemContext = new AssemblyItemContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 148, SolidityParser.RULE_assemblyItem);\n\t\ttry {\n\t\t\tthis.state = 969;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 100, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 951;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 952;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 953;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 954;\n\t\t\t\tthis.assemblyLocalDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(_localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 955;\n\t\t\t\tthis.assemblyAssignment();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 6:\n\t\t\t\tthis.enterOuterAlt(_localctx, 6);\n\t\t\t\t{\n\t\t\t\tthis.state = 956;\n\t\t\t\tthis.assemblyStackAssignment();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 7:\n\t\t\t\tthis.enterOuterAlt(_localctx, 7);\n\t\t\t\t{\n\t\t\t\tthis.state = 957;\n\t\t\t\tthis.labelDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 8:\n\t\t\t\tthis.enterOuterAlt(_localctx, 8);\n\t\t\t\t{\n\t\t\t\tthis.state = 958;\n\t\t\t\tthis.assemblySwitch();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 9:\n\t\t\t\tthis.enterOuterAlt(_localctx, 9);\n\t\t\t\t{\n\t\t\t\tthis.state = 959;\n\t\t\t\tthis.assemblyFunctionDefinition();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 10:\n\t\t\t\tthis.enterOuterAlt(_localctx, 10);\n\t\t\t\t{\n\t\t\t\tthis.state = 960;\n\t\t\t\tthis.assemblyFor();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 11:\n\t\t\t\tthis.enterOuterAlt(_localctx, 11);\n\t\t\t\t{\n\t\t\t\tthis.state = 961;\n\t\t\t\tthis.assemblyIf();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 12:\n\t\t\t\tthis.enterOuterAlt(_localctx, 12);\n\t\t\t\t{\n\t\t\t\tthis.state = 962;\n\t\t\t\tthis.match(SolidityParser.BreakKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 13:\n\t\t\t\tthis.enterOuterAlt(_localctx, 13);\n\t\t\t\t{\n\t\t\t\tthis.state = 963;\n\t\t\t\tthis.match(SolidityParser.ContinueKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 14:\n\t\t\t\tthis.enterOuterAlt(_localctx, 14);\n\t\t\t\t{\n\t\t\t\tthis.state = 964;\n\t\t\t\tthis.match(SolidityParser.LeaveKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 15:\n\t\t\t\tthis.enterOuterAlt(_localctx, 15);\n\t\t\t\t{\n\t\t\t\tthis.state = 965;\n\t\t\t\tthis.subAssembly();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 16:\n\t\t\t\tthis.enterOuterAlt(_localctx, 16);\n\t\t\t\t{\n\t\t\t\tthis.state = 966;\n\t\t\t\tthis.numberLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 17:\n\t\t\t\tthis.enterOuterAlt(_localctx, 17);\n\t\t\t\t{\n\t\t\t\tthis.state = 967;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 18:\n\t\t\t\tthis.enterOuterAlt(_localctx, 18);\n\t\t\t\t{\n\t\t\t\tthis.state = 968;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\tlet _localctx: AssemblyExpressionContext = new AssemblyExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 150, SolidityParser.RULE_assemblyExpression);\n\t\ttry {\n\t\t\tthis.state = 974;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 101, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 971;\n\t\t\t\tthis.assemblyCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 972;\n\t\t\t\tthis.assemblyLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 973;\n\t\t\t\tthis.assemblyMember();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyMember(): AssemblyMemberContext {\n\t\tlet _localctx: AssemblyMemberContext = new AssemblyMemberContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 152, SolidityParser.RULE_assemblyMember);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 976;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 977;\n\t\t\tthis.match(SolidityParser.T__36);\n\t\t\tthis.state = 978;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyCall(): AssemblyCallContext {\n\t\tlet _localctx: AssemblyCallContext = new AssemblyCallContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 154, SolidityParser.RULE_assemblyCall);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 984;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__50:\n\t\t\t\t{\n\t\t\t\tthis.state = 980;\n\t\t\t\tthis.match(SolidityParser.T__50);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__35:\n\t\t\t\t{\n\t\t\t\tthis.state = 981;\n\t\t\t\tthis.match(SolidityParser.T__35);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__57:\n\t\t\t\t{\n\t\t\t\tthis.state = 982;\n\t\t\t\tthis.match(SolidityParser.T__57);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\t\t{\n\t\t\t\tthis.state = 983;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 998;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 986;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 988;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__41 - 36)) | (1 << (SolidityParser.T__50 - 36)) | (1 << (SolidityParser.T__53 - 36)) | (1 << (SolidityParser.T__57 - 36)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 987;\n\t\t\t\t\tthis.assemblyExpression();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 994;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 990;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 991;\n\t\t\t\t\tthis.assemblyExpression();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 996;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 997;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyLocalDefinition(): AssemblyLocalDefinitionContext {\n\t\tlet _localctx: AssemblyLocalDefinitionContext = new AssemblyLocalDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 156, SolidityParser.RULE_assemblyLocalDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1000;\n\t\t\tthis.match(SolidityParser.T__88);\n\t\t\tthis.state = 1001;\n\t\t\tthis.assemblyIdentifierOrList();\n\t\t\tthis.state = 1004;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__89) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1002;\n\t\t\t\tthis.match(SolidityParser.T__89);\n\t\t\t\tthis.state = 1003;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyAssignment(): AssemblyAssignmentContext {\n\t\tlet _localctx: AssemblyAssignmentContext = new AssemblyAssignmentContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 158, SolidityParser.RULE_assemblyAssignment);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1006;\n\t\t\tthis.assemblyIdentifierOrList();\n\t\t\tthis.state = 1007;\n\t\t\tthis.match(SolidityParser.T__89);\n\t\t\tthis.state = 1008;\n\t\t\tthis.assemblyExpression();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\tlet _localctx: AssemblyIdentifierOrListContext = new AssemblyIdentifierOrListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 160, SolidityParser.RULE_assemblyIdentifierOrList);\n\t\ttry {\n\t\t\tthis.state = 1016;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 107, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1010;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1011;\n\t\t\t\tthis.assemblyMember();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 1012;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 1013;\n\t\t\t\tthis.assemblyIdentifierList();\n\t\t\t\tthis.state = 1014;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext {\n\t\tlet _localctx: AssemblyIdentifierListContext = new AssemblyIdentifierListContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 162, SolidityParser.RULE_assemblyIdentifierList);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1018;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1023;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 1019;\n\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\tthis.state = 1020;\n\t\t\t\tthis.identifier();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1025;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyStackAssignment(): AssemblyStackAssignmentContext {\n\t\tlet _localctx: AssemblyStackAssignmentContext = new AssemblyStackAssignmentContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 164, SolidityParser.RULE_assemblyStackAssignment);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1026;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1027;\n\t\t\tthis.match(SolidityParser.T__90);\n\t\t\tthis.state = 1028;\n\t\t\tthis.identifier();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic labelDefinition(): LabelDefinitionContext {\n\t\tlet _localctx: LabelDefinitionContext = new LabelDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 166, SolidityParser.RULE_labelDefinition);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1030;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1031;\n\t\t\tthis.match(SolidityParser.T__61);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblySwitch(): AssemblySwitchContext {\n\t\tlet _localctx: AssemblySwitchContext = new AssemblySwitchContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 168, SolidityParser.RULE_assemblySwitch);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1033;\n\t\t\tthis.match(SolidityParser.T__91);\n\t\t\tthis.state = 1034;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1038;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\twhile (_la === SolidityParser.T__92 || _la === SolidityParser.T__93) {\n\t\t\t\t{\n\t\t\t\t{\n\t\t\t\tthis.state = 1035;\n\t\t\t\tthis.assemblyCase();\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1040;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyCase(): AssemblyCaseContext {\n\t\tlet _localctx: AssemblyCaseContext = new AssemblyCaseContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 170, SolidityParser.RULE_assemblyCase);\n\t\ttry {\n\t\t\tthis.state = 1047;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__92:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1041;\n\t\t\t\tthis.match(SolidityParser.T__92);\n\t\t\t\tthis.state = 1042;\n\t\t\t\tthis.assemblyLiteral();\n\t\t\t\tthis.state = 1043;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__93:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1045;\n\t\t\t\tthis.match(SolidityParser.T__93);\n\t\t\t\tthis.state = 1046;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext {\n\t\tlet _localctx: AssemblyFunctionDefinitionContext = new AssemblyFunctionDefinitionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 172, SolidityParser.RULE_assemblyFunctionDefinition);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1049;\n\t\t\tthis.match(SolidityParser.T__29);\n\t\t\tthis.state = 1050;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1051;\n\t\t\tthis.match(SolidityParser.T__22);\n\t\t\tthis.state = 1053;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1052;\n\t\t\t\tthis.assemblyIdentifierList();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 1055;\n\t\t\tthis.match(SolidityParser.T__23);\n\t\t\tthis.state = 1057;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__94) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1056;\n\t\t\t\tthis.assemblyFunctionReturns();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state = 1059;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFunctionReturns(): AssemblyFunctionReturnsContext {\n\t\tlet _localctx: AssemblyFunctionReturnsContext = new AssemblyFunctionReturnsContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 174, SolidityParser.RULE_assemblyFunctionReturns);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\t{\n\t\t\tthis.state = 1061;\n\t\t\tthis.match(SolidityParser.T__94);\n\t\t\tthis.state = 1062;\n\t\t\tthis.assemblyIdentifierList();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyFor(): AssemblyForContext {\n\t\tlet _localctx: AssemblyForContext = new AssemblyForContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 176, SolidityParser.RULE_assemblyFor);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1064;\n\t\t\tthis.match(SolidityParser.T__26);\n\t\t\tthis.state = 1067;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 1065;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__50:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 1066;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 1069;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1072;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__14:\n\t\t\t\t{\n\t\t\t\tthis.state = 1070;\n\t\t\t\tthis.assemblyBlock();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__13:\n\t\t\tcase SolidityParser.T__24:\n\t\t\tcase SolidityParser.T__35:\n\t\t\tcase SolidityParser.T__41:\n\t\t\tcase SolidityParser.T__50:\n\t\t\tcase SolidityParser.T__53:\n\t\t\tcase SolidityParser.T__57:\n\t\t\tcase SolidityParser.T__95:\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\tcase SolidityParser.LeaveKeyword:\n\t\t\tcase SolidityParser.PayableKeyword:\n\t\t\tcase SolidityParser.ConstructorKeyword:\n\t\t\tcase SolidityParser.ReceiveKeyword:\n\t\t\tcase SolidityParser.Identifier:\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\t{\n\t\t\t\tthis.state = 1071;\n\t\t\t\tthis.assemblyExpression();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis.state = 1074;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyIf(): AssemblyIfContext {\n\t\tlet _localctx: AssemblyIfContext = new AssemblyIfContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 178, SolidityParser.RULE_assemblyIf);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1076;\n\t\t\tthis.match(SolidityParser.T__42);\n\t\t\tthis.state = 1077;\n\t\t\tthis.assemblyExpression();\n\t\t\tthis.state = 1078;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic assemblyLiteral(): AssemblyLiteralContext {\n\t\tlet _localctx: AssemblyLiteralContext = new AssemblyLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 180, SolidityParser.RULE_assemblyLiteral);\n\t\ttry {\n\t\t\tthis.state = 1084;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.StringLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1080;\n\t\t\t\tthis.stringLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.DecimalNumber:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1081;\n\t\t\t\tthis.match(SolidityParser.DecimalNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.HexNumber:\n\t\t\t\tthis.enterOuterAlt(_localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 1082;\n\t\t\t\tthis.match(SolidityParser.HexNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.HexLiteralFragment:\n\t\t\t\tthis.enterOuterAlt(_localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 1083;\n\t\t\t\tthis.hexLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic subAssembly(): SubAssemblyContext {\n\t\tlet _localctx: SubAssemblyContext = new SubAssemblyContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 182, SolidityParser.RULE_subAssembly);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1086;\n\t\t\tthis.match(SolidityParser.T__48);\n\t\t\tthis.state = 1087;\n\t\t\tthis.identifier();\n\t\t\tthis.state = 1088;\n\t\t\tthis.assemblyBlock();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic tupleExpression(): TupleExpressionContext {\n\t\tlet _localctx: TupleExpressionContext = new TupleExpressionContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 184, SolidityParser.RULE_tupleExpression);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 1116;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase SolidityParser.T__22:\n\t\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 1090;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\t{\n\t\t\t\tthis.state = 1092;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1091;\n\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 1100;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1094;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 1096;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 1095;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 1102;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 1103;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SolidityParser.T__33:\n\t\t\t\tthis.enterOuterAlt(_localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 1104;\n\t\t\t\tthis.match(SolidityParser.T__33);\n\t\t\t\tthis.state = 1113;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (((((_la - 6)) & ~0x1F) === 0 && ((1 << (_la - 6)) & ((1 << (SolidityParser.T__5 - 6)) | (1 << (SolidityParser.T__13 - 6)) | (1 << (SolidityParser.T__22 - 6)) | (1 << (SolidityParser.T__24 - 6)) | (1 << (SolidityParser.T__29 - 6)) | (1 << (SolidityParser.T__33 - 6)) | (1 << (SolidityParser.T__35 - 6)))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__53 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.Int - 96)) | (1 << (SolidityParser.Uint - 96)) | (1 << (SolidityParser.Byte - 96)) | (1 << (SolidityParser.Fixed - 96)) | (1 << (SolidityParser.Ufixed - 96)) | (1 << (SolidityParser.BooleanLiteral - 96)) | (1 << (SolidityParser.DecimalNumber - 96)) | (1 << (SolidityParser.HexNumber - 96)) | (1 << (SolidityParser.HexLiteralFragment - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.TypeKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & ((1 << (SolidityParser.ReceiveKeyword - 128)) | (1 << (SolidityParser.Identifier - 128)) | (1 << (SolidityParser.StringLiteralFragment - 128)))) !== 0)) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1105;\n\t\t\t\t\tthis.expression(0);\n\t\t\t\t\tthis.state = 1110;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\tthis.state = 1106;\n\t\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\t\tthis.state = 1107;\n\t\t\t\t\t\tthis.expression(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 1112;\n\t\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 1115;\n\t\t\t\tthis.match(SolidityParser.T__34);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic numberLiteral(): NumberLiteralContext {\n\t\tlet _localctx: NumberLiteralContext = new NumberLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 186, SolidityParser.RULE_numberLiteral);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1118;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(_la === SolidityParser.DecimalNumber || _la === SolidityParser.HexNumber)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\tthis.state = 1120;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this.interpreter.adaptivePredict(this._input, 122, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\t{\n\t\t\t\tthis.state = 1119;\n\t\t\t\tthis.match(SolidityParser.NumberUnit);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic identifier(): IdentifierContext {\n\t\tlet _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 188, SolidityParser.RULE_identifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1122;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (!(_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || _la === SolidityParser.T__41 || _la === SolidityParser.T__53 || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.LeaveKeyword - 96)) | (1 << (SolidityParser.PayableKeyword - 96)) | (1 << (SolidityParser.ConstructorKeyword - 96)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t} else {\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis.matchedEOF = true;\n\t\t\t\t}\n\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\tthis.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic hexLiteral(): HexLiteralContext {\n\t\tlet _localctx: HexLiteralContext = new HexLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 190, SolidityParser.RULE_hexLiteral);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1125;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = 1;\n\t\t\tdo {\n\t\t\t\tswitch (_alt) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1124;\n\t\t\t\t\tthis.match(SolidityParser.HexLiteralFragment);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 1127;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 123, this._ctx);\n\t\t\t} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic overrideSpecifier(): OverrideSpecifierContext {\n\t\tlet _localctx: OverrideSpecifierContext = new OverrideSpecifierContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 192, SolidityParser.RULE_overrideSpecifier);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1129;\n\t\t\tthis.match(SolidityParser.T__96);\n\t\t\tthis.state = 1141;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_la = this._input.LA(1);\n\t\t\tif (_la === SolidityParser.T__22) {\n\t\t\t\t{\n\t\t\t\tthis.state = 1130;\n\t\t\t\tthis.match(SolidityParser.T__22);\n\t\t\t\tthis.state = 1131;\n\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\tthis.state = 1136;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\twhile (_la === SolidityParser.T__15) {\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1132;\n\t\t\t\t\tthis.match(SolidityParser.T__15);\n\t\t\t\t\tthis.state = 1133;\n\t\t\t\t\tthis.userDefinedTypeName();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 1138;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t}\n\t\t\t\tthis.state = 1139;\n\t\t\t\tthis.match(SolidityParser.T__23);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic stringLiteral(): StringLiteralContext {\n\t\tlet _localctx: StringLiteralContext = new StringLiteralContext(this._ctx, this.state);\n\t\tthis.enterRule(_localctx, 194, SolidityParser.RULE_stringLiteral);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(_localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 1144;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = 1;\n\t\t\tdo {\n\t\t\t\tswitch (_alt) {\n\t\t\t\tcase 1:\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 1143;\n\t\t\t\t\tthis.match(SolidityParser.StringLiteralFragment);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t\t}\n\t\t\t\tthis.state = 1146;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this.interpreter.adaptivePredict(this._input, 126, this._ctx);\n\t\t\t} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\t_localctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn _localctx;\n\t}\n\n\tpublic sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {\n\t\tswitch (ruleIndex) {\n\t\tcase 36:\n\t\t\treturn this.typeName_sempred(_localctx as TypeNameContext, predIndex);\n\n\t\tcase 66:\n\t\t\treturn this.expression_sempred(_localctx as ExpressionContext, predIndex);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate typeName_sempred(_localctx: TypeNameContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 0:\n\t\t\treturn this.precpred(this._ctx, 3);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate expression_sempred(_localctx: ExpressionContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 1:\n\t\t\treturn this.precpred(this._ctx, 14);\n\n\t\tcase 2:\n\t\t\treturn this.precpred(this._ctx, 13);\n\n\t\tcase 3:\n\t\t\treturn this.precpred(this._ctx, 12);\n\n\t\tcase 4:\n\t\t\treturn this.precpred(this._ctx, 11);\n\n\t\tcase 5:\n\t\t\treturn this.precpred(this._ctx, 10);\n\n\t\tcase 6:\n\t\t\treturn this.precpred(this._ctx, 9);\n\n\t\tcase 7:\n\t\t\treturn this.precpred(this._ctx, 8);\n\n\t\tcase 8:\n\t\t\treturn this.precpred(this._ctx, 7);\n\n\t\tcase 9:\n\t\t\treturn this.precpred(this._ctx, 6);\n\n\t\tcase 10:\n\t\t\treturn this.precpred(this._ctx, 5);\n\n\t\tcase 11:\n\t\t\treturn this.precpred(this._ctx, 4);\n\n\t\tcase 12:\n\t\t\treturn this.precpred(this._ctx, 3);\n\n\t\tcase 13:\n\t\t\treturn this.precpred(this._ctx, 2);\n\n\t\tcase 14:\n\t\t\treturn this.precpred(this._ctx, 27);\n\n\t\tcase 15:\n\t\t\treturn this.precpred(this._ctx, 25);\n\n\t\tcase 16:\n\t\t\treturn this.precpred(this._ctx, 24);\n\n\t\tcase 17:\n\t\t\treturn this.precpred(this._ctx, 23);\n\n\t\tcase 18:\n\t\t\treturn this.precpred(this._ctx, 22);\n\n\t\tcase 19:\n\t\t\treturn this.precpred(this._ctx, 21);\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate static readonly _serializedATNSegments: number = 3;\n\tprivate static readonly _serializedATNSegment0: string =\n\t\t\"\\x03\\uC91D\\uCABA\\u058D\\uAFBA\\u4F53\\u0607\\uEA8B\\uC241\\x03\\x88\\u047F\\x04\" +\n\t\t\"\\x02\\t\\x02\\x04\\x03\\t\\x03\\x04\\x04\\t\\x04\\x04\\x05\\t\\x05\\x04\\x06\\t\\x06\\x04\" +\n\t\t\"\\x07\\t\\x07\\x04\\b\\t\\b\\x04\\t\\t\\t\\x04\\n\\t\\n\\x04\\v\\t\\v\\x04\\f\\t\\f\\x04\\r\\t\\r\" +\n\t\t\"\\x04\\x0E\\t\\x0E\\x04\\x0F\\t\\x0F\\x04\\x10\\t\\x10\\x04\\x11\\t\\x11\\x04\\x12\\t\\x12\" +\n\t\t\"\\x04\\x13\\t\\x13\\x04\\x14\\t\\x14\\x04\\x15\\t\\x15\\x04\\x16\\t\\x16\\x04\\x17\\t\\x17\" +\n\t\t\"\\x04\\x18\\t\\x18\\x04\\x19\\t\\x19\\x04\\x1A\\t\\x1A\\x04\\x1B\\t\\x1B\\x04\\x1C\\t\\x1C\" +\n\t\t\"\\x04\\x1D\\t\\x1D\\x04\\x1E\\t\\x1E\\x04\\x1F\\t\\x1F\\x04 \\t \\x04!\\t!\\x04\\\"\\t\\\"\\x04\" +\n\t\t\"#\\t#\\x04$\\t$\\x04%\\t%\\x04&\\t&\\x04\\'\\t\\'\\x04(\\t(\\x04)\\t)\\x04*\\t*\\x04+\\t\" +\n\t\t\"+\\x04,\\t,\\x04-\\t-\\x04.\\t.\\x04/\\t/\\x040\\t0\\x041\\t1\\x042\\t2\\x043\\t3\\x04\" +\n\t\t\"4\\t4\\x045\\t5\\x046\\t6\\x047\\t7\\x048\\t8\\x049\\t9\\x04:\\t:\\x04;\\t;\\x04<\\t<\\x04\" +\n\t\t\"=\\t=\\x04>\\t>\\x04?\\t?\\x04@\\t@\\x04A\\tA\\x04B\\tB\\x04C\\tC\\x04D\\tD\\x04E\\tE\\x04\" +\n\t\t\"F\\tF\\x04G\\tG\\x04H\\tH\\x04I\\tI\\x04J\\tJ\\x04K\\tK\\x04L\\tL\\x04M\\tM\\x04N\\tN\\x04\" +\n\t\t\"O\\tO\\x04P\\tP\\x04Q\\tQ\\x04R\\tR\\x04S\\tS\\x04T\\tT\\x04U\\tU\\x04V\\tV\\x04W\\tW\\x04\" +\n\t\t\"X\\tX\\x04Y\\tY\\x04Z\\tZ\\x04[\\t[\\x04\\\\\\t\\\\\\x04]\\t]\\x04^\\t^\\x04_\\t_\\x04`\\t\" +\n\t\t\"`\\x04a\\ta\\x04b\\tb\\x04c\\tc\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\" +\n\t\t\"\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x03\\x02\\x07\\x02\\xD1\\n\\x02\\f\\x02\\x0E\\x02\\xD4\" +\n\t\t\"\\v\\x02\\x03\\x02\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x04\" +\n\t\t\"\\x03\\x04\\x03\\x05\\x03\\x05\\x03\\x05\\x05\\x05\\xE2\\n\\x05\\x03\\x06\\x03\\x06\\x05\" +\n\t\t\"\\x06\\xE6\\n\\x06\\x03\\x06\\x07\\x06\\xE9\\n\\x06\\f\\x06\\x0E\\x06\\xEC\\v\\x06\\x03\\x07\" +\n\t\t\"\\x03\\x07\\x03\\b\\x05\\b\\xF1\\n\\b\\x03\\b\\x03\\b\\x05\\b\\xF5\\n\\b\\x03\\b\\x05\\b\\xF8\" +\n\t\t\"\\n\\b\\x03\\t\\x03\\t\\x03\\t\\x05\\t\\xFD\\n\\t\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u0103\" +\n\t\t\"\\n\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u010A\\n\\n\\x03\\n\\x03\\n\\x05\\n\\u010E\" +\n\t\t\"\\n\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x07\\n\\u0119\" +\n\t\t\"\\n\\n\\f\\n\\x0E\\n\\u011C\\v\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x03\\n\\x05\\n\\u0123\\n\\n\" +\n\t\t\"\\x03\\v\\x03\\v\\x03\\f\\x05\\f\\u0128\\n\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\\x03\\f\" +\n\t\t\"\\x07\\f\\u0130\\n\\f\\f\\f\\x0E\\f\\u0133\\v\\f\\x05\\f\\u0135\\n\\f\\x03\\f\\x03\\f\\x07\\f\" +\n\t\t\"\\u0139\\n\\f\\f\\f\\x0E\\f\\u013C\\v\\f\\x03\\f\\x03\\f\\x03\\r\\x03\\r\\x03\\r\\x05\\r\\u0143\" +\n\t\t\"\\n\\r\\x03\\r\\x05\\r\\u0146\\n\\r\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x03\" +\n\t\t\"\\x0E\\x03\\x0E\\x03\\x0E\\x03\\x0E\\x05\\x0E\\u0151\\n\\x0E\\x03\\x0F\\x03\\x0F\\x03\\x0F\" +\n\t\t\"\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x07\\x0F\\u015A\\n\\x0F\\f\\x0F\\x0E\\x0F\\u015D\" +\n\t\t\"\\v\\x0F\\x03\\x0F\\x03\\x0F\\x03\\x0F\\x05\\x0F\\u0162\\n\\x0F\\x03\\x0F\\x03\\x0F\\x03\" +\n\t\t\"\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x10\\x03\\x11\\x03\\x11\\x03\" +\n\t\t\"\\x11\\x03\\x11\\x03\\x11\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\\x12\\x03\" +\n\t\t\"\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x03\\x13\\x05\\x13\\u017D\\n\\x13\\x03\\x13\\x05\\x13\" +\n\t\t\"\\u0180\\n\\x13\\x03\\x13\\x03\\x13\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x03\\x14\\x07\" +\n\t\t\"\\x14\\u0189\\n\\x14\\f\\x14\\x0E\\x14\\u018C\\v\\x14\\x03\\x14\\x03\\x14\\x05\\x14\\u0190\" +\n\t\t\"\\n\\x14\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\\x03\\x15\" +\n\t\t\"\\x07\\x15\\u019A\\n\\x15\\f\\x15\\x0E\\x15\\u019D\\v\\x15\\x05\\x15\\u019F\\n\\x15\\x03\" +\n\t\t\"\\x15\\x03\\x15\\x03\\x16\\x03\\x16\\x03\\x16\\x05\\x16\\u01A6\\n\\x16\\x03\\x16\\x03\\x16\" +\n\t\t\"\\x07\\x16\\u01AA\\n\\x16\\f\\x16\\x0E\\x16\\u01AD\\v\\x16\\x03\\x16\\x03\\x16\\x05\\x16\" +\n\t\t\"\\u01B1\\n\\x16\\x03\\x17\\x03\\x17\\x03\\x17\\x05\\x17\\u01B6\\n\\x17\\x03\\x17\\x05\\x17\" +\n\t\t\"\\u01B9\\n\\x17\\x03\\x18\\x03\\x18\\x03\\x18\\x03\\x18\\x05\\x18\\u01BF\\n\\x18\\x03\\x18\" +\n\t\t\"\\x03\\x18\\x05\\x18\\u01C3\\n\\x18\\x03\\x19\\x03\\x19\\x05\\x19\\u01C7\\n\\x19\\x03\\x19\" +\n\t\t\"\\x03\\x19\\x03\\x19\\x05\\x19\\u01CC\\n\\x19\\x03\\x1A\\x03\\x1A\\x03\\x1A\\x03\\x1B\\x03\" +\n\t\t\"\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x03\\x1B\\x07\\x1B\\u01D9\\n\\x1B\" +\n\t\t\"\\f\\x1B\\x0E\\x1B\\u01DC\\v\\x1B\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1C\\x05\\x1C\\u01E2\" +\n\t\t\"\\n\\x1C\\x03\\x1C\\x03\\x1C\\x03\\x1D\\x03\\x1D\\x03\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1E\" +\n\t\t\"\\x05\\x1E\\u01EC\\n\\x1E\\x03\\x1E\\x03\\x1E\\x07\\x1E\\u01F0\\n\\x1E\\f\\x1E\\x0E\\x1E\" +\n\t\t\"\\u01F3\\v\\x1E\\x03\\x1E\\x03\\x1E\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x03\\x1F\\x07\\x1F\\u01FB\" +\n\t\t\"\\n\\x1F\\f\\x1F\\x0E\\x1F\\u01FE\\v\\x1F\\x05\\x1F\\u0200\\n\\x1F\\x03\\x1F\\x03\\x1F\\x03\" +\n\t\t\" \\x03 \\x05 \\u0206\\n \\x03 \\x05 \\u0209\\n \\x03!\\x03!\\x03!\\x03!\\x07!\\u020F\" +\n\t\t\"\\n!\\f!\\x0E!\\u0212\\v!\\x05!\\u0214\\n!\\x03!\\x03!\\x03\\\"\\x03\\\"\\x05\\\"\\u021A\\n\" +\n\t\t\"\\\"\\x03\\\"\\x05\\\"\\u021D\\n\\\"\\x03#\\x03#\\x03#\\x03#\\x07#\\u0223\\n#\\f#\\x0E#\\u0226\" +\n\t\t\"\\v#\\x05#\\u0228\\n#\\x03#\\x03#\\x03$\\x03$\\x05$\\u022E\\n$\\x03%\\x03%\\x05%\\u0232\" +\n\t\t\"\\n%\\x03%\\x03%\\x03&\\x03&\\x03&\\x03&\\x03&\\x03&\\x03&\\x05&\\u023D\\n&\\x03&\\x03\" +\n\t\t\"&\\x03&\\x05&\\u0242\\n&\\x03&\\x07&\\u0245\\n&\\f&\\x0E&\\u0248\\v&\\x03\\'\\x03\\'\\x03\" +\n\t\t\"\\'\\x07\\'\\u024D\\n\\'\\f\\'\\x0E\\'\\u0250\\v\\'\\x03(\\x03(\\x05(\\u0254\\n(\\x03)\\x03\" +\n\t\t\")\\x03)\\x03)\\x03)\\x03)\\x03)\\x03*\\x03*\\x03*\\x03*\\x03*\\x07*\\u0262\\n*\\f*\\x0E\" +\n\t\t\"*\\u0265\\v*\\x03*\\x03*\\x05*\\u0269\\n*\\x03+\\x03+\\x03,\\x03,\\x03-\\x03-\\x07-\" +\n\t\t\"\\u0271\\n-\\f-\\x0E-\\u0274\\v-\\x03-\\x03-\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03\" +\n\t\t\".\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x03.\\x05.\\u0287\\n.\\x03/\\x03/\\x03\" +\n\t\t\"/\\x030\\x030\\x030\\x030\\x030\\x030\\x030\\x050\\u0293\\n0\\x031\\x031\\x031\\x05\" +\n\t\t\"1\\u0298\\n1\\x031\\x031\\x061\\u029C\\n1\\r1\\x0E1\\u029D\\x032\\x032\\x052\\u02A2\" +\n\t\t\"\\n2\\x032\\x052\\u02A5\\n2\\x032\\x032\\x033\\x033\\x033\\x033\\x033\\x033\\x034\\x03\" +\n\t\t\"4\\x054\\u02B1\\n4\\x035\\x035\\x035\\x036\\x036\\x036\\x036\\x056\\u02BA\\n6\\x036\" +\n\t\t\"\\x036\\x056\\u02BE\\n6\\x036\\x056\\u02C1\\n6\\x036\\x036\\x036\\x037\\x037\\x057\\u02C8\" +\n\t\t\"\\n7\\x037\\x037\\x037\\x037\\x057\\u02CE\\n7\\x037\\x037\\x038\\x038\\x039\\x039\\x03\" +\n\t\t\"9\\x039\\x039\\x039\\x039\\x039\\x03:\\x03:\\x03:\\x03;\\x03;\\x03;\\x03<\\x03<\\x05\" +\n\t\t\"<\\u02E4\\n<\\x03<\\x03<\\x03=\\x03=\\x03=\\x03>\\x03>\\x03>\\x03>\\x03?\\x03?\\x03\" +\n\t\t\"?\\x03?\\x03@\\x03@\\x03@\\x03@\\x03@\\x03@\\x03@\\x05@\\u02FA\\n@\\x03@\\x03@\\x05\" +\n\t\t\"@\\u02FE\\n@\\x03@\\x03@\\x03A\\x05A\\u0303\\nA\\x03A\\x03A\\x05A\\u0307\\nA\\x07A\\u0309\" +\n\t\t\"\\nA\\fA\\x0EA\\u030C\\vA\\x03B\\x03B\\x05B\\u0310\\nB\\x03B\\x07B\\u0313\\nB\\fB\\x0E\" +\n\t\t\"B\\u0316\\vB\\x03B\\x05B\\u0319\\nB\\x03B\\x03B\\x03C\\x03C\\x03D\\x03D\\x03D\\x03D\" +\n\t\t\"\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x05D\\u0331\\nD\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03\" +\n\t\t\"D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x05\" +\n\t\t\"D\\u0367\\nD\\x03D\\x03D\\x05D\\u036B\\nD\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\" +\n\t\t\"\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x03D\\x07D\\u037B\\nD\\fD\\x0ED\\u037E\\vD\\x03\" +\n\t\t\"E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x03E\\x05E\\u0389\\nE\\x03F\\x03F\\x03\" +\n\t\t\"F\\x07F\\u038E\\nF\\fF\\x0EF\\u0391\\vF\\x03G\\x03G\\x03G\\x07G\\u0396\\nG\\fG\\x0EG\" +\n\t\t\"\\u0399\\vG\\x03G\\x05G\\u039C\\nG\\x03H\\x03H\\x03H\\x03H\\x03I\\x03I\\x05I\\u03A4\" +\n\t\t\"\\nI\\x03I\\x03I\\x05I\\u03A8\\nI\\x05I\\u03AA\\nI\\x03J\\x03J\\x03J\\x03J\\x03J\\x03\" +\n\t\t\"K\\x03K\\x07K\\u03B3\\nK\\fK\\x0EK\\u03B6\\vK\\x03K\\x03K\\x03L\\x03L\\x03L\\x03L\\x03\" +\n\t\t\"L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x03L\\x05\" +\n\t\t\"L\\u03CC\\nL\\x03M\\x03M\\x03M\\x05M\\u03D1\\nM\\x03N\\x03N\\x03N\\x03N\\x03O\\x03O\" +\n\t\t\"\\x03O\\x03O\\x05O\\u03DB\\nO\\x03O\\x03O\\x05O\\u03DF\\nO\\x03O\\x03O\\x07O\\u03E3\" +\n\t\t\"\\nO\\fO\\x0EO\\u03E6\\vO\\x03O\\x05O\\u03E9\\nO\\x03P\\x03P\\x03P\\x03P\\x05P\\u03EF\" +\n\t\t\"\\nP\\x03Q\\x03Q\\x03Q\\x03Q\\x03R\\x03R\\x03R\\x03R\\x03R\\x03R\\x05R\\u03FB\\nR\\x03\" +\n\t\t\"S\\x03S\\x03S\\x07S\\u0400\\nS\\fS\\x0ES\\u0403\\vS\\x03T\\x03T\\x03T\\x03T\\x03U\\x03\" +\n\t\t\"U\\x03U\\x03V\\x03V\\x03V\\x07V\\u040F\\nV\\fV\\x0EV\\u0412\\vV\\x03W\\x03W\\x03W\\x03\" +\n\t\t\"W\\x03W\\x03W\\x05W\\u041A\\nW\\x03X\\x03X\\x03X\\x03X\\x05X\\u0420\\nX\\x03X\\x03X\" +\n\t\t\"\\x05X\\u0424\\nX\\x03X\\x03X\\x03Y\\x03Y\\x03Y\\x03Z\\x03Z\\x03Z\\x05Z\\u042E\\nZ\\x03\" +\n\t\t\"Z\\x03Z\\x03Z\\x05Z\\u0433\\nZ\\x03Z\\x03Z\\x03[\\x03[\\x03[\\x03[\\x03\\\\\\x03\\\\\\x03\" +\n\t\t\"\\\\\\x03\\\\\\x05\\\\\\u043F\\n\\\\\\x03]\\x03]\\x03]\\x03]\\x03^\\x03^\\x05^\\u0447\\n^\\x03\" +\n\t\t\"^\\x03^\\x05^\\u044B\\n^\\x07^\\u044D\\n^\\f^\\x0E^\\u0450\\v^\\x03^\\x03^\\x03^\\x03\" +\n\t\t\"^\\x03^\\x07^\\u0457\\n^\\f^\\x0E^\\u045A\\v^\\x05^\\u045C\\n^\\x03^\\x05^\\u045F\\n\" +\n\t\t\"^\\x03_\\x03_\\x05_\\u0463\\n_\\x03`\\x03`\\x03a\\x06a\\u0468\\na\\ra\\x0Ea\\u0469\\x03\" +\n\t\t\"b\\x03b\\x03b\\x03b\\x03b\\x07b\\u0471\\nb\\fb\\x0Eb\\u0474\\vb\\x03b\\x03b\\x05b\\u0478\" +\n\t\t\"\\nb\\x03c\\x06c\\u047B\\nc\\rc\\x0Ec\\u047C\\x03c\\x02\\x02\\x04J\\x86d\\x02\\x02\\x04\" +\n\t\t\"\\x02\\x06\\x02\\b\\x02\\n\\x02\\f\\x02\\x0E\\x02\\x10\\x02\\x12\\x02\\x14\\x02\\x16\\x02\" +\n\t\t\"\\x18\\x02\\x1A\\x02\\x1C\\x02\\x1E\\x02 \\x02\\\"\\x02$\\x02&\\x02(\\x02*\\x02,\\x02.\" +\n\t\t\"\\x020\\x022\\x024\\x026\\x028\\x02:\\x02<\\x02>\\x02@\\x02B\\x02D\\x02F\\x02H\\x02\" +\n\t\t\"J\\x02L\\x02N\\x02P\\x02R\\x02T\\x02V\\x02X\\x02Z\\x02\\\\\\x02^\\x02`\\x02b\\x02d\\x02\" +\n\t\t\"f\\x02h\\x02j\\x02l\\x02n\\x02p\\x02r\\x02t\\x02v\\x02x\\x02z\\x02|\\x02~\\x02\\x80\" +\n\t\t\"\\x02\\x82\\x02\\x84\\x02\\x86\\x02\\x88\\x02\\x8A\\x02\\x8C\\x02\\x8E\\x02\\x90\\x02\\x92\" +\n\t\t\"\\x02\\x94\\x02\\x96\\x02\\x98\\x02\\x9A\\x02\\x9C\\x02\\x9E\\x02\\xA0\\x02\\xA2\\x02\\xA4\" +\n\t\t\"\\x02\\xA6\\x02\\xA8\\x02\\xAA\\x02\\xAC\\x02\\xAE\\x02\\xB0\\x02\\xB2\\x02\\xB4\\x02\\xB6\" +\n\t\t\"\\x02\\xB8\\x02\\xBA\\x02\\xBC\\x02\\xBE\\x02\\xC0\\x02\\xC2\\x02\\xC4\\x02\\x02\\x11\\x03\" +\n\t\t\"\\x02\\x07\\r\\x03\\x02\\x15\\x17\\x03\\x02*,\\x06\\x02qqxx||~~\\x05\\x02&&9\\x03\\x02AB\\x03\\x02CD\\x04\\x02\\x05\\x05GH\\x03\\x02IJ\\x03\\x02\\t\\f\\x03\" +\n\t\t\"\\x02MN\\x04\\x02\\r\\rQZ\\x03\\x02jk\\v\\x02\\x10\\x10\\x1B\\x1B,,88bbttxx\\x80\\x80\" +\n\t\t\"\\x82\\x83\\x02\\u04FE\\x02\\xD2\\x03\\x02\\x02\\x02\\x04\\xD7\\x03\\x02\\x02\\x02\\x06\" +\n\t\t\"\\xDC\\x03\\x02\\x02\\x02\\b\\xE1\\x03\\x02\\x02\\x02\\n\\xE3\\x03\\x02\\x02\\x02\\f\\xED\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x0E\\xF7\\x03\\x02\\x02\\x02\\x10\\xF9\\x03\\x02\\x02\\x02\\x12\\u0122\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x14\\u0124\\x03\\x02\\x02\\x02\\x16\\u0127\\x03\\x02\\x02\\x02\\x18\" +\n\t\t\"\\u013F\\x03\\x02\\x02\\x02\\x1A\\u0150\\x03\\x02\\x02\\x02\\x1C\\u0152\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x1E\\u0165\\x03\\x02\\x02\\x02 \\u016C\\x03\\x02\\x02\\x02\\\"\\u0171\\x03\\x02\" +\n\t\t\"\\x02\\x02$\\u0177\\x03\\x02\\x02\\x02&\\u018F\\x03\\x02\\x02\\x02(\\u0191\\x03\\x02\" +\n\t\t\"\\x02\\x02*\\u01A2\\x03\\x02\\x02\\x02,\\u01B2\\x03\\x02\\x02\\x02.\\u01BA\\x03\\x02\" +\n\t\t\"\\x02\\x020\\u01CB\\x03\\x02\\x02\\x022\\u01CD\\x03\\x02\\x02\\x024\\u01DA\\x03\\x02\" +\n\t\t\"\\x02\\x026\\u01DD\\x03\\x02\\x02\\x028\\u01E5\\x03\\x02\\x02\\x02:\\u01E7\\x03\\x02\" +\n\t\t\"\\x02\\x02<\\u01F6\\x03\\x02\\x02\\x02>\\u0203\\x03\\x02\\x02\\x02@\\u020A\\x03\\x02\" +\n\t\t\"\\x02\\x02B\\u0217\\x03\\x02\\x02\\x02D\\u021E\\x03\\x02\\x02\\x02F\\u022B\\x03\\x02\" +\n\t\t\"\\x02\\x02H\\u022F\\x03\\x02\\x02\\x02J\\u023C\\x03\\x02\\x02\\x02L\\u0249\\x03\\x02\" +\n\t\t\"\\x02\\x02N\\u0253\\x03\\x02\\x02\\x02P\\u0255\\x03\\x02\\x02\\x02R\\u025C\\x03\\x02\" +\n\t\t\"\\x02\\x02T\\u026A\\x03\\x02\\x02\\x02V\\u026C\\x03\\x02\\x02\\x02X\\u026E\\x03\\x02\" +\n\t\t\"\\x02\\x02Z\\u0286\\x03\\x02\\x02\\x02\\\\\\u0288\\x03\\x02\\x02\\x02^\\u028B\\x03\\x02\" +\n\t\t\"\\x02\\x02`\\u0294\\x03\\x02\\x02\\x02b\\u029F\\x03\\x02\\x02\\x02d\\u02A8\\x03\\x02\" +\n\t\t\"\\x02\\x02f\\u02B0\\x03\\x02\\x02\\x02h\\u02B2\\x03\\x02\\x02\\x02j\\u02B5\\x03\\x02\" +\n\t\t\"\\x02\\x02l\\u02C5\\x03\\x02\\x02\\x02n\\u02D1\\x03\\x02\\x02\\x02p\\u02D3\\x03\\x02\" +\n\t\t\"\\x02\\x02r\\u02DB\\x03\\x02\\x02\\x02t\\u02DE\\x03\\x02\\x02\\x02v\\u02E1\\x03\\x02\" +\n\t\t\"\\x02\\x02x\\u02E7\\x03\\x02\\x02\\x02z\\u02EA\\x03\\x02\\x02\\x02|\\u02EE\\x03\\x02\" +\n\t\t\"\\x02\\x02~\\u02F9\\x03\\x02\\x02\\x02\\x80\\u0302\\x03\\x02\\x02\\x02\\x82\\u030D\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x84\\u031C\\x03\\x02\\x02\\x02\\x86\\u0330\\x03\\x02\\x02\\x02\\x88\\u0388\" +\n\t\t\"\\x03\\x02\\x02\\x02\\x8A\\u038A\\x03\\x02\\x02\\x02\\x8C\\u0392\\x03\\x02\\x02\\x02\\x8E\" +\n\t\t\"\\u039D\\x03\\x02\\x02\\x02\\x90\\u03A9\\x03\\x02\\x02\\x02\\x92\\u03AB\\x03\\x02\\x02\" +\n\t\t\"\\x02\\x94\\u03B0\\x03\\x02\\x02\\x02\\x96\\u03CB\\x03\\x02\\x02\\x02\\x98\\u03D0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\x9A\\u03D2\\x03\\x02\\x02\\x02\\x9C\\u03DA\\x03\\x02\\x02\\x02\\x9E\\u03EA\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xA0\\u03F0\\x03\\x02\\x02\\x02\\xA2\\u03FA\\x03\\x02\\x02\\x02\\xA4\" +\n\t\t\"\\u03FC\\x03\\x02\\x02\\x02\\xA6\\u0404\\x03\\x02\\x02\\x02\\xA8\\u0408\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xAA\\u040B\\x03\\x02\\x02\\x02\\xAC\\u0419\\x03\\x02\\x02\\x02\\xAE\\u041B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xB0\\u0427\\x03\\x02\\x02\\x02\\xB2\\u042A\\x03\\x02\\x02\\x02\\xB4\\u0436\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xB6\\u043E\\x03\\x02\\x02\\x02\\xB8\\u0440\\x03\\x02\\x02\\x02\\xBA\" +\n\t\t\"\\u045E\\x03\\x02\\x02\\x02\\xBC\\u0460\\x03\\x02\\x02\\x02\\xBE\\u0464\\x03\\x02\\x02\" +\n\t\t\"\\x02\\xC0\\u0467\\x03\\x02\\x02\\x02\\xC2\\u046B\\x03\\x02\\x02\\x02\\xC4\\u047A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\xC6\\xD1\\x05\\x04\\x03\\x02\\xC7\\xD1\\x05\\x12\\n\\x02\\xC8\\xD1\\x05\" +\n\t\t\"\\x16\\f\\x02\\xC9\\xD1\\x05:\\x1E\\x02\\xCA\\xD1\\x05(\\x15\\x02\\xCB\\xD1\\x05.\\x18\" +\n\t\t\"\\x02\\xCC\\xD1\\x05\\x1E\\x10\\x02\\xCD\\xD1\\x05 \\x11\\x02\\xCE\\xD1\\x05\\\"\\x12\\x02\" +\n\t\t\"\\xCF\\xD1\\x05$\\x13\\x02\\xD0\\xC6\\x03\\x02\\x02\\x02\\xD0\\xC7\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xC8\\x03\\x02\\x02\\x02\\xD0\\xC9\\x03\\x02\\x02\\x02\\xD0\\xCA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xCB\\x03\\x02\\x02\\x02\\xD0\\xCC\\x03\\x02\\x02\\x02\\xD0\\xCD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD0\\xCE\\x03\\x02\\x02\\x02\\xD0\\xCF\\x03\\x02\\x02\\x02\\xD1\\xD4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD2\\xD0\\x03\\x02\\x02\\x02\\xD2\\xD3\\x03\\x02\\x02\\x02\\xD3\\xD5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD4\\xD2\\x03\\x02\\x02\\x02\\xD5\\xD6\\x07\\x02\\x02\\x03\\xD6\\x03\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xD7\\xD8\\x07\\x03\\x02\\x02\\xD8\\xD9\\x05\\x06\\x04\\x02\\xD9\\xDA\\x05\\b\\x05\\x02\" +\n\t\t\"\\xDA\\xDB\\x07\\x04\\x02\\x02\\xDB\\x05\\x03\\x02\\x02\\x02\\xDC\\xDD\\x05\\xBE`\\x02\" +\n\t\t\"\\xDD\\x07\\x03\\x02\\x02\\x02\\xDE\\xE2\\x07\\x05\\x02\\x02\\xDF\\xE2\\x05\\n\\x06\\x02\" +\n\t\t\"\\xE0\\xE2\\x05\\x86D\\x02\\xE1\\xDE\\x03\\x02\\x02\\x02\\xE1\\xDF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\xE1\\xE0\\x03\\x02\\x02\\x02\\xE2\\t\\x03\\x02\\x02\\x02\\xE3\\xEA\\x05\\x0E\\b\\x02\\xE4\" +\n\t\t\"\\xE6\\x07\\x06\\x02\\x02\\xE5\\xE4\\x03\\x02\\x02\\x02\\xE5\\xE6\\x03\\x02\\x02\\x02\\xE6\" +\n\t\t\"\\xE7\\x03\\x02\\x02\\x02\\xE7\\xE9\\x05\\x0E\\b\\x02\\xE8\\xE5\\x03\\x02\\x02\\x02\\xE9\" +\n\t\t\"\\xEC\\x03\\x02\\x02\\x02\\xEA\\xE8\\x03\\x02\\x02\\x02\\xEA\\xEB\\x03\\x02\\x02\\x02\\xEB\" +\n\t\t\"\\v\\x03\\x02\\x02\\x02\\xEC\\xEA\\x03\\x02\\x02\\x02\\xED\\xEE\\t\\x02\\x02\\x02\\xEE\\r\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xEF\\xF1\\x05\\f\\x07\\x02\\xF0\\xEF\\x03\\x02\\x02\\x02\\xF0\\xF1\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF1\\xF2\\x03\\x02\\x02\\x02\\xF2\\xF8\\x07\\x85\\x02\\x02\\xF3\\xF5\" +\n\t\t\"\\x05\\f\\x07\\x02\\xF4\\xF3\\x03\\x02\\x02\\x02\\xF4\\xF5\\x03\\x02\\x02\\x02\\xF5\\xF6\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF6\\xF8\\x07j\\x02\\x02\\xF7\\xF0\\x03\\x02\\x02\\x02\\xF7\\xF4\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xF8\\x0F\\x03\\x02\\x02\\x02\\xF9\\xFC\\x05\\xBE`\\x02\\xFA\\xFB\" +\n\t\t\"\\x07\\x0E\\x02\\x02\\xFB\\xFD\\x05\\xBE`\\x02\\xFC\\xFA\\x03\\x02\\x02\\x02\\xFC\\xFD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\xFD\\x11\\x03\\x02\\x02\\x02\\xFE\\xFF\\x07\\x0F\\x02\\x02\\xFF\\u0102\" +\n\t\t\"\\x05\\x14\\v\\x02\\u0100\\u0101\\x07\\x0E\\x02\\x02\\u0101\\u0103\\x05\\xBE`\\x02\\u0102\" +\n\t\t\"\\u0100\\x03\\x02\\x02\\x02\\u0102\\u0103\\x03\\x02\\x02\\x02\\u0103\\u0104\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0104\\u0105\\x07\\x04\\x02\\x02\\u0105\\u0123\\x03\\x02\\x02\\x02\\u0106\" +\n\t\t\"\\u0109\\x07\\x0F\\x02\\x02\\u0107\\u010A\\x07\\x05\\x02\\x02\\u0108\\u010A\\x05\\xBE\" +\n\t\t\"`\\x02\\u0109\\u0107\\x03\\x02\\x02\\x02\\u0109\\u0108\\x03\\x02\\x02\\x02\\u010A\\u010D\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u010B\\u010C\\x07\\x0E\\x02\\x02\\u010C\\u010E\\x05\\xBE`\\x02\" +\n\t\t\"\\u010D\\u010B\\x03\\x02\\x02\\x02\\u010D\\u010E\\x03\\x02\\x02\\x02\\u010E\\u010F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u010F\\u0110\\x07\\x10\\x02\\x02\\u0110\\u0111\\x05\\x14\\v\\x02\\u0111\" +\n\t\t\"\\u0112\\x07\\x04\\x02\\x02\\u0112\\u0123\\x03\\x02\\x02\\x02\\u0113\\u0114\\x07\\x0F\" +\n\t\t\"\\x02\\x02\\u0114\\u0115\\x07\\x11\\x02\\x02\\u0115\\u011A\\x05\\x10\\t\\x02\\u0116\\u0117\" +\n\t\t\"\\x07\\x12\\x02\\x02\\u0117\\u0119\\x05\\x10\\t\\x02\\u0118\\u0116\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0119\\u011C\\x03\\x02\\x02\\x02\\u011A\\u0118\\x03\\x02\\x02\\x02\\u011A\\u011B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u011B\\u011D\\x03\\x02\\x02\\x02\\u011C\\u011A\\x03\\x02\\x02\\x02\\u011D\" +\n\t\t\"\\u011E\\x07\\x13\\x02\\x02\\u011E\\u011F\\x07\\x10\\x02\\x02\\u011F\\u0120\\x05\\x14\" +\n\t\t\"\\v\\x02\\u0120\\u0121\\x07\\x04\\x02\\x02\\u0121\\u0123\\x03\\x02\\x02\\x02\\u0122\\xFE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0122\\u0106\\x03\\x02\\x02\\x02\\u0122\\u0113\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0123\\x13\\x03\\x02\\x02\\x02\\u0124\\u0125\\x07\\x84\\x02\\x02\\u0125\\x15\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0126\\u0128\\x07\\x14\\x02\\x02\\u0127\\u0126\\x03\\x02\\x02\\x02\\u0127\" +\n\t\t\"\\u0128\\x03\\x02\\x02\\x02\\u0128\\u0129\\x03\\x02\\x02\\x02\\u0129\\u012A\\t\\x03\\x02\" +\n\t\t\"\\x02\\u012A\\u0134\\x05\\xBE`\\x02\\u012B\\u012C\\x07\\x18\\x02\\x02\\u012C\\u0131\" +\n\t\t\"\\x05\\x18\\r\\x02\\u012D\\u012E\\x07\\x12\\x02\\x02\\u012E\\u0130\\x05\\x18\\r\\x02\\u012F\" +\n\t\t\"\\u012D\\x03\\x02\\x02\\x02\\u0130\\u0133\\x03\\x02\\x02\\x02\\u0131\\u012F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0131\\u0132\\x03\\x02\\x02\\x02\\u0132\\u0135\\x03\\x02\\x02\\x02\\u0133\" +\n\t\t\"\\u0131\\x03\\x02\\x02\\x02\\u0134\\u012B\\x03\\x02\\x02\\x02\\u0134\\u0135\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0135\\u0136\\x03\\x02\\x02\\x02\\u0136\\u013A\\x07\\x11\\x02\\x02\\u0137\" +\n\t\t\"\\u0139\\x05\\x1A\\x0E\\x02\\u0138\\u0137\\x03\\x02\\x02\\x02\\u0139\\u013C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u013A\\u0138\\x03\\x02\\x02\\x02\\u013A\\u013B\\x03\\x02\\x02\\x02\\u013B\" +\n\t\t\"\\u013D\\x03\\x02\\x02\\x02\\u013C\\u013A\\x03\\x02\\x02\\x02\\u013D\\u013E\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u013E\\x17\\x03\\x02\\x02\\x02\\u013F\\u0145\\x05L\\'\\x02\\u0140\\u0142\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u0141\\u0143\\x05\\x8AF\\x02\\u0142\\u0141\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0142\\u0143\\x03\\x02\\x02\\x02\\u0143\\u0144\\x03\\x02\\x02\\x02\\u0144\\u0146\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u0145\\u0140\\x03\\x02\\x02\\x02\\u0145\\u0146\\x03\\x02\\x02\\x02\\u0146\" +\n\t\t\"\\x19\\x03\\x02\\x02\\x02\\u0147\\u0151\\x05\\x1C\\x0F\\x02\\u0148\\u0151\\x05$\\x13\" +\n\t\t\"\\x02\\u0149\\u0151\\x05(\\x15\\x02\\u014A\\u0151\\x05*\\x16\\x02\\u014B\\u0151\\x05\" +\n\t\t\".\\x18\\x02\\u014C\\u0151\\x056\\x1C\\x02\\u014D\\u0151\\x05:\\x1E\\x02\\u014E\\u0151\" +\n\t\t\"\\x05 \\x11\\x02\\u014F\\u0151\\x05\\\"\\x12\\x02\\u0150\\u0147\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u0148\\x03\\x02\\x02\\x02\\u0150\\u0149\\x03\\x02\\x02\\x02\\u0150\\u014A\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0150\\u014B\\x03\\x02\\x02\\x02\\u0150\\u014C\\x03\\x02\\x02\\x02\\u0150\" +\n\t\t\"\\u014D\\x03\\x02\\x02\\x02\\u0150\\u014E\\x03\\x02\\x02\\x02\\u0150\\u014F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0151\\x1B\\x03\\x02\\x02\\x02\\u0152\\u015B\\x05J&\\x02\\u0153\\u015A\\x07\" +\n\t\t\"z\\x02\\x02\\u0154\\u015A\\x07w\\x02\\x02\\u0155\\u015A\\x07y\\x02\\x02\\u0156\\u015A\" +\n\t\t\"\\x07q\\x02\\x02\\u0157\\u015A\\x07r\\x02\\x02\\u0158\\u015A\\x05\\xC2b\\x02\\u0159\" +\n\t\t\"\\u0153\\x03\\x02\\x02\\x02\\u0159\\u0154\\x03\\x02\\x02\\x02\\u0159\\u0155\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0159\\u0156\\x03\\x02\\x02\\x02\\u0159\\u0157\\x03\\x02\\x02\\x02\\u0159\" +\n\t\t\"\\u0158\\x03\\x02\\x02\\x02\\u015A\\u015D\\x03\\x02\\x02\\x02\\u015B\\u0159\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u015B\\u015C\\x03\\x02\\x02\\x02\\u015C\\u015E\\x03\\x02\\x02\\x02\\u015D\" +\n\t\t\"\\u015B\\x03\\x02\\x02\\x02\\u015E\\u0161\\x05\\xBE`\\x02\\u015F\\u0160\\x07\\r\\x02\" +\n\t\t\"\\x02\\u0160\\u0162\\x05\\x86D\\x02\\u0161\\u015F\\x03\\x02\\x02\\x02\\u0161\\u0162\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0162\\u0163\\x03\\x02\\x02\\x02\\u0163\\u0164\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u0164\\x1D\\x03\\x02\\x02\\x02\\u0165\\u0166\\x05J&\\x02\\u0166\\u0167\\x07q\\x02\" +\n\t\t\"\\x02\\u0167\\u0168\\x05\\xBE`\\x02\\u0168\\u0169\\x07\\r\\x02\\x02\\u0169\\u016A\\x05\" +\n\t\t\"\\x86D\\x02\\u016A\\u016B\\x07\\x04\\x02\\x02\\u016B\\x1F\\x03\\x02\\x02\\x02\\u016C\" +\n\t\t\"\\u016D\\x07\\x1B\\x02\\x02\\u016D\\u016E\\x05\\xBE`\\x02\\u016E\\u016F\\x05<\\x1F\\x02\" +\n\t\t\"\\u016F\\u0170\\x07\\x04\\x02\\x02\\u0170!\\x03\\x02\\x02\\x02\\u0171\\u0172\\x07}\\x02\" +\n\t\t\"\\x02\\u0172\\u0173\\x05\\xBE`\\x02\\u0173\\u0174\\x07\\x18\\x02\\x02\\u0174\\u0175\" +\n\t\t\"\\x05\\x84C\\x02\\u0175\\u0176\\x07\\x04\\x02\\x02\\u0176#\\x03\\x02\\x02\\x02\\u0177\" +\n\t\t\"\\u0178\\x07\\x1C\\x02\\x02\\u0178\\u0179\\x05&\\x14\\x02\\u0179\\u017C\\x07\\x1D\\x02\" +\n\t\t\"\\x02\\u017A\\u017D\\x07\\x05\\x02\\x02\\u017B\\u017D\\x05J&\\x02\\u017C\\u017A\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u017C\\u017B\\x03\\x02\\x02\\x02\\u017D\\u017F\\x03\\x02\\x02\\x02\\u017E\" +\n\t\t\"\\u0180\\x07\\x7F\\x02\\x02\\u017F\\u017E\\x03\\x02\\x02\\x02\\u017F\\u0180\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0180\\u0181\\x03\\x02\\x02\\x02\\u0181\\u0182\\x07\\x04\\x02\\x02\\u0182\" +\n\t\t\"%\\x03\\x02\\x02\\x02\\u0183\\u0190\\x05L\\'\\x02\\u0184\\u0185\\x07\\x11\\x02\\x02\\u0185\" +\n\t\t\"\\u018A\\x05L\\'\\x02\\u0186\\u0187\\x07\\x12\\x02\\x02\\u0187\\u0189\\x05L\\'\\x02\\u0188\" +\n\t\t\"\\u0186\\x03\\x02\\x02\\x02\\u0189\\u018C\\x03\\x02\\x02\\x02\\u018A\\u0188\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u018A\\u018B\\x03\\x02\\x02\\x02\\u018B\\u018D\\x03\\x02\\x02\\x02\\u018C\" +\n\t\t\"\\u018A\\x03\\x02\\x02\\x02\\u018D\\u018E\\x07\\x13\\x02\\x02\\u018E\\u0190\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u018F\\u0183\\x03\\x02\\x02\\x02\\u018F\\u0184\\x03\\x02\\x02\\x02\\u0190\" +\n\t\t\"\\'\\x03\\x02\\x02\\x02\\u0191\\u0192\\x07\\x1E\\x02\\x02\\u0192\\u0193\\x05\\xBE`\\x02\" +\n\t\t\"\\u0193\\u019E\\x07\\x11\\x02\\x02\\u0194\\u0195\\x05H%\\x02\\u0195\\u019B\\x07\\x04\" +\n\t\t\"\\x02\\x02\\u0196\\u0197\\x05H%\\x02\\u0197\\u0198\\x07\\x04\\x02\\x02\\u0198\\u019A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0199\\u0196\\x03\\x02\\x02\\x02\\u019A\\u019D\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u019B\\u0199\\x03\\x02\\x02\\x02\\u019B\\u019C\\x03\\x02\\x02\\x02\\u019C\\u019F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u019D\\u019B\\x03\\x02\\x02\\x02\\u019E\\u0194\\x03\\x02\\x02\\x02\\u019E\" +\n\t\t\"\\u019F\\x03\\x02\\x02\\x02\\u019F\\u01A0\\x03\\x02\\x02\\x02\\u01A0\\u01A1\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u01A1)\\x03\\x02\\x02\\x02\\u01A2\\u01A3\\x07\\x1F\\x02\\x02\\u01A3\\u01A5\" +\n\t\t\"\\x05\\xBE`\\x02\\u01A4\\u01A6\\x05<\\x1F\\x02\\u01A5\\u01A4\\x03\\x02\\x02\\x02\\u01A5\" +\n\t\t\"\\u01A6\";\n\tprivate static readonly _serializedATNSegment1: string =\n\t\t\"\\x03\\x02\\x02\\x02\\u01A6\\u01AB\\x03\\x02\\x02\\x02\\u01A7\\u01AA\\x07{\\x02\\x02\" +\n\t\t\"\\u01A8\\u01AA\\x05\\xC2b\\x02\\u01A9\\u01A7\\x03\\x02\\x02\\x02\\u01A9\\u01A8\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01AA\\u01AD\\x03\\x02\\x02\\x02\\u01AB\\u01A9\\x03\\x02\\x02\\x02\\u01AB\" +\n\t\t\"\\u01AC\\x03\\x02\\x02\\x02\\u01AC\\u01B0\\x03\\x02\\x02\\x02\\u01AD\\u01AB\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01AE\\u01B1\\x07\\x04\\x02\\x02\\u01AF\\u01B1\\x05X-\\x02\\u01B0\\u01AE\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01B0\\u01AF\\x03\\x02\\x02\\x02\\u01B1+\\x03\\x02\\x02\\x02\\u01B2\" +\n\t\t\"\\u01B8\\x05\\xBE`\\x02\\u01B3\\u01B5\\x07\\x19\\x02\\x02\\u01B4\\u01B6\\x05\\x8AF\\x02\" +\n\t\t\"\\u01B5\\u01B4\\x03\\x02\\x02\\x02\\u01B5\\u01B6\\x03\\x02\\x02\\x02\\u01B6\\u01B7\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01B7\\u01B9\\x07\\x1A\\x02\\x02\\u01B8\\u01B3\\x03\\x02\\x02\\x02\\u01B8\" +\n\t\t\"\\u01B9\\x03\\x02\\x02\\x02\\u01B9-\\x03\\x02\\x02\\x02\\u01BA\\u01BB\\x050\\x19\\x02\" +\n\t\t\"\\u01BB\\u01BC\\x05<\\x1F\\x02\\u01BC\\u01BE\\x054\\x1B\\x02\\u01BD\\u01BF\\x052\\x1A\" +\n\t\t\"\\x02\\u01BE\\u01BD\\x03\\x02\\x02\\x02\\u01BE\\u01BF\\x03\\x02\\x02\\x02\\u01BF\\u01C2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01C0\\u01C3\\x07\\x04\\x02\\x02\\u01C1\\u01C3\\x05X-\\x02\\u01C2\" +\n\t\t\"\\u01C0\\x03\\x02\\x02\\x02\\u01C2\\u01C1\\x03\\x02\\x02\\x02\\u01C3/\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01C4\\u01C6\\x07 \\x02\\x02\\u01C5\\u01C7\\x05\\xBE`\\x02\\u01C6\\u01C5\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01C6\\u01C7\\x03\\x02\\x02\\x02\\u01C7\\u01CC\\x03\\x02\\x02\\x02\\u01C8\" +\n\t\t\"\\u01CC\\x07\\x80\\x02\\x02\\u01C9\\u01CC\\x07\\x81\\x02\\x02\\u01CA\\u01CC\\x07\\x82\" +\n\t\t\"\\x02\\x02\\u01CB\\u01C4\\x03\\x02\\x02\\x02\\u01CB\\u01C8\\x03\\x02\\x02\\x02\\u01CB\" +\n\t\t\"\\u01C9\\x03\\x02\\x02\\x02\\u01CB\\u01CA\\x03\\x02\\x02\\x02\\u01CC1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01CD\\u01CE\\x07!\\x02\\x02\\u01CE\\u01CF\\x05<\\x1F\\x02\\u01CF3\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D0\\u01D9\\x07u\\x02\\x02\\u01D1\\u01D9\\x07z\\x02\\x02\\u01D2\\u01D9\" +\n\t\t\"\\x07w\\x02\\x02\\u01D3\\u01D9\\x07y\\x02\\x02\\u01D4\\u01D9\\x07{\\x02\\x02\\u01D5\" +\n\t\t\"\\u01D9\\x05V,\\x02\\u01D6\\u01D9\\x05,\\x17\\x02\\u01D7\\u01D9\\x05\\xC2b\\x02\\u01D8\" +\n\t\t\"\\u01D0\\x03\\x02\\x02\\x02\\u01D8\\u01D1\\x03\\x02\\x02\\x02\\u01D8\\u01D2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D8\\u01D3\\x03\\x02\\x02\\x02\\u01D8\\u01D4\\x03\\x02\\x02\\x02\\u01D8\" +\n\t\t\"\\u01D5\\x03\\x02\\x02\\x02\\u01D8\\u01D6\\x03\\x02\\x02\\x02\\u01D8\\u01D7\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u01D9\\u01DC\\x03\\x02\\x02\\x02\\u01DA\\u01D8\\x03\\x02\\x02\\x02\\u01DA\" +\n\t\t\"\\u01DB\\x03\\x02\\x02\\x02\\u01DB5\\x03\\x02\\x02\\x02\\u01DC\\u01DA\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u01DD\\u01DE\\x07\\\"\\x02\\x02\\u01DE\\u01DF\\x05\\xBE`\\x02\\u01DF\\u01E1\\x05\" +\n\t\t\"@!\\x02\\u01E0\\u01E2\\x07o\\x02\\x02\\u01E1\\u01E0\\x03\\x02\\x02\\x02\\u01E1\\u01E2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01E2\\u01E3\\x03\\x02\\x02\\x02\\u01E3\\u01E4\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u01E47\\x03\\x02\\x02\\x02\\u01E5\\u01E6\\x05\\xBE`\\x02\\u01E69\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u01E7\\u01E8\\x07#\\x02\\x02\\u01E8\\u01E9\\x05\\xBE`\\x02\\u01E9\\u01EB\\x07\\x11\" +\n\t\t\"\\x02\\x02\\u01EA\\u01EC\\x058\\x1D\\x02\\u01EB\\u01EA\\x03\\x02\\x02\\x02\\u01EB\\u01EC\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01EC\\u01F1\\x03\\x02\\x02\\x02\\u01ED\\u01EE\\x07\\x12\\x02\\x02\" +\n\t\t\"\\u01EE\\u01F0\\x058\\x1D\\x02\\u01EF\\u01ED\\x03\\x02\\x02\\x02\\u01F0\\u01F3\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01F1\\u01EF\\x03\\x02\\x02\\x02\\u01F1\\u01F2\\x03\\x02\\x02\\x02\\u01F2\" +\n\t\t\"\\u01F4\\x03\\x02\\x02\\x02\\u01F3\\u01F1\\x03\\x02\\x02\\x02\\u01F4\\u01F5\\x07\\x13\" +\n\t\t\"\\x02\\x02\\u01F5;\\x03\\x02\\x02\\x02\\u01F6\\u01FF\\x07\\x19\\x02\\x02\\u01F7\\u01FC\" +\n\t\t\"\\x05> \\x02\\u01F8\\u01F9\\x07\\x12\\x02\\x02\\u01F9\\u01FB\\x05> \\x02\\u01FA\\u01F8\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u01FB\\u01FE\\x03\\x02\\x02\\x02\\u01FC\\u01FA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u01FC\\u01FD\\x03\\x02\\x02\\x02\\u01FD\\u0200\\x03\\x02\\x02\\x02\\u01FE\\u01FC\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u01FF\\u01F7\\x03\\x02\\x02\\x02\\u01FF\\u0200\\x03\\x02\\x02\\x02\\u0200\" +\n\t\t\"\\u0201\\x03\\x02\\x02\\x02\\u0201\\u0202\\x07\\x1A\\x02\\x02\\u0202=\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0203\\u0205\\x05J&\\x02\\u0204\\u0206\\x05T+\\x02\\u0205\\u0204\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0205\\u0206\\x03\\x02\\x02\\x02\\u0206\\u0208\\x03\\x02\\x02\\x02\\u0207\\u0209\" +\n\t\t\"\\x05\\xBE`\\x02\\u0208\\u0207\\x03\\x02\\x02\\x02\\u0208\\u0209\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0209?\\x03\\x02\\x02\\x02\\u020A\\u0213\\x07\\x19\\x02\\x02\\u020B\\u0210\\x05B\\\"\" +\n\t\t\"\\x02\\u020C\\u020D\\x07\\x12\\x02\\x02\\u020D\\u020F\\x05B\\\"\\x02\\u020E\\u020C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u020F\\u0212\\x03\\x02\\x02\\x02\\u0210\\u020E\\x03\\x02\\x02\\x02\\u0210\" +\n\t\t\"\\u0211\\x03\\x02\\x02\\x02\\u0211\\u0214\\x03\\x02\\x02\\x02\\u0212\\u0210\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0213\\u020B\\x03\\x02\\x02\\x02\\u0213\\u0214\\x03\\x02\\x02\\x02\\u0214\" +\n\t\t\"\\u0215\\x03\\x02\\x02\\x02\\u0215\\u0216\\x07\\x1A\\x02\\x02\\u0216A\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0217\\u0219\\x05J&\\x02\\u0218\\u021A\\x07v\\x02\\x02\\u0219\\u0218\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0219\\u021A\\x03\\x02\\x02\\x02\\u021A\\u021C\\x03\\x02\\x02\\x02\\u021B\" +\n\t\t\"\\u021D\\x05\\xBE`\\x02\\u021C\\u021B\\x03\\x02\\x02\\x02\\u021C\\u021D\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u021DC\\x03\\x02\\x02\\x02\\u021E\\u0227\\x07\\x19\\x02\\x02\\u021F\\u0224\\x05\" +\n\t\t\"F$\\x02\\u0220\\u0221\\x07\\x12\\x02\\x02\\u0221\\u0223\\x05F$\\x02\\u0222\\u0220\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0223\\u0226\\x03\\x02\\x02\\x02\\u0224\\u0222\\x03\\x02\\x02\\x02\\u0224\" +\n\t\t\"\\u0225\\x03\\x02\\x02\\x02\\u0225\\u0228\\x03\\x02\\x02\\x02\\u0226\\u0224\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0227\\u021F\\x03\\x02\\x02\\x02\\u0227\\u0228\\x03\\x02\\x02\\x02\\u0228\" +\n\t\t\"\\u0229\\x03\\x02\\x02\\x02\\u0229\\u022A\\x07\\x1A\\x02\\x02\\u022AE\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u022B\\u022D\\x05J&\\x02\\u022C\\u022E\\x05T+\\x02\\u022D\\u022C\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u022D\\u022E\\x03\\x02\\x02\\x02\\u022EG\\x03\\x02\\x02\\x02\\u022F\\u0231\\x05\" +\n\t\t\"J&\\x02\\u0230\\u0232\\x05T+\\x02\\u0231\\u0230\\x03\\x02\\x02\\x02\\u0231\\u0232\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0232\\u0233\\x03\\x02\\x02\\x02\\u0233\\u0234\\x05\\xBE`\\x02\\u0234\" +\n\t\t\"I\\x03\\x02\\x02\\x02\\u0235\\u0236\\b&\\x01\\x02\\u0236\\u023D\\x05\\x84C\\x02\\u0237\" +\n\t\t\"\\u023D\\x05L\\'\\x02\\u0238\\u023D\\x05P)\\x02\\u0239\\u023D\\x05R*\\x02\\u023A\\u023B\" +\n\t\t\"\\x07&\\x02\\x02\\u023B\\u023D\\x07x\\x02\\x02\\u023C\\u0235\\x03\\x02\\x02\\x02\\u023C\" +\n\t\t\"\\u0237\\x03\\x02\\x02\\x02\\u023C\\u0238\\x03\\x02\\x02\\x02\\u023C\\u0239\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u023C\\u023A\\x03\\x02\\x02\\x02\\u023D\\u0246\\x03\\x02\\x02\\x02\\u023E\" +\n\t\t\"\\u023F\\f\\x05\\x02\\x02\\u023F\\u0241\\x07$\\x02\\x02\\u0240\\u0242\\x05\\x86D\\x02\" +\n\t\t\"\\u0241\\u0240\\x03\\x02\\x02\\x02\\u0241\\u0242\\x03\\x02\\x02\\x02\\u0242\\u0243\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0243\\u0245\\x07%\\x02\\x02\\u0244\\u023E\\x03\\x02\\x02\\x02\\u0245\" +\n\t\t\"\\u0248\\x03\\x02\\x02\\x02\\u0246\\u0244\\x03\\x02\\x02\\x02\\u0246\\u0247\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0247K\\x03\\x02\\x02\\x02\\u0248\\u0246\\x03\\x02\\x02\\x02\\u0249\\u024E\" +\n\t\t\"\\x05\\xBE`\\x02\\u024A\\u024B\\x07\\'\\x02\\x02\\u024B\\u024D\\x05\\xBE`\\x02\\u024C\" +\n\t\t\"\\u024A\\x03\\x02\\x02\\x02\\u024D\\u0250\\x03\\x02\\x02\\x02\\u024E\\u024C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u024E\\u024F\\x03\\x02\\x02\\x02\\u024FM\\x03\\x02\\x02\\x02\\u0250\\u024E\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0251\\u0254\\x05\\x84C\\x02\\u0252\\u0254\\x05L\\'\\x02\\u0253\" +\n\t\t\"\\u0251\\x03\\x02\\x02\\x02\\u0253\\u0252\\x03\\x02\\x02\\x02\\u0254O\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0255\\u0256\\x07(\\x02\\x02\\u0256\\u0257\\x07\\x19\\x02\\x02\\u0257\\u0258\" +\n\t\t\"\\x05N(\\x02\\u0258\\u0259\\x07)\\x02\\x02\\u0259\\u025A\\x05J&\\x02\\u025A\\u025B\" +\n\t\t\"\\x07\\x1A\\x02\\x02\\u025BQ\\x03\\x02\\x02\\x02\\u025C\\u025D\\x07 \\x02\\x02\\u025D\" +\n\t\t\"\\u0263\\x05D#\\x02\\u025E\\u0262\\x07w\\x02\\x02\\u025F\\u0262\\x07u\\x02\\x02\\u0260\" +\n\t\t\"\\u0262\\x05V,\\x02\\u0261\\u025E\\x03\\x02\\x02\\x02\\u0261\\u025F\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0261\\u0260\\x03\\x02\\x02\\x02\\u0262\\u0265\\x03\\x02\\x02\\x02\\u0263\\u0261\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0263\\u0264\\x03\\x02\\x02\\x02\\u0264\\u0268\\x03\\x02\\x02\\x02\\u0265\" +\n\t\t\"\\u0263\\x03\\x02\\x02\\x02\\u0266\\u0267\\x07!\\x02\\x02\\u0267\\u0269\\x05D#\\x02\" +\n\t\t\"\\u0268\\u0266\\x03\\x02\\x02\\x02\\u0268\\u0269\\x03\\x02\\x02\\x02\\u0269S\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u026A\\u026B\\t\\x04\\x02\\x02\\u026BU\\x03\\x02\\x02\\x02\\u026C\\u026D\" +\n\t\t\"\\t\\x05\\x02\\x02\\u026DW\\x03\\x02\\x02\\x02\\u026E\\u0272\\x07\\x11\\x02\\x02\\u026F\" +\n\t\t\"\\u0271\\x05Z.\\x02\\u0270\\u026F\\x03\\x02\\x02\\x02\\u0271\\u0274\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0272\\u0270\\x03\\x02\\x02\\x02\\u0272\\u0273\\x03\\x02\\x02\\x02\\u0273\\u0275\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0274\\u0272\\x03\\x02\\x02\\x02\\u0275\\u0276\\x07\\x13\\x02\\x02\\u0276\" +\n\t\t\"Y\\x03\\x02\\x02\\x02\\u0277\\u0287\\x05^0\\x02\\u0278\\u0287\\x05`1\\x02\\u0279\\u0287\" +\n\t\t\"\\x05d3\\x02\\u027A\\u0287\\x05j6\\x02\\u027B\\u0287\\x05X-\\x02\\u027C\\u0287\\x05\" +\n\t\t\"l7\\x02\\u027D\\u0287\\x05p9\\x02\\u027E\\u0287\\x05r:\\x02\\u027F\\u0287\\x05t;\\x02\" +\n\t\t\"\\u0280\\u0287\\x05v<\\x02\\u0281\\u0287\\x05x=\\x02\\u0282\\u0287\\x05z>\\x02\\u0283\" +\n\t\t\"\\u0287\\x05f4\\x02\\u0284\\u0287\\x05h5\\x02\\u0285\\u0287\\x05|?\\x02\\u0286\\u0277\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0286\\u0278\\x03\\x02\\x02\\x02\\u0286\\u0279\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0286\\u027A\\x03\\x02\\x02\\x02\\u0286\\u027B\\x03\\x02\\x02\\x02\\u0286\\u027C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0286\\u027D\\x03\\x02\\x02\\x02\\u0286\\u027E\\x03\\x02\\x02\\x02\\u0286\" +\n\t\t\"\\u027F\\x03\\x02\\x02\\x02\\u0286\\u0280\\x03\\x02\\x02\\x02\\u0286\\u0281\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0286\\u0282\\x03\\x02\\x02\\x02\\u0286\\u0283\\x03\\x02\\x02\\x02\\u0286\" +\n\t\t\"\\u0284\\x03\\x02\\x02\\x02\\u0286\\u0285\\x03\\x02\\x02\\x02\\u0287[\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0288\\u0289\\x05\\x86D\\x02\\u0289\\u028A\\x07\\x04\\x02\\x02\\u028A]\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u028B\\u028C\\x07-\\x02\\x02\\u028C\\u028D\\x07\\x19\\x02\\x02\\u028D\\u028E\" +\n\t\t\"\\x05\\x86D\\x02\\u028E\\u028F\\x07\\x1A\\x02\\x02\\u028F\\u0292\\x05Z.\\x02\\u0290\" +\n\t\t\"\\u0291\\x07.\\x02\\x02\\u0291\\u0293\\x05Z.\\x02\\u0292\\u0290\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0292\\u0293\\x03\\x02\\x02\\x02\\u0293_\\x03\\x02\\x02\\x02\\u0294\\u0295\\x07/\\x02\" +\n\t\t\"\\x02\\u0295\\u0297\\x05\\x86D\\x02\\u0296\\u0298\\x052\\x1A\\x02\\u0297\\u0296\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0297\\u0298\\x03\\x02\\x02\\x02\\u0298\\u0299\\x03\\x02\\x02\\x02\\u0299\" +\n\t\t\"\\u029B\\x05X-\\x02\\u029A\\u029C\\x05b2\\x02\\u029B\\u029A\\x03\\x02\\x02\\x02\\u029C\" +\n\t\t\"\\u029D\\x03\\x02\\x02\\x02\\u029D\\u029B\\x03\\x02\\x02\\x02\\u029D\\u029E\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u029Ea\\x03\\x02\\x02\\x02\\u029F\\u02A4\\x070\\x02\\x02\\u02A0\\u02A2\\x05\" +\n\t\t\"\\xBE`\\x02\\u02A1\\u02A0\\x03\\x02\\x02\\x02\\u02A1\\u02A2\\x03\\x02\\x02\\x02\\u02A2\" +\n\t\t\"\\u02A3\\x03\\x02\\x02\\x02\\u02A3\\u02A5\\x05<\\x1F\\x02\\u02A4\\u02A1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02A4\\u02A5\\x03\\x02\\x02\\x02\\u02A5\\u02A6\\x03\\x02\\x02\\x02\\u02A6\\u02A7\" +\n\t\t\"\\x05X-\\x02\\u02A7c\\x03\\x02\\x02\\x02\\u02A8\\u02A9\\x071\\x02\\x02\\u02A9\\u02AA\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u02AA\\u02AB\\x05\\x86D\\x02\\u02AB\\u02AC\\x07\\x1A\\x02\\x02\" +\n\t\t\"\\u02AC\\u02AD\\x05Z.\\x02\\u02ADe\\x03\\x02\\x02\\x02\\u02AE\\u02B1\\x05~@\\x02\\u02AF\" +\n\t\t\"\\u02B1\\x05\\\\/\\x02\\u02B0\\u02AE\\x03\\x02\\x02\\x02\\u02B0\\u02AF\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02B1g\\x03\\x02\\x02\\x02\\u02B2\\u02B3\\x072\\x02\\x02\\u02B3\\u02B4\\x05X\" +\n\t\t\"-\\x02\\u02B4i\\x03\\x02\\x02\\x02\\u02B5\\u02B6\\x07\\x1D\\x02\\x02\\u02B6\\u02B9\\x07\" +\n\t\t\"\\x19\\x02\\x02\\u02B7\\u02BA\\x05f4\\x02\\u02B8\\u02BA\\x07\\x04\\x02\\x02\\u02B9\\u02B7\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02B9\\u02B8\\x03\\x02\\x02\\x02\\u02BA\\u02BD\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02BB\\u02BE\\x05\\\\/\\x02\\u02BC\\u02BE\\x07\\x04\\x02\\x02\\u02BD\\u02BB\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02BD\\u02BC\\x03\\x02\\x02\\x02\\u02BE\\u02C0\\x03\\x02\\x02\\x02\\u02BF\" +\n\t\t\"\\u02C1\\x05\\x86D\\x02\\u02C0\\u02BF\\x03\\x02\\x02\\x02\\u02C0\\u02C1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02C1\\u02C2\\x03\\x02\\x02\\x02\\u02C2\\u02C3\\x07\\x1A\\x02\\x02\\u02C3\\u02C4\" +\n\t\t\"\\x05Z.\\x02\\u02C4k\\x03\\x02\\x02\\x02\\u02C5\\u02C7\\x073\\x02\\x02\\u02C6\\u02C8\" +\n\t\t\"\\x07\\x84\\x02\\x02\\u02C7\\u02C6\\x03\\x02\\x02\\x02\\u02C7\\u02C8\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02C8\\u02CD\\x03\\x02\\x02\\x02\\u02C9\\u02CA\\x07\\x19\\x02\\x02\\u02CA\\u02CB\\x05\" +\n\t\t\"n8\\x02\\u02CB\\u02CC\\x07\\x1A\\x02\\x02\\u02CC\\u02CE\\x03\\x02\\x02\\x02\\u02CD\\u02C9\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02CD\\u02CE\\x03\\x02\\x02\\x02\\u02CE\\u02CF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02CF\\u02D0\\x05\\x94K\\x02\\u02D0m\\x03\\x02\\x02\\x02\\u02D1\\u02D2\\x05\\xC4c\" +\n\t\t\"\\x02\\u02D2o\\x03\\x02\\x02\\x02\\u02D3\\u02D4\\x074\\x02\\x02\\u02D4\\u02D5\\x05Z\" +\n\t\t\".\\x02\\u02D5\\u02D6\\x071\\x02\\x02\\u02D6\\u02D7\\x07\\x19\\x02\\x02\\u02D7\\u02D8\" +\n\t\t\"\\x05\\x86D\\x02\\u02D8\\u02D9\\x07\\x1A\\x02\\x02\\u02D9\\u02DA\\x07\\x04\\x02\\x02\" +\n\t\t\"\\u02DAq\\x03\\x02\\x02\\x02\\u02DB\\u02DC\\x07s\\x02\\x02\\u02DC\\u02DD\\x07\\x04\\x02\" +\n\t\t\"\\x02\\u02DDs\\x03\\x02\\x02\\x02\\u02DE\\u02DF\\x07p\\x02\\x02\\u02DF\\u02E0\\x07\\x04\" +\n\t\t\"\\x02\\x02\\u02E0u\\x03\\x02\\x02\\x02\\u02E1\\u02E3\\x075\\x02\\x02\\u02E2\\u02E4\\x05\" +\n\t\t\"\\x86D\\x02\\u02E3\\u02E2\\x03\\x02\\x02\\x02\\u02E3\\u02E4\\x03\\x02\\x02\\x02\\u02E4\" +\n\t\t\"\\u02E5\\x03\\x02\\x02\\x02\\u02E5\\u02E6\\x07\\x04\\x02\\x02\\u02E6w\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u02E7\\u02E8\\x076\\x02\\x02\\u02E8\\u02E9\\x07\\x04\\x02\\x02\\u02E9y\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02EA\\u02EB\\x077\\x02\\x02\\u02EB\\u02EC\\x05\\x92J\\x02\\u02EC\\u02ED\" +\n\t\t\"\\x07\\x04\\x02\\x02\\u02ED{\\x03\\x02\\x02\\x02\\u02EE\\u02EF\\x078\\x02\\x02\\u02EF\" +\n\t\t\"\\u02F0\\x05\\x92J\\x02\\u02F0\\u02F1\\x07\\x04\\x02\\x02\\u02F1}\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02F2\\u02F3\\x079\\x02\\x02\\u02F3\\u02FA\\x05\\x82B\\x02\\u02F4\\u02FA\\x05H%\\x02\" +\n\t\t\"\\u02F5\\u02F6\\x07\\x19\\x02\\x02\\u02F6\\u02F7\\x05\\x80A\\x02\\u02F7\\u02F8\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u02F8\\u02FA\\x03\\x02\\x02\\x02\\u02F9\\u02F2\\x03\\x02\\x02\\x02\\u02F9\" +\n\t\t\"\\u02F4\\x03\\x02\\x02\\x02\\u02F9\\u02F5\\x03\\x02\\x02\\x02\\u02FA\\u02FD\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u02FB\\u02FC\\x07\\r\\x02\\x02\\u02FC\\u02FE\\x05\\x86D\\x02\\u02FD\\u02FB\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u02FD\\u02FE\\x03\\x02\\x02\\x02\\u02FE\\u02FF\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u02FF\\u0300\\x07\\x04\\x02\\x02\\u0300\\x7F\\x03\\x02\\x02\\x02\\u0301\\u0303\\x05\" +\n\t\t\"H%\\x02\\u0302\\u0301\\x03\\x02\\x02\\x02\\u0302\\u0303\\x03\\x02\\x02\\x02\\u0303\\u030A\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0304\\u0306\\x07\\x12\\x02\\x02\\u0305\\u0307\\x05H%\\x02\\u0306\" +\n\t\t\"\\u0305\\x03\\x02\\x02\\x02\\u0306\\u0307\\x03\\x02\\x02\\x02\\u0307\\u0309\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0308\\u0304\\x03\\x02\\x02\\x02\\u0309\\u030C\\x03\\x02\\x02\\x02\\u030A\" +\n\t\t\"\\u0308\\x03\\x02\\x02\\x02\\u030A\\u030B\\x03\\x02\\x02\\x02\\u030B\\x81\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u030C\\u030A\\x03\\x02\\x02\\x02\\u030D\\u0314\\x07\\x19\\x02\\x02\\u030E\\u0310\" +\n\t\t\"\\x05\\xBE`\\x02\\u030F\\u030E\\x03\\x02\\x02\\x02\\u030F\\u0310\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0310\\u0311\\x03\\x02\\x02\\x02\\u0311\\u0313\\x07\\x12\\x02\\x02\\u0312\\u030F\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0313\\u0316\\x03\\x02\\x02\\x02\\u0314\\u0312\\x03\\x02\\x02\\x02\\u0314\" +\n\t\t\"\\u0315\\x03\\x02\\x02\\x02\\u0315\\u0318\\x03\\x02\\x02\\x02\\u0316\\u0314\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0317\\u0319\\x05\\xBE`\\x02\\u0318\\u0317\\x03\\x02\\x02\\x02\\u0318\\u0319\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0319\\u031A\\x03\\x02\\x02\\x02\\u031A\\u031B\\x07\\x1A\\x02\\x02\" +\n\t\t\"\\u031B\\x83\\x03\\x02\\x02\\x02\\u031C\\u031D\\t\\x06\\x02\\x02\\u031D\\x85\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u031E\\u031F\\bD\\x01\\x02\\u031F\\u0320\\x07?\\x02\\x02\\u0320\\u0331\\x05\" +\n\t\t\"J&\\x02\\u0321\\u0322\\x07\\x19\\x02\\x02\\u0322\\u0323\\x05\\x86D\\x02\\u0323\\u0324\" +\n\t\t\"\\x07\\x1A\\x02\\x02\\u0324\\u0331\\x03\\x02\\x02\\x02\\u0325\\u0326\\t\\x07\\x02\\x02\" +\n\t\t\"\\u0326\\u0331\\x05\\x86D\\x15\\u0327\\u0328\\t\\b\\x02\\x02\\u0328\\u0331\\x05\\x86\" +\n\t\t\"D\\x14\\u0329\\u032A\\t\\t\\x02\\x02\\u032A\\u0331\\x05\\x86D\\x13\\u032B\\u032C\\x07\" +\n\t\t\"E\\x02\\x02\\u032C\\u0331\\x05\\x86D\\x12\\u032D\\u032E\\x07\\b\\x02\\x02\\u032E\\u0331\" +\n\t\t\"\\x05\\x86D\\x11\\u032F\\u0331\\x05\\x88E\\x02\\u0330\\u031E\\x03\\x02\\x02\\x02\\u0330\" +\n\t\t\"\\u0321\\x03\\x02\\x02\\x02\\u0330\\u0325\\x03\\x02\\x02\\x02\\u0330\\u0327\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0330\\u0329\\x03\\x02\\x02\\x02\\u0330\\u032B\\x03\\x02\\x02\\x02\\u0330\" +\n\t\t\"\\u032D\\x03\\x02\\x02\\x02\\u0330\\u032F\\x03\\x02\\x02\\x02\\u0331\\u037C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0332\\u0333\\f\\x10\\x02\\x02\\u0333\\u0334\\x07F\\x02\\x02\\u0334\\u037B\" +\n\t\t\"\\x05\\x86D\\x11\\u0335\\u0336\\f\\x0F\\x02\\x02\\u0336\\u0337\\t\\n\\x02\\x02\\u0337\" +\n\t\t\"\\u037B\\x05\\x86D\\x10\\u0338\\u0339\\f\\x0E\\x02\\x02\\u0339\\u033A\\t\\b\\x02\\x02\" +\n\t\t\"\\u033A\\u037B\\x05\\x86D\\x0F\\u033B\\u033C\\f\\r\\x02\\x02\\u033C\\u033D\\t\\v\\x02\" +\n\t\t\"\\x02\\u033D\\u037B\\x05\\x86D\\x0E\\u033E\\u033F\\f\\f\\x02\\x02\\u033F\\u0340\\x07\" +\n\t\t\"K\\x02\\x02\\u0340\\u037B\\x05\\x86D\\r\\u0341\\u0342\\f\\v\\x02\\x02\\u0342\\u0343\\x07\" +\n\t\t\"\\x07\\x02\\x02\\u0343\\u037B\\x05\\x86D\\f\\u0344\\u0345\\f\\n\\x02\\x02\\u0345\\u0346\" +\n\t\t\"\\x07L\\x02\\x02\\u0346\\u037B\\x05\\x86D\\v\\u0347\\u0348\\f\\t\\x02\\x02\\u0348\\u0349\" +\n\t\t\"\\t\\f\\x02\\x02\\u0349\\u037B\\x05\\x86D\\n\\u034A\\u034B\\f\\b\\x02\\x02\\u034B\\u034C\" +\n\t\t\"\\t\\r\\x02\\x02\\u034C\\u037B\\x05\\x86D\\t\\u034D\\u034E\\f\\x07\\x02\\x02\\u034E\\u034F\" +\n\t\t\"\\x07O\\x02\\x02\\u034F\\u037B\\x05\\x86D\\b\\u0350\\u0351\\f\\x06\\x02\\x02\\u0351\\u0352\" +\n\t\t\"\\x07\\x06\\x02\\x02\\u0352\\u037B\\x05\\x86D\\x07\\u0353\\u0354\\f\\x05\\x02\\x02\\u0354\" +\n\t\t\"\\u0355\\x07P\\x02\\x02\\u0355\\u0356\\x05\\x86D\\x02\\u0356\\u0357\\x07@\\x02\\x02\" +\n\t\t\"\\u0357\\u0358\\x05\\x86D\\x06\\u0358\\u037B\\x03\\x02\\x02\\x02\\u0359\\u035A\\f\\x04\" +\n\t\t\"\\x02\\x02\\u035A\\u035B\\t\\x0E\\x02\\x02\\u035B\\u037B\\x05\\x86D\\x05\\u035C\\u035D\" +\n\t\t\"\\f\\x1D\\x02\\x02\\u035D\\u037B\\t\\x07\\x02\\x02\\u035E\\u035F\\f\\x1B\\x02\\x02\\u035F\" +\n\t\t\"\\u0360\\x07$\\x02\\x02\\u0360\\u0361\\x05\\x86D\\x02\\u0361\\u0362\\x07%\\x02\\x02\" +\n\t\t\"\\u0362\\u037B\\x03\\x02\\x02\\x02\\u0363\\u0364\\f\\x1A\\x02\\x02\\u0364\\u0366\\x07\" +\n\t\t\"$\\x02\\x02\\u0365\\u0367\\x05\\x86D\\x02\\u0366\\u0365\\x03\\x02\\x02\\x02\\u0366\\u0367\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0367\\u0368\\x03\\x02\\x02\\x02\\u0368\\u036A\\x07@\\x02\\x02\" +\n\t\t\"\\u0369\\u036B\\x05\\x86D\\x02\\u036A\\u0369\\x03\\x02\\x02\\x02\\u036A\\u036B\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u036B\\u036C\\x03\\x02\\x02\\x02\\u036C\\u037B\\x07%\\x02\\x02\\u036D\" +\n\t\t\"\\u036E\\f\\x19\\x02\\x02\\u036E\\u036F\\x07\\'\\x02\\x02\\u036F\\u037B\\x05\\xBE`\\x02\" +\n\t\t\"\\u0370\\u0371\\f\\x18\\x02\\x02\\u0371\\u0372\\x07\\x11\\x02\\x02\\u0372\\u0373\\x05\" +\n\t\t\"\\x8CG\\x02\\u0373\\u0374\\x07\\x13\\x02\\x02\\u0374\\u037B\\x03\\x02\\x02\\x02\\u0375\" +\n\t\t\"\\u0376\\f\\x17\\x02\\x02\\u0376\\u0377\\x07\\x19\\x02\\x02\\u0377\\u0378\\x05\\x90I\" +\n\t\t\"\\x02\\u0378\\u0379\\x07\\x1A\\x02\\x02\\u0379\\u037B\\x03\\x02\\x02\\x02\\u037A\\u0332\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u037A\\u0335\\x03\\x02\\x02\\x02\\u037A\\u0338\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u037A\\u033B\\x03\\x02\\x02\\x02\\u037A\\u033E\\x03\\x02\\x02\\x02\\u037A\\u0341\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u037A\\u0344\\x03\\x02\\x02\\x02\\u037A\\u0347\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u034A\\x03\\x02\\x02\\x02\\u037A\\u034D\\x03\\x02\\x02\\x02\\u037A\\u0350\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037A\\u0353\\x03\\x02\\x02\\x02\\u037A\\u0359\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u035C\\x03\\x02\\x02\\x02\\u037A\\u035E\\x03\\x02\\x02\\x02\\u037A\\u0363\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037A\\u036D\\x03\\x02\\x02\\x02\\u037A\\u0370\\x03\\x02\\x02\\x02\\u037A\" +\n\t\t\"\\u0375\\x03\\x02\\x02\\x02\\u037B\\u037E\\x03\\x02\\x02\\x02\\u037C\\u037A\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u037C\\u037D\\x03\\x02\\x02\\x02\\u037D\\x87\\x03\\x02\\x02\\x02\\u037E\\u037C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u037F\\u0389\\x07i\\x02\\x02\\u0380\\u0389\\x05\\xBC_\\x02\\u0381\" +\n\t\t\"\\u0389\\x05\\xC0a\\x02\\u0382\\u0389\\x05\\xC4c\\x02\\u0383\\u0389\\x05\\xBE`\\x02\" +\n\t\t\"\\u0384\\u0389\\x07}\\x02\\x02\\u0385\\u0389\\x07x\\x02\\x02\\u0386\\u0389\\x05\\xBA\" +\n\t\t\"^\\x02\\u0387\\u0389\\x05J&\\x02\\u0388\\u037F\\x03\\x02\\x02\\x02\\u0388\\u0380\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0388\\u0381\\x03\\x02\\x02\\x02\\u0388\\u0382\\x03\\x02\\x02\\x02\\u0388\" +\n\t\t\"\\u0383\\x03\\x02\\x02\\x02\\u0388\\u0384\\x03\\x02\\x02\\x02\\u0388\\u0385\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0388\\u0386\\x03\\x02\\x02\\x02\\u0388\\u0387\\x03\\x02\\x02\\x02\\u0389\" +\n\t\t\"\\x89\\x03\\x02\\x02\\x02\\u038A\\u038F\\x05\\x86D\\x02\\u038B\\u038C\\x07\\x12\\x02\" +\n\t\t\"\\x02\\u038C\\u038E\\x05\\x86D\\x02\\u038D\\u038B\\x03\\x02\\x02\\x02\\u038E\\u0391\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u038F\\u038D\\x03\\x02\\x02\\x02\\u038F\\u0390\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0390\\x8B\\x03\\x02\\x02\\x02\\u0391\\u038F\\x03\\x02\\x02\\x02\\u0392\\u0397\\x05\" +\n\t\t\"\\x8EH\\x02\\u0393\\u0394\\x07\\x12\\x02\\x02\\u0394\\u0396\\x05\\x8EH\\x02\\u0395\\u0393\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0396\\u0399\\x03\\x02\\x02\\x02\\u0397\\u0395\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0397\\u0398\\x03\\x02\\x02\\x02\\u0398\\u039B\\x03\\x02\\x02\\x02\\u0399\\u0397\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u039A\\u039C\\x07\\x12\\x02\\x02\\u039B\\u039A\\x03\\x02\\x02\\x02\\u039B\" +\n\t\t\"\\u039C\\x03\\x02\\x02\\x02\\u039C\\x8D\\x03\\x02\\x02\\x02\\u039D\\u039E\\x05\\xBE`\" +\n\t\t\"\\x02\\u039E\\u039F\\x07@\\x02\\x02\\u039F\\u03A0\\x05\\x86D\\x02\\u03A0\\x8F\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03A1\\u03A3\\x07\\x11\\x02\\x02\\u03A2\\u03A4\\x05\\x8CG\\x02\\u03A3\\u03A2\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03A3\\u03A4\\x03\\x02\\x02\\x02\\u03A4\\u03A5\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03A5\\u03AA\\x07\\x13\\x02\\x02\\u03A6\\u03A8\\x05\\x8AF\\x02\\u03A7\\u03A6\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03A7\\u03A8\\x03\\x02\\x02\\x02\\u03A8\\u03AA\\x03\\x02\\x02\\x02\\u03A9\" +\n\t\t\"\\u03A1\\x03\\x02\\x02\\x02\\u03A9\\u03A7\\x03\\x02\\x02\\x02\\u03AA\\x91\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u03AB\\u03AC\\x05\\x86D\\x02\\u03AC\\u03AD\\x07\\x19\\x02\\x02\\u03AD\\u03AE\" +\n\t\t\"\\x05\\x90I\\x02\\u03AE\\u03AF\\x07\\x1A\\x02\\x02\\u03AF\\x93\\x03\\x02\\x02\\x02\\u03B0\" +\n\t\t\"\\u03B4\\x07\\x11\\x02\\x02\\u03B1\\u03B3\\x05\\x96L\\x02\\u03B2\\u03B1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u03B3\\u03B6\\x03\\x02\\x02\\x02\\u03B4\\u03B2\\x03\\x02\\x02\\x02\\u03B4\\u03B5\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03B5\\u03B7\\x03\\x02\\x02\\x02\\u03B6\\u03B4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03B7\\u03B8\\x07\\x13\\x02\\x02\\u03B8\\x95\\x03\\x02\\x02\\x02\\u03B9\\u03CC\\x05\" +\n\t\t\"\\xBE`\\x02\\u03BA\\u03CC\\x05\\x94K\\x02\\u03BB\\u03CC\\x05\\x98M\\x02\\u03BC\\u03CC\" +\n\t\t\"\\x05\\x9EP\\x02\\u03BD\\u03CC\\x05\\xA0Q\\x02\\u03BE\\u03CC\\x05\\xA6T\\x02\\u03BF\" +\n\t\t\"\\u03CC\\x05\\xA8U\\x02\\u03C0\\u03CC\\x05\\xAAV\\x02\\u03C1\\u03CC\\x05\\xAEX\\x02\" +\n\t\t\"\\u03C2\\u03CC\\x05\\xB2Z\\x02\\u03C3\\u03CC\\x05\\xB4[\\x02\\u03C4\\u03CC\\x07p\\x02\" +\n\t\t\"\\x02\\u03C5\\u03CC\\x07s\\x02\\x02\\u03C6\\u03CC\\x07t\\x02\\x02\\u03C7\\u03CC\\x05\" +\n\t\t\"\\xB8]\\x02\\u03C8\\u03CC\\x05\\xBC_\\x02\\u03C9\\u03CC\\x05\\xC4c\\x02\\u03CA\\u03CC\" +\n\t\t\"\\x05\\xC0a\\x02\\u03CB\\u03B9\\x03\\x02\\x02\\x02\\u03CB\\u03BA\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03CB\\u03BB\\x03\\x02\\x02\\x02\\u03CB\\u03BC\\x03\\x02\\x02\\x02\\u03CB\\u03BD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03CB\\u03BE\\x03\\x02\\x02\\x02\\u03CB\\u03BF\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03C0\\x03\\x02\\x02\\x02\\u03CB\\u03C1\\x03\\x02\\x02\\x02\\u03CB\\u03C2\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03CB\\u03C3\\x03\\x02\\x02\\x02\\u03CB\\u03C4\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03C5\\x03\\x02\\x02\\x02\\u03CB\\u03C6\\x03\\x02\\x02\\x02\\u03CB\\u03C7\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03CB\\u03C8\\x03\\x02\\x02\\x02\\u03CB\\u03C9\\x03\\x02\\x02\\x02\\u03CB\" +\n\t\t\"\\u03CA\\x03\\x02\\x02\\x02\\u03CC\\x97\\x03\\x02\\x02\\x02\\u03CD\\u03D1\\x05\\x9CO\" +\n\t\t\"\\x02\\u03CE\\u03D1\\x05\\xB6\\\\\\x02\\u03CF\\u03D1\\x05\\x9AN\\x02\\u03D0\\u03CD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03D0\\u03CE\\x03\\x02\\x02\\x02\\u03D0\\u03CF\\x03\\x02\\x02\\x02\\u03D1\" +\n\t\t\"\\x99\\x03\\x02\\x02\\x02\\u03D2\\u03D3\\x05\\xBE`\\x02\\u03D3\\u03D4\\x07\\'\\x02\\x02\" +\n\t\t\"\\u03D4\\u03D5\\x05\\xBE`\\x02\\u03D5\\x9B\\x03\\x02\\x02\\x02\\u03D6\\u03DB\\x075\\x02\" +\n\t\t\"\\x02\\u03D7\\u03DB\\x07&\\x02\\x02\\u03D8\\u03DB\\x07<\\x02\\x02\\u03D9\\u03DB\\x05\" +\n\t\t\"\\xBE`\\x02\\u03DA\\u03D6\\x03\\x02\\x02\\x02\\u03DA\\u03D7\\x03\\x02\\x02\\x02\\u03DA\" +\n\t\t\"\\u03D8\\x03\\x02\\x02\\x02\\u03DA\\u03D9\\x03\\x02\\x02\\x02\\u03DB\\u03E8\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03DC\\u03DE\\x07\\x19\\x02\\x02\\u03DD\\u03DF\\x05\\x98M\\x02\\u03DE\\u03DD\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u03DE\\u03DF\\x03\\x02\\x02\\x02\\u03DF\\u03E4\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03E0\\u03E1\\x07\\x12\\x02\\x02\\u03E1\\u03E3\\x05\\x98M\\x02\\u03E2\\u03E0\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03E3\\u03E6\\x03\\x02\\x02\\x02\\u03E4\\u03E2\\x03\\x02\\x02\\x02\\u03E4\" +\n\t\t\"\\u03E5\\x03\\x02\\x02\\x02\\u03E5\\u03E7\\x03\\x02\\x02\\x02\\u03E6\\u03E4\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u03E7\\u03E9\\x07\\x1A\\x02\\x02\\u03E8\\u03DC\\x03\\x02\\x02\\x02\\u03E8\" +\n\t\t\"\\u03E9\\x03\\x02\\x02\\x02\\u03E9\\x9D\\x03\\x02\\x02\\x02\\u03EA\\u03EB\\x07[\\x02\" +\n\t\t\"\\x02\\u03EB\\u03EE\\x05\\xA2R\\x02\\u03EC\\u03ED\\x07\\\\\\x02\\x02\\u03ED\\u03EF\\x05\" +\n\t\t\"\\x98M\\x02\\u03EE\\u03EC\\x03\\x02\\x02\\x02\\u03EE\\u03EF\\x03\\x02\\x02\\x02\\u03EF\" +\n\t\t\"\\x9F\\x03\\x02\\x02\\x02\\u03F0\\u03F1\\x05\\xA2R\\x02\\u03F1\\u03F2\\x07\\\\\\x02\\x02\" +\n\t\t\"\\u03F2\\u03F3\\x05\\x98M\\x02\\u03F3\\xA1\\x03\\x02\\x02\\x02\\u03F4\\u03FB\\x05\\xBE\" +\n\t\t\"`\\x02\\u03F5\\u03FB\\x05\\x9AN\\x02\\u03F6\\u03F7\\x07\\x19\\x02\\x02\\u03F7\\u03F8\" +\n\t\t\"\\x05\\xA4S\\x02\\u03F8\\u03F9\\x07\\x1A\\x02\\x02\\u03F9\\u03FB\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u03FA\\u03F4\\x03\\x02\\x02\\x02\\u03FA\\u03F5\\x03\\x02\\x02\\x02\\u03FA\\u03F6\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u03FB\\xA3\\x03\\x02\\x02\\x02\\u03FC\\u0401\\x05\\xBE`\\x02\\u03FD\" +\n\t\t\"\\u03FE\\x07\\x12\\x02\\x02\\u03FE\\u0400\\x05\\xBE`\\x02\\u03FF\\u03FD\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0400\\u0403\\x03\\x02\\x02\\x02\\u0401\\u03FF\\x03\\x02\\x02\\x02\\u0401\\u0402\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0402\\xA5\\x03\\x02\\x02\\x02\\u0403\\u0401\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0404\\u0405\\x05\\x98M\\x02\\u0405\\u0406\\x07]\\x02\\x02\\u0406\\u0407\\x05\\xBE\" +\n\t\t\"`\\x02\\u0407\\xA7\\x03\\x02\\x02\\x02\\u0408\\u0409\\x05\\xBE`\\x02\\u0409\\u040A\\x07\" +\n\t\t\"@\\x02\\x02\\u040A\\xA9\\x03\\x02\\x02\\x02\\u040B\\u040C\\x07^\\x02\\x02\\u040C\\u0410\" +\n\t\t\"\\x05\\x98M\\x02\\u040D\\u040F\\x05\\xACW\\x02\\u040E\\u040D\\x03\\x02\\x02\\x02\\u040F\" +\n\t\t\"\\u0412\\x03\\x02\\x02\\x02\\u0410\\u040E\\x03\\x02\\x02\\x02\\u0410\\u0411\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u0411\\xAB\\x03\\x02\\x02\\x02\\u0412\\u0410\\x03\\x02\\x02\\x02\\u0413\\u0414\" +\n\t\t\"\\x07_\\x02\\x02\\u0414\\u0415\\x05\\xB6\\\\\\x02\\u0415\\u0416\\x05\\x94K\\x02\\u0416\" +\n\t\t\"\\u041A\\x03\\x02\\x02\\x02\\u0417\\u0418\\x07`\\x02\\x02\\u0418\\u041A\\x05\\x94K\\x02\" +\n\t\t\"\\u0419\\u0413\\x03\\x02\\x02\\x02\\u0419\\u0417\\x03\\x02\\x02\\x02\\u041A\\xAD\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u041B\\u041C\\x07 \\x02\\x02\\u041C\\u041D\\x05\\xBE`\\x02\\u041D\\u041F\" +\n\t\t\"\\x07\\x19\\x02\\x02\\u041E\\u0420\\x05\\xA4S\\x02\\u041F\\u041E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u041F\\u0420\\x03\\x02\\x02\\x02\\u0420\\u0421\\x03\\x02\\x02\\x02\\u0421\\u0423\\x07\" +\n\t\t\"\\x1A\\x02\\x02\\u0422\\u0424\\x05\\xB0Y\\x02\\u0423\\u0422\\x03\\x02\\x02\\x02\\u0423\" +\n\t\t\"\\u0424\\x03\\x02\\x02\\x02\\u0424\\u0425\\x03\\x02\\x02\\x02\\u0425\\u0426\\x05\\x94\" +\n\t\t\"K\\x02\\u0426\\xAF\\x03\\x02\\x02\\x02\\u0427\\u0428\\x07a\\x02\\x02\\u0428\\u0429\\x05\" +\n\t\t\"\\xA4S\\x02\\u0429\\xB1\\x03\\x02\\x02\\x02\\u042A\\u042D\\x07\\x1D\\x02\\x02\\u042B\" +\n\t\t\"\\u042E\\x05\\x94K\\x02\\u042C\\u042E\\x05\\x98M\\x02\\u042D\\u042B\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u042D\\u042C\\x03\\x02\\x02\\x02\\u042E\\u042F\\x03\\x02\\x02\\x02\\u042F\\u0432\\x05\" +\n\t\t\"\\x98M\\x02\\u0430\\u0433\\x05\\x94K\\x02\\u0431\\u0433\\x05\\x98M\\x02\\u0432\\u0430\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0432\\u0431\\x03\\x02\\x02\\x02\\u0433\\u0434\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0434\\u0435\\x05\\x94K\\x02\\u0435\\xB3\\x03\\x02\\x02\\x02\\u0436\\u0437\\x07-\\x02\" +\n\t\t\"\\x02\\u0437\\u0438\\x05\\x98M\\x02\\u0438\\u0439\\x05\\x94K\\x02\\u0439\\xB5\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u043A\\u043F\\x05\\xC4c\\x02\\u043B\\u043F\\x07j\\x02\\x02\\u043C\\u043F\" +\n\t\t\"\\x07k\\x02\\x02\\u043D\\u043F\\x05\\xC0a\\x02\\u043E\\u043A\\x03\\x02\\x02\\x02\\u043E\" +\n\t\t\"\\u043B\\x03\\x02\\x02\\x02\\u043E\\u043C\\x03\\x02\\x02\\x02\\u043E\\u043D\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u043F\\xB7\\x03\\x02\\x02\\x02\\u0440\\u0441\\x073\\x02\\x02\\u0441\\u0442\" +\n\t\t\"\\x05\\xBE`\\x02\\u0442\\u0443\\x05\\x94K\\x02\\u0443\\xB9\\x03\\x02\";\n\tprivate static readonly _serializedATNSegment2: string =\n\t\t\"\\x02\\x02\\u0444\\u0446\\x07\\x19\\x02\\x02\\u0445\\u0447\\x05\\x86D\\x02\\u0446\\u0445\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0446\\u0447\\x03\\x02\\x02\\x02\\u0447\\u044E\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0448\\u044A\\x07\\x12\\x02\\x02\\u0449\\u044B\\x05\\x86D\\x02\\u044A\\u0449\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u044A\\u044B\\x03\\x02\\x02\\x02\\u044B\\u044D\\x03\\x02\\x02\\x02\\u044C\" +\n\t\t\"\\u0448\\x03\\x02\\x02\\x02\\u044D\\u0450\\x03\\x02\\x02\\x02\\u044E\\u044C\\x03\\x02\" +\n\t\t\"\\x02\\x02\\u044E\\u044F\\x03\\x02\\x02\\x02\\u044F\\u0451\\x03\\x02\\x02\\x02\\u0450\" +\n\t\t\"\\u044E\\x03\\x02\\x02\\x02\\u0451\\u045F\\x07\\x1A\\x02\\x02\\u0452\\u045B\\x07$\\x02\" +\n\t\t\"\\x02\\u0453\\u0458\\x05\\x86D\\x02\\u0454\\u0455\\x07\\x12\\x02\\x02\\u0455\\u0457\" +\n\t\t\"\\x05\\x86D\\x02\\u0456\\u0454\\x03\\x02\\x02\\x02\\u0457\\u045A\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0458\\u0456\\x03\\x02\\x02\\x02\\u0458\\u0459\\x03\\x02\\x02\\x02\\u0459\\u045C\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u045A\\u0458\\x03\\x02\\x02\\x02\\u045B\\u0453\\x03\\x02\\x02\\x02\\u045B\" +\n\t\t\"\\u045C\\x03\\x02\\x02\\x02\\u045C\\u045D\\x03\\x02\\x02\\x02\\u045D\\u045F\\x07%\\x02\" +\n\t\t\"\\x02\\u045E\\u0444\\x03\\x02\\x02\\x02\\u045E\\u0452\\x03\\x02\\x02\\x02\\u045F\\xBB\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0460\\u0462\\t\\x0F\\x02\\x02\\u0461\\u0463\\x07l\\x02\\x02\\u0462\" +\n\t\t\"\\u0461\\x03\\x02\\x02\\x02\\u0462\\u0463\\x03\\x02\\x02\\x02\\u0463\\xBD\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0464\\u0465\\t\\x10\\x02\\x02\\u0465\\xBF\\x03\\x02\\x02\\x02\\u0466\\u0468\\x07\" +\n\t\t\"m\\x02\\x02\\u0467\\u0466\\x03\\x02\\x02\\x02\\u0468\\u0469\\x03\\x02\\x02\\x02\\u0469\" +\n\t\t\"\\u0467\\x03\\x02\\x02\\x02\\u0469\\u046A\\x03\\x02\\x02\\x02\\u046A\\xC1\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u046B\\u0477\\x07c\\x02\\x02\\u046C\\u046D\\x07\\x19\\x02\\x02\\u046D\\u0472\" +\n\t\t\"\\x05L\\'\\x02\\u046E\\u046F\\x07\\x12\\x02\\x02\\u046F\\u0471\\x05L\\'\\x02\\u0470\\u046E\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u0471\\u0474\\x03\\x02\\x02\\x02\\u0472\\u0470\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u0472\\u0473\\x03\\x02\\x02\\x02\\u0473\\u0475\\x03\\x02\\x02\\x02\\u0474\\u0472\\x03\" +\n\t\t\"\\x02\\x02\\x02\\u0475\\u0476\\x07\\x1A\\x02\\x02\\u0476\\u0478\\x03\\x02\\x02\\x02\\u0477\" +\n\t\t\"\\u046C\\x03\\x02\\x02\\x02\\u0477\\u0478\\x03\\x02\\x02\\x02\\u0478\\xC3\\x03\\x02\\x02\" +\n\t\t\"\\x02\\u0479\\u047B\\x07\\x84\\x02\\x02\\u047A\\u0479\\x03\\x02\\x02\\x02\\u047B\\u047C\" +\n\t\t\"\\x03\\x02\\x02\\x02\\u047C\\u047A\\x03\\x02\\x02\\x02\\u047C\\u047D\\x03\\x02\\x02\\x02\" +\n\t\t\"\\u047D\\xC5\\x03\\x02\\x02\\x02\\x81\\xD0\\xD2\\xE1\\xE5\\xEA\\xF0\\xF4\\xF7\\xFC\\u0102\" +\n\t\t\"\\u0109\\u010D\\u011A\\u0122\\u0127\\u0131\\u0134\\u013A\\u0142\\u0145\\u0150\\u0159\" +\n\t\t\"\\u015B\\u0161\\u017C\\u017F\\u018A\\u018F\\u019B\\u019E\\u01A5\\u01A9\\u01AB\\u01B0\" +\n\t\t\"\\u01B5\\u01B8\\u01BE\\u01C2\\u01C6\\u01CB\\u01D8\\u01DA\\u01E1\\u01EB\\u01F1\\u01FC\" +\n\t\t\"\\u01FF\\u0205\\u0208\\u0210\\u0213\\u0219\\u021C\\u0224\\u0227\\u022D\\u0231\\u023C\" +\n\t\t\"\\u0241\\u0246\\u024E\\u0253\\u0261\\u0263\\u0268\\u0272\\u0286\\u0292\\u0297\\u029D\" +\n\t\t\"\\u02A1\\u02A4\\u02B0\\u02B9\\u02BD\\u02C0\\u02C7\\u02CD\\u02E3\\u02F9\\u02FD\\u0302\" +\n\t\t\"\\u0306\\u030A\\u030F\\u0314\\u0318\\u0330\\u0366\\u036A\\u037A\\u037C\\u0388\\u038F\" +\n\t\t\"\\u0397\\u039B\\u03A3\\u03A7\\u03A9\\u03B4\\u03CB\\u03D0\\u03DA\\u03DE\\u03E4\\u03E8\" +\n\t\t\"\\u03EE\\u03FA\\u0401\\u0410\\u0419\\u041F\\u0423\\u042D\\u0432\\u043E\\u0446\\u044A\" +\n\t\t\"\\u044E\\u0458\\u045B\\u045E\\u0462\\u0469\\u0472\\u0477\\u047C\";\n\tpublic static readonly _serializedATN: string = Utils.join(\n\t\t[\n\t\t\tSolidityParser._serializedATNSegment0,\n\t\t\tSolidityParser._serializedATNSegment1,\n\t\t\tSolidityParser._serializedATNSegment2,\n\t\t],\n\t\t\"\",\n\t);\n\tpublic static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!SolidityParser.__ATN) {\n\t\t\tSolidityParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityParser._serializedATN));\n\t\t}\n\n\t\treturn SolidityParser.__ATN;\n\t}\n\n}\n\nexport class SourceUnitContext extends ParserRuleContext {\n\tpublic EOF(): TerminalNode { return this.getToken(SolidityParser.EOF, 0); }\n\tpublic pragmaDirective(): PragmaDirectiveContext[];\n\tpublic pragmaDirective(i: number): PragmaDirectiveContext;\n\tpublic pragmaDirective(i?: number): PragmaDirectiveContext | PragmaDirectiveContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(PragmaDirectiveContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, PragmaDirectiveContext);\n\t\t}\n\t}\n\tpublic importDirective(): ImportDirectiveContext[];\n\tpublic importDirective(i: number): ImportDirectiveContext;\n\tpublic importDirective(i?: number): ImportDirectiveContext | ImportDirectiveContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ImportDirectiveContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ImportDirectiveContext);\n\t\t}\n\t}\n\tpublic contractDefinition(): ContractDefinitionContext[];\n\tpublic contractDefinition(i: number): ContractDefinitionContext;\n\tpublic contractDefinition(i?: number): ContractDefinitionContext | ContractDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ContractDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ContractDefinitionContext);\n\t\t}\n\t}\n\tpublic enumDefinition(): EnumDefinitionContext[];\n\tpublic enumDefinition(i: number): EnumDefinitionContext;\n\tpublic enumDefinition(i?: number): EnumDefinitionContext | EnumDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EnumDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EnumDefinitionContext);\n\t\t}\n\t}\n\tpublic structDefinition(): StructDefinitionContext[];\n\tpublic structDefinition(i: number): StructDefinitionContext;\n\tpublic structDefinition(i?: number): StructDefinitionContext | StructDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StructDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StructDefinitionContext);\n\t\t}\n\t}\n\tpublic functionDefinition(): FunctionDefinitionContext[];\n\tpublic functionDefinition(i: number): FunctionDefinitionContext;\n\tpublic functionDefinition(i?: number): FunctionDefinitionContext | FunctionDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionDefinitionContext);\n\t\t}\n\t}\n\tpublic fileLevelConstant(): FileLevelConstantContext[];\n\tpublic fileLevelConstant(i: number): FileLevelConstantContext;\n\tpublic fileLevelConstant(i?: number): FileLevelConstantContext | FileLevelConstantContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FileLevelConstantContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FileLevelConstantContext);\n\t\t}\n\t}\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext[];\n\tpublic customErrorDefinition(i: number): CustomErrorDefinitionContext;\n\tpublic customErrorDefinition(i?: number): CustomErrorDefinitionContext | CustomErrorDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(CustomErrorDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, CustomErrorDefinitionContext);\n\t\t}\n\t}\n\tpublic typeDefinition(): TypeDefinitionContext[];\n\tpublic typeDefinition(i: number): TypeDefinitionContext;\n\tpublic typeDefinition(i?: number): TypeDefinitionContext | TypeDefinitionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(TypeDefinitionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, TypeDefinitionContext);\n\t\t}\n\t}\n\tpublic usingForDeclaration(): UsingForDeclarationContext[];\n\tpublic usingForDeclaration(i: number): UsingForDeclarationContext;\n\tpublic usingForDeclaration(i?: number): UsingForDeclarationContext | UsingForDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UsingForDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UsingForDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_sourceUnit; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSourceUnit) {\n\t\t\tlistener.enterSourceUnit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSourceUnit) {\n\t\t\tlistener.exitSourceUnit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSourceUnit) {\n\t\t\treturn visitor.visitSourceUnit(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaDirectiveContext extends ParserRuleContext {\n\tpublic pragmaName(): PragmaNameContext {\n\t\treturn this.getRuleContext(0, PragmaNameContext);\n\t}\n\tpublic pragmaValue(): PragmaValueContext {\n\t\treturn this.getRuleContext(0, PragmaValueContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaDirective; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaDirective) {\n\t\t\tlistener.enterPragmaDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaDirective) {\n\t\t\tlistener.exitPragmaDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaDirective) {\n\t\t\treturn visitor.visitPragmaDirective(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaNameContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaName) {\n\t\t\tlistener.enterPragmaName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaName) {\n\t\t\tlistener.exitPragmaName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaName) {\n\t\t\treturn visitor.visitPragmaName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PragmaValueContext extends ParserRuleContext {\n\tpublic version(): VersionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VersionContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_pragmaValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPragmaValue) {\n\t\t\tlistener.enterPragmaValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPragmaValue) {\n\t\t\tlistener.exitPragmaValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPragmaValue) {\n\t\t\treturn visitor.visitPragmaValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionContext extends ParserRuleContext {\n\tpublic versionConstraint(): VersionConstraintContext[];\n\tpublic versionConstraint(i: number): VersionConstraintContext;\n\tpublic versionConstraint(i?: number): VersionConstraintContext | VersionConstraintContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VersionConstraintContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VersionConstraintContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_version; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersion) {\n\t\t\tlistener.enterVersion(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersion) {\n\t\t\tlistener.exitVersion(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersion) {\n\t\t\treturn visitor.visitVersion(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionOperatorContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_versionOperator; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersionOperator) {\n\t\t\tlistener.enterVersionOperator(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersionOperator) {\n\t\t\tlistener.exitVersionOperator(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersionOperator) {\n\t\t\treturn visitor.visitVersionOperator(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VersionConstraintContext extends ParserRuleContext {\n\tpublic VersionLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.VersionLiteral, 0); }\n\tpublic versionOperator(): VersionOperatorContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VersionOperatorContext);\n\t}\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_versionConstraint; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVersionConstraint) {\n\t\t\tlistener.enterVersionConstraint(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVersionConstraint) {\n\t\t\tlistener.exitVersionConstraint(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVersionConstraint) {\n\t\t\treturn visitor.visitVersionConstraint(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportDeclarationContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportDeclaration) {\n\t\t\tlistener.enterImportDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportDeclaration) {\n\t\t\tlistener.exitImportDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportDeclaration) {\n\t\t\treturn visitor.visitImportDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportDirectiveContext extends ParserRuleContext {\n\tpublic importPath(): ImportPathContext {\n\t\treturn this.getRuleContext(0, ImportPathContext);\n\t}\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tpublic importDeclaration(): ImportDeclarationContext[];\n\tpublic importDeclaration(i: number): ImportDeclarationContext;\n\tpublic importDeclaration(i?: number): ImportDeclarationContext | ImportDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ImportDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ImportDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importDirective; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportDirective) {\n\t\t\tlistener.enterImportDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportDirective) {\n\t\t\tlistener.exitImportDirective(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportDirective) {\n\t\t\treturn visitor.visitImportDirective(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ImportPathContext extends ParserRuleContext {\n\tpublic StringLiteralFragment(): TerminalNode { return this.getToken(SolidityParser.StringLiteralFragment, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_importPath; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterImportPath) {\n\t\t\tlistener.enterImportPath(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitImportPath) {\n\t\t\tlistener.exitImportPath(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitImportPath) {\n\t\t\treturn visitor.visitImportPath(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContractDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic inheritanceSpecifier(): InheritanceSpecifierContext[];\n\tpublic inheritanceSpecifier(i: number): InheritanceSpecifierContext;\n\tpublic inheritanceSpecifier(i?: number): InheritanceSpecifierContext | InheritanceSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(InheritanceSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, InheritanceSpecifierContext);\n\t\t}\n\t}\n\tpublic contractPart(): ContractPartContext[];\n\tpublic contractPart(i: number): ContractPartContext;\n\tpublic contractPart(i?: number): ContractPartContext | ContractPartContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ContractPartContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ContractPartContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_contractDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContractDefinition) {\n\t\t\tlistener.enterContractDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContractDefinition) {\n\t\t\tlistener.exitContractDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContractDefinition) {\n\t\t\treturn visitor.visitContractDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InheritanceSpecifierContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext {\n\t\treturn this.getRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inheritanceSpecifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInheritanceSpecifier) {\n\t\t\tlistener.enterInheritanceSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInheritanceSpecifier) {\n\t\t\tlistener.exitInheritanceSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInheritanceSpecifier) {\n\t\t\treturn visitor.visitInheritanceSpecifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContractPartContext extends ParserRuleContext {\n\tpublic stateVariableDeclaration(): StateVariableDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StateVariableDeclarationContext);\n\t}\n\tpublic usingForDeclaration(): UsingForDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UsingForDeclarationContext);\n\t}\n\tpublic structDefinition(): StructDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StructDefinitionContext);\n\t}\n\tpublic modifierDefinition(): ModifierDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ModifierDefinitionContext);\n\t}\n\tpublic functionDefinition(): FunctionDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionDefinitionContext);\n\t}\n\tpublic eventDefinition(): EventDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EventDefinitionContext);\n\t}\n\tpublic enumDefinition(): EnumDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EnumDefinitionContext);\n\t}\n\tpublic customErrorDefinition(): CustomErrorDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, CustomErrorDefinitionContext);\n\t}\n\tpublic typeDefinition(): TypeDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeDefinitionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_contractPart; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContractPart) {\n\t\t\tlistener.enterContractPart(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContractPart) {\n\t\t\tlistener.exitContractPart(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContractPart) {\n\t\t\treturn visitor.visitContractPart(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StateVariableDeclarationContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic PublicKeyword(): TerminalNode[];\n\tpublic PublicKeyword(i: number): TerminalNode;\n\tpublic PublicKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PublicKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PublicKeyword, i);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic PrivateKeyword(): TerminalNode[];\n\tpublic PrivateKeyword(i: number): TerminalNode;\n\tpublic PrivateKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PrivateKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PrivateKeyword, i);\n\t\t}\n\t}\n\tpublic ConstantKeyword(): TerminalNode[];\n\tpublic ConstantKeyword(i: number): TerminalNode;\n\tpublic ConstantKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ConstantKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ConstantKeyword, i);\n\t\t}\n\t}\n\tpublic ImmutableKeyword(): TerminalNode[];\n\tpublic ImmutableKeyword(i: number): TerminalNode;\n\tpublic ImmutableKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ImmutableKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ImmutableKeyword, i);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stateVariableDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStateVariableDeclaration) {\n\t\t\tlistener.enterStateVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStateVariableDeclaration) {\n\t\t\tlistener.exitStateVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStateVariableDeclaration) {\n\t\t\treturn visitor.visitStateVariableDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FileLevelConstantContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic ConstantKeyword(): TerminalNode { return this.getToken(SolidityParser.ConstantKeyword, 0); }\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_fileLevelConstant; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFileLevelConstant) {\n\t\t\tlistener.enterFileLevelConstant(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFileLevelConstant) {\n\t\t\tlistener.exitFileLevelConstant(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFileLevelConstant) {\n\t\t\treturn visitor.visitFileLevelConstant(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class CustomErrorDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_customErrorDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterCustomErrorDefinition) {\n\t\t\tlistener.enterCustomErrorDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitCustomErrorDefinition) {\n\t\t\tlistener.exitCustomErrorDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitCustomErrorDefinition) {\n\t\t\treturn visitor.visitCustomErrorDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TypeDefinitionContext extends ParserRuleContext {\n\tpublic TypeKeyword(): TerminalNode { return this.getToken(SolidityParser.TypeKeyword, 0); }\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic elementaryTypeName(): ElementaryTypeNameContext {\n\t\treturn this.getRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_typeDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTypeDefinition) {\n\t\t\tlistener.enterTypeDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTypeDefinition) {\n\t\t\tlistener.exitTypeDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTypeDefinition) {\n\t\t\treturn visitor.visitTypeDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UsingForDeclarationContext extends ParserRuleContext {\n\tpublic usingForObject(): UsingForObjectContext {\n\t\treturn this.getRuleContext(0, UsingForObjectContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic GlobalKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.GlobalKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_usingForDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUsingForDeclaration) {\n\t\t\tlistener.enterUsingForDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUsingForDeclaration) {\n\t\t\tlistener.exitUsingForDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUsingForDeclaration) {\n\t\t\treturn visitor.visitUsingForDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UsingForObjectContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext[];\n\tpublic userDefinedTypeName(i: number): UserDefinedTypeNameContext;\n\tpublic userDefinedTypeName(i?: number): UserDefinedTypeNameContext | UserDefinedTypeNameContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UserDefinedTypeNameContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UserDefinedTypeNameContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_usingForObject; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUsingForObject) {\n\t\t\tlistener.enterUsingForObject(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUsingForObject) {\n\t\t\tlistener.exitUsingForObject(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUsingForObject) {\n\t\t\treturn visitor.visitUsingForObject(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StructDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic variableDeclaration(): VariableDeclarationContext[];\n\tpublic variableDeclaration(i: number): VariableDeclarationContext;\n\tpublic variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VariableDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VariableDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_structDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStructDefinition) {\n\t\t\tlistener.enterStructDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStructDefinition) {\n\t\t\tlistener.exitStructDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStructDefinition) {\n\t\t\treturn visitor.visitStructDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic parameterList(): ParameterListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ParameterListContext);\n\t}\n\tpublic VirtualKeyword(): TerminalNode[];\n\tpublic VirtualKeyword(i: number): TerminalNode;\n\tpublic VirtualKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.VirtualKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.VirtualKeyword, i);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierDefinition) {\n\t\t\tlistener.enterModifierDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierDefinition) {\n\t\t\tlistener.exitModifierDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierDefinition) {\n\t\t\treturn visitor.visitModifierDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierInvocationContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierInvocation; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierInvocation) {\n\t\t\tlistener.enterModifierInvocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierInvocation) {\n\t\t\tlistener.exitModifierInvocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierInvocation) {\n\t\t\treturn visitor.visitModifierInvocation(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionDefinitionContext extends ParserRuleContext {\n\tpublic functionDescriptor(): FunctionDescriptorContext {\n\t\treturn this.getRuleContext(0, FunctionDescriptorContext);\n\t}\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tpublic modifierList(): ModifierListContext {\n\t\treturn this.getRuleContext(0, ModifierListContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic returnParameters(): ReturnParametersContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnParametersContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionDefinition) {\n\t\t\tlistener.enterFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionDefinition) {\n\t\t\tlistener.exitFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionDefinition) {\n\t\t\treturn visitor.visitFunctionDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionDescriptorContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); }\n\tpublic FallbackKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.FallbackKeyword, 0); }\n\tpublic ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionDescriptor; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionDescriptor) {\n\t\t\tlistener.enterFunctionDescriptor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionDescriptor) {\n\t\t\tlistener.exitFunctionDescriptor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionDescriptor) {\n\t\t\treturn visitor.visitFunctionDescriptor(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ReturnParametersContext extends ParserRuleContext {\n\tpublic parameterList(): ParameterListContext {\n\t\treturn this.getRuleContext(0, ParameterListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_returnParameters; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterReturnParameters) {\n\t\t\tlistener.enterReturnParameters(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitReturnParameters) {\n\t\t\tlistener.exitReturnParameters(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitReturnParameters) {\n\t\t\treturn visitor.visitReturnParameters(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ModifierListContext extends ParserRuleContext {\n\tpublic ExternalKeyword(): TerminalNode[];\n\tpublic ExternalKeyword(i: number): TerminalNode;\n\tpublic ExternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ExternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ExternalKeyword, i);\n\t\t}\n\t}\n\tpublic PublicKeyword(): TerminalNode[];\n\tpublic PublicKeyword(i: number): TerminalNode;\n\tpublic PublicKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PublicKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PublicKeyword, i);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic PrivateKeyword(): TerminalNode[];\n\tpublic PrivateKeyword(i: number): TerminalNode;\n\tpublic PrivateKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.PrivateKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.PrivateKeyword, i);\n\t\t}\n\t}\n\tpublic VirtualKeyword(): TerminalNode[];\n\tpublic VirtualKeyword(i: number): TerminalNode;\n\tpublic VirtualKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.VirtualKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.VirtualKeyword, i);\n\t\t}\n\t}\n\tpublic stateMutability(): StateMutabilityContext[];\n\tpublic stateMutability(i: number): StateMutabilityContext;\n\tpublic stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StateMutabilityContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StateMutabilityContext);\n\t\t}\n\t}\n\tpublic modifierInvocation(): ModifierInvocationContext[];\n\tpublic modifierInvocation(i: number): ModifierInvocationContext;\n\tpublic modifierInvocation(i?: number): ModifierInvocationContext | ModifierInvocationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ModifierInvocationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ModifierInvocationContext);\n\t\t}\n\t}\n\tpublic overrideSpecifier(): OverrideSpecifierContext[];\n\tpublic overrideSpecifier(i: number): OverrideSpecifierContext;\n\tpublic overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(OverrideSpecifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, OverrideSpecifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_modifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterModifierList) {\n\t\t\tlistener.enterModifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitModifierList) {\n\t\t\tlistener.exitModifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitModifierList) {\n\t\t\treturn visitor.visitModifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic eventParameterList(): EventParameterListContext {\n\t\treturn this.getRuleContext(0, EventParameterListContext);\n\t}\n\tpublic AnonymousKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.AnonymousKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventDefinition) {\n\t\t\tlistener.enterEventDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventDefinition) {\n\t\t\tlistener.exitEventDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventDefinition) {\n\t\t\treturn visitor.visitEventDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EnumValueContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_enumValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEnumValue) {\n\t\t\tlistener.enterEnumValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEnumValue) {\n\t\t\tlistener.exitEnumValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEnumValue) {\n\t\t\treturn visitor.visitEnumValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EnumDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic enumValue(): EnumValueContext[];\n\tpublic enumValue(i: number): EnumValueContext;\n\tpublic enumValue(i?: number): EnumValueContext | EnumValueContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EnumValueContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EnumValueContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_enumDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEnumDefinition) {\n\t\t\tlistener.enterEnumDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEnumDefinition) {\n\t\t\tlistener.exitEnumDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEnumDefinition) {\n\t\t\treturn visitor.visitEnumDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ParameterListContext extends ParserRuleContext {\n\tpublic parameter(): ParameterContext[];\n\tpublic parameter(i: number): ParameterContext;\n\tpublic parameter(i?: number): ParameterContext | ParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_parameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterParameterList) {\n\t\t\tlistener.enterParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitParameterList) {\n\t\t\tlistener.exitParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitParameterList) {\n\t\t\treturn visitor.visitParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_parameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterParameter) {\n\t\t\tlistener.enterParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitParameter) {\n\t\t\tlistener.exitParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitParameter) {\n\t\t\treturn visitor.visitParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventParameterListContext extends ParserRuleContext {\n\tpublic eventParameter(): EventParameterContext[];\n\tpublic eventParameter(i: number): EventParameterContext;\n\tpublic eventParameter(i?: number): EventParameterContext | EventParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(EventParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, EventParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventParameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventParameterList) {\n\t\t\tlistener.enterEventParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventParameterList) {\n\t\t\tlistener.exitEventParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventParameterList) {\n\t\t\treturn visitor.visitEventParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EventParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic IndexedKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.IndexedKeyword, 0); }\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_eventParameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEventParameter) {\n\t\t\tlistener.enterEventParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEventParameter) {\n\t\t\tlistener.exitEventParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEventParameter) {\n\t\t\treturn visitor.visitEventParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeParameterListContext extends ParserRuleContext {\n\tpublic functionTypeParameter(): FunctionTypeParameterContext[];\n\tpublic functionTypeParameter(i: number): FunctionTypeParameterContext;\n\tpublic functionTypeParameter(i?: number): FunctionTypeParameterContext | FunctionTypeParameterContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionTypeParameterContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionTypeParameterContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameterList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeParameterList) {\n\t\t\tlistener.enterFunctionTypeParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeParameterList) {\n\t\t\tlistener.exitFunctionTypeParameterList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeParameterList) {\n\t\t\treturn visitor.visitFunctionTypeParameterList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeParameterContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameter; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeParameter) {\n\t\t\tlistener.enterFunctionTypeParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeParameter) {\n\t\t\tlistener.exitFunctionTypeParameter(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeParameter) {\n\t\t\treturn visitor.visitFunctionTypeParameter(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationContext extends ParserRuleContext {\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic storageLocation(): StorageLocationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StorageLocationContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclaration; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclaration) {\n\t\t\tlistener.enterVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclaration) {\n\t\t\tlistener.exitVariableDeclaration(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclaration) {\n\t\t\treturn visitor.visitVariableDeclaration(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TypeNameContext extends ParserRuleContext {\n\tpublic elementaryTypeName(): ElementaryTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tpublic mapping(): MappingContext | undefined {\n\t\treturn this.tryGetRuleContext(0, MappingContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tpublic functionTypeName(): FunctionTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionTypeNameContext);\n\t}\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_typeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTypeName) {\n\t\t\tlistener.enterTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTypeName) {\n\t\t\tlistener.exitTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTypeName) {\n\t\t\treturn visitor.visitTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UserDefinedTypeNameContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_userDefinedTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUserDefinedTypeName) {\n\t\t\tlistener.enterUserDefinedTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUserDefinedTypeName) {\n\t\t\tlistener.exitUserDefinedTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUserDefinedTypeName) {\n\t\t\treturn visitor.visitUserDefinedTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class MappingKeyContext extends ParserRuleContext {\n\tpublic elementaryTypeName(): ElementaryTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ElementaryTypeNameContext);\n\t}\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UserDefinedTypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_mappingKey; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterMappingKey) {\n\t\t\tlistener.enterMappingKey(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitMappingKey) {\n\t\t\tlistener.exitMappingKey(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitMappingKey) {\n\t\t\treturn visitor.visitMappingKey(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class MappingContext extends ParserRuleContext {\n\tpublic mappingKey(): MappingKeyContext {\n\t\treturn this.getRuleContext(0, MappingKeyContext);\n\t}\n\tpublic typeName(): TypeNameContext {\n\t\treturn this.getRuleContext(0, TypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_mapping; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterMapping) {\n\t\t\tlistener.enterMapping(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitMapping) {\n\t\t\tlistener.exitMapping(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitMapping) {\n\t\t\treturn visitor.visitMapping(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionTypeNameContext extends ParserRuleContext {\n\tpublic functionTypeParameterList(): FunctionTypeParameterListContext[];\n\tpublic functionTypeParameterList(i: number): FunctionTypeParameterListContext;\n\tpublic functionTypeParameterList(i?: number): FunctionTypeParameterListContext | FunctionTypeParameterListContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(FunctionTypeParameterListContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, FunctionTypeParameterListContext);\n\t\t}\n\t}\n\tpublic InternalKeyword(): TerminalNode[];\n\tpublic InternalKeyword(i: number): TerminalNode;\n\tpublic InternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.InternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.InternalKeyword, i);\n\t\t}\n\t}\n\tpublic ExternalKeyword(): TerminalNode[];\n\tpublic ExternalKeyword(i: number): TerminalNode;\n\tpublic ExternalKeyword(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.ExternalKeyword);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.ExternalKeyword, i);\n\t\t}\n\t}\n\tpublic stateMutability(): StateMutabilityContext[];\n\tpublic stateMutability(i: number): StateMutabilityContext;\n\tpublic stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StateMutabilityContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StateMutabilityContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionTypeName) {\n\t\t\tlistener.enterFunctionTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionTypeName) {\n\t\t\tlistener.exitFunctionTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionTypeName) {\n\t\t\treturn visitor.visitFunctionTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StorageLocationContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_storageLocation; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStorageLocation) {\n\t\t\tlistener.enterStorageLocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStorageLocation) {\n\t\t\tlistener.exitStorageLocation(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStorageLocation) {\n\t\t\treturn visitor.visitStorageLocation(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StateMutabilityContext extends ParserRuleContext {\n\tpublic PureKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PureKeyword, 0); }\n\tpublic ConstantKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstantKeyword, 0); }\n\tpublic ViewKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ViewKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stateMutability; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStateMutability) {\n\t\t\tlistener.enterStateMutability(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStateMutability) {\n\t\t\tlistener.exitStateMutability(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStateMutability) {\n\t\t\treturn visitor.visitStateMutability(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class BlockContext extends ParserRuleContext {\n\tpublic statement(): StatementContext[];\n\tpublic statement(i: number): StatementContext;\n\tpublic statement(i?: number): StatementContext | StatementContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StatementContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StatementContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_block; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterBlock) {\n\t\t\tlistener.enterBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitBlock) {\n\t\t\tlistener.exitBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitBlock) {\n\t\t\treturn visitor.visitBlock(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StatementContext extends ParserRuleContext {\n\tpublic ifStatement(): IfStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IfStatementContext);\n\t}\n\tpublic tryStatement(): TryStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TryStatementContext);\n\t}\n\tpublic whileStatement(): WhileStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, WhileStatementContext);\n\t}\n\tpublic forStatement(): ForStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ForStatementContext);\n\t}\n\tpublic block(): BlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BlockContext);\n\t}\n\tpublic inlineAssemblyStatement(): InlineAssemblyStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, InlineAssemblyStatementContext);\n\t}\n\tpublic doWhileStatement(): DoWhileStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, DoWhileStatementContext);\n\t}\n\tpublic continueStatement(): ContinueStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ContinueStatementContext);\n\t}\n\tpublic breakStatement(): BreakStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, BreakStatementContext);\n\t}\n\tpublic returnStatement(): ReturnStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnStatementContext);\n\t}\n\tpublic throwStatement(): ThrowStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ThrowStatementContext);\n\t}\n\tpublic emitStatement(): EmitStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, EmitStatementContext);\n\t}\n\tpublic simpleStatement(): SimpleStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SimpleStatementContext);\n\t}\n\tpublic uncheckedStatement(): UncheckedStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, UncheckedStatementContext);\n\t}\n\tpublic revertStatement(): RevertStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, RevertStatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_statement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStatement) {\n\t\t\tlistener.enterStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStatement) {\n\t\t\tlistener.exitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStatement) {\n\t\t\treturn visitor.visitStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expressionStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpressionStatement) {\n\t\t\tlistener.enterExpressionStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpressionStatement) {\n\t\t\tlistener.exitExpressionStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpressionStatement) {\n\t\t\treturn visitor.visitExpressionStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IfStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic statement(): StatementContext[];\n\tpublic statement(i: number): StatementContext;\n\tpublic statement(i?: number): StatementContext | StatementContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(StatementContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, StatementContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_ifStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIfStatement) {\n\t\t\tlistener.enterIfStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIfStatement) {\n\t\t\tlistener.exitIfStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIfStatement) {\n\t\t\treturn visitor.visitIfStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TryStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tpublic returnParameters(): ReturnParametersContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ReturnParametersContext);\n\t}\n\tpublic catchClause(): CatchClauseContext[];\n\tpublic catchClause(i: number): CatchClauseContext;\n\tpublic catchClause(i?: number): CatchClauseContext | CatchClauseContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(CatchClauseContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, CatchClauseContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_tryStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTryStatement) {\n\t\t\tlistener.enterTryStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTryStatement) {\n\t\t\tlistener.exitTryStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTryStatement) {\n\t\t\treturn visitor.visitTryStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class CatchClauseContext extends ParserRuleContext {\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tpublic parameterList(): ParameterListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ParameterListContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_catchClause; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterCatchClause) {\n\t\t\tlistener.enterCatchClause(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitCatchClause) {\n\t\t\tlistener.exitCatchClause(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitCatchClause) {\n\t\t\treturn visitor.visitCatchClause(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class WhileStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_whileStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterWhileStatement) {\n\t\t\tlistener.enterWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitWhileStatement) {\n\t\t\tlistener.exitWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitWhileStatement) {\n\t\t\treturn visitor.visitWhileStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class SimpleStatementContext extends ParserRuleContext {\n\tpublic variableDeclarationStatement(): VariableDeclarationStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationStatementContext);\n\t}\n\tpublic expressionStatement(): ExpressionStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionStatementContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_simpleStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSimpleStatement) {\n\t\t\tlistener.enterSimpleStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSimpleStatement) {\n\t\t\tlistener.exitSimpleStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSimpleStatement) {\n\t\t\treturn visitor.visitSimpleStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class UncheckedStatementContext extends ParserRuleContext {\n\tpublic block(): BlockContext {\n\t\treturn this.getRuleContext(0, BlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_uncheckedStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterUncheckedStatement) {\n\t\t\tlistener.enterUncheckedStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitUncheckedStatement) {\n\t\t\tlistener.exitUncheckedStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitUncheckedStatement) {\n\t\t\treturn visitor.visitUncheckedStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ForStatementContext extends ParserRuleContext {\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tpublic simpleStatement(): SimpleStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SimpleStatementContext);\n\t}\n\tpublic expressionStatement(): ExpressionStatementContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionStatementContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_forStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterForStatement) {\n\t\t\tlistener.enterForStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitForStatement) {\n\t\t\tlistener.exitForStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitForStatement) {\n\t\t\treturn visitor.visitForStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InlineAssemblyStatementContext extends ParserRuleContext {\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic StringLiteralFragment(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.StringLiteralFragment, 0); }\n\tpublic inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext | undefined {\n\t\treturn this.tryGetRuleContext(0, InlineAssemblyStatementFlagContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInlineAssemblyStatement) {\n\t\t\tlistener.enterInlineAssemblyStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInlineAssemblyStatement) {\n\t\t\tlistener.exitInlineAssemblyStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInlineAssemblyStatement) {\n\t\t\treturn visitor.visitInlineAssemblyStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class InlineAssemblyStatementFlagContext extends ParserRuleContext {\n\tpublic stringLiteral(): StringLiteralContext {\n\t\treturn this.getRuleContext(0, StringLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatementFlag; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterInlineAssemblyStatementFlag) {\n\t\t\tlistener.enterInlineAssemblyStatementFlag(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitInlineAssemblyStatementFlag) {\n\t\t\tlistener.exitInlineAssemblyStatementFlag(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitInlineAssemblyStatementFlag) {\n\t\t\treturn visitor.visitInlineAssemblyStatementFlag(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class DoWhileStatementContext extends ParserRuleContext {\n\tpublic statement(): StatementContext {\n\t\treturn this.getRuleContext(0, StatementContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_doWhileStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterDoWhileStatement) {\n\t\t\tlistener.enterDoWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitDoWhileStatement) {\n\t\t\tlistener.exitDoWhileStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitDoWhileStatement) {\n\t\t\treturn visitor.visitDoWhileStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ContinueStatementContext extends ParserRuleContext {\n\tpublic ContinueKeyword(): TerminalNode { return this.getToken(SolidityParser.ContinueKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_continueStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterContinueStatement) {\n\t\t\tlistener.enterContinueStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitContinueStatement) {\n\t\t\tlistener.exitContinueStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitContinueStatement) {\n\t\t\treturn visitor.visitContinueStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class BreakStatementContext extends ParserRuleContext {\n\tpublic BreakKeyword(): TerminalNode { return this.getToken(SolidityParser.BreakKeyword, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_breakStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterBreakStatement) {\n\t\t\tlistener.enterBreakStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitBreakStatement) {\n\t\t\tlistener.exitBreakStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitBreakStatement) {\n\t\t\treturn visitor.visitBreakStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ReturnStatementContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_returnStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterReturnStatement) {\n\t\t\tlistener.enterReturnStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitReturnStatement) {\n\t\t\tlistener.exitReturnStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitReturnStatement) {\n\t\t\treturn visitor.visitReturnStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ThrowStatementContext extends ParserRuleContext {\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_throwStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterThrowStatement) {\n\t\t\tlistener.enterThrowStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitThrowStatement) {\n\t\t\tlistener.exitThrowStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitThrowStatement) {\n\t\t\treturn visitor.visitThrowStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class EmitStatementContext extends ParserRuleContext {\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getRuleContext(0, FunctionCallContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_emitStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterEmitStatement) {\n\t\t\tlistener.enterEmitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitEmitStatement) {\n\t\t\tlistener.exitEmitStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitEmitStatement) {\n\t\t\treturn visitor.visitEmitStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class RevertStatementContext extends ParserRuleContext {\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getRuleContext(0, FunctionCallContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_revertStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterRevertStatement) {\n\t\t\tlistener.enterRevertStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitRevertStatement) {\n\t\t\tlistener.exitRevertStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitRevertStatement) {\n\t\t\treturn visitor.visitRevertStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationStatementContext extends ParserRuleContext {\n\tpublic identifierList(): IdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierListContext);\n\t}\n\tpublic variableDeclaration(): VariableDeclarationContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationContext);\n\t}\n\tpublic variableDeclarationList(): VariableDeclarationListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, VariableDeclarationListContext);\n\t}\n\tpublic expression(): ExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationStatement; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclarationStatement) {\n\t\t\tlistener.enterVariableDeclarationStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclarationStatement) {\n\t\t\tlistener.exitVariableDeclarationStatement(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclarationStatement) {\n\t\t\treturn visitor.visitVariableDeclarationStatement(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class VariableDeclarationListContext extends ParserRuleContext {\n\tpublic variableDeclaration(): VariableDeclarationContext[];\n\tpublic variableDeclaration(i: number): VariableDeclarationContext;\n\tpublic variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(VariableDeclarationContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, VariableDeclarationContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterVariableDeclarationList) {\n\t\t\tlistener.enterVariableDeclarationList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitVariableDeclarationList) {\n\t\t\tlistener.exitVariableDeclarationList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitVariableDeclarationList) {\n\t\t\treturn visitor.visitVariableDeclarationList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IdentifierListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_identifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIdentifierList) {\n\t\t\tlistener.enterIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIdentifierList) {\n\t\t\tlistener.exitIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIdentifierList) {\n\t\t\treturn visitor.visitIdentifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ElementaryTypeNameContext extends ParserRuleContext {\n\tpublic Int(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Int, 0); }\n\tpublic Uint(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Uint, 0); }\n\tpublic Byte(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Byte, 0); }\n\tpublic Fixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Fixed, 0); }\n\tpublic Ufixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Ufixed, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_elementaryTypeName; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterElementaryTypeName) {\n\t\t\tlistener.enterElementaryTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitElementaryTypeName) {\n\t\t\tlistener.exitElementaryTypeName(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitElementaryTypeName) {\n\t\t\treturn visitor.visitElementaryTypeName(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic nameValueList(): NameValueListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NameValueListContext);\n\t}\n\tpublic functionCallArguments(): FunctionCallArgumentsContext | undefined {\n\t\treturn this.tryGetRuleContext(0, FunctionCallArgumentsContext);\n\t}\n\tpublic primaryExpression(): PrimaryExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, PrimaryExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpression) {\n\t\t\tlistener.enterExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpression) {\n\t\t\tlistener.exitExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpression) {\n\t\t\treturn visitor.visitExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class PrimaryExpressionContext extends ParserRuleContext {\n\tpublic BooleanLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BooleanLiteral, 0); }\n\tpublic numberLiteral(): NumberLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NumberLiteralContext);\n\t}\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic TypeKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.TypeKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tpublic tupleExpression(): TupleExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TupleExpressionContext);\n\t}\n\tpublic typeName(): TypeNameContext | undefined {\n\t\treturn this.tryGetRuleContext(0, TypeNameContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_primaryExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterPrimaryExpression) {\n\t\t\tlistener.enterPrimaryExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitPrimaryExpression) {\n\t\t\tlistener.exitPrimaryExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitPrimaryExpression) {\n\t\t\treturn visitor.visitPrimaryExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExpressionListContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_expressionList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterExpressionList) {\n\t\t\tlistener.enterExpressionList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitExpressionList) {\n\t\t\tlistener.exitExpressionList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitExpressionList) {\n\t\t\treturn visitor.visitExpressionList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NameValueListContext extends ParserRuleContext {\n\tpublic nameValue(): NameValueContext[];\n\tpublic nameValue(i: number): NameValueContext;\n\tpublic nameValue(i?: number): NameValueContext | NameValueContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(NameValueContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, NameValueContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_nameValueList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNameValueList) {\n\t\t\tlistener.enterNameValueList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNameValueList) {\n\t\t\tlistener.exitNameValueList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNameValueList) {\n\t\t\treturn visitor.visitNameValueList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NameValueContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_nameValue; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNameValue) {\n\t\t\tlistener.enterNameValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNameValue) {\n\t\t\tlistener.exitNameValue(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNameValue) {\n\t\t\treturn visitor.visitNameValue(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallArgumentsContext extends ParserRuleContext {\n\tpublic nameValueList(): NameValueListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NameValueListContext);\n\t}\n\tpublic expressionList(): ExpressionListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, ExpressionListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionCallArguments; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionCallArguments) {\n\t\t\tlistener.enterFunctionCallArguments(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionCallArguments) {\n\t\t\tlistener.exitFunctionCallArguments(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionCallArguments) {\n\t\t\treturn visitor.visitFunctionCallArguments(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext {\n\t\treturn this.getRuleContext(0, ExpressionContext);\n\t}\n\tpublic functionCallArguments(): FunctionCallArgumentsContext {\n\t\treturn this.getRuleContext(0, FunctionCallArgumentsContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_functionCall; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterFunctionCall) {\n\t\t\tlistener.enterFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitFunctionCall) {\n\t\t\tlistener.exitFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitFunctionCall) {\n\t\t\treturn visitor.visitFunctionCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyBlockContext extends ParserRuleContext {\n\tpublic assemblyItem(): AssemblyItemContext[];\n\tpublic assemblyItem(i: number): AssemblyItemContext;\n\tpublic assemblyItem(i?: number): AssemblyItemContext | AssemblyItemContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyItemContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyItemContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyBlock; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyBlock) {\n\t\t\tlistener.enterAssemblyBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyBlock) {\n\t\t\tlistener.exitAssemblyBlock(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyBlock) {\n\t\t\treturn visitor.visitAssemblyBlock(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyItemContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyLocalDefinition(): AssemblyLocalDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLocalDefinitionContext);\n\t}\n\tpublic assemblyAssignment(): AssemblyAssignmentContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyAssignmentContext);\n\t}\n\tpublic assemblyStackAssignment(): AssemblyStackAssignmentContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyStackAssignmentContext);\n\t}\n\tpublic labelDefinition(): LabelDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, LabelDefinitionContext);\n\t}\n\tpublic assemblySwitch(): AssemblySwitchContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblySwitchContext);\n\t}\n\tpublic assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyFunctionDefinitionContext);\n\t}\n\tpublic assemblyFor(): AssemblyForContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyForContext);\n\t}\n\tpublic assemblyIf(): AssemblyIfContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIfContext);\n\t}\n\tpublic BreakKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BreakKeyword, 0); }\n\tpublic ContinueKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ContinueKeyword, 0); }\n\tpublic LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); }\n\tpublic subAssembly(): SubAssemblyContext | undefined {\n\t\treturn this.tryGetRuleContext(0, SubAssemblyContext);\n\t}\n\tpublic numberLiteral(): NumberLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, NumberLiteralContext);\n\t}\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyItem; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyItem) {\n\t\t\tlistener.enterAssemblyItem(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyItem) {\n\t\t\tlistener.exitAssemblyItem(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyItem) {\n\t\t\treturn visitor.visitAssemblyItem(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyExpressionContext extends ParserRuleContext {\n\tpublic assemblyCall(): AssemblyCallContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyCallContext);\n\t}\n\tpublic assemblyLiteral(): AssemblyLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLiteralContext);\n\t}\n\tpublic assemblyMember(): AssemblyMemberContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyMemberContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyExpression) {\n\t\t\tlistener.enterAssemblyExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyExpression) {\n\t\t\tlistener.exitAssemblyExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyExpression) {\n\t\t\treturn visitor.visitAssemblyExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyMemberContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyMember; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyMember) {\n\t\t\tlistener.enterAssemblyMember(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyMember) {\n\t\t\tlistener.exitAssemblyMember(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyMember) {\n\t\t\treturn visitor.visitAssemblyMember(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyCallContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext[];\n\tpublic assemblyExpression(i: number): AssemblyExpressionContext;\n\tpublic assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyCall; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyCall) {\n\t\t\tlistener.enterAssemblyCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyCall) {\n\t\t\tlistener.exitAssemblyCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyCall) {\n\t\t\treturn visitor.visitAssemblyCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyLocalDefinitionContext extends ParserRuleContext {\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\treturn this.getRuleContext(0, AssemblyIdentifierOrListContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyLocalDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyLocalDefinition) {\n\t\t\tlistener.enterAssemblyLocalDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyLocalDefinition) {\n\t\t\tlistener.exitAssemblyLocalDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyLocalDefinition) {\n\t\t\treturn visitor.visitAssemblyLocalDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyAssignmentContext extends ParserRuleContext {\n\tpublic assemblyIdentifierOrList(): AssemblyIdentifierOrListContext {\n\t\treturn this.getRuleContext(0, AssemblyIdentifierOrListContext);\n\t}\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyAssignment; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyAssignment) {\n\t\t\tlistener.enterAssemblyAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyAssignment) {\n\t\t\tlistener.exitAssemblyAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyAssignment) {\n\t\t\treturn visitor.visitAssemblyAssignment(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIdentifierOrListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext | undefined {\n\t\treturn this.tryGetRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyMember(): AssemblyMemberContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyMemberContext);\n\t}\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierOrList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIdentifierOrList) {\n\t\t\tlistener.enterAssemblyIdentifierOrList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIdentifierOrList) {\n\t\t\tlistener.exitAssemblyIdentifierOrList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIdentifierOrList) {\n\t\t\treturn visitor.visitAssemblyIdentifierOrList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIdentifierListContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext[];\n\tpublic identifier(i: number): IdentifierContext;\n\tpublic identifier(i?: number): IdentifierContext | IdentifierContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(IdentifierContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, IdentifierContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierList; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIdentifierList) {\n\t\t\tlistener.enterAssemblyIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIdentifierList) {\n\t\t\tlistener.exitAssemblyIdentifierList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIdentifierList) {\n\t\t\treturn visitor.visitAssemblyIdentifierList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyStackAssignmentContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyStackAssignment; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyStackAssignment) {\n\t\t\tlistener.enterAssemblyStackAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyStackAssignment) {\n\t\t\tlistener.exitAssemblyStackAssignment(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyStackAssignment) {\n\t\t\treturn visitor.visitAssemblyStackAssignment(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class LabelDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_labelDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterLabelDefinition) {\n\t\t\tlistener.enterLabelDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitLabelDefinition) {\n\t\t\tlistener.exitLabelDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitLabelDefinition) {\n\t\t\treturn visitor.visitLabelDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblySwitchContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyCase(): AssemblyCaseContext[];\n\tpublic assemblyCase(i: number): AssemblyCaseContext;\n\tpublic assemblyCase(i?: number): AssemblyCaseContext | AssemblyCaseContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyCaseContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyCaseContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblySwitch; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblySwitch) {\n\t\t\tlistener.enterAssemblySwitch(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblySwitch) {\n\t\t\tlistener.exitAssemblySwitch(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblySwitch) {\n\t\t\treturn visitor.visitAssemblySwitch(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyCaseContext extends ParserRuleContext {\n\tpublic assemblyLiteral(): AssemblyLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyLiteralContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyCase; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyCase) {\n\t\t\tlistener.enterAssemblyCase(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyCase) {\n\t\t\tlistener.exitAssemblyCase(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyCase) {\n\t\t\treturn visitor.visitAssemblyCase(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyFunctionDefinitionContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tpublic assemblyFunctionReturns(): AssemblyFunctionReturnsContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyFunctionReturnsContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionDefinition; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFunctionDefinition) {\n\t\t\tlistener.enterAssemblyFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFunctionDefinition) {\n\t\t\tlistener.exitAssemblyFunctionDefinition(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFunctionDefinition) {\n\t\t\treturn visitor.visitAssemblyFunctionDefinition(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyFunctionReturnsContext extends ParserRuleContext {\n\tpublic assemblyIdentifierList(): AssemblyIdentifierListContext | undefined {\n\t\treturn this.tryGetRuleContext(0, AssemblyIdentifierListContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionReturns; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFunctionReturns) {\n\t\t\tlistener.enterAssemblyFunctionReturns(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFunctionReturns) {\n\t\t\tlistener.exitAssemblyFunctionReturns(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFunctionReturns) {\n\t\t\treturn visitor.visitAssemblyFunctionReturns(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyForContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext[];\n\tpublic assemblyExpression(i: number): AssemblyExpressionContext;\n\tpublic assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyExpressionContext);\n\t\t}\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext[];\n\tpublic assemblyBlock(i: number): AssemblyBlockContext;\n\tpublic assemblyBlock(i?: number): AssemblyBlockContext | AssemblyBlockContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(AssemblyBlockContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, AssemblyBlockContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyFor; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyFor) {\n\t\t\tlistener.enterAssemblyFor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyFor) {\n\t\t\tlistener.exitAssemblyFor(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyFor) {\n\t\t\treturn visitor.visitAssemblyFor(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyIfContext extends ParserRuleContext {\n\tpublic assemblyExpression(): AssemblyExpressionContext {\n\t\treturn this.getRuleContext(0, AssemblyExpressionContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyIf; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyIf) {\n\t\t\tlistener.enterAssemblyIf(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyIf) {\n\t\t\tlistener.exitAssemblyIf(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyIf) {\n\t\t\treturn visitor.visitAssemblyIf(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AssemblyLiteralContext extends ParserRuleContext {\n\tpublic stringLiteral(): StringLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, StringLiteralContext);\n\t}\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tpublic HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); }\n\tpublic hexLiteral(): HexLiteralContext | undefined {\n\t\treturn this.tryGetRuleContext(0, HexLiteralContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_assemblyLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterAssemblyLiteral) {\n\t\t\tlistener.enterAssemblyLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitAssemblyLiteral) {\n\t\t\tlistener.exitAssemblyLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitAssemblyLiteral) {\n\t\t\treturn visitor.visitAssemblyLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class SubAssemblyContext extends ParserRuleContext {\n\tpublic identifier(): IdentifierContext {\n\t\treturn this.getRuleContext(0, IdentifierContext);\n\t}\n\tpublic assemblyBlock(): AssemblyBlockContext {\n\t\treturn this.getRuleContext(0, AssemblyBlockContext);\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_subAssembly; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterSubAssembly) {\n\t\t\tlistener.enterSubAssembly(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitSubAssembly) {\n\t\t\tlistener.exitSubAssembly(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitSubAssembly) {\n\t\t\treturn visitor.visitSubAssembly(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class TupleExpressionContext extends ParserRuleContext {\n\tpublic expression(): ExpressionContext[];\n\tpublic expression(i: number): ExpressionContext;\n\tpublic expression(i?: number): ExpressionContext | ExpressionContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(ExpressionContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, ExpressionContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_tupleExpression; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterTupleExpression) {\n\t\t\tlistener.enterTupleExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitTupleExpression) {\n\t\t\tlistener.exitTupleExpression(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitTupleExpression) {\n\t\t\treturn visitor.visitTupleExpression(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumberLiteralContext extends ParserRuleContext {\n\tpublic DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); }\n\tpublic HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); }\n\tpublic NumberUnit(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.NumberUnit, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_numberLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterNumberLiteral) {\n\t\t\tlistener.enterNumberLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitNumberLiteral) {\n\t\t\tlistener.exitNumberLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitNumberLiteral) {\n\t\t\treturn visitor.visitNumberLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class IdentifierContext extends ParserRuleContext {\n\tpublic ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); }\n\tpublic ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); }\n\tpublic PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); }\n\tpublic LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); }\n\tpublic Identifier(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Identifier, 0); }\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_identifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterIdentifier) {\n\t\t\tlistener.enterIdentifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitIdentifier) {\n\t\t\tlistener.exitIdentifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitIdentifier) {\n\t\t\treturn visitor.visitIdentifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class HexLiteralContext extends ParserRuleContext {\n\tpublic HexLiteralFragment(): TerminalNode[];\n\tpublic HexLiteralFragment(i: number): TerminalNode;\n\tpublic HexLiteralFragment(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.HexLiteralFragment);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.HexLiteralFragment, i);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_hexLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterHexLiteral) {\n\t\t\tlistener.enterHexLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitHexLiteral) {\n\t\t\tlistener.exitHexLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitHexLiteral) {\n\t\t\treturn visitor.visitHexLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class OverrideSpecifierContext extends ParserRuleContext {\n\tpublic userDefinedTypeName(): UserDefinedTypeNameContext[];\n\tpublic userDefinedTypeName(i: number): UserDefinedTypeNameContext;\n\tpublic userDefinedTypeName(i?: number): UserDefinedTypeNameContext | UserDefinedTypeNameContext[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getRuleContexts(UserDefinedTypeNameContext);\n\t\t} else {\n\t\t\treturn this.getRuleContext(i, UserDefinedTypeNameContext);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_overrideSpecifier; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterOverrideSpecifier) {\n\t\t\tlistener.enterOverrideSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitOverrideSpecifier) {\n\t\t\tlistener.exitOverrideSpecifier(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitOverrideSpecifier) {\n\t\t\treturn visitor.visitOverrideSpecifier(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StringLiteralContext extends ParserRuleContext {\n\tpublic StringLiteralFragment(): TerminalNode[];\n\tpublic StringLiteralFragment(i: number): TerminalNode;\n\tpublic StringLiteralFragment(i?: number): TerminalNode | TerminalNode[] {\n\t\tif (i === undefined) {\n\t\t\treturn this.getTokens(SolidityParser.StringLiteralFragment);\n\t\t} else {\n\t\t\treturn this.getToken(SolidityParser.StringLiteralFragment, i);\n\t\t}\n\t}\n\tconstructor(parent: ParserRuleContext | undefined, invokingState: number) {\n\t\tsuper(parent, invokingState);\n\t}\n\t// @Override\n\tpublic get ruleIndex(): number { return SolidityParser.RULE_stringLiteral; }\n\t// @Override\n\tpublic enterRule(listener: SolidityListener): void {\n\t\tif (listener.enterStringLiteral) {\n\t\t\tlistener.enterStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic exitRule(listener: SolidityListener): void {\n\t\tif (listener.exitStringLiteral) {\n\t\t\tlistener.exitStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept(visitor: SolidityVisitor): Result {\n\t\tif (visitor.visitStringLiteral) {\n\t\t\treturn visitor.visitStringLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\n", "// Base on the original type definitions for solidity-parser-antlr 0.2\n// by Leonid Logvinov \n// Alex Browne \n// Xiao Liang \n\ninterface Location {\n start: {\n line: number\n column: number\n }\n end: {\n line: number\n column: number\n }\n}\n\nexport interface BaseASTNode {\n type: ASTNodeTypeString\n range?: [number, number]\n loc?: Location\n}\n\nexport interface SourceUnit extends BaseASTNode {\n type: 'SourceUnit'\n children: ASTNode[]\n}\n\nexport interface ContractDefinition extends BaseASTNode {\n type: 'ContractDefinition'\n name: string\n baseContracts: InheritanceSpecifier[]\n kind: string\n subNodes: BaseASTNode[]\n}\n\nexport interface InheritanceSpecifier extends BaseASTNode {\n type: 'InheritanceSpecifier'\n baseName: UserDefinedTypeName\n arguments: Expression[]\n}\n\nexport interface UserDefinedTypeName extends BaseASTNode {\n type: 'UserDefinedTypeName'\n namePath: string\n}\n\nexport const astNodeTypes = [\n 'SourceUnit',\n 'PragmaDirective',\n 'ImportDirective',\n 'ContractDefinition',\n 'InheritanceSpecifier',\n 'StateVariableDeclaration',\n 'UsingForDeclaration',\n 'StructDefinition',\n 'ModifierDefinition',\n 'ModifierInvocation',\n 'FunctionDefinition',\n 'EventDefinition',\n 'CustomErrorDefinition',\n 'RevertStatement',\n 'EnumValue',\n 'EnumDefinition',\n 'VariableDeclaration',\n 'UserDefinedTypeName',\n 'Mapping',\n 'ArrayTypeName',\n 'FunctionTypeName',\n 'Block',\n 'ExpressionStatement',\n 'IfStatement',\n 'WhileStatement',\n 'ForStatement',\n 'InlineAssemblyStatement',\n 'DoWhileStatement',\n 'ContinueStatement',\n 'Break',\n 'Continue',\n 'BreakStatement',\n 'ReturnStatement',\n 'EmitStatement',\n 'ThrowStatement',\n 'VariableDeclarationStatement',\n 'ElementaryTypeName',\n 'FunctionCall',\n 'AssemblyBlock',\n 'AssemblyCall',\n 'AssemblyLocalDefinition',\n 'AssemblyAssignment',\n 'AssemblyStackAssignment',\n 'LabelDefinition',\n 'AssemblySwitch',\n 'AssemblyCase',\n 'AssemblyFunctionDefinition',\n 'AssemblyFunctionReturns',\n 'AssemblyFor',\n 'AssemblyIf',\n 'SubAssembly',\n 'TupleExpression',\n 'NameValueExpression',\n 'BooleanLiteral',\n 'NumberLiteral',\n 'Identifier',\n 'BinaryOperation',\n 'UnaryOperation',\n 'NewExpression',\n 'Conditional',\n 'StringLiteral',\n 'HexLiteral',\n 'HexNumber',\n 'DecimalNumber',\n 'MemberAccess',\n 'IndexAccess',\n 'IndexRangeAccess',\n 'NameValueList',\n 'UncheckedStatement',\n 'TryStatement',\n 'CatchClause',\n 'FileLevelConstant',\n 'AssemblyMemberAccess',\n 'TypeDefinition',\n 'InvalidNode'\n] as const\n\nexport type ASTNodeTypeString = typeof astNodeTypes[number]\nexport interface InvalidNode extends BaseASTNode {\n type: 'InvalidNode'\n name?: string\n value?: string\n}\nexport interface PragmaDirective extends BaseASTNode {\n type: 'PragmaDirective'\n name: string\n value: string\n}\nexport interface ImportDirective extends BaseASTNode {\n type: 'ImportDirective'\n path: string\n pathLiteral: StringLiteral\n unitAlias: string | null\n unitAliasIdentifier: Identifier | null\n symbolAliases: Array<[string, string | null]> | null\n symbolAliasesIdentifiers: Array<[Identifier, Identifier | null]> | null\n}\nexport interface StateVariableDeclaration extends BaseASTNode {\n type: 'StateVariableDeclaration'\n variables: StateVariableDeclarationVariable[]\n initialValue: Expression | null\n}\nexport interface FileLevelConstant extends BaseASTNode {\n type: 'FileLevelConstant'\n typeName: TypeName\n name: string\n initialValue: Expression\n isDeclaredConst: boolean\n isImmutable: boolean\n}\nexport interface UsingForDeclaration extends BaseASTNode {\n type: 'UsingForDeclaration'\n typeName: TypeName | null\n functions: string[]\n libraryName: string | null\n isGlobal: boolean;\n}\nexport interface StructDefinition extends BaseASTNode {\n type: 'StructDefinition'\n name: string\n members: VariableDeclaration[]\n}\nexport interface ModifierDefinition extends BaseASTNode {\n type: 'ModifierDefinition'\n name: string\n parameters: null | VariableDeclaration[]\n isVirtual: boolean\n override: null | UserDefinedTypeName[]\n body: Block | null\n}\nexport interface ModifierInvocation extends BaseASTNode {\n type: 'ModifierInvocation'\n name: string\n arguments: Expression[] | null\n}\nexport interface FunctionDefinition extends BaseASTNode {\n type: 'FunctionDefinition'\n name: string | null\n parameters: VariableDeclaration[]\n modifiers: ModifierInvocation[]\n stateMutability: 'pure' | 'constant' | 'payable' | 'view' | null\n visibility: 'default' | 'external' | 'internal' | 'public' | 'private'\n returnParameters: VariableDeclaration[] | null\n body: Block | null\n override: UserDefinedTypeName[] | null\n isConstructor: boolean\n isReceiveEther: boolean\n isFallback: boolean\n isVirtual: boolean\n}\n\nexport interface CustomErrorDefinition extends BaseASTNode {\n type: 'CustomErrorDefinition'\n name: string\n parameters: VariableDeclaration[]\n}\n\nexport interface TypeDefinition extends BaseASTNode {\n type: 'TypeDefinition'\n name: string\n definition: ElementaryTypeName\n}\n\nexport interface RevertStatement extends BaseASTNode {\n type: 'RevertStatement'\n revertCall: FunctionCall\n}\nexport interface EventDefinition extends BaseASTNode {\n type: 'EventDefinition'\n name: string\n parameters: VariableDeclaration[]\n isAnonymous: boolean\n}\nexport interface EnumValue extends BaseASTNode {\n type: 'EnumValue'\n name: string\n}\nexport interface EnumDefinition extends BaseASTNode {\n type: 'EnumDefinition'\n name: string\n members: EnumValue[]\n}\nexport interface VariableDeclaration extends BaseASTNode {\n type: 'VariableDeclaration'\n isIndexed: boolean\n isStateVar: boolean\n typeName: TypeName | null\n name: string | null\n identifier: Identifier | null\n isDeclaredConst?: boolean\n storageLocation: string | null\n expression: Expression | null\n visibility?: 'public' | 'private' | 'internal' | 'default'\n}\nexport interface StateVariableDeclarationVariable extends VariableDeclaration {\n override: null | UserDefinedTypeName[]\n isImmutable: boolean\n}\nexport interface ArrayTypeName extends BaseASTNode {\n type: 'ArrayTypeName'\n baseTypeName: TypeName\n length: Expression | null\n}\nexport interface Mapping extends BaseASTNode {\n type: 'Mapping'\n keyType: ElementaryTypeName | UserDefinedTypeName\n valueType: TypeName\n}\nexport interface FunctionTypeName extends BaseASTNode {\n type: 'FunctionTypeName'\n parameterTypes: VariableDeclaration[]\n returnTypes: VariableDeclaration[]\n visibility: string\n stateMutability: string | null\n}\n\nexport interface Block extends BaseASTNode {\n type: 'Block'\n statements: BaseASTNode[]\n}\nexport interface ExpressionStatement extends BaseASTNode {\n type: 'ExpressionStatement'\n expression: Expression | null\n}\nexport interface IfStatement extends BaseASTNode {\n type: 'IfStatement'\n condition: Expression\n trueBody: Statement\n falseBody: Statement | null\n}\nexport interface UncheckedStatement extends BaseASTNode {\n type: 'UncheckedStatement'\n block: Block\n}\nexport interface TryStatement extends BaseASTNode {\n type: 'TryStatement'\n expression: Expression\n returnParameters: VariableDeclaration[] | null\n body: Block\n catchClauses: CatchClause[]\n}\nexport interface CatchClause extends BaseASTNode {\n type: 'CatchClause'\n isReasonStringType: boolean\n kind: string | null\n parameters: VariableDeclaration[] | null\n body: Block\n}\nexport interface WhileStatement extends BaseASTNode {\n type: 'WhileStatement'\n condition: Expression\n body: Statement\n}\nexport interface ForStatement extends BaseASTNode {\n type: 'ForStatement'\n initExpression: SimpleStatement | null\n conditionExpression?: Expression\n loopExpression: ExpressionStatement\n body: Statement\n}\nexport interface InlineAssemblyStatement extends BaseASTNode {\n type: 'InlineAssemblyStatement'\n language: string | null\n flags: string[]\n body: AssemblyBlock\n}\nexport interface DoWhileStatement extends BaseASTNode {\n type: 'DoWhileStatement'\n condition: Expression\n body: Statement\n}\nexport interface ContinueStatement extends BaseASTNode {\n type: 'ContinueStatement'\n}\nexport interface Break extends BaseASTNode {\n type: 'Break'\n}\nexport interface Continue extends BaseASTNode {\n type: 'Continue'\n}\nexport interface BreakStatement extends BaseASTNode {\n type: 'BreakStatement'\n}\nexport interface ReturnStatement extends BaseASTNode {\n type: 'ReturnStatement'\n expression: Expression | null\n}\nexport interface EmitStatement extends BaseASTNode {\n type: 'EmitStatement'\n eventCall: FunctionCall\n}\nexport interface ThrowStatement extends BaseASTNode {\n type: 'ThrowStatement'\n}\nexport interface VariableDeclarationStatement extends BaseASTNode {\n type: 'VariableDeclarationStatement'\n variables: Array\n initialValue: Expression | null\n}\nexport interface ElementaryTypeName extends BaseASTNode {\n type: 'ElementaryTypeName'\n name: string\n stateMutability: string | null\n}\nexport interface FunctionCall extends BaseASTNode {\n type: 'FunctionCall'\n expression: Expression\n arguments: Expression[]\n names: string[]\n identifiers: Identifier[]\n}\nexport interface AssemblyBlock extends BaseASTNode {\n type: 'AssemblyBlock'\n operations: AssemblyItem[]\n}\nexport interface AssemblyCall extends BaseASTNode {\n type: 'AssemblyCall'\n functionName: string\n arguments: AssemblyExpression[]\n}\nexport interface AssemblyLocalDefinition extends BaseASTNode {\n type: 'AssemblyLocalDefinition'\n names: Identifier[] | AssemblyMemberAccess[]\n expression: AssemblyExpression | null\n}\nexport interface AssemblyAssignment extends BaseASTNode {\n type: 'AssemblyAssignment'\n names: Identifier[] | AssemblyMemberAccess[]\n expression: AssemblyExpression\n}\nexport interface AssemblyStackAssignment extends BaseASTNode {\n type: 'AssemblyStackAssignment'\n name: string\n expression: AssemblyExpression\n}\nexport interface LabelDefinition extends BaseASTNode {\n type: 'LabelDefinition'\n name: string\n}\nexport interface AssemblySwitch extends BaseASTNode {\n type: 'AssemblySwitch'\n expression: AssemblyExpression\n cases: AssemblyCase[]\n}\nexport interface AssemblyCase extends BaseASTNode {\n type: 'AssemblyCase'\n value: AssemblyLiteral | null\n block: AssemblyBlock\n default: boolean\n}\nexport interface AssemblyFunctionDefinition extends BaseASTNode {\n type: 'AssemblyFunctionDefinition'\n name: string\n arguments: Identifier[]\n returnArguments: Identifier[]\n body: AssemblyBlock\n}\nexport interface AssemblyFunctionReturns extends BaseASTNode {\n type: 'AssemblyFunctionReturns'\n}\nexport interface AssemblyFor extends BaseASTNode {\n type: 'AssemblyFor'\n pre: AssemblyBlock | AssemblyExpression\n condition: AssemblyExpression\n post: AssemblyBlock | AssemblyExpression\n body: AssemblyBlock\n}\nexport interface AssemblyIf extends BaseASTNode {\n type: 'AssemblyIf'\n condition: AssemblyExpression\n body: AssemblyBlock\n}\nexport type AssemblyLiteral =\n | StringLiteral\n | DecimalNumber\n | HexNumber\n | HexLiteral\nexport interface SubAssembly extends BaseASTNode {\n type: 'SubAssembly'\n}\nexport interface AssemblyMemberAccess extends BaseASTNode {\n type: 'AssemblyMemberAccess'\n expression: Identifier\n memberName: Identifier\n}\nexport interface NewExpression extends BaseASTNode {\n type: 'NewExpression'\n typeName: TypeName\n}\nexport interface TupleExpression extends BaseASTNode {\n type: 'TupleExpression'\n components: Array\n isArray: boolean\n}\nexport interface NameValueExpression extends BaseASTNode {\n type: 'NameValueExpression'\n expression: Expression\n arguments: NameValueList\n}\nexport interface NumberLiteral extends BaseASTNode {\n type: 'NumberLiteral'\n number: string\n subdenomination:\n | null\n | 'wei'\n | 'szabo'\n | 'finney'\n | 'ether'\n | 'seconds'\n | 'minutes'\n | 'hours'\n | 'days'\n | 'weeks'\n | 'years'\n}\nexport interface BooleanLiteral extends BaseASTNode {\n type: 'BooleanLiteral'\n value: boolean\n}\nexport interface HexLiteral extends BaseASTNode {\n type: 'HexLiteral'\n value: string\n parts: string[]\n}\nexport interface StringLiteral extends BaseASTNode {\n type: 'StringLiteral'\n value: string\n parts: string[]\n isUnicode: boolean[]\n}\nexport interface Identifier extends BaseASTNode {\n type: 'Identifier'\n name: string\n}\n\nexport const binaryOpValues = [\n '+',\n '-',\n '*',\n '/',\n '**',\n '%',\n '<<',\n '>>',\n '&&',\n '||',\n ',,',\n '&',\n ',',\n '^',\n '<',\n '>',\n '<=',\n '>=',\n '==',\n '!=',\n '=',\n ',=',\n '^=',\n '&=',\n '<<=',\n '>>=',\n '+=',\n '-=',\n '*=',\n '/=',\n '%=',\n '|',\n '|=',\n] as const\nexport type BinOp = typeof binaryOpValues[number]\n\nexport const unaryOpValues = [\n '-',\n '+',\n '++',\n '--',\n '~',\n 'after',\n 'delete',\n '!',\n] as const\nexport type UnaryOp = typeof unaryOpValues[number]\n\nexport interface BinaryOperation extends BaseASTNode {\n type: 'BinaryOperation'\n left: Expression\n right: Expression\n operator: BinOp\n}\nexport interface UnaryOperation extends BaseASTNode {\n type: 'UnaryOperation'\n operator: UnaryOp\n subExpression: Expression\n isPrefix: boolean\n}\nexport interface Conditional extends BaseASTNode {\n type: 'Conditional'\n condition: Expression\n trueExpression: Expression\n falseExpression: Expression\n}\nexport interface IndexAccess extends BaseASTNode {\n type: 'IndexAccess'\n base: Expression\n index: Expression\n}\nexport interface IndexRangeAccess extends BaseASTNode {\n type: 'IndexRangeAccess'\n base: Expression\n indexStart?: Expression\n indexEnd?: Expression\n}\nexport interface MemberAccess extends BaseASTNode {\n type: 'MemberAccess'\n expression: Expression\n memberName: string\n}\nexport interface HexNumber extends BaseASTNode {\n type: 'HexNumber'\n value: string\n}\nexport interface DecimalNumber extends BaseASTNode {\n type: 'DecimalNumber'\n value: string\n}\nexport interface NameValueList extends BaseASTNode {\n type: 'NameValueList'\n names: string[]\n identifiers: Identifier[]\n arguments: Expression[]\n}\nexport type ASTNode =\n | SourceUnit\n | PragmaDirective\n | ImportDirective\n | ContractDefinition\n | InheritanceSpecifier\n | StateVariableDeclaration\n | UsingForDeclaration\n | StructDefinition\n | ModifierDefinition\n | ModifierInvocation\n | FunctionDefinition\n | EventDefinition\n | CustomErrorDefinition\n | EnumValue\n | EnumDefinition\n | VariableDeclaration\n | TypeName\n | UserDefinedTypeName\n | Mapping\n | FunctionTypeName\n | Block\n | Statement\n | ElementaryTypeName\n | AssemblyBlock\n | AssemblyCall\n | AssemblyLocalDefinition\n | AssemblyAssignment\n | AssemblyStackAssignment\n | LabelDefinition\n | AssemblySwitch\n | AssemblyCase\n | AssemblyFunctionDefinition\n | AssemblyFunctionReturns\n | AssemblyFor\n | AssemblyIf\n | AssemblyLiteral\n | SubAssembly\n | TupleExpression\n | BinaryOperation\n | Conditional\n | IndexAccess\n | IndexRangeAccess\n | AssemblyItem\n | Expression\n | NameValueList\n | AssemblyMemberAccess\n | CatchClause\n | FileLevelConstant\n | TypeDefinition\n | InvalidNode\n\nexport type AssemblyItem =\n | Identifier\n | AssemblyBlock\n | AssemblyExpression\n | AssemblyLocalDefinition\n | AssemblyAssignment\n | AssemblyStackAssignment\n | LabelDefinition\n | AssemblySwitch\n | AssemblyFunctionDefinition\n | AssemblyFor\n | AssemblyIf\n | Break\n | Continue\n | SubAssembly\n | NumberLiteral\n | StringLiteral\n | HexNumber\n | HexLiteral\n | DecimalNumber\nexport type AssemblyExpression = AssemblyCall | AssemblyLiteral\nexport type Expression =\n | IndexAccess\n | IndexRangeAccess\n | TupleExpression\n | BinaryOperation\n | Conditional\n | MemberAccess\n | FunctionCall\n | UnaryOperation\n | NewExpression\n | PrimaryExpression\n | NameValueExpression\nexport type PrimaryExpression =\n | BooleanLiteral\n | HexLiteral\n | StringLiteral\n | NumberLiteral\n | Identifier\n | TupleExpression\n | TypeName\nexport type SimpleStatement = VariableDeclarationStatement | ExpressionStatement\nexport type TypeName =\n | ElementaryTypeName\n | UserDefinedTypeName\n | Mapping\n | ArrayTypeName\n | FunctionTypeName\nexport type Statement =\n | IfStatement\n | WhileStatement\n | ForStatement\n | Block\n | InlineAssemblyStatement\n | DoWhileStatement\n | ContinueStatement\n | BreakStatement\n | ReturnStatement\n | EmitStatement\n | ThrowStatement\n | SimpleStatement\n | VariableDeclarationStatement\n | UncheckedStatement\n | TryStatement\n | RevertStatement\n\ntype ASTMap = { [K in ASTNodeTypeString]: U extends { type: K } ? U : never }\ntype ASTTypeMap = ASTMap\ntype ASTVisitorEnter = {\n [K in keyof ASTTypeMap]?: (ast: ASTTypeMap[K], parent?: ASTNode) => any\n}\ntype ASTVisitorExit = {\n [K in keyof ASTTypeMap as `${K}:exit`]?: (\n ast: ASTTypeMap[K],\n parent?: ASTNode\n ) => any\n}\n\nexport type ASTVisitor = ASTVisitorEnter & ASTVisitorExit\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * This monstrosity is here to check that there are no ASTNodeTypeString without\n * a corresponding ASTNode, no ASTNode without a corresponding ASTNodeTypeString,\n * no ASTVisitorEnter callback without a corresponding ASTNode,\n * no ASTVisitorExit callback without a corresponding ASTVisitorEnter callback,\n * and so on, and so on.\n *\n * There are probably some ways to simplify this by deriving some types\n * from others.\n */\nfunction checkTypes() {\n const astNodeType: ASTNode['type'] = '' as any\n const astNodeTypeString: ASTNodeTypeString = '' as any\n const astVisitorEnterKey: keyof ASTVisitorEnter = '' as any\n\n let assignAstNodeType: ASTNode['type'] = astNodeTypeString\n assignAstNodeType = astVisitorEnterKey\n\n let assignAstNodeTyeString: ASTNodeTypeString = astNodeType\n assignAstNodeTyeString = astVisitorEnterKey\n\n let assignAstVisitorEnterKey: keyof ASTVisitorEnter = astNodeType\n assignAstVisitorEnterKey = astNodeTypeString\n\n const astNodeTypeExit: `${ASTNode['type']}:exit` = '' as any\n const astNodeTypeStringExit: `${ASTNodeTypeString}:exit` = '' as any\n const astVisitorEnterKeyExit: `${keyof ASTVisitorEnter}:exit` = '' as any\n const astVisitorExitKey: keyof ASTVisitorExit = '' as any\n\n let letAstNodeTypeExit: `${ASTNode['type']}:exit` = astNodeTypeStringExit\n letAstNodeTypeExit = astVisitorEnterKeyExit\n letAstNodeTypeExit = astVisitorExitKey\n\n let assignAstNodeTypeStringExit: `${ASTNodeTypeString}:exit` = astNodeTypeExit\n assignAstNodeTypeStringExit = astVisitorEnterKeyExit\n assignAstNodeTypeStringExit = astVisitorExitKey\n\n let assignAstVisitorEnterKeyExit: `${keyof ASTVisitorEnter}:exit` = astNodeTypeExit\n assignAstVisitorEnterKeyExit = astNodeTypeStringExit\n assignAstVisitorEnterKeyExit = astVisitorExitKey\n\n let assignAstVisitorExitKey: keyof ASTVisitorExit = astNodeTypeExit\n assignAstVisitorExitKey = astNodeTypeStringExit\n assignAstVisitorExitKey = astVisitorEnterKeyExit\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n", "import { ParserRuleContext } from 'antlr4ts'\nimport { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'\nimport { ParseTree } from 'antlr4ts/tree/ParseTree'\nimport * as SP from './antlr/SolidityParser'\n\nimport { SolidityVisitor } from './antlr/SolidityVisitor'\nimport { ParseOptions } from './types'\nimport * as AST from './ast-types'\nimport { ErrorNode } from 'antlr4ts/tree/ErrorNode'\n\ninterface SourceLocation {\n start: {\n line: number\n column: number\n }\n end: {\n line: number\n column: number\n }\n}\n\ninterface WithMeta {\n __withMeta: never\n}\n\ntype ASTBuilderNode = AST.ASTNode & WithMeta\n\nexport class ASTBuilder\n extends AbstractParseTreeVisitor\n implements SolidityVisitor {\n public result: AST.SourceUnit | null = null\n private _currentContract?: string\n\n constructor(public options: ParseOptions) {\n super()\n }\n\n defaultResult(): AST.ASTNode & WithMeta {\n throw new Error('Unknown node')\n }\n\n aggregateResult() {\n return ({ type: '' } as unknown) as AST.ASTNode & WithMeta\n }\n\n public visitSourceUnit(ctx: SP.SourceUnitContext): AST.SourceUnit & WithMeta {\n const children = (ctx.children ?? []).filter(\n (x) => !(x instanceof ErrorNode)\n )\n\n const node: AST.SourceUnit = {\n type: 'SourceUnit',\n children: children.slice(0, -1).map((child) => this.visit(child)),\n }\n const result = this._addMeta(node, ctx)\n this.result = result\n\n return result\n }\n\n public visitContractPart(ctx: SP.ContractPartContext) {\n return this.visit(ctx.getChild(0))\n }\n\n public visitContractDefinition(\n ctx: SP.ContractDefinitionContext\n ): AST.ContractDefinition & WithMeta {\n const name = this._toText(ctx.identifier())\n const kind = this._toText(ctx.getChild(0))\n\n this._currentContract = name\n\n const node: AST.ContractDefinition = {\n type: 'ContractDefinition',\n name,\n baseContracts: ctx\n .inheritanceSpecifier()\n .map((x) => this.visitInheritanceSpecifier(x)),\n subNodes: ctx.contractPart().map((x) => this.visit(x)),\n kind,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStateVariableDeclaration(\n ctx: SP.StateVariableDeclarationContext\n ) {\n const type = this.visitTypeName(ctx.typeName())\n const iden = ctx.identifier()\n const name = this._toText(iden)\n\n let expression: AST.Expression | null = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n expression = this.visitExpression(ctxExpression)\n }\n\n let visibility: AST.VariableDeclaration['visibility'] = 'default'\n if (ctx.InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.PublicKeyword().length > 0) {\n visibility = 'public'\n } else if (ctx.PrivateKeyword().length > 0) {\n visibility = 'private'\n }\n\n let isDeclaredConst = false\n if (ctx.ConstantKeyword().length > 0) {\n isDeclaredConst = true\n }\n\n let override\n const overrideSpecifier = ctx.overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n let isImmutable = false\n if (ctx.ImmutableKeyword().length > 0) {\n isImmutable = true\n }\n\n const decl: AST.StateVariableDeclarationVariable = {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n identifier: this.visitIdentifier(iden),\n expression,\n visibility,\n isStateVar: true,\n isDeclaredConst,\n isIndexed: false,\n isImmutable,\n override,\n storageLocation: null,\n }\n\n const node: AST.StateVariableDeclaration = {\n type: 'StateVariableDeclaration',\n variables: [this._addMeta(decl, ctx)],\n initialValue: expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitVariableDeclaration(\n ctx: SP.VariableDeclarationContext\n ): AST.VariableDeclaration & WithMeta {\n let storageLocation: string | null = null\n const ctxStorageLocation = ctx.storageLocation()\n if (ctxStorageLocation) {\n storageLocation = this._toText(ctxStorageLocation)\n }\n\n const identifierCtx = ctx.identifier()\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name: this._toText(identifierCtx),\n identifier: this.visitIdentifier(identifierCtx),\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitVariableDeclarationStatement(\n ctx: SP.VariableDeclarationStatementContext\n ): AST.VariableDeclarationStatement & WithMeta {\n let variables: Array = []\n const ctxVariableDeclaration = ctx.variableDeclaration()\n const ctxIdentifierList = ctx.identifierList()\n const ctxVariableDeclarationList = ctx.variableDeclarationList()\n if (ctxVariableDeclaration !== undefined) {\n variables = [this.visitVariableDeclaration(ctxVariableDeclaration)]\n } else if (ctxIdentifierList !== undefined) {\n variables = this.buildIdentifierList(ctxIdentifierList)\n } else if (ctxVariableDeclarationList) {\n variables = this.buildVariableDeclarationList(ctxVariableDeclarationList)\n }\n\n let initialValue: AST.Expression | null = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n initialValue = this.visitExpression(ctxExpression)\n }\n\n const node: AST.VariableDeclarationStatement = {\n type: 'VariableDeclarationStatement',\n variables,\n initialValue,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStatement(ctx: SP.StatementContext) {\n try {\n return this.visit(ctx.getChild(0)) as AST.Statement & WithMeta\n } catch (e) {\n const node: any = {type: 'InvalidNode'}\n return this._addMeta(node, ctx)\n }\n }\n\n public visitSimpleStatement(ctx: SP.SimpleStatementContext) {\n try {\n return this.visit(ctx.getChild(0)) as AST.SimpleStatement & WithMeta\n } catch (e) {\n const node: any = {type: 'InvalidNode'}\n return this._addMeta(node, ctx)\n }\n }\n\n public visitEventDefinition(ctx: SP.EventDefinitionContext) {\n const parameters = ctx\n .eventParameterList()\n .eventParameter()\n .map((paramCtx) => {\n const type = this.visitTypeName(paramCtx.typeName())\n let name: string | null = null\n const paramCtxIdentifier = paramCtx.identifier()\n if (paramCtxIdentifier) {\n name = this._toText(paramCtxIdentifier)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n identifier:\n paramCtxIdentifier !== undefined\n ? this.visitIdentifier(paramCtxIdentifier)\n : null,\n isStateVar: false,\n isIndexed: paramCtx.IndexedKeyword() !== undefined,\n storageLocation: null,\n expression: null,\n }\n return this._addMeta(node, paramCtx)\n })\n\n const node: AST.EventDefinition = {\n type: 'EventDefinition',\n name: this._toText(ctx.identifier()),\n parameters,\n isAnonymous: ctx.AnonymousKeyword() !== undefined,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitBlock(ctx: SP.BlockContext): AST.Block & WithMeta {\n const node: AST.Block = {\n type: 'Block',\n statements: ctx.statement().map((x) => this.visitStatement(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitParameter(ctx: SP.ParameterContext) {\n let storageLocation: string | null = null\n const ctxStorageLocation = ctx.storageLocation()\n if (ctxStorageLocation !== undefined) {\n storageLocation = this._toText(ctxStorageLocation)\n }\n\n let name: string | null = null\n const ctxIdentifier = ctx.identifier()\n if (ctxIdentifier !== undefined) {\n name = this._toText(ctxIdentifier)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name,\n identifier:\n ctxIdentifier !== undefined\n ? this.visitIdentifier(ctxIdentifier)\n : null,\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionDefinition(\n ctx: SP.FunctionDefinitionContext\n ): AST.FunctionDefinition & WithMeta {\n let isConstructor = false\n let isFallback = false\n let isReceiveEther = false\n let isVirtual = false\n let name: string | null = null\n let parameters: any = []\n let returnParameters: AST.VariableDeclaration[] | null = null\n let visibility: AST.FunctionDefinition['visibility'] = 'default'\n\n let block: AST.Block | null = null\n const ctxBlock = ctx.block()\n if (ctxBlock !== undefined) {\n block = this.visitBlock(ctxBlock)\n }\n\n const modifiers = ctx\n .modifierList()\n .modifierInvocation()\n .map((mod) => this.visitModifierInvocation(mod))\n\n let stateMutability = null\n if (ctx.modifierList().stateMutability().length > 0) {\n stateMutability = this._stateMutabilityToText(\n ctx.modifierList().stateMutability(0)\n )\n }\n\n // see what type of function we're dealing with\n const ctxReturnParameters = ctx.returnParameters()\n switch (this._toText(ctx.functionDescriptor().getChild(0))) {\n case 'constructor':\n parameters = ctx\n .parameterList()\n .parameter()\n .map((x) => this.visit(x))\n\n // error out on incorrect function visibility\n if (ctx.modifierList().InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.modifierList().PublicKeyword().length > 0) {\n visibility = 'public'\n } else {\n visibility = 'default'\n }\n\n isConstructor = true\n break\n case 'fallback':\n visibility = 'external'\n isFallback = true\n break\n case 'receive':\n visibility = 'external'\n isReceiveEther = true\n break\n case 'function': {\n const identifier = ctx.functionDescriptor().identifier()\n name = identifier !== undefined ? this._toText(identifier) : ''\n\n parameters = ctx\n .parameterList()\n .parameter()\n .map((x) => this.visit(x))\n returnParameters =\n ctxReturnParameters !== undefined\n ? this.visitReturnParameters(ctxReturnParameters)\n : null\n\n // parse function visibility\n if (ctx.modifierList().ExternalKeyword().length > 0) {\n visibility = 'external'\n } else if (ctx.modifierList().InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.modifierList().PublicKeyword().length > 0) {\n visibility = 'public'\n } else if (ctx.modifierList().PrivateKeyword().length > 0) {\n visibility = 'private'\n }\n\n isConstructor = name === this._currentContract\n isFallback = name === ''\n break\n }\n }\n\n // check if function is virtual\n if (ctx.modifierList().VirtualKeyword().length > 0) {\n isVirtual = true\n }\n\n let override: AST.UserDefinedTypeName[] | null\n const overrideSpecifier = ctx.modifierList().overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n const node: AST.FunctionDefinition = {\n type: 'FunctionDefinition',\n name,\n parameters,\n returnParameters,\n body: block,\n visibility,\n modifiers,\n override,\n isConstructor,\n isReceiveEther,\n isFallback,\n isVirtual,\n stateMutability,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEnumDefinition(\n ctx: SP.EnumDefinitionContext\n ): AST.EnumDefinition & WithMeta {\n const node: AST.EnumDefinition = {\n type: 'EnumDefinition',\n name: this._toText(ctx.identifier()),\n members: ctx.enumValue().map((x) => this.visitEnumValue(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEnumValue(ctx: SP.EnumValueContext): AST.EnumValue & WithMeta {\n const node: AST.EnumValue = {\n type: 'EnumValue',\n name: this._toText(ctx.identifier()),\n }\n return this._addMeta(node, ctx)\n }\n\n public visitElementaryTypeName(\n ctx: SP.ElementaryTypeNameContext\n ): AST.ElementaryTypeName & WithMeta {\n const node: AST.ElementaryTypeName = {\n type: 'ElementaryTypeName',\n name: this._toText(ctx),\n stateMutability: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitIdentifier(ctx: SP.IdentifierContext): AST.Identifier & WithMeta {\n const node: AST.Identifier = {\n type: 'Identifier',\n name: this._toText(ctx),\n }\n return this._addMeta(node, ctx)\n }\n\n public visitTypeName(ctx: SP.TypeNameContext): AST.TypeName & WithMeta {\n if (ctx.children !== undefined && ctx.children.length > 2) {\n let length = null\n if (ctx.children.length === 4) {\n const expression = ctx.expression()\n if (expression === undefined) {\n throw new Error(\n 'Assertion error: a typeName with 4 children should have an expression'\n )\n }\n length = this.visitExpression(expression)\n }\n\n const ctxTypeName = ctx.typeName()\n\n const node: AST.ArrayTypeName = {\n type: 'ArrayTypeName',\n baseTypeName: this.visitTypeName(ctxTypeName!),\n length,\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.children?.length === 2) {\n const node: AST.ElementaryTypeName = {\n type: 'ElementaryTypeName',\n name: this._toText(ctx.getChild(0)),\n stateMutability: this._toText(ctx.getChild(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.elementaryTypeName() !== undefined) {\n return this.visitElementaryTypeName(ctx.elementaryTypeName()!)\n }\n\n if (ctx.userDefinedTypeName() !== undefined) {\n return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()!)\n }\n\n if (ctx.mapping() !== undefined) {\n return this.visitMapping(ctx.mapping()!)\n }\n\n if (ctx.functionTypeName() !== undefined) {\n return this.visitFunctionTypeName(ctx.functionTypeName()!)\n }\n\n throw new Error('Assertion error: unhandled type name case')\n }\n\n public visitUserDefinedTypeName(\n ctx: SP.UserDefinedTypeNameContext\n ): AST.UserDefinedTypeName & WithMeta {\n const node: AST.UserDefinedTypeName = {\n type: 'UserDefinedTypeName',\n namePath: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitUsingForDeclaration(\n ctx: SP.UsingForDeclarationContext\n ): AST.UsingForDeclaration & WithMeta {\n let typeName = null\n const ctxTypeName = ctx.typeName()\n if (ctxTypeName !== undefined) {\n typeName = this.visitTypeName(ctxTypeName)\n }\n\n const isGlobal = ctx.GlobalKeyword() !== undefined;\n\n // the object of the `usingForDeclaration` can be a single identifier\n // (the library name) or a group of functions:\n // using Lib for uint;\n // using { f } for uint;\n let node: AST.UsingForDeclaration\n const usingForObject = ctx.usingForObject()\n const firstChild = this._toText(usingForObject.getChild(0))\n if (firstChild === '{') {\n node = {\n type: 'UsingForDeclaration',\n isGlobal,\n typeName,\n libraryName: null,\n functions: usingForObject\n .userDefinedTypeName()\n .map((x) => this._toText(x)),\n }\n } else {\n node = {\n type: 'UsingForDeclaration',\n isGlobal,\n typeName,\n libraryName: this._toText(usingForObject.userDefinedTypeName(0)),\n functions: [],\n }\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitPragmaDirective(\n ctx: SP.PragmaDirectiveContext\n ): AST.PragmaDirective & WithMeta {\n // this converts something like >= 0.5.0 <0.7.0\n // in >=0.5.0 <0.7.0\n const versionContext = ctx.pragmaValue().version()\n\n let value = this._toText(ctx.pragmaValue())\n if (versionContext?.children !== undefined) {\n value = versionContext.children.map((x) => this._toText(x)).join(' ')\n }\n\n const node: AST.PragmaDirective = {\n type: 'PragmaDirective',\n name: this._toText(ctx.pragmaName()),\n value,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitInheritanceSpecifier(\n ctx: SP.InheritanceSpecifierContext\n ): AST.InheritanceSpecifier & WithMeta {\n const exprList = ctx.expressionList()\n const args =\n exprList !== undefined\n ? exprList.expression().map((x) => this.visitExpression(x))\n : []\n\n const node: AST.InheritanceSpecifier = {\n type: 'InheritanceSpecifier',\n baseName: this.visitUserDefinedTypeName(ctx.userDefinedTypeName()),\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitModifierInvocation(\n ctx: SP.ModifierInvocationContext\n ): AST.ModifierInvocation & WithMeta {\n const exprList = ctx.expressionList()\n\n let args\n if (exprList != null) {\n args = exprList.expression().map((x) => this.visit(x))\n } else if (ctx.children !== undefined && ctx.children.length > 1) {\n args = []\n } else {\n args = null\n }\n\n const node: AST.ModifierInvocation = {\n type: 'ModifierInvocation',\n name: this._toText(ctx.identifier()),\n arguments: args,\n }\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionTypeName(\n ctx: SP.FunctionTypeNameContext\n ): AST.FunctionTypeName & WithMeta {\n const parameterTypes = ctx\n .functionTypeParameterList(0)\n .functionTypeParameter()\n .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx))\n\n let returnTypes: AST.VariableDeclaration[] = []\n if (ctx.functionTypeParameterList().length > 1) {\n returnTypes = ctx\n .functionTypeParameterList(1)\n .functionTypeParameter()\n .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx))\n }\n\n let visibility = 'default'\n if (ctx.InternalKeyword().length > 0) {\n visibility = 'internal'\n } else if (ctx.ExternalKeyword().length > 0) {\n visibility = 'external'\n }\n\n let stateMutability = null\n if (ctx.stateMutability().length > 0) {\n stateMutability = this._toText(ctx.stateMutability(0))\n }\n\n const node: AST.FunctionTypeName = {\n type: 'FunctionTypeName',\n parameterTypes,\n returnTypes,\n visibility,\n stateMutability,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionTypeParameter(\n ctx: SP.FunctionTypeParameterContext\n ): AST.VariableDeclaration & WithMeta {\n let storageLocation = null\n if (ctx.storageLocation()) {\n storageLocation = this._toText(ctx.storageLocation()!)\n }\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n typeName: this.visitTypeName(ctx.typeName()),\n name: null,\n identifier: null,\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitThrowStatement(\n ctx: SP.ThrowStatementContext\n ): AST.ThrowStatement & WithMeta {\n const node: AST.ThrowStatement = {\n type: 'ThrowStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitReturnStatement(\n ctx: SP.ReturnStatementContext\n ): AST.ReturnStatement & WithMeta {\n let expression = null\n const ctxExpression = ctx.expression()\n if (ctxExpression) {\n expression = this.visitExpression(ctxExpression)\n }\n\n const node: AST.ReturnStatement = {\n type: 'ReturnStatement',\n expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitEmitStatement(\n ctx: SP.EmitStatementContext\n ): AST.EmitStatement & WithMeta {\n const node: AST.EmitStatement = {\n type: 'EmitStatement',\n eventCall: this.visitFunctionCall(ctx.functionCall()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitCustomErrorDefinition(\n ctx: SP.CustomErrorDefinitionContext\n ): AST.CustomErrorDefinition & WithMeta {\n const node: AST.CustomErrorDefinition = {\n type: 'CustomErrorDefinition',\n name: this._toText(ctx.identifier()),\n parameters: this.visitParameterList(ctx.parameterList()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitTypeDefinition(\n ctx: SP.TypeDefinitionContext\n ): AST.TypeDefinition & WithMeta {\n const node: AST.TypeDefinition = {\n type: 'TypeDefinition',\n name: this._toText(ctx.identifier()),\n definition: this.visitElementaryTypeName(ctx.elementaryTypeName()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitRevertStatement(\n ctx: SP.RevertStatementContext\n ): AST.RevertStatement & WithMeta {\n const node: AST.RevertStatement = {\n type: 'RevertStatement',\n revertCall: this.visitFunctionCall(ctx.functionCall()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFunctionCall(\n ctx: SP.FunctionCallContext\n ): AST.FunctionCall & WithMeta {\n let args: AST.Expression[] = []\n const names = []\n const identifiers = []\n\n const ctxArgs = ctx.functionCallArguments()\n const ctxArgsExpressionList = ctxArgs.expressionList()\n const ctxArgsNameValueList = ctxArgs.nameValueList()\n if (ctxArgsExpressionList) {\n args = ctxArgsExpressionList\n .expression()\n .map((exprCtx) => this.visitExpression(exprCtx))\n } else if (ctxArgsNameValueList) {\n for (const nameValue of ctxArgsNameValueList.nameValue()) {\n args.push(this.visitExpression(nameValue.expression()))\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n }\n }\n\n const node: AST.FunctionCall = {\n type: 'FunctionCall',\n expression: this.visitExpression(ctx.expression()),\n arguments: args,\n names,\n identifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitStructDefinition(\n ctx: SP.StructDefinitionContext\n ): AST.StructDefinition & WithMeta {\n const node: AST.StructDefinition = {\n type: 'StructDefinition',\n name: this._toText(ctx.identifier()),\n members: ctx\n .variableDeclaration()\n .map((x) => this.visitVariableDeclaration(x)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitWhileStatement(\n ctx: SP.WhileStatementContext\n ): AST.WhileStatement & WithMeta {\n const node: AST.WhileStatement = {\n type: 'WhileStatement',\n condition: this.visitExpression(ctx.expression()),\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitDoWhileStatement(\n ctx: SP.DoWhileStatementContext\n ): AST.DoWhileStatement & WithMeta {\n const node: AST.DoWhileStatement = {\n type: 'DoWhileStatement',\n condition: this.visitExpression(ctx.expression()),\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitIfStatement(\n ctx: SP.IfStatementContext\n ): AST.IfStatement & WithMeta {\n const trueBody = this.visitStatement(ctx.statement(0))\n\n let falseBody = null\n if (ctx.statement().length > 1) {\n falseBody = this.visitStatement(ctx.statement(1))\n }\n\n const node: AST.IfStatement = {\n type: 'IfStatement',\n condition: this.visitExpression(ctx.expression()),\n trueBody,\n falseBody,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitTryStatement(\n ctx: SP.TryStatementContext\n ): AST.TryStatement & WithMeta {\n let returnParameters = null\n const ctxReturnParameters = ctx.returnParameters()\n if (ctxReturnParameters !== undefined) {\n returnParameters = this.visitReturnParameters(ctxReturnParameters)\n }\n\n const catchClauses = ctx\n .catchClause()\n .map((exprCtx) => this.visitCatchClause(exprCtx))\n\n const node: AST.TryStatement = {\n type: 'TryStatement',\n expression: this.visitExpression(ctx.expression()),\n returnParameters,\n body: this.visitBlock(ctx.block()),\n catchClauses,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitCatchClause(\n ctx: SP.CatchClauseContext\n ): AST.CatchClause & WithMeta {\n let parameters = null\n if (ctx.parameterList()) {\n parameters = this.visitParameterList(ctx.parameterList()!)\n }\n\n if (\n ctx.identifier() &&\n this._toText(ctx.identifier()!) !== 'Error' &&\n this._toText(ctx.identifier()!) !== 'Panic'\n ) {\n throw new Error('Expected \"Error\" or \"Panic\" identifier in catch clause')\n }\n\n let kind = null\n const ctxIdentifier = ctx.identifier()\n if (ctxIdentifier !== undefined) {\n kind = this._toText(ctxIdentifier)\n }\n\n const node: AST.CatchClause = {\n type: 'CatchClause',\n // deprecated, use the `kind` property instead,\n isReasonStringType: kind === 'Error',\n kind,\n parameters,\n body: this.visitBlock(ctx.block()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitExpressionStatement(\n ctx: SP.ExpressionStatementContext\n ): AST.ExpressionStatement & WithMeta {\n if (!ctx) {\n return null as any\n }\n const node: AST.ExpressionStatement = {\n type: 'ExpressionStatement',\n expression: this.visitExpression(ctx.expression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitNumberLiteral(\n ctx: SP.NumberLiteralContext\n ): AST.NumberLiteral & WithMeta {\n const number = this._toText(ctx.getChild(0))\n let subdenomination = null\n\n if (ctx.children?.length === 2) {\n subdenomination = this._toText(ctx.getChild(1))\n }\n\n const node: AST.NumberLiteral = {\n type: 'NumberLiteral',\n number,\n subdenomination: subdenomination as AST.NumberLiteral['subdenomination'],\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitMappingKey(\n ctx: SP.MappingKeyContext\n ): (AST.ElementaryTypeName | AST.UserDefinedTypeName) & WithMeta {\n if (ctx.elementaryTypeName()) {\n return this.visitElementaryTypeName(ctx.elementaryTypeName()!)\n } else if (ctx.userDefinedTypeName()) {\n return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()!)\n } else {\n throw new Error(\n 'Expected MappingKey to have either ' +\n 'elementaryTypeName or userDefinedTypeName'\n )\n }\n }\n\n public visitMapping(ctx: SP.MappingContext): AST.Mapping & WithMeta {\n const node: AST.Mapping = {\n type: 'Mapping',\n keyType: this.visitMappingKey(ctx.mappingKey()),\n valueType: this.visitTypeName(ctx.typeName()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitModifierDefinition(\n ctx: SP.ModifierDefinitionContext\n ): AST.ModifierDefinition & WithMeta {\n let parameters = null\n if (ctx.parameterList()) {\n parameters = this.visitParameterList(ctx.parameterList()!)\n }\n\n let isVirtual = false\n if (ctx.VirtualKeyword().length > 0) {\n isVirtual = true\n }\n\n let override\n const overrideSpecifier = ctx.overrideSpecifier()\n if (overrideSpecifier.length === 0) {\n override = null\n } else {\n override = overrideSpecifier[0]\n .userDefinedTypeName()\n .map((x) => this.visitUserDefinedTypeName(x))\n }\n\n let body = null\n const blockCtx = ctx.block()\n if (blockCtx !== undefined) {\n body = this.visitBlock(blockCtx)\n }\n\n const node: AST.ModifierDefinition = {\n type: 'ModifierDefinition',\n name: this._toText(ctx.identifier()),\n parameters,\n body,\n isVirtual,\n override,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitUncheckedStatement(\n ctx: SP.UncheckedStatementContext\n ): AST.UncheckedStatement & WithMeta {\n const node: AST.UncheckedStatement = {\n type: 'UncheckedStatement',\n block: this.visitBlock(ctx.block()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitExpression(ctx: SP.ExpressionContext): AST.Expression & WithMeta {\n let op: string\n\n switch (ctx.children!.length) {\n case 1: {\n // primary expression\n const primaryExpressionCtx = ctx.tryGetRuleContext(\n 0,\n SP.PrimaryExpressionContext\n )\n if (primaryExpressionCtx === undefined) {\n throw new Error(\n 'Assertion error: primary expression should exist when children length is 1'\n )\n }\n return this.visitPrimaryExpression(primaryExpressionCtx)\n }\n case 2:\n op = this._toText(ctx.getChild(0))\n\n // new expression\n if (op === 'new') {\n const node: AST.NewExpression = {\n type: 'NewExpression',\n typeName: this.visitTypeName(ctx.typeName()!),\n }\n return this._addMeta(node, ctx)\n }\n\n // prefix operators\n if (AST.unaryOpValues.includes(op as AST.UnaryOp)) {\n const node: AST.UnaryOperation = {\n type: 'UnaryOperation',\n operator: op as AST.UnaryOp,\n subExpression: this.visitExpression(\n ctx.getRuleContext(0, SP.ExpressionContext)\n ),\n isPrefix: true,\n }\n return this._addMeta(node, ctx)\n }\n\n op = this._toText(ctx.getChild(1))!\n\n // postfix operators\n if (['++', '--'].includes(op)) {\n const node: AST.UnaryOperation = {\n type: 'UnaryOperation',\n operator: op as AST.UnaryOp,\n subExpression: this.visitExpression(\n ctx.getRuleContext(0, SP.ExpressionContext)\n ),\n isPrefix: false,\n }\n return this._addMeta(node, ctx)\n }\n break\n\n case 3:\n // treat parenthesis as no-op\n if (\n this._toText(ctx.getChild(0)) === '(' &&\n this._toText(ctx.getChild(2)) === ')'\n ) {\n const node: AST.TupleExpression = {\n type: 'TupleExpression',\n components: [\n this.visitExpression(ctx.getRuleContext(0, SP.ExpressionContext)),\n ],\n isArray: false,\n }\n return this._addMeta(node, ctx)\n }\n\n op = this._toText(ctx.getChild(1))!\n\n // member access\n if (op === '.') {\n const node: AST.MemberAccess = {\n type: 'MemberAccess',\n expression: this.visitExpression(ctx.expression(0)),\n memberName: this._toText(ctx.identifier()!),\n }\n return this._addMeta(node, ctx)\n }\n\n if (isBinOp(op)) {\n const node: AST.BinaryOperation = {\n type: 'BinaryOperation',\n operator: op,\n left: this.visitExpression(ctx.expression(0)),\n right: this.visitExpression(ctx.expression(1)),\n }\n return this._addMeta(node, ctx)\n }\n break\n\n case 4:\n // function call\n if (\n this._toText(ctx.getChild(1)) === '(' &&\n this._toText(ctx.getChild(3)) === ')'\n ) {\n let args: AST.Expression[] = []\n const names = []\n const identifiers = []\n\n const ctxArgs = ctx.functionCallArguments()!\n if (ctxArgs.expressionList()) {\n args = ctxArgs\n .expressionList()!\n .expression()\n .map((exprCtx) => this.visitExpression(exprCtx))\n } else if (ctxArgs.nameValueList()) {\n for (const nameValue of ctxArgs.nameValueList()!.nameValue()) {\n args.push(this.visitExpression(nameValue.expression()))\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n }\n }\n\n const node: AST.FunctionCall = {\n type: 'FunctionCall',\n expression: this.visitExpression(ctx.expression(0)),\n arguments: args,\n names,\n identifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n // index access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ']'\n ) {\n if (ctx.getChild(2).text === ':') {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n const node: AST.IndexAccess = {\n type: 'IndexAccess',\n base: this.visitExpression(ctx.expression(0)),\n index: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n // expression with nameValueList\n if (\n this._toText(ctx.getChild(1)) === '{' &&\n this._toText(ctx.getChild(3)) === '}'\n ) {\n const node: AST.NameValueExpression = {\n type: 'NameValueExpression',\n expression: this.visitExpression(ctx.expression(0)),\n arguments: this.visitNameValueList(ctx.nameValueList()!),\n }\n\n return this._addMeta(node, ctx)\n }\n\n break\n\n case 5:\n // ternary operator\n if (\n this._toText(ctx.getChild(1)) === '?' &&\n this._toText(ctx.getChild(3)) === ':'\n ) {\n const node: AST.Conditional = {\n type: 'Conditional',\n condition: this.visitExpression(ctx.expression(0)),\n trueExpression: this.visitExpression(ctx.expression(1)),\n falseExpression: this.visitExpression(ctx.expression(2)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n // index range access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(2)) === ':' &&\n this._toText(ctx.getChild(4)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexEnd: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n } else if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ':' &&\n this._toText(ctx.getChild(4)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexStart: this.visitExpression(ctx.expression(1)),\n }\n\n return this._addMeta(node, ctx)\n }\n break\n\n case 6:\n // index range access\n if (\n this._toText(ctx.getChild(1)) === '[' &&\n this._toText(ctx.getChild(3)) === ':' &&\n this._toText(ctx.getChild(5)) === ']'\n ) {\n const node: AST.IndexRangeAccess = {\n type: 'IndexRangeAccess',\n base: this.visitExpression(ctx.expression(0)),\n indexStart: this.visitExpression(ctx.expression(1)),\n indexEnd: this.visitExpression(ctx.expression(2)),\n }\n\n return this._addMeta(node, ctx)\n }\n break\n }\n\n throw new Error('Unrecognized expression')\n }\n\n public visitNameValueList(\n ctx: SP.NameValueListContext\n ): AST.NameValueList & WithMeta {\n const names: string[] = []\n const identifiers: AST.Identifier[] = []\n const args: AST.Expression[] = []\n\n for (const nameValue of ctx.nameValue()) {\n names.push(this._toText(nameValue.identifier()))\n identifiers.push(this.visitIdentifier(nameValue.identifier()))\n args.push(this.visitExpression(nameValue.expression()))\n }\n\n const node: AST.NameValueList = {\n type: 'NameValueList',\n names,\n identifiers,\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitFileLevelConstant(ctx: SP.FileLevelConstantContext) {\n const type = this.visitTypeName(ctx.typeName())\n const iden = ctx.identifier()\n const name = this._toText(iden)\n\n const expression = this.visitExpression(ctx.expression())\n\n const node: AST.FileLevelConstant = {\n type: 'FileLevelConstant',\n typeName: type,\n name,\n initialValue: expression,\n isDeclaredConst: true,\n isImmutable: false,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitForStatement(ctx: SP.ForStatementContext) {\n let conditionExpression: any = this.visitExpressionStatement(\n ctx.expressionStatement()!\n )\n if (conditionExpression) {\n conditionExpression = conditionExpression.expression\n }\n const node: AST.ForStatement = {\n type: 'ForStatement',\n initExpression: ctx.simpleStatement()\n ? this.visitSimpleStatement(ctx.simpleStatement()!)\n : null,\n conditionExpression,\n loopExpression: {\n type: 'ExpressionStatement',\n expression:\n ctx.expression() !== undefined\n ? this.visitExpression(ctx.expression()!)\n : null,\n },\n body: this.visitStatement(ctx.statement()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitHexLiteral(ctx: SP.HexLiteralContext) {\n const parts = ctx\n .HexLiteralFragment()\n .map((x) => this._toText(x))\n .map((x) => x.substring(4, x.length - 1))\n\n const node: AST.HexLiteral = {\n type: 'HexLiteral',\n value: parts.join(''),\n parts,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitPrimaryExpression(\n ctx: SP.PrimaryExpressionContext\n ): AST.PrimaryExpression & WithMeta {\n if (ctx.BooleanLiteral()) {\n const node: AST.BooleanLiteral = {\n type: 'BooleanLiteral',\n value: this._toText(ctx.BooleanLiteral()!) === 'true',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n if (ctx.stringLiteral()) {\n const fragments = ctx\n .stringLiteral()!\n .StringLiteralFragment()\n .map((stringLiteralFragmentCtx: any) => {\n let text = this._toText(stringLiteralFragmentCtx)!\n\n const isUnicode = text.slice(0, 7) === 'unicode'\n if (isUnicode) {\n text = text.slice(7)\n }\n const singleQuotes = text[0] === \"'\"\n const textWithoutQuotes = text.substring(1, text.length - 1)\n const value = singleQuotes\n ? textWithoutQuotes.replace(new RegExp(\"\\\\\\\\'\", 'g'), \"'\")\n : textWithoutQuotes.replace(new RegExp('\\\\\\\\\"', 'g'), '\"')\n\n return { value, isUnicode }\n })\n\n const parts = fragments.map((x: any) => x.value)\n\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value: parts.join(''),\n parts,\n isUnicode: fragments.map((x: any) => x.isUnicode),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.numberLiteral()) {\n return this.visitNumberLiteral(ctx.numberLiteral()!)\n }\n\n if (ctx.TypeKeyword()) {\n const node: AST.Identifier = {\n type: 'Identifier',\n name: 'type',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.typeName()) {\n return this.visitTypeName(ctx.typeName()!)\n }\n\n return this.visit(ctx.getChild(0)) as any\n }\n\n public visitTupleExpression(\n ctx: SP.TupleExpressionContext\n ): AST.TupleExpression & WithMeta {\n // remove parentheses\n const children = ctx.children!.slice(1, -1)\n const components = this._mapCommasToNulls(children).map((expr) => {\n // add a null for each empty value\n if (expr === null) {\n return null\n }\n return this.visit(expr)\n })\n\n const node: AST.TupleExpression = {\n type: 'TupleExpression',\n components,\n isArray: this._toText(ctx.getChild(0)) === '[',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public buildIdentifierList(ctx: SP.IdentifierListContext) {\n // remove parentheses\n const children = ctx.children!.slice(1, -1)\n const identifiers = ctx.identifier()\n let i = 0\n return this._mapCommasToNulls(children).map((idenOrNull) => {\n // add a null for each empty value\n if (!idenOrNull) {\n return null\n }\n\n const iden = identifiers[i]\n i++\n\n const node: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n name: this._toText(iden),\n identifier: this.visitIdentifier(iden),\n isStateVar: false,\n isIndexed: false,\n typeName: null,\n storageLocation: null,\n expression: null,\n }\n\n return this._addMeta(node, iden)\n })\n }\n\n public buildVariableDeclarationList(\n ctx: SP.VariableDeclarationListContext\n ): Array<(AST.VariableDeclaration & WithMeta) | null> {\n // remove parentheses\n\n const variableDeclarations = ctx.variableDeclaration()\n let i = 0\n return this._mapCommasToNulls(ctx.children!).map((declOrNull) => {\n // add a null for each empty value\n if (!declOrNull) {\n return null\n }\n\n const decl = variableDeclarations[i]\n i++\n\n let storageLocation: string | null = null\n if (decl.storageLocation()) {\n storageLocation = this._toText(decl.storageLocation()!)\n }\n\n const identifierCtx = decl.identifier()\n\n const result: AST.VariableDeclaration = {\n type: 'VariableDeclaration',\n name: this._toText(identifierCtx),\n identifier: this.visitIdentifier(identifierCtx),\n typeName: this.visitTypeName(decl.typeName()),\n storageLocation,\n isStateVar: false,\n isIndexed: false,\n expression: null,\n }\n\n return this._addMeta(result, decl)\n })\n }\n\n public visitImportDirective(ctx: SP.ImportDirectiveContext) {\n const pathString = this._toText(ctx.importPath())\n let unitAlias = null\n let unitAliasIdentifier = null\n let symbolAliases = null\n let symbolAliasesIdentifiers = null\n\n if (ctx.importDeclaration().length > 0) {\n symbolAliases = ctx.importDeclaration().map((decl) => {\n const symbol = this._toText(decl.identifier(0))\n let alias = null\n if (decl.identifier().length > 1) {\n alias = this._toText(decl.identifier(1))\n }\n return [symbol, alias] as [string, string | null]\n })\n symbolAliasesIdentifiers = ctx.importDeclaration().map((decl) => {\n const symbolIdentifier = this.visitIdentifier(decl.identifier(0))\n let aliasIdentifier = null\n if (decl.identifier().length > 1) {\n aliasIdentifier = this.visitIdentifier(decl.identifier(1))\n }\n return [symbolIdentifier, aliasIdentifier] as [\n AST.Identifier,\n AST.Identifier | null\n ]\n })\n } else {\n const identifierCtxList = ctx.identifier()\n if (identifierCtxList.length === 0) {\n // nothing to do\n } else if (identifierCtxList.length === 1) {\n const aliasIdentifierCtx = ctx.identifier(0)\n unitAlias = this._toText(aliasIdentifierCtx)\n unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx)\n } else if (identifierCtxList.length === 2) {\n const aliasIdentifierCtx = ctx.identifier(1)\n unitAlias = this._toText(aliasIdentifierCtx)\n unitAliasIdentifier = this.visitIdentifier(aliasIdentifierCtx)\n } else {\n throw new Error(\n 'Assertion error: an import should have one or two identifiers'\n )\n }\n }\n\n const path = pathString.substring(1, pathString.length - 1)\n\n const pathLiteral: AST.StringLiteral = {\n type: 'StringLiteral',\n value: path,\n parts: [path],\n isUnicode: [false], // paths in imports don't seem to support unicode literals\n }\n\n const node: AST.ImportDirective = {\n type: 'ImportDirective',\n path,\n pathLiteral: this._addMeta(pathLiteral, ctx.importPath()),\n unitAlias,\n unitAliasIdentifier,\n symbolAliases,\n symbolAliasesIdentifiers,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public buildEventParameterList(ctx: SP.EventParameterListContext) {\n return ctx.eventParameter().map((paramCtx: any) => {\n const type = this.visit(paramCtx.typeName())\n let name = null\n if (paramCtx.identifier()) {\n name = this._toText(paramCtx.identifier())\n }\n\n return {\n type: 'VariableDeclaration',\n typeName: type,\n name,\n isStateVar: false,\n isIndexed: !!paramCtx.IndexedKeyword(0),\n }\n })\n }\n\n public visitReturnParameters(\n ctx: SP.ReturnParametersContext\n ): (AST.VariableDeclaration & WithMeta)[] {\n return this.visitParameterList(ctx.parameterList())\n }\n\n public visitParameterList(\n ctx: SP.ParameterListContext\n ): (AST.VariableDeclaration & WithMeta)[] {\n return ctx.parameter().map((paramCtx: any) => this.visitParameter(paramCtx))\n }\n\n public visitInlineAssemblyStatement(ctx: SP.InlineAssemblyStatementContext) {\n let language: string | null = null\n if (ctx.StringLiteralFragment()) {\n language = this._toText(ctx.StringLiteralFragment()!)!\n language = language.substring(1, language.length - 1)\n }\n\n const flags = []\n const flag = ctx.inlineAssemblyStatementFlag()\n if (flag !== undefined) {\n const flagString = this._toText(flag.stringLiteral())\n flags.push(flagString.slice(1, flagString.length - 1))\n }\n\n const node: AST.InlineAssemblyStatement = {\n type: 'InlineAssemblyStatement',\n language,\n flags,\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyBlock(\n ctx: SP.AssemblyBlockContext\n ): AST.AssemblyBlock & WithMeta {\n const operations = ctx\n .assemblyItem()\n .map((item) => this.visitAssemblyItem(item))\n\n const node: AST.AssemblyBlock = {\n type: 'AssemblyBlock',\n operations,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyItem(\n ctx: SP.AssemblyItemContext\n ): AST.AssemblyItem & WithMeta {\n let text\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n if (ctx.stringLiteral()) {\n text = this._toText(ctx.stringLiteral()!)!\n const value = text.substring(1, text.length - 1)\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value,\n parts: [value],\n isUnicode: [false], // assembly doesn't seem to support unicode literals right now\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.BreakKeyword()) {\n const node: AST.Break = {\n type: 'Break',\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.ContinueKeyword()) {\n const node: AST.Continue = {\n type: 'Continue',\n }\n\n return this._addMeta(node, ctx)\n }\n\n return this.visit(ctx.getChild(0)) as AST.AssemblyItem & WithMeta\n }\n\n public visitAssemblyExpression(ctx: SP.AssemblyExpressionContext) {\n return this.visit(ctx.getChild(0)) as AST.AssemblyExpression & WithMeta\n }\n\n public visitAssemblyCall(ctx: SP.AssemblyCallContext) {\n const functionName = this._toText(ctx.getChild(0))\n const args = ctx\n .assemblyExpression()\n .map((assemblyExpr) => this.visitAssemblyExpression(assemblyExpr))\n\n const node: AST.AssemblyCall = {\n type: 'AssemblyCall',\n functionName,\n arguments: args,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyLiteral(\n ctx: SP.AssemblyLiteralContext\n ): AST.AssemblyLiteral & WithMeta {\n let text\n\n if (ctx.stringLiteral()) {\n text = this._toText(ctx)!\n const value = text.substring(1, text.length - 1)\n const node: AST.StringLiteral = {\n type: 'StringLiteral',\n value,\n parts: [value],\n isUnicode: [false], // assembly doesn't seem to support unicode literals right now\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.DecimalNumber()) {\n const node: AST.DecimalNumber = {\n type: 'DecimalNumber',\n value: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.HexNumber()) {\n const node: AST.HexNumber = {\n type: 'HexNumber',\n value: this._toText(ctx),\n }\n\n return this._addMeta(node, ctx)\n }\n\n if (ctx.hexLiteral()) {\n return this.visitHexLiteral(ctx.hexLiteral()!)\n }\n\n throw new Error('Should never reach here')\n }\n\n public visitAssemblySwitch(ctx: SP.AssemblySwitchContext) {\n const node: AST.AssemblySwitch = {\n type: 'AssemblySwitch',\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n cases: ctx.assemblyCase().map((c) => this.visitAssemblyCase(c)),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyCase(\n ctx: SP.AssemblyCaseContext\n ): AST.AssemblyCase & WithMeta {\n let value = null\n if (this._toText(ctx.getChild(0)) === 'case') {\n value = this.visitAssemblyLiteral(ctx.assemblyLiteral()!)\n }\n\n const node: AST.AssemblyCase = {\n type: 'AssemblyCase',\n block: this.visitAssemblyBlock(ctx.assemblyBlock()),\n value,\n default: value === null,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyLocalDefinition(\n ctx: SP.AssemblyLocalDefinitionContext\n ): AST.AssemblyLocalDefinition & WithMeta {\n const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList()\n let names\n if (ctxAssemblyIdentifierOrList.identifier()) {\n names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier()!)]\n } else if (ctxAssemblyIdentifierOrList.assemblyMember()) {\n names = [\n this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()!),\n ]\n } else {\n names = ctxAssemblyIdentifierOrList\n .assemblyIdentifierList()!\n .identifier()!\n .map((x) => this.visitIdentifier(x))\n }\n\n let expression: AST.AssemblyExpression | null = null\n if (ctx.assemblyExpression() !== undefined) {\n expression = this.visitAssemblyExpression(ctx.assemblyExpression()!)\n }\n\n const node: AST.AssemblyLocalDefinition = {\n type: 'AssemblyLocalDefinition',\n names,\n expression,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyFunctionDefinition(\n ctx: SP.AssemblyFunctionDefinitionContext\n ) {\n const ctxAssemblyIdentifierList = ctx.assemblyIdentifierList()\n const args =\n ctxAssemblyIdentifierList !== undefined\n ? ctxAssemblyIdentifierList\n .identifier()\n .map((x) => this.visitIdentifier(x))\n : []\n\n const ctxAssemblyFunctionReturns = ctx.assemblyFunctionReturns()\n const returnArgs = ctxAssemblyFunctionReturns\n ? ctxAssemblyFunctionReturns\n .assemblyIdentifierList()!\n .identifier()\n .map((x) => this.visitIdentifier(x))\n : []\n\n const node: AST.AssemblyFunctionDefinition = {\n type: 'AssemblyFunctionDefinition',\n name: this._toText(ctx.identifier()),\n arguments: args,\n returnArguments: returnArgs,\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyAssignment(ctx: SP.AssemblyAssignmentContext) {\n const ctxAssemblyIdentifierOrList = ctx.assemblyIdentifierOrList()\n let names\n if (ctxAssemblyIdentifierOrList.identifier()) {\n names = [this.visitIdentifier(ctxAssemblyIdentifierOrList.identifier()!)]\n } else if (ctxAssemblyIdentifierOrList.assemblyMember()) {\n names = [\n this.visitAssemblyMember(ctxAssemblyIdentifierOrList.assemblyMember()!),\n ]\n } else {\n names = ctxAssemblyIdentifierOrList\n .assemblyIdentifierList()!\n .identifier()\n .map((x) => this.visitIdentifier(x))\n }\n\n const node: AST.AssemblyAssignment = {\n type: 'AssemblyAssignment',\n names,\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyMember(\n ctx: SP.AssemblyMemberContext\n ): AST.AssemblyMemberAccess & WithMeta {\n const [accessed, member] = ctx.identifier()\n const node: AST.AssemblyMemberAccess = {\n type: 'AssemblyMemberAccess',\n expression: this.visitIdentifier(accessed),\n memberName: this.visitIdentifier(member),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitLabelDefinition(ctx: SP.LabelDefinitionContext) {\n const node: AST.LabelDefinition = {\n type: 'LabelDefinition',\n name: this._toText(ctx.identifier()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyStackAssignment(ctx: SP.AssemblyStackAssignmentContext) {\n const node: AST.AssemblyStackAssignment = {\n type: 'AssemblyStackAssignment',\n name: this._toText(ctx.identifier()),\n expression: this.visitAssemblyExpression(ctx.assemblyExpression()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyFor(ctx: SP.AssemblyForContext) {\n // TODO remove these type assertions\n const node: AST.AssemblyFor = {\n type: 'AssemblyFor',\n pre: this.visit(ctx.getChild(1)) as\n | AST.AssemblyBlock\n | AST.AssemblyExpression,\n condition: this.visit(ctx.getChild(2)) as AST.AssemblyExpression,\n post: this.visit(ctx.getChild(3)) as\n | AST.AssemblyBlock\n | AST.AssemblyExpression,\n body: this.visit(ctx.getChild(4)) as AST.AssemblyBlock,\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitAssemblyIf(ctx: SP.AssemblyIfContext) {\n const node: AST.AssemblyIf = {\n type: 'AssemblyIf',\n condition: this.visitAssemblyExpression(ctx.assemblyExpression()),\n body: this.visitAssemblyBlock(ctx.assemblyBlock()),\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitContinueStatement(\n ctx: SP.ContinueStatementContext\n ): AST.ContinueStatement & WithMeta {\n const node: AST.ContinueStatement = {\n type: 'ContinueStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n public visitBreakStatement(\n ctx: SP.BreakStatementContext\n ): AST.BreakStatement & WithMeta {\n const node: AST.BreakStatement = {\n type: 'BreakStatement',\n }\n\n return this._addMeta(node, ctx)\n }\n\n private _toText(ctx: ParserRuleContext | ParseTree): string {\n const text = ctx.text\n if (text === undefined) {\n throw new Error('Assertion error: text should never be undefiend')\n }\n\n return text\n }\n\n private _stateMutabilityToText(\n ctx: SP.StateMutabilityContext\n ): AST.FunctionDefinition['stateMutability'] {\n if (ctx.PureKeyword() !== undefined) {\n return 'pure'\n }\n if (ctx.ConstantKeyword() !== undefined) {\n return 'constant'\n }\n if (ctx.PayableKeyword() !== undefined) {\n return 'payable'\n }\n if (ctx.ViewKeyword() !== undefined) {\n return 'view'\n }\n\n throw new Error('Assertion error: non-exhaustive stateMutability check')\n }\n\n private _loc(ctx: ParserRuleContext): SourceLocation {\n const sourceLocation: SourceLocation = {\n start: {\n line: ctx.start.line,\n column: ctx.start.charPositionInLine,\n },\n end: {\n line: ctx.stop ? ctx.stop.line : ctx.start.line,\n column: ctx.stop\n ? ctx.stop.charPositionInLine\n : ctx.start.charPositionInLine,\n },\n }\n return sourceLocation\n }\n\n _range(ctx: ParserRuleContext): [number, number] {\n return [ctx.start.startIndex, ctx.stop?.stopIndex ?? ctx.start.startIndex]\n }\n\n private _addMeta(\n node: T,\n ctx: ParserRuleContext\n ): T & WithMeta {\n const nodeWithMeta: AST.BaseASTNode = {\n type: node.type,\n }\n\n if (this.options.loc === true) {\n node.loc = this._loc(ctx)\n }\n if (this.options.range === true) {\n node.range = this._range(ctx)\n }\n\n return {\n ...nodeWithMeta,\n ...node,\n } as T & WithMeta\n }\n\n private _mapCommasToNulls(children: ParseTree[]) {\n if (children.length === 0) {\n return []\n }\n\n const values: Array = []\n let comma = true\n\n for (const el of children) {\n if (comma) {\n if (this._toText(el) === ',') {\n values.push(null)\n } else {\n values.push(el)\n comma = false\n }\n } else {\n if (this._toText(el) !== ',') {\n throw new Error('expected comma')\n }\n comma = true\n }\n }\n\n if (comma) {\n values.push(null)\n }\n\n return values\n }\n}\n\nfunction isBinOp(op: string): op is AST.BinOp {\n return AST.binaryOpValues.includes(op as AST.BinOp)\n}\n", "import antlr4 from 'antlr4'\n\nclass ErrorListener extends antlr4.error.ErrorListener {\n private _errors: any[]\n\n constructor() {\n super()\n\n this._errors = []\n }\n\n syntaxError(\n recognizer: any,\n offendingSymbol: any,\n line: number,\n column: number,\n message: string\n ) {\n this._errors.push({ message, line, column })\n }\n\n getErrors(): any[] {\n return this._errors\n }\n\n hasErrors() {\n return this._errors.length > 0\n }\n}\n\nexport default ErrorListener\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport './utils/stringHashCode.js';\nimport './polyfills/codepointat.js';\nimport './polyfills/fromcodepoint.js';\nimport { default as atn } from './atn/index.js';\nimport { default as dfa } from './dfa/index.js';\nimport { default as tree } from './tree/index.js';\nimport { default as error } from './error/index.js';\nimport Token from './Token.js';\nimport CommonToken from './CommonToken.js';\nimport { default as CharStreams } from './CharStreams.js';\nimport InputStream from './InputStream.js';\nimport FileStream from './FileStream.js';\nimport CommonTokenStream from './CommonTokenStream.js';\nimport Lexer from './Lexer.js';\nimport Parser from './Parser.js';\nimport PredictionContextCache from './atn/PredictionContextCache.js';\nimport ParserRuleContext from './context/ParserRuleContext.js';\nimport Interval from './misc/Interval.js';\nimport IntervalSet from './misc/IntervalSet.js';\nimport LL1Analyzer from './atn/LL1Analyzer.js';\nimport { default as Utils } from './utils/index.js';\n\nconst antlr4 = {\n atn, dfa, tree, error, Token, CommonToken, CharStreams, InputStream, FileStream, CommonTokenStream, Lexer, Parser,\n PredictionContextCache, ParserRuleContext, Interval, IntervalSet, LL1Analyzer, Utils\n};\n\nexport default antlr4;\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n const key = this.toString();\n let h1b, k1;\n\n const remainder = key.length & 3; // key.length % 4\n const bytes = key.length - remainder;\n let h1 = String.prototype.seed;\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n let i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n // no-break\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n // no-break\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {\n\t\t\t\t/* eslint no-empty: [ \"off\" ] */\n\t\t\t}\n\t\t\treturn result;\n\t\t}());\n\t\tconst codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tconst string = String(this);\n\t\t\tconst size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tlet index = position ? Number(position) : 0;\n\t\t\tif (index !== index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tconst first = string.charCodeAt(index);\n\t\t\tlet second;\n\t\t\tif ( // check if it\u2019s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tconst defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {\n\t\t\t\t/* eslint no-empty: [ \"off\" ] */\n\t\t\t}\n\t\t\treturn result;\n\t\t}());\n\t\tconst stringFromCharCode = String.fromCharCode;\n\t\tconst floor = Math.floor;\n\t\tconst fromCodePoint = function(_) {\n\t\t\tconst MAX_SIZE = 0x4000;\n\t\t\tconst codeUnits = [];\n\t\t\tlet highSurrogate;\n\t\t\tlet lowSurrogate;\n\t\t\tlet index = -1;\n\t\t\tconst length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tlet result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tlet codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) !== codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 === length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport ATNDeserializer from './ATNDeserializer.js';\nimport LexerATNSimulator from './LexerATNSimulator.js';\nimport ParserATNSimulator from './ParserATNSimulator.js';\nimport PredictionMode from './PredictionMode.js';\n\nexport default { ATN, ATNDeserializer, LexerATNSimulator, ParserATNSimulator, PredictionMode }\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport LL1Analyzer from './LL1Analyzer.js';\nimport IntervalSet from '../misc/IntervalSet.js';\nimport Token from '../Token.js';\n\nexport default class ATN {\n\n constructor(grammarType , maxTokenType) {\n /**\n * Used for runtime deserialization of ATNs from strings\n * The type of the ATN.\n */\n this.grammarType = grammarType;\n // The maximum value for any symbol recognized by a transition in the ATN.\n this.maxTokenType = maxTokenType;\n this.states = [];\n /**\n * Each subrule/rule is a decision point and we must track them so we\n * can go back later and build DFA predictors for them. This includes\n * all the rules, subrules, optional blocks, ()+, ()* etc...\n */\n this.decisionToState = [];\n // Maps from rule index to starting state number.\n this.ruleToStartState = [];\n // Maps from rule index to stop state number.\n this.ruleToStopState = null;\n this.modeNameToStartState = {};\n /**\n * For lexer ATNs, this maps the rule index to the resulting token type.\n * For parser ATNs, this maps the rule index to the generated bypass token\n * type if the {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n * deserialization option was specified; otherwise, this is {@code null}\n */\n this.ruleToTokenType = null;\n /**\n * For lexer ATNs, this is an array of {@link LexerAction} objects which may\n * be referenced by action transitions in the ATN\n */\n this.lexerActions = null;\n this.modeToStartState = [];\n }\n\n /**\n * Compute the set of valid tokens that can occur starting in state {@code s}.\n * If {@code ctx} is null, the set of tokens will not include what can follow\n * the rule surrounding {@code s}. In other words, the set will be\n * restricted to tokens reachable staying within {@code s}'s rule\n */\n nextTokensInContext(s, ctx) {\n const anal = new LL1Analyzer(this);\n return anal.LOOK(s, null, ctx);\n }\n\n /**\n * Compute the set of valid tokens that can occur starting in {@code s} and\n * staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n * rule\n */\n nextTokensNoContext(s) {\n if (s.nextTokenWithinRule !== null ) {\n return s.nextTokenWithinRule;\n }\n s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n s.nextTokenWithinRule.readOnly = true;\n return s.nextTokenWithinRule;\n }\n\n nextTokens(s, ctx) {\n if ( ctx===undefined ) {\n return this.nextTokensNoContext(s);\n } else {\n return this.nextTokensInContext(s, ctx);\n }\n }\n\n addState(state) {\n if ( state !== null ) {\n state.atn = this;\n state.stateNumber = this.states.length;\n }\n this.states.push(state);\n }\n\n removeState(state) {\n this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n }\n\n defineDecisionState(s) {\n this.decisionToState.push(s);\n s.decision = this.decisionToState.length-1;\n return s.decision;\n }\n\n getDecisionState(decision) {\n if (this.decisionToState.length===0) {\n return null;\n } else {\n return this.decisionToState[decision];\n }\n }\n\n /**\n * Computes the set of input symbols which could follow ATN state number\n * {@code stateNumber} in the specified full {@code context}. This method\n * considers the complete parser context, but does not evaluate semantic\n * predicates (i.e. all predicates encountered during the calculation are\n * assumed true). If a path in the ATN exists from the starting state to the\n * {@link RuleStopState} of the outermost context without matching any\n * symbols, {@link Token//EOF} is added to the returned set.\n *\n *

        If {@code context} is {@code null}, it is treated as\n * {@link ParserRuleContext//EMPTY}.

        \n *\n * @param stateNumber the ATN state number\n * @param ctx the full parse context\n *\n * @return {IntervalSet} The set of potentially valid input symbols which could follow the\n * specified state in the specified context.\n *\n * @throws IllegalArgumentException if the ATN does not contain a state with\n * number {@code stateNumber}\n */\n getExpectedTokens(stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n const s = this.states[stateNumber];\n let following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n const expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n const invokingState = this.states[ctx.invokingState];\n const rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n }\n}\n\nATN.INVALID_ALT_NUMBER = 0;\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ATNConfig from './ATNConfig.js';\nimport IntervalSet from '../misc/IntervalSet.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport WildcardTransition from '../transition/WildcardTransition.js';\nimport AbstractPredicateTransition from './AbstractPredicateTransition.js';\nimport { predictionContextFromRuleContext } from '../context/PredictionContextUtils.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport BitSet from \"../misc/BitSet.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class LL1Analyzer {\n constructor(atn) {\n this.atn = atn;\n }\n\n /**\n * Calculates the SLL(1) expected lookahead set for each outgoing transition\n * of an {@link ATNState}. The returned array has one element for each\n * outgoing transition in {@code s}. If the closure from transition\n * i leads to a semantic predicate before matching a symbol, the\n * element at index i of the result will be {@code null}.\n *\n * @param s the ATN state\n * @return the expected symbols for each outgoing transition of {@code s}.\n */\n getDecisionLookahead(s) {\n if (s === null) {\n return null;\n }\n const count = s.transitions.length;\n const look = [];\n for(let alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n const lookBusy = new HashSet();\n const seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n }\n\n /**\n * Compute set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n *\n *

        If {@code ctx} is {@code null} and the end of the rule containing\n * {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n * If {@code ctx} is not {@code null} and the end of the outermost rule is\n * reached, {@link Token//EOF} is added to the result set.

        \n *\n * @param s the ATN state\n * @param stopState the ATN state to stop at. This can be a\n * {@link BlockEndState} to detect epsilon paths through a closure.\n * @param ctx the complete parser context, or {@code null} if the context\n * should be ignored\n *\n * @return The set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n */\n LOOK(s, stopState, ctx) {\n const r = new IntervalSet();\n const seeThruPreds = true; // ignore preds; get all lookahead\n ctx = ctx || null;\n const lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new HashSet(), new BitSet(), seeThruPreds, true);\n return r;\n }\n\n /**\n * Compute set of tokens that can follow {@code s} in the ATN in the\n * specified {@code ctx}.\n *\n *

        If {@code ctx} is {@code null} and {@code stopState} or the end of the\n * rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n * the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n * {@code true} and {@code stopState} or the end of the outermost rule is\n * reached, {@link Token//EOF} is added to the result set.

        \n *\n * @param s the ATN state.\n * @param stopState the ATN state to stop at. This can be a\n * {@link BlockEndState} to detect epsilon paths through a closure.\n * @param ctx The outer context, or {@code null} if the outer context should\n * not be used.\n * @param look The result lookahead set.\n * @param lookBusy A set used for preventing epsilon closures in the ATN\n * from causing a stack overflow. Outside code should pass\n * {@code new CustomizedSet} for this argument.\n * @param calledRuleStack A set used for preventing left recursion in the\n * ATN from causing a stack overflow. Outside code should pass\n * {@code new BitSet()} for this argument.\n * @param seeThruPreds {@code true} to true semantic predicates as\n * implicitly {@code true} and \"see through them\", otherwise {@code false}\n * to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n * result if one is encountered.\n * @param addEOF Add {@link Token//EOF} to the result if the end of the\n * outermost context is reached. This parameter has no effect if {@code ctx}\n * is {@code null}.\n */\n _LOOK(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n const c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.has(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n const removed = calledRuleStack.has(s.ruleIndex);\n try {\n calledRuleStack.remove(s.ruleIndex);\n // run thru all possible stack tops in ctx\n for (let i = 0; i < ctx.length; i++) {\n const returnState = this.atn.states[ctx.getReturnState(i)];\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n }\n }finally {\n if (removed) {\n calledRuleStack.add(s.ruleIndex);\n }\n }\n return;\n }\n }\n for(let j=0; j0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n/**\n * A tree structure used to record the semantic context in which\n * an ATN configuration is valid. It's either a single predicate,\n * a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n *\n *

        I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n * {@link SemanticContext} within the scope of this outer class.

        \n */\nexport default class SemanticContext {\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\tthis.updateHashCode(hash);\n\t\treturn hash.finish();\n\t}\n\n\t/**\n\t * For context independent predicates, we evaluate them without a local\n\t * context (i.e., null context). That way, we can evaluate them without\n\t * having to create proper rule-specific context during prediction (as\n\t * opposed to the parser, which creates them naturally). In a practical\n\t * sense, this avoids a cast exception from RuleContext to myruleContext.\n\t *\n\t *

        For context dependent predicates, we must pass in a local context so that\n\t * references such as $arg evaluate properly as _localctx.arg. We only\n\t * capture context dependent predicates in the context in which we begin\n\t * prediction, so we passed in the outer context here in case of context\n\t * dependent predicate evaluation.

        \n\t */\n\tevaluate(parser, outerContext) {}\n\n\t/**\n\t * Evaluate the precedence predicates for the context and reduce the result.\n\t *\n\t * @param parser The parser instance.\n\t * @param outerContext The current parser context object.\n\t * @return The simplified semantic context after precedence predicates are\n\t * evaluated, which will be one of the following values.\n\t *
          \n\t *
        • {@link //NONE}: if the predicate simplifies to {@code true} after\n\t * precedence predicates are evaluated.
        • \n\t *
        • {@code null}: if the predicate simplifies to {@code false} after\n\t * precedence predicates are evaluated.
        • \n\t *
        • {@code this}: if the semantic context is not changed as a result of\n\t * precedence predicate evaluation.
        • \n\t *
        • A non-{@code null} {@link SemanticContext}: the new simplified\n\t * semantic context after precedence predicates are evaluated.
        • \n\t *
        \n\t */\n\tevalPrecedence(parser, outerContext) {\n\t\treturn this;\n\t}\n\n\tstatic andContext(a, b) {\n\t\tif (a === null || a === SemanticContext.NONE) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null || b === SemanticContext.NONE) {\n\t\t\treturn a;\n\t\t}\n\t\tconst result = new AND(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tstatic orContext(a, b) {\n\t\tif (a === null) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null) {\n\t\t\treturn a;\n\t\t}\n\t\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tconst result = new OR(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\n\n\nclass AND extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever none of the contained contexts\n\t * is false\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new HashSet();\n\t\tif (a instanceof AND) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof AND) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\t\tconst precedencePredicates = filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the lowest precedence\n\t\t\tlet reduced = null;\n\t\t\tprecedencePredicates.map( function(p) {\n\t\t\t\tif(reduced===null || p.precedence\n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.

        \n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === null) {\n\t\t\t\t// The AND context is false if any element is false\n\t\t\t\treturn null;\n\t\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t\t// Reduce the result by skipping true elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were true, so the AND context is true\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tlet result = null;\n\t\toperands.map(function(o) {\n\t\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"&&\");\n\t}\n}\n\n\nclass OR extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever at least one of the contained\n\t * contexts is true\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new HashSet();\n\t\tif (a instanceof OR) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof OR) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\n\t\tconst precedencePredicates = filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the highest precedence\n\t\t\tconst s = precedencePredicates.sort(function(a, b) {\n\t\t\t\treturn a.compareTo(b);\n\t\t\t});\n\t\t\tconst reduced = s[s.length-1];\n\t\t\toperands.add(reduced);\n\t\t}\n\t\tthis.opnds = Array.from(operands.values());\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof OR)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn equalArrays(this.opnds, other.opnds);\n\t\t}\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.opnds, \"OR\");\n\t}\n\n\t/**\n\t *

        \n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.

        \n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t\t// The OR context is true if any element is true\n\t\t\t\treturn SemanticContext.NONE;\n\t\t\t} else if (evaluated !== null) {\n\t\t\t\t// Reduce the result by skipping false elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were false, so the OR context is false\n\t\t\treturn null;\n\t\t}\n\t\tconst result = null;\n\t\toperands.map(function(o) {\n\t\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"||\");\n\t}\n}\n\nfunction filterPrecedencePredicates(set) {\n\tconst result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof SemanticContext.PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function equalArrays(a, b) {\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a === b)\n return true;\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i])\n continue;\n if (!a[i].equals || !a[i].equals(b[i]))\n return false;\n }\n return true;\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class HashCode {\n\n constructor() {\n this.count = 0;\n this.hash = 0;\n }\n\n update() {\n for(let i=0;i>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n let hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n }\n\n finish() {\n let hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n }\n\n static hashStuff() {\n const hash = new HashCode();\n hash.update.apply(hash, arguments);\n return hash.finish();\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport standardHashCodeFunction from \"../utils/standardHashCodeFunction.js\";\nimport standardEqualsFunction from \"../utils/standardEqualsFunction.js\";\nimport arrayToString from \"../utils/arrayToString.js\";\n\nconst HASH_KEY_PREFIX = \"h-\";\n\nexport default class HashSet {\n\n constructor(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n }\n\n add(value) {\n const key = HASH_KEY_PREFIX + this.hashFunction(value);\n if (key in this.data) {\n const values = this.data[key];\n for (let i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n }\n\n has(value) {\n return this.get(value) != null;\n }\n\n get(value) {\n const key = HASH_KEY_PREFIX + this.hashFunction(value);\n if (key in this.data) {\n const values = this.data[key];\n for (let i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n }\n\n values() {\n return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).flatMap(key => this.data[key], this);\n }\n\n toString() {\n return arrayToString(this.values());\n }\n\n get length() {\n return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).map(key => this.data[key].length, this).reduce((accum, item) => accum + item, 0);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function standardHashCodeFunction(a) {\n return a ? a.hashCode() : -1;\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function standardEqualsFunction(a, b) {\n return a ? a.equals(b) : a===b;\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport valueToString from \"./valueToString.js\";\n\nexport default function arrayToString(a) {\n return Array.isArray(a) ? (\"[\" + a.map(valueToString).join(\", \") + \"]\") : \"null\";\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function valueToString(v) {\n return v === null ? \"null\" : v;\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport Interval from \"./Interval.js\";\n\nexport default class IntervalSet {\n\tconstructor() {\n\t\tthis.intervals = null;\n\t\tthis.readOnly = false;\n\t}\n\n\tfirst(v) {\n\t\tif (this.intervals === null || this.intervals.length===0) {\n\t\t\treturn Token.INVALID_TYPE;\n\t\t} else {\n\t\t\treturn this.intervals[0].start;\n\t\t}\n\t}\n\n\taddOne(v) {\n\t\tthis.addInterval(new Interval(v, v + 1));\n\t}\n\n\taddRange(l, h) {\n\t\tthis.addInterval(new Interval(l, h + 1));\n\t}\n\n\taddInterval(toAdd) {\n\t\tif (this.intervals === null) {\n\t\t\tthis.intervals = [];\n\t\t\tthis.intervals.push(toAdd.clone());\n\t\t} else {\n\t\t\t// find insert pos\n\t\t\tfor (let pos = 0; pos < this.intervals.length; pos++) {\n\t\t\t\tconst existing = this.intervals[pos];\n\t\t\t\t// distinct range -> insert\n\t\t\t\tif (toAdd.stop < existing.start) {\n\t\t\t\t\tthis.intervals.splice(pos, 0, toAdd);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// contiguous range -> adjust\n\t\t\t\telse if (toAdd.stop === existing.start) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(toAdd.start, existing.stop)\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// overlapping range -> adjust and reduce\n\t\t\t\telse if (toAdd.start <= existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(Math.min(existing.start, toAdd.start), Math.max(existing.stop, toAdd.stop));\n\t\t\t\t\tthis.reduce(pos);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// greater than any existing\n\t\t\tthis.intervals.push(toAdd.clone());\n\t\t}\n\t}\n\n\taddSet(other) {\n\t\tif (other.intervals !== null) {\n\t\t\tother.intervals.forEach( toAdd => this.addInterval(toAdd), this);\n\t\t}\n\t\treturn this;\n\t}\n\n\treduce(pos) {\n\t\t// only need to reduce if pos is not the last\n\t\tif (pos < this.intervals.length - 1) {\n\t\t\tconst current = this.intervals[pos];\n\t\t\tconst next = this.intervals[pos + 1];\n\t\t\t// if next contained in current\n\t\t\tif (current.stop >= next.stop) {\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t\tthis.reduce(pos);\n\t\t\t} else if (current.stop >= next.start) {\n\t\t\t\tthis.intervals[pos] = new Interval(current.start, next.stop);\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tcomplement(start, stop) {\n\t\tconst result = new IntervalSet();\n\t\tresult.addInterval(new Interval(start, stop + 1));\n\t\tif(this.intervals !== null)\n\t\t\tthis.intervals.forEach(toRemove => result.removeRange(toRemove));\n\t\treturn result;\n\t}\n\n\tcontains(item) {\n\t\tif (this.intervals === null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tfor (let k = 0; k < this.intervals.length; k++) {\n\t\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tremoveRange(toRemove) {\n\t\tif(toRemove.start===toRemove.stop-1) {\n\t\t\tthis.removeOne(toRemove.start);\n\t\t} else if (this.intervals !== null) {\n\t\t\tlet pos = 0;\n\t\t\tfor(let n=0; nexisting.start && toRemove.stop=existing.stop) {\n\t\t\t\t\tthis.intervals.splice(pos, 1);\n\t\t\t\t\tpos = pos - 1; // need another pass\n\t\t\t\t}\n\t\t\t\t// check for lower boundary\n\t\t\t\telse if(toRemove.start\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'..'\" + String.fromCharCode(existing.stop-1) + \"'\");\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoIndexString() {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tif(existing.stop===existing.start+1) {\n\t\t\t\tif ( existing.start===Token.EOF ) {\n\t\t\t\t\tnames.push(\"\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(existing.start.toString());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(existing.start.toString() + \"..\" + (existing.stop-1).toString());\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoTokenString(literalNames, symbolicNames) {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tfor (let j = existing.start; j < existing.stop; j++) {\n\t\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\telementName(literalNames, symbolicNames, token) {\n\t\tif (token === Token.EOF) {\n\t\t\treturn \"\";\n\t\t} else if (token === Token.EPSILON) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\treturn literalNames[token] || symbolicNames[token];\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn this.intervals.map( interval => interval.length ).reduce((acc, val) => acc + val);\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/* stop is not included! */\nexport default class Interval {\n\n constructor(start, stop) {\n this.start = start;\n this.stop = stop;\n }\n\n clone() {\n return new Interval(this.start, this.stop);\n }\n\n contains(item) {\n return item >= this.start && item < this.stop;\n }\n\n toString() {\n if(this.start===this.stop-1) {\n return this.start.toString();\n } else {\n return this.start.toString() + \"..\" + (this.stop-1).toString();\n }\n }\n\n get length(){\n return this.stop - this.start;\n }\n}\n\nInterval.INVALID_INTERVAL = new Interval(-1, -2);\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The last node in the ATN for a rule, unless that rule is the start symbol.\n * In that case, there is one transition to EOF. Later, we might encode\n * references to all calls to this rule to compute FOLLOW sets for\n * error handling\n */\nexport default class RuleStopState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.RULE_STOP;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The following images show the relation of states and\n * {@link ATNState//transitions} for various grammar constructs.\n *\n *
          \n *\n *
        • Solid edges marked with an &//0949; indicate a required\n * {@link EpsilonTransition}.
        • \n *\n *
        • Dashed edges indicate locations where any transition derived from\n * {@link Transition} might appear.
        • \n *\n *
        • Dashed nodes are place holders for either a sequence of linked\n * {@link BasicState} states or the inclusion of a block representing a nested\n * construct in one of the forms below.
        • \n *\n *
        • Nodes showing multiple outgoing alternatives with a {@code ...} support\n * any number of alternatives (one or more). Nodes without the {@code ...} only\n * support the exact number of alternatives shown in the diagram.
        • \n *\n *
        \n *\n *

        Basic Blocks

        \n *\n *

        Rule

        \n *\n * \n *\n *

        Block of 1 or more alternatives

        \n *\n * \n *\n *

        Greedy Loops

        \n *\n *

        Greedy Closure: {@code (...)*}

        \n *\n * \n *\n *

        Greedy Positive Closure: {@code (...)+}

        \n *\n * \n *\n *

        Greedy Optional: {@code (...)?}

        \n *\n * \n *\n *

        Non-Greedy Loops

        \n *\n *

        Non-Greedy Closure: {@code (...)*?}

        \n *\n * \n *\n *

        Non-Greedy Positive Closure: {@code (...)+?}

        \n *\n * \n *\n *

        Non-Greedy Optional: {@code (...)??}

        \n *\n * \n */\nexport default class ATNState {\n constructor() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n }\n\n toString() {\n return this.stateNumber;\n }\n\n equals(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n }\n\n isNonGreedyExitState() {\n return false;\n }\n\n addTransition(trans, index) {\n if(index===undefined) {\n index = -1;\n }\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n }\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class RuleTransition extends Transition {\n constructor(ruleStart, ruleIndex, precedence, followState) {\n super(ruleStart);\n // ptr to the rule definition object for this rule ref\n this.ruleIndex = ruleIndex;\n this.precedence = precedence;\n // what node to begin computations following ref to rule\n this.followState = followState;\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * An ATN transition between any two ATN states. Subclasses define\n * atom, set, epsilon, action, predicate, rule transitions.\n *\n *

        This is a one way link. It emanates from a state (usually via a list of\n * transitions) and has a target state.

        \n *\n *

        Since we never have to change the ATN transitions once we construct it,\n * we can fix these transitions as specific classes. The DFA transitions\n * on the other hand need to update the labels as it adds transitions to\n * the states. We'll use the term Edge for the DFA to distinguish them from\n * ATN transitions.

        \n */\nexport default class Transition {\n constructor(target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n }\n}\n\n// constants for serialization\n\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\n// e.g., {isType(input.LT(1))}?\nTransition.PREDICATE = 4;\nTransition.ATOM = 5;\nTransition.ACTION = 6;\n// ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.SET = 7;\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\nimport SetTransition from \"./SetTransition.js\";\n\nexport default class NotSetTransition extends SetTransition {\n constructor(target, set) {\n super(target, set);\n this.serializationType = Transition.NOT_SET;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n !super.matches(symbol, minVocabSymbol, maxVocabSymbol);\n }\n\n toString() {\n return '~' + super.toString();\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n// A transition containing a set of values.\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Token from '../Token.js';\nimport Transition from \"./Transition.js\";\n\nexport default class SetTransition extends Transition {\n constructor(target, set) {\n super(target);\n this.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label.contains(symbol);\n }\n\n toString() {\n return this.label.toString();\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class WildcardTransition extends Transition {\n constructor(target) {\n super(target);\n this.serializationType = Transition.WILDCARD;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n }\n\n toString() {\n return \".\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"../transition/Transition.js\";\n\nexport default class AbstractPredicateTransition extends Transition {\n constructor(target) {\n super(target);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RuleContext from \"./RuleContext.js\";\nimport PredictionContext from \"./PredictionContext.js\";\nimport ArrayPredictionContext from \"./ArrayPredictionContext.js\";\nimport SingletonPredictionContext from \"./SingletonPredictionContext.js\";\nimport EmptyPredictionContext from \"./EmptyPredictionContext.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n * Return {@link //EMPTY} if {@code outerContext} is empty or null.\n */\nexport function predictionContextFromRuleContext(atn, outerContext) {\n if (outerContext === undefined || outerContext === null) {\n outerContext = RuleContext.EMPTY;\n }\n // if we are in RuleContext of start rule, s, then PredictionContext\n // is EMPTY. Nobody called us. (if we are empty, return empty)\n if (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n return PredictionContext.EMPTY;\n }\n // If we have a parent, convert it to a PredictionContext graph\n const parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n const state = atn.states[outerContext.invokingState];\n const transition = state.transitions[0];\n return SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n\n\nexport function getCachedPredictionContext(context, contextCache, visited) {\n if (context.isEmpty()) {\n return context;\n }\n let existing = visited.get(context) || null;\n if (existing !== null) {\n return existing;\n }\n existing = contextCache.get(context);\n if (existing !== null) {\n visited.set(context, existing);\n return existing;\n }\n let changed = false;\n let parents = [];\n for (let i = 0; i < parents.length; i++) {\n const parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n if (changed || parent !== context.getParent(i)) {\n if (!changed) {\n parents = [];\n for (let j = 0; j < context.length; j++) {\n parents[j] = context.getParent(j);\n }\n changed = true;\n }\n parents[i] = parent;\n }\n }\n if (!changed) {\n contextCache.add(context);\n visited.set(context, context);\n return context;\n }\n let updated = null;\n if (parents.length === 0) {\n updated = PredictionContext.EMPTY;\n } else if (parents.length === 1) {\n updated = SingletonPredictionContext.create(parents[0], context\n .getReturnState(0));\n } else {\n updated = new ArrayPredictionContext(parents, context.returnStates);\n }\n contextCache.add(updated);\n visited.set(updated, updated);\n visited.set(context, updated);\n\n return updated;\n}\n\nexport function merge(a, b, rootIsWildcard, mergeCache) {\n // share same graph if both same\n if (a === b) {\n return a;\n }\n if (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n return mergeSingletons(a, b, rootIsWildcard, mergeCache);\n }\n // At least one of a or b is array\n // If one is $ and rootIsWildcard, return $ as// wildcard\n if (rootIsWildcard) {\n if (a instanceof EmptyPredictionContext) {\n return a;\n }\n if (b instanceof EmptyPredictionContext) {\n return b;\n }\n }\n // convert singleton so both are arrays to normalize\n if (a instanceof SingletonPredictionContext) {\n a = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n }\n if (b instanceof SingletonPredictionContext) {\n b = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n }\n return mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n\n/**\n * Merge two {@link ArrayPredictionContext} instances.\n *\n *

        Different tops, different parents.
        \n *

        \n *\n *

        Shared top, same parents.
        \n *

        \n *\n *

        Shared top, different parents.
        \n *

        \n *\n *

        Shared top, all shared parents.
        \n *

        \n *\n *

        Equal tops, merge parents and reduce top to\n * {@link SingletonPredictionContext}.
        \n *

        \n */\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n if (mergeCache !== null) {\n let previous = mergeCache.get(a, b);\n if (previous !== null) {\n return previous;\n }\n previous = mergeCache.get(b, a);\n if (previous !== null) {\n return previous;\n }\n }\n // merge sorted payloads a + b => M\n let i = 0; // walks a\n let j = 0; // walks b\n let k = 0; // walks target M array\n\n let mergedReturnStates = [];\n let mergedParents = [];\n // walk and merge to yield mergedParents, mergedReturnStates\n while (i < a.returnStates.length && j < b.returnStates.length) {\n const a_parent = a.parents[i];\n const b_parent = b.parents[j];\n if (a.returnStates[i] === b.returnStates[j]) {\n // same payload (stack tops are equal), must yield merged singleton\n const payload = a.returnStates[i];\n // $+$ = $\n const bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n a_parent === null && b_parent === null;\n const ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n // ->\n // ax\n if (bothDollars || ax_ax) {\n mergedParents[k] = a_parent; // choose left\n mergedReturnStates[k] = payload;\n } else { // ax+ay -> a'[x,y]\n mergedParents[k] = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n mergedReturnStates[k] = payload;\n }\n i += 1; // hop over left one as usual\n j += 1; // but also skip one in right side since we merge\n } else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n mergedParents[k] = a_parent;\n mergedReturnStates[k] = a.returnStates[i];\n i += 1;\n } else { // b > a, copy b[j] to M\n mergedParents[k] = b_parent;\n mergedReturnStates[k] = b.returnStates[j];\n j += 1;\n }\n k += 1;\n }\n // copy over any payloads remaining in either array\n if (i < a.returnStates.length) {\n for (let p = i; p < a.returnStates.length; p++) {\n mergedParents[k] = a.parents[p];\n mergedReturnStates[k] = a.returnStates[p];\n k += 1;\n }\n } else {\n for (let p = j; p < b.returnStates.length; p++) {\n mergedParents[k] = b.parents[p];\n mergedReturnStates[k] = b.returnStates[p];\n k += 1;\n }\n }\n // trim merged if we combined a few that had same stack tops\n if (k < mergedParents.length) { // write index < last position; trim\n if (k === 1) { // for just one merged element, return singleton top\n const a_ = SingletonPredictionContext.create(mergedParents[0],\n mergedReturnStates[0]);\n if (mergeCache !== null) {\n mergeCache.set(a, b, a_);\n }\n return a_;\n }\n mergedParents = mergedParents.slice(0, k);\n mergedReturnStates = mergedReturnStates.slice(0, k);\n }\n\n const M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n // if we created same array as a or b, return that instead\n // TODO: track whether this is possible above during merge sort for speed\n if (M === a) {\n if (mergeCache !== null) {\n mergeCache.set(a, b, a);\n }\n return a;\n }\n if (M === b) {\n if (mergeCache !== null) {\n mergeCache.set(a, b, b);\n }\n return b;\n }\n combineCommonParents(mergedParents);\n\n if (mergeCache !== null) {\n mergeCache.set(a, b, M);\n }\n return M;\n}\n\n\n/**\n * Make pass over all M {@code parents}; merge any {@code equals()}\n * ones.\n */\nfunction combineCommonParents(parents) {\n const uniqueParents = new HashMap();\n\n for (let p = 0; p < parents.length; p++) {\n const parent = parents[p];\n if (!(uniqueParents.containsKey(parent))) {\n uniqueParents.set(parent, parent);\n }\n }\n for (let q = 0; q < parents.length; q++) {\n parents[q] = uniqueParents.get(parents[q]);\n }\n}\n\n\n/**\n * Merge two {@link SingletonPredictionContext} instances.\n *\n *

        Stack tops equal, parents merge is same; return left graph.
        \n *

        \n *\n *

        Same stack top, parents differ; merge parents giving array node, then\n * remainders of those graphs. A new root node is created to point to the\n * merged parents.
        \n *

        \n *\n *

        Different stack tops pointing to same parent. Make array node for the\n * root where both element in the root point to the same (original)\n * parent.
        \n *

        \n *\n *

        Different stack tops pointing to different parents. Make array node for\n * the root where each element points to the corresponding original\n * parent.
        \n *

        \n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n * @param mergeCache\n */\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n if (mergeCache !== null) {\n let previous = mergeCache.get(a, b);\n if (previous !== null) {\n return previous;\n }\n previous = mergeCache.get(b, a);\n if (previous !== null) {\n return previous;\n }\n }\n\n const rootMerge = mergeRoot(a, b, rootIsWildcard);\n if (rootMerge !== null) {\n if (mergeCache !== null) {\n mergeCache.set(a, b, rootMerge);\n }\n return rootMerge;\n }\n if (a.returnState === b.returnState) {\n const parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n // if parent is same as existing a or b parent or reduced to a parent,\n // return it\n if (parent === a.parentCtx) {\n return a; // ax + bx = ax, if a=b\n }\n if (parent === b.parentCtx) {\n return b; // ax + bx = bx, if a=b\n }\n // else: ax + ay = a'[x,y]\n // merge parents x and y, giving array node with x,y then remainders\n // of those graphs. dup a, a' points at merged array\n // new joined parent so create new singleton pointing to it, a'\n const spc = SingletonPredictionContext.create(parent, a.returnState);\n if (mergeCache !== null) {\n mergeCache.set(a, b, spc);\n }\n return spc;\n } else { // a != b payloads differ\n // see if we can collapse parents due to $+x parents if local ctx\n let singleParent = null;\n if (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n // bx =\n // [a,b]x\n singleParent = a.parentCtx;\n }\n if (singleParent !== null) { // parents are same\n // sort payloads and use same parent\n const payloads = [ a.returnState, b.returnState ];\n if (a.returnState > b.returnState) {\n payloads[0] = b.returnState;\n payloads[1] = a.returnState;\n }\n const parents = [ singleParent, singleParent ];\n const apc = new ArrayPredictionContext(parents, payloads);\n if (mergeCache !== null) {\n mergeCache.set(a, b, apc);\n }\n return apc;\n }\n // parents differ and can't merge them. Just pack together\n // into array; can't merge.\n // ax + by = [ax,by]\n const payloads = [ a.returnState, b.returnState ];\n let parents = [ a.parentCtx, b.parentCtx ];\n if (a.returnState > b.returnState) { // sort by payload\n payloads[0] = b.returnState;\n payloads[1] = a.returnState;\n parents = [ b.parentCtx, a.parentCtx ];\n }\n const a_ = new ArrayPredictionContext(parents, payloads);\n if (mergeCache !== null) {\n mergeCache.set(a, b, a_);\n }\n return a_;\n }\n}\n\n\n/**\n * Handle case where at least one of {@code a} or {@code b} is\n * {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n * to represent {@link //EMPTY}.\n *\n *

        Local-Context Merges

        \n *\n *

        These local-context merge operations are used when {@code rootIsWildcard}\n * is true.

        \n *\n *

        {@link //EMPTY} is superset of any graph; return {@link //EMPTY}.
        \n *

        \n *\n *

        {@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n * {@code //EMPTY}; return left graph.
        \n *

        \n *\n *

        Special case of last merge if local context.
        \n *

        \n *\n *

        Full-Context Merges

        \n *\n *

        These full-context merge operations are used when {@code rootIsWildcard}\n * is false.

        \n *\n *

        \n *\n *

        Must keep all contexts; {@link //EMPTY} in array is a special value (and\n * null parent).
        \n *

        \n *\n *

        \n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n */\nfunction mergeRoot(a, b, rootIsWildcard) {\n if (rootIsWildcard) {\n if (a === PredictionContext.EMPTY) {\n return PredictionContext.EMPTY; // // + b =//\n }\n if (b === PredictionContext.EMPTY) {\n return PredictionContext.EMPTY; // a +// =//\n }\n } else {\n if (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n return PredictionContext.EMPTY; // $ + $ = $\n } else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n const payloads = [ b.returnState,\n PredictionContext.EMPTY_RETURN_STATE ];\n const parents = [ b.parentCtx, null ];\n return new ArrayPredictionContext(parents, payloads);\n } else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n const payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n const parents = [ a.parentCtx, null ];\n return new ArrayPredictionContext(parents, payloads);\n }\n }\n return null;\n}\n\n\n// ter's recursive version of Sam's getAllNodes()\nexport function getAllContextNodes(context, nodes, visited) {\n if (nodes === null) {\n nodes = [];\n return getAllContextNodes(context, nodes, visited);\n } else if (visited === null) {\n visited = new HashMap();\n return getAllContextNodes(context, nodes, visited);\n } else {\n if (context === null || visited.containsKey(context)) {\n return nodes;\n }\n visited.set(context, context);\n nodes.push(context);\n for (let i = 0; i < context.length; i++) {\n getAllContextNodes(context.getParent(i), nodes, visited);\n }\n return nodes;\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleNode from '../tree/RuleNode.js';\nimport Interval from '../misc/Interval.js';\nimport Trees from '../tree/Trees.js';\n\nexport default class RuleContext extends RuleNode {\n /** A rule context is a record of a single rule invocation. It knows\n * which context invoked it, if any. If there is no parent context, then\n * naturally the invoking state is not valid. The parent link\n * provides a chain upwards from the current rule invocation to the root\n * of the invocation tree, forming a stack. We actually carry no\n * information about the rule associated with this context (except\n * when parsing). We keep only the state number of the invoking state from\n * the ATN submachine that invoked this. Contrast this with the s\n * pointer inside ParserRuleContext that tracks the current state\n * being \"executed\" for the current rule.\n *\n * The parent contexts are useful for computing lookahead sets and\n * getting error information.\n *\n * These objects are used during parsing and prediction.\n * For the special case of parsers, we use the subclass\n * ParserRuleContext.\n *\n * @see ParserRuleContext\n */\n constructor(parent, invokingState) {\n // What context invoked this rule?\n super();\n this.parentCtx = parent || null;\n /**\n * What state invoked the rule associated with this context?\n * The \"return address\" is the followState of invokingState\n * If parent is null, this should be -1.\n */\n this.invokingState = invokingState || -1;\n }\n\n depth() {\n let n = 0;\n let p = this;\n while (p !== null) {\n p = p.parentCtx;\n n += 1;\n }\n return n;\n }\n\n /**\n * A context is empty if there is no invoking state; meaning nobody call\n * current context.\n */\n isEmpty() {\n return this.invokingState === -1;\n }\n\n// satisfy the ParseTree / SyntaxTree interface\n getSourceInterval() {\n return Interval.INVALID_INTERVAL;\n }\n\n getRuleContext() {\n return this;\n }\n\n getPayload() {\n return this;\n }\n\n /**\n * Return the combined text of all child nodes. This method only considers\n * tokens which have been added to the parse tree.\n *

        \n * Since tokens on hidden channels (e.g. whitespace or comments) are not\n * added to the parse trees, they will not appear in the output of this\n * method.\n */\n getText() {\n if (this.getChildCount() === 0) {\n return \"\";\n } else {\n return this.children.map(function (child) {\n return child.getText();\n }).join(\"\");\n }\n }\n\n /**\n * For rule associated with this parse tree internal node, return\n * the outer alternative number used to match the input. Default\n * implementation does not compute nor store this alt num. Create\n * a subclass of ParserRuleContext with backing field and set\n * option contextSuperClass.\n * to set it.\n */\n getAltNumber() {\n // use constant value of ATN.INVALID_ALT_NUMBER to avoid circular dependency\n return 0;\n }\n\n /**\n * Set the outer alternative number for this context node. Default\n * implementation does nothing to avoid backing field overhead for\n * trees that don't need it. Create\n * a subclass of ParserRuleContext with backing field and set\n * option contextSuperClass.\n */\n setAltNumber(altNumber) {\n }\n\n getChild(i) {\n return null;\n }\n\n getChildCount() {\n return 0;\n }\n\n accept(visitor) {\n return visitor.visitChildren(this);\n }\n\n /**\n * Print out a whole tree, not just a node, in LISP format\n * (root child1 .. childN). Print just a node if this is a leaf.\n */\n toStringTree(ruleNames, recog) {\n return Trees.toStringTree(this, ruleNames, recog);\n }\n\n toString(ruleNames, stop) {\n ruleNames = ruleNames || null;\n stop = stop || null;\n let p = this;\n let s = \"[\";\n while (p !== null && p !== stop) {\n if (ruleNames === null) {\n if (!p.isEmpty()) {\n s += p.invokingState;\n }\n } else {\n const ri = p.ruleIndex;\n const ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n : \"\" + ri;\n s += ruleName;\n }\n if (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n s += \" \";\n }\n p = p.parentCtx;\n }\n s += \"]\";\n return s;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ParseTree from \"./ParseTree.js\";\n\nexport default class RuleNode extends ParseTree {\n\n getRuleContext(){\n throw new Error(\"missing interface implementation\")\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SyntaxTree from \"./SyntaxTree.js\";\n\nexport default class ParseTree extends SyntaxTree {\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Tree from \"./Tree.js\";\n\nexport default class SyntaxTree extends Tree {\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The basic notion of a tree has a parent, a payload, and a list of children.\n * It is the most abstract interface for all the trees used by ANTLR.\n */\nexport default class Tree {}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ErrorNode from './ErrorNode.js';\nimport TerminalNode from './TerminalNode.js';\nimport RuleNode from './RuleNode.js';\nimport escapeWhitespace from \"../utils/escapeWhitespace.js\";\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nconst Trees = {\n /**\n * Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n * node payloads to get the text for the nodes. Detect\n * parse trees and extract data appropriately.\n */\n toStringTree: function(tree, ruleNames, recog) {\n ruleNames = ruleNames || null;\n recog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n let s = Trees.getNodeText(tree, ruleNames);\n s = escapeWhitespace(s, false);\n const c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n let res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(let i=1;i\n\t * private int referenceHashCode() {\n\t * int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n\t * //INITIAL_HASH});\n\t *\n\t * for (int i = 0; i < {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n\t * getParent}(i));\n\t * }\n\t *\n\t * for (int i = 0; i < {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n\t * //getReturnState getReturnState}(i));\n\t * }\n\t *\n\t * hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n\t * //size()});\n\t * return hash;\n\t * }\n\t * \n\t * This means only the {@link //EMPTY} context is in set.\n\t */\n\tisEmpty() {\n\t\treturn this === PredictionContext.EMPTY;\n\t}\n\n\thasEmptyPath() {\n\t\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n}\n\n/**\n * Represents {@code $} in local context prediction, which means wildcard.\n * {@code//+x =//}.\n */\nPredictionContext.EMPTY = null;\n\n/**\n * Represents {@code $} in an array in full context mode, when {@code $}\n * doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n * {@code $} = {@link //EMPTY_RETURN_STATE}.\n */\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"./PredictionContext.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class ArrayPredictionContext extends PredictionContext {\n\n constructor(parents, returnStates) {\n /**\n * Parent can be null only if full ctx mode and we make an array\n * from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n * null parent and\n * returnState == {@link //EMPTY_RETURN_STATE}.\n */\n const h = new HashCode();\n h.update(parents, returnStates);\n const hashCode = h.finish();\n super(hashCode);\n this.parents = parents;\n this.returnStates = returnStates;\n return this;\n }\n\n isEmpty() {\n // since EMPTY_RETURN_STATE can only appear in the last position, we\n // don't need to verify that size==1\n return this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n }\n\n getParent(index) {\n return this.parents[index];\n }\n\n getReturnState(index) {\n return this.returnStates[index];\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (!(other instanceof ArrayPredictionContext)) {\n return false;\n } else if (this.hashCode() !== other.hashCode()) {\n return false; // can't be same if hash is different\n } else {\n return equalArrays(this.returnStates, other.returnStates) &&\n equalArrays(this.parents, other.parents);\n }\n }\n\n toString() {\n if (this.isEmpty()) {\n return \"[]\";\n } else {\n let s = \"[\";\n for (let i = 0; i < this.returnStates.length; i++) {\n if (i > 0) {\n s = s + \", \";\n }\n if (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n s = s + \"$\";\n continue;\n }\n s = s + this.returnStates[i];\n if (this.parents[i] !== null) {\n s = s + \" \" + this.parents[i];\n } else {\n s = s + \"null\";\n }\n }\n return s + \"]\";\n }\n }\n\n get length(){\n return this.returnStates.length;\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from './PredictionContext.js';\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class SingletonPredictionContext extends PredictionContext {\n\n constructor(parent, returnState) {\n let hashCode = 0;\n const hash = new HashCode();\n if(parent !== null) {\n hash.update(parent, returnState);\n } else {\n hash.update(1);\n }\n hashCode = hash.finish();\n super(hashCode);\n this.parentCtx = parent;\n this.returnState = returnState;\n }\n\n getParent(index) {\n return this.parentCtx;\n }\n\n getReturnState(index) {\n return this.returnState;\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (!(other instanceof SingletonPredictionContext)) {\n return false;\n } else if (this.hashCode() !== other.hashCode()) {\n return false; // can't be same if hash is different\n } else {\n if(this.returnState !== other.returnState)\n return false;\n else if(this.parentCtx==null)\n return other.parentCtx==null\n else\n return this.parentCtx.equals(other.parentCtx);\n }\n }\n\n toString() {\n const up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n if (up.length === 0) {\n if (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n return \"$\";\n } else {\n return \"\" + this.returnState;\n }\n } else {\n return \"\" + this.returnState + \" \" + up;\n }\n }\n\n get length(){\n return 1;\n }\n\n static create(parent, returnState) {\n if (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n // someone can pass in the bits of an array ctx that mean $\n return PredictionContext.EMPTY;\n } else {\n return new SingletonPredictionContext(parent, returnState);\n }\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"./PredictionContext.js\";\nimport SingletonPredictionContext from \"./SingletonPredictionContext.js\";\n\nexport default class EmptyPredictionContext extends SingletonPredictionContext {\n\n constructor() {\n super(null, PredictionContext.EMPTY_RETURN_STATE);\n }\n\n isEmpty() {\n return true;\n }\n\n getParent(index) {\n return null;\n }\n\n getReturnState(index) {\n return this.returnState;\n }\n\n equals(other) {\n return this === other;\n }\n\n toString() {\n return \"$\";\n }\n}\n\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport standardEqualsFunction from \"../utils/standardEqualsFunction.js\";\nimport standardHashCodeFunction from \"../utils/standardHashCodeFunction.js\";\n\nconst HASH_KEY_PREFIX = \"h-\";\n\nexport default class HashMap {\n\n constructor(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n }\n\n set(key, value) {\n const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n if (hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n const oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n }\n\n containsKey(key) {\n const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n if(hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n }\n\n get(key) {\n const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n if(hashKey in this.data) {\n const entries = this.data[hashKey];\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n }\n\n entries() {\n return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).flatMap(key => this.data[key], this);\n }\n\n getKeys() {\n return this.entries().map(e => e.key);\n }\n\n getValues() {\n return this.entries().map(e => e.value);\n }\n\n toString() {\n const ss = this.entries().map(e => '{' + e.key + ':' + e.value + '}');\n return '[' + ss.join(\", \") + ']';\n }\n\n get length() {\n return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).map(key => this.data[key].length, this).reduce((accum, item) => accum + item, 0);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashCode from \"./HashCode.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\n\nexport default class BitSet {\n\n constructor() {\n this.data = [];\n }\n\n add(value) {\n this.data[value] = true;\n }\n\n or(set) {\n Object.keys(set.data).map(alt => this.add(alt), this);\n }\n\n remove(value) {\n delete this.data[value];\n }\n\n has(value) {\n return this.data[value] === true;\n }\n\n values() {\n return Object.keys(this.data);\n }\n\n minValue() {\n return Math.min.apply(null, this.values());\n }\n\n hashCode() {\n return HashCode.hashStuff(this.values());\n }\n\n equals(other) {\n return other instanceof BitSet && equalArrays(this.data, other.data);\n }\n\n toString() {\n return \"{\" + this.values().join(\", \") + \"}\";\n }\n\n get length(){\n return this.values().length;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ATN from './ATN.js';\nimport ATNType from './ATNType.js';\n\nimport ATNState from '../state/ATNState.js';\nimport BasicState from '../state/BasicState.js';\nimport DecisionState from '../state/DecisionState.js';\nimport BlockStartState from '../state/BlockStartState.js';\nimport BlockEndState from '../state/BlockEndState.js';\nimport LoopEndState from '../state/LoopEndState.js';\nimport RuleStartState from '../state/RuleStartState.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport TokensStartState from '../state/TokensStartState.js';\nimport PlusLoopbackState from '../state/PlusLoopbackState.js';\nimport StarLoopbackState from '../state/StarLoopbackState.js';\nimport StarLoopEntryState from '../state/StarLoopEntryState.js';\nimport PlusBlockStartState from '../state/PlusBlockStartState.js';\nimport StarBlockStartState from '../state/StarBlockStartState.js';\nimport BasicBlockStartState from '../state/BasicBlockStartState.js';\n\nimport Transition from '../transition/Transition.js';\nimport AtomTransition from '../transition/AtomTransition.js';\nimport SetTransition from '../transition/SetTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport RangeTransition from '../transition/RangeTransition.js';\nimport ActionTransition from '../transition/ActionTransition.js';\nimport EpsilonTransition from '../transition/EpsilonTransition.js';\nimport WildcardTransition from '../transition/WildcardTransition.js';\nimport PredicateTransition from '../transition/PredicateTransition.js';\nimport PrecedencePredicateTransition from '../transition/PrecedencePredicateTransition.js';\n\n\nimport IntervalSet from '../misc/IntervalSet.js';\nimport ATNDeserializationOptions from './ATNDeserializationOptions.js';\n\nimport LexerActionType from './LexerActionType.js';\nimport LexerSkipAction from '../action/LexerSkipAction.js';\nimport LexerChannelAction from '../action/LexerChannelAction.js';\nimport LexerCustomAction from '../action/LexerCustomAction.js';\nimport LexerMoreAction from '../action/LexerMoreAction.js';\nimport LexerTypeAction from '../action/LexerTypeAction.js';\nimport LexerPushModeAction from '../action/LexerPushModeAction.js';\nimport LexerPopModeAction from '../action/LexerPopModeAction.js';\nimport LexerModeAction from '../action/LexerModeAction.js';\n\nconst SERIALIZED_VERSION = 4;\n\nfunction initArray( length, value) {\n\tconst tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nexport default class ATNDeserializer {\n constructor(options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n }\n\n deserialize(data) {\n const legacy = this.reset(data);\n this.checkVersion(legacy);\n if(legacy)\n this.skipUUID();\n const atn = this.readATN();\n this.readStates(atn, legacy);\n this.readRules(atn, legacy);\n this.readModes(atn);\n const sets = [];\n this.readSets(atn, sets, this.readInt.bind(this));\n if(legacy)\n this.readSets(atn, sets, this.readInt32.bind(this));\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn, legacy);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n }\n\n reset(data) {\n const version = data.charCodeAt ? data.charCodeAt(0) : data[0];\n if(version === SERIALIZED_VERSION - 1) {\n const adjust = function (c) {\n const v = c.charCodeAt(0);\n return v > 1 ? v - 2 : v + 65534;\n };\n const temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n return true;\n } else {\n this.data = data\n this.pos = 0;\n return false;\n }\n }\n\n skipUUID() {\n let count = 0;\n while(count++ < 8)\n this.readInt();\n }\n\n checkVersion(legacy) {\n const version = this.readInt();\n if ( !legacy && version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n }\n\n readATN() {\n const grammarType = this.readInt();\n const maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n }\n\n readStates(atn, legacy) {\n let j, pair, stateNumber;\n const loopBackStateNumbers = [];\n const endStateNumbers = [];\n const nstates = this.readInt();\n for(let i=0; i 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n const matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n }\n\n stateIsEndStateFor(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n const maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n }\n\n /**\n * Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n * the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n * correct value.\n * @param atn The ATN.\n */\n markPrecedenceDecisions(atn) {\n for(let i=0; i= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n }\n }\n\n checkCondition(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n }\n\n readInt() {\n return this.data[this.pos++];\n }\n\n readInt32() {\n const low = this.readInt();\n const high = this.readInt();\n return low | (high << 16);\n }\n\n edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) {\n const target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n }\n\n stateFactory(type, ruleIndex) {\n if (this.stateFactories === null) {\n const sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = () => new BasicState();\n sf[ATNState.RULE_START] = () => new RuleStartState();\n sf[ATNState.BLOCK_START] = () => new BasicBlockStartState();\n sf[ATNState.PLUS_BLOCK_START] = () => new PlusBlockStartState();\n sf[ATNState.STAR_BLOCK_START] = () => new StarBlockStartState();\n sf[ATNState.TOKEN_START] = () => new TokensStartState();\n sf[ATNState.RULE_STOP] = () => new RuleStopState();\n sf[ATNState.BLOCK_END] = () => new BlockEndState();\n sf[ATNState.STAR_LOOP_BACK] = () => new StarLoopbackState();\n sf[ATNState.STAR_LOOP_ENTRY] = () => new StarLoopEntryState();\n sf[ATNState.PLUS_LOOP_BACK] = () => new PlusLoopbackState();\n sf[ATNState.LOOP_END] = () => new LoopEndState();\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n const s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n }\n\n lexerActionFactory(type, data1, data2) {\n if (this.actionFactories === null) {\n const af = [];\n af[LexerActionType.CHANNEL] = (data1, data2) => new LexerChannelAction(data1);\n af[LexerActionType.CUSTOM] = (data1, data2) => new LexerCustomAction(data1, data2);\n af[LexerActionType.MODE] = (data1, data2) => new LexerModeAction(data1);\n af[LexerActionType.MORE] = (data1, data2) => LexerMoreAction.INSTANCE;\n af[LexerActionType.POP_MODE] = (data1, data2) => LexerPopModeAction.INSTANCE;\n af[LexerActionType.PUSH_MODE] = (data1, data2) => new LexerPushModeAction(data1);\n af[LexerActionType.SKIP] = (data1, data2) => LexerSkipAction.INSTANCE;\n af[LexerActionType.TYPE] = (data1, data2) => new LexerTypeAction(data1);\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Represents the type of recognizer an ATN applies to\n */\nexport default {\n LEXER: 0,\n PARSER: 1\n};\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class BasicState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.BASIC;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class DecisionState extends ATNState {\n constructor() {\n super();\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\n\n/**\n * The start of a regular {@code (...)} block\n */\nexport default class BlockStartState extends DecisionState {\n constructor() {\n super();\n this.endState = null;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Terminal node of a simple {@code (a|b|c)} block\n */\nexport default class BlockEndState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Mark the end of a * or + loop\n */\nexport default class LoopEndState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.LOOP_END;\n this.loopBackState = null;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class RuleStartState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.RULE_START;\n this.stopState = null;\n this.isPrecedenceRule = false;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The Tokens rule start state linking to each lexer rule start state\n */\nexport default class TokensStartState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.TOKEN_START;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n * one to the loop back to start of the block and one to exit.\n */\nexport default class PlusLoopbackState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.PLUS_LOOP_BACK;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class StarLoopbackState extends ATNState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_LOOP_BACK;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\nexport default class StarLoopEntryState extends DecisionState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport BlockStartState from \"./BlockStartState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Start of {@code (A|B|...)+} loop. Technically a decision state, but\n * we don't use for code generation; somebody might need it, so I'm defining\n * it for completeness. In reality, the {@link PlusLoopbackState} node is the\n * real decision-making note for {@code A+}\n */\nexport default class PlusBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport BlockStartState from \"./BlockStartState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The block that begins a closure loop\n */\nexport default class StarBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.STAR_BLOCK_START;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\nimport BlockStartState from \"./BlockStartState.js\";\n\nexport default class BasicBlockStartState extends BlockStartState {\n constructor() {\n super();\n this.stateType = ATNState.BLOCK_START;\n return this;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Transition from \"./Transition.js\";\n\nexport default class AtomTransition extends Transition {\n constructor(target, label) {\n super(target);\n // The token type or character value; or, signifies special label.\n this.label_ = label;\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n }\n\n makeLabel() {\n const s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n }\n\n toString() {\n return this.label_;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Transition from \"./Transition.js\";\n\nexport default class RangeTransition extends Transition {\n constructor(target, start, stop) {\n super(target);\n this.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n }\n\n makeLabel() {\n const s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return symbol >= this.start && symbol <= this.stop;\n }\n\n toString() {\n return \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class ActionTransition extends Transition {\n constructor(target, ruleIndex, actionIndex, isCtxDependent) {\n super(target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n toString() {\n return \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class EpsilonTransition extends Transition {\n constructor(target, outermostPrecedenceReturn) {\n super(target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n toString() {\n return \"epsilon\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Predicate from \"../atn/Predicate.js\";\nimport Transition from \"./Transition.js\";\nimport AbstractPredicateTransition from \"../atn/AbstractPredicateTransition.js\";\n\nexport default class PredicateTransition extends AbstractPredicateTransition {\n constructor(target, ruleIndex, predIndex, isCtxDependent) {\n super(target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n getPredicate() {\n return new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n }\n\n toString() {\n return \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SemanticContext from \"./SemanticContext.js\";\n\nexport default class Predicate extends SemanticContext {\n\n constructor(ruleIndex, predIndex, isCtxDependent) {\n super();\n this.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n this.predIndex = predIndex === undefined ? -1 : predIndex;\n this.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n }\n\n evaluate(parser, outerContext) {\n const localctx = this.isCtxDependent ? outerContext : null;\n return parser.sempred(localctx, this.ruleIndex, this.predIndex);\n }\n\n updateHashCode(hash) {\n hash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (!(other instanceof Predicate)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex &&\n this.predIndex === other.predIndex &&\n this.isCtxDependent === other.isCtxDependent;\n }\n }\n\n toString() {\n return \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n }\n}\n\n/**\n * The default {@link SemanticContext}, which is semantically equivalent to\n * a predicate of the form {@code {true}?}\n */\nSemanticContext.NONE = new Predicate();\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PrecedencePredicate from \"../atn/PrecedencePredicate.js\";\nimport Transition from \"./Transition.js\";\nimport AbstractPredicateTransition from \"../atn/AbstractPredicateTransition.js\";\n\nexport default class PrecedencePredicateTransition extends AbstractPredicateTransition {\n constructor(target, precedence) {\n super(target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n }\n\n matches(symbol, minVocabSymbol, maxVocabSymbol) {\n return false;\n }\n\n getPredicate() {\n return new PrecedencePredicate(this.precedence);\n }\n\n toString() {\n return this.precedence + \" >= _p\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SemanticContext from \"./SemanticContext.js\";\n\nexport default class PrecedencePredicate extends SemanticContext {\n\n constructor(precedence) {\n super();\n this.precedence = precedence === undefined ? 0 : precedence;\n }\n\n evaluate(parser, outerContext) {\n return parser.precpred(outerContext, this.precedence);\n }\n\n evalPrecedence(parser, outerContext) {\n if (parser.precpred(outerContext, this.precedence)) {\n return SemanticContext.NONE;\n } else {\n return null;\n }\n }\n\n compareTo(other) {\n return this.precedence - other.precedence;\n }\n\n updateHashCode(hash) {\n hash.update(this.precedence);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (!(other instanceof PrecedencePredicate)) {\n return false;\n } else {\n return this.precedence === other.precedence;\n }\n }\n\n toString() {\n return \"{\" + this.precedence + \">=prec}?\";\n }\n\n}\n\n// HORRIBLE workaround circular import, avoiding dynamic import\nSemanticContext.PrecedencePredicate = PrecedencePredicate;\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexport default class ATNDeserializationOptions {\n\tconstructor(copyFrom) {\n\t\tif(copyFrom===undefined) {\n\t\t\tcopyFrom = null;\n\t\t}\n\t\tthis.readOnly = false;\n\t\tthis.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n\t\tthis.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\t}\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default {\n // The type of a {@link LexerChannelAction} action.\n CHANNEL: 0,\n // The type of a {@link LexerCustomAction} action\n CUSTOM: 1,\n // The type of a {@link LexerModeAction} action.\n MODE: 2,\n //The type of a {@link LexerMoreAction} action.\n MORE: 3,\n //The type of a {@link LexerPopModeAction} action.\n POP_MODE: 4,\n //The type of a {@link LexerPushModeAction} action.\n PUSH_MODE: 5,\n //The type of a {@link LexerSkipAction} action.\n SKIP: 6,\n //The type of a {@link LexerTypeAction} action.\n TYPE: 7\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n *\n *

        The {@code skip} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

        \n */\nexport default class LexerSkipAction extends LexerAction {\n constructor() {\n super(LexerActionType.SKIP);\n }\n\n execute(lexer) {\n lexer.skip();\n }\n\n toString() {\n return \"skip\";\n }\n}\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashCode from \"../misc/HashCode.js\";\n\n/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nexport default class LexerAction {\n constructor(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n }\n\n hashCode() {\n const hash = new HashCode();\n this.updateHashCode(hash);\n return hash.finish()\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType);\n }\n\n equals(other) {\n return this === other;\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code channel} lexer action by calling\n * {@link Lexer//setChannel} with the assigned channel.\n * Constructs a new {@code channel} action with the specified channel value.\n * @param channel The channel value to pass to {@link Lexer//setChannel}\n */\nexport default class LexerChannelAction extends LexerAction {\n constructor(channel) {\n super(LexerActionType.CHANNEL);\n this.channel = channel;\n }\n\n /**\n *

        This action is implemented by calling {@link Lexer//setChannel} with the\n * value provided by {@link //getChannel}.

        \n */\n execute(lexer) {\n lexer._channel = this.channel;\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.channel);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n }\n\n toString() {\n return \"channel(\" + this.channel + \")\";\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Executes a custom lexer action by calling {@link Recognizer//action} with the\n * rule and action indexes assigned to the custom action. The implementation of\n * a custom action is added to the generated code for the lexer in an override\n * of {@link Recognizer//action} when the grammar is compiled.\n *\n *

        This class may represent embedded actions created with the {...}\n * syntax in ANTLR 4, as well as actions created for lexer commands where the\n * command argument could not be evaluated when the grammar was compiled.

        \n */\nexport default class LexerCustomAction extends LexerAction {\n /**\n * Constructs a custom lexer action with the specified rule and action\n * indexes.\n *\n * @param ruleIndex The rule index to use for calls to\n * {@link Recognizer//action}.\n * @param actionIndex The action index to use for calls to\n * {@link Recognizer//action}.\n */\n constructor(ruleIndex, actionIndex) {\n super(LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n }\n\n /**\n *

        Custom actions are implemented by calling {@link Lexer//action} with the\n * appropriate rule and action indexes.

        \n */\n execute(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code more} lexer action by calling {@link Lexer//more}.\n *\n *

        The {@code more} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

        \n */\nexport default class LexerMoreAction extends LexerAction {\n constructor() {\n super(LexerActionType.MORE);\n }\n\n /**\n *

        This action is implemented by calling {@link Lexer//popMode}.

        \n */\n execute(lexer) {\n lexer.more();\n }\n\n toString() {\n return \"more\";\n }\n}\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code type} lexer action by calling {@link Lexer//setType}\n * with the assigned type\n */\n\nexport default class LexerTypeAction extends LexerAction {\n constructor(type) {\n super(LexerActionType.TYPE);\n this.type = type;\n }\n\n execute(lexer) {\n lexer.type = this.type;\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.type);\n }\n\n equals(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n }\n\n toString() {\n return \"type(\" + this.type + \")\";\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code pushMode} lexer action by calling\n * {@link Lexer//pushMode} with the assigned mode\n */\nexport default class LexerPushModeAction extends LexerAction {\n constructor(mode) {\n super(LexerActionType.PUSH_MODE);\n this.mode = mode;\n }\n\n /**\n *

        This action is implemented by calling {@link Lexer//pushMode} with the\n * value provided by {@link //getMode}.

        \n */\n execute(lexer) {\n lexer.pushMode(this.mode);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.mode);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n }\n\n toString() {\n return \"pushMode(\" + this.mode + \")\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n *\n *

        The {@code popMode} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.

        \n */\nexport default class LexerPopModeAction extends LexerAction {\n constructor() {\n super(LexerActionType.POP_MODE);\n }\n\n /**\n *

        This action is implemented by calling {@link Lexer//popMode}.

        \n */\n execute(lexer) {\n lexer.popMode();\n }\n\n toString() {\n return \"popMode\";\n }\n}\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n * the assigned mode\n */\nexport default class LexerModeAction extends LexerAction {\n constructor(mode) {\n super(LexerActionType.MODE);\n this.mode = mode;\n }\n\n /**\n *

        This action is implemented by calling {@link Lexer//mode} with the\n * value provided by {@link //getMode}.

        \n */\n execute(lexer) {\n lexer.mode(this.mode);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.mode);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n }\n\n toString() {\n return \"mode(\" + this.mode + \")\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport Lexer from './../Lexer.js';\nimport ATN from './ATN.js';\nimport ATNSimulator from './ATNSimulator.js';\nimport DFAState from '../dfa/DFAState.js';\nimport OrderedATNConfigSet from './OrderedATNConfigSet.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport LexerATNConfig from './LexerATNConfig.js';\nimport Transition from '../transition/Transition.js';\nimport LexerActionExecutor from './LexerActionExecutor.js';\nimport LexerNoViableAltException from '../error/LexerNoViableAltException.js';\n\nfunction resetSimState(sim) {\n sim.index = -1;\n sim.line = 0;\n sim.column = -1;\n sim.dfaState = null;\n}\n\nclass SimState {\n constructor() {\n resetSimState(this);\n }\n\n reset() {\n resetSimState(this);\n }\n}\n\nexport default class LexerATNSimulator extends ATNSimulator {\n /**\n * When we hit an accept state in either the DFA or the ATN, we\n * have to notify the character stream to start buffering characters\n * via {@link IntStream//mark} and record the current state. The current sim state\n * includes the current index into the input, the current line,\n * and current character position in that line. Note that the Lexer is\n * tracking the starting line and characterization of the token. These\n * variables track the \"state\" of the simulator when it hits an accept state.\n *\n *

        We track these variables separately for the DFA and ATN simulation\n * because the DFA simulation often has to fail over to the ATN\n * simulation. If the ATN simulation fails, we need the DFA to fall\n * back to its previously accepted state, if any. If the ATN succeeds,\n * then the ATN does the accept and the DFA simulator that invoked it\n * can simply return the predicted token type.

        \n */\n constructor(recog, atn, decisionToDFA, sharedContextCache) {\n super(atn, sharedContextCache);\n this.decisionToDFA = decisionToDFA;\n this.recog = recog;\n /**\n * The current token's starting index into the character stream.\n * Shared across DFA to ATN simulation in case the ATN fails and the\n * DFA did not have a previous accept state. In this case, we use the\n * ATN-generated exception object\n */\n this.startIndex = -1;\n // line number 1..n within the input///\n this.line = 1;\n /**\n * The index of the character relative to the beginning of the line\n * 0..n-1\n */\n this.column = 0;\n this.mode = Lexer.DEFAULT_MODE;\n /**\n * Used during DFA/ATN exec to record the most recent accept configuration\n * info\n */\n this.prevAccept = new SimState();\n }\n\n copyState(simulator) {\n this.column = simulator.column;\n this.line = simulator.line;\n this.mode = simulator.mode;\n this.startIndex = simulator.startIndex;\n }\n\n match(input, mode) {\n this.mode = mode;\n const mark = input.mark();\n try {\n this.startIndex = input.index;\n this.prevAccept.reset();\n const dfa = this.decisionToDFA[mode];\n if (dfa.s0 === null) {\n return this.matchATN(input);\n } else {\n return this.execATN(input, dfa.s0);\n }\n } finally {\n input.release(mark);\n }\n }\n\n reset() {\n this.prevAccept.reset();\n this.startIndex = -1;\n this.line = 1;\n this.column = 0;\n this.mode = Lexer.DEFAULT_MODE;\n }\n\n matchATN(input) {\n const startState = this.atn.modeToStartState[this.mode];\n\n if (LexerATNSimulator.debug) {\n console.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n }\n const old_mode = this.mode;\n const s0_closure = this.computeStartState(input, startState);\n const suppressEdge = s0_closure.hasSemanticContext;\n s0_closure.hasSemanticContext = false;\n\n const next = this.addDFAState(s0_closure);\n if (!suppressEdge) {\n this.decisionToDFA[this.mode].s0 = next;\n }\n\n const predict = this.execATN(input, next);\n\n if (LexerATNSimulator.debug) {\n console.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n }\n return predict;\n }\n\n execATN(input, ds0) {\n if (LexerATNSimulator.debug) {\n console.log(\"start state closure=\" + ds0.configs);\n }\n if (ds0.isAcceptState) {\n // allow zero-length tokens\n this.captureSimState(this.prevAccept, input, ds0);\n }\n let t = input.LA(1);\n let s = ds0; // s is current/from DFA state\n\n for (; ;) { // while more work\n if (LexerATNSimulator.debug) {\n console.log(\"execATN loop starting closure: \" + s.configs);\n }\n\n /**\n * As we move src->trg, src->trg, we keep track of the previous trg to\n * avoid looking up the DFA state again, which is expensive.\n * If the previous target was already part of the DFA, we might\n * be able to avoid doing a reach operation upon t. If s!=null,\n * it means that semantic predicates didn't prevent us from\n * creating a DFA state. Once we know s!=null, we check to see if\n * the DFA state has an edge already for t. If so, we can just reuse\n * it's configuration set; there's no point in re-computing it.\n * This is kind of like doing DFA simulation within the ATN\n * simulation because DFA simulation is really just a way to avoid\n * computing reach/closure sets. Technically, once we know that\n * we have a previously added DFA state, we could jump over to\n * the DFA simulator. But, that would mean popping back and forth\n * a lot and making things more complicated algorithmically.\n * This optimization makes a lot of sense for loops within DFA.\n * A character will take us back to an existing DFA state\n * that already has lots of edges out of it. e.g., .* in comments.\n * print(\"Target for:\" + str(s) + \" and:\" + str(t))\n */\n let target = this.getExistingTargetState(s, t);\n // print(\"Existing:\" + str(target))\n if (target === null) {\n target = this.computeTargetState(input, s, t);\n // print(\"Computed:\" + str(target))\n }\n if (target === ATNSimulator.ERROR) {\n break;\n }\n // If this is a consumable input element, make sure to consume before\n // capturing the accept state so the input index, line, and char\n // position accurately reflect the state of the interpreter at the\n // end of the token.\n if (t !== Token.EOF) {\n this.consume(input);\n }\n if (target.isAcceptState) {\n this.captureSimState(this.prevAccept, input, target);\n if (t === Token.EOF) {\n break;\n }\n }\n t = input.LA(1);\n s = target; // flip; current DFA target becomes new src/from state\n }\n return this.failOrAccept(this.prevAccept, input, s.configs, t);\n }\n\n /**\n * Get an existing target state for an edge in the DFA. If the target state\n * for the edge has not yet been computed or is otherwise not available,\n * this method returns {@code null}.\n *\n * @param s The current DFA state\n * @param t The next input symbol\n * @return The existing target DFA state for the given input symbol\n * {@code t}, or {@code null} if the target state for this edge is not\n * already cached\n */\n getExistingTargetState(s, t) {\n if (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n return null;\n }\n\n let target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n if (target === undefined) {\n target = null;\n }\n if (LexerATNSimulator.debug && target !== null) {\n console.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n }\n return target;\n }\n\n /**\n * Compute a target state for an edge in the DFA, and attempt to add the\n * computed state and corresponding edge to the DFA.\n *\n * @param input The input stream\n * @param s The current DFA state\n * @param t The next input symbol\n *\n * @return The computed target DFA state for the given input symbol\n * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n * returns {@link //ERROR}.\n */\n computeTargetState(input, s, t) {\n const reach = new OrderedATNConfigSet();\n // if we don't find an existing DFA state\n // Fill reach starting from closure, following t transitions\n this.getReachableConfigSet(input, s.configs, reach, t);\n\n if (reach.items.length === 0) { // we got nowhere on t from s\n if (!reach.hasSemanticContext) {\n // we got nowhere on t, don't throw out this knowledge; it'd\n // cause a failover from DFA later.\n this.addDFAEdge(s, t, ATNSimulator.ERROR);\n }\n // stop when we can't match any more char\n return ATNSimulator.ERROR;\n }\n // Add an edge from s to target DFA found/created for reach\n return this.addDFAEdge(s, t, null, reach);\n }\n\n failOrAccept(prevAccept, input, reach, t) {\n if (this.prevAccept.dfaState !== null) {\n const lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n this.accept(input, lexerActionExecutor, this.startIndex,\n prevAccept.index, prevAccept.line, prevAccept.column);\n return prevAccept.dfaState.prediction;\n } else {\n // if no accept and EOF is first char, return EOF\n if (t === Token.EOF && input.index === this.startIndex) {\n return Token.EOF;\n }\n throw new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n }\n }\n\n /**\n * Given a starting configuration set, figure out all ATN configurations\n * we can reach upon input {@code t}. Parameter {@code reach} is a return\n * parameter.\n */\n getReachableConfigSet(input, closure, reach, t) {\n // this is used to skip processing for configs which have a lower priority\n // than a config that already reached an accept state for the same rule\n let skipAlt = ATN.INVALID_ALT_NUMBER;\n for (let i = 0; i < closure.items.length; i++) {\n const cfg = closure.items[i];\n const currentAltReachedAcceptState = (cfg.alt === skipAlt);\n if (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n continue;\n }\n if (LexerATNSimulator.debug) {\n console.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n .toString(this.recog, true));\n }\n for (let j = 0; j < cfg.state.transitions.length; j++) {\n const trans = cfg.state.transitions[j]; // for each transition\n const target = this.getReachableTarget(trans, t);\n if (target !== null) {\n let lexerActionExecutor = cfg.lexerActionExecutor;\n if (lexerActionExecutor !== null) {\n lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n }\n const treatEofAsEpsilon = (t === Token.EOF);\n const config = new LexerATNConfig({state: target, lexerActionExecutor: lexerActionExecutor}, cfg);\n if (this.closure(input, config, reach,\n currentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n // any remaining configs for this alt have a lower priority\n // than the one that just reached an accept state.\n skipAlt = cfg.alt;\n }\n }\n }\n }\n }\n\n accept(input, lexerActionExecutor, startIndex, index, line, charPos) {\n if (LexerATNSimulator.debug) {\n console.log(\"ACTION %s\\n\", lexerActionExecutor);\n }\n // seek to after last char in token\n input.seek(index);\n this.line = line;\n this.column = charPos;\n if (lexerActionExecutor !== null && this.recog !== null) {\n lexerActionExecutor.execute(this.recog, input, startIndex);\n }\n }\n\n getReachableTarget(trans, t) {\n if (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n return trans.target;\n } else {\n return null;\n }\n }\n\n computeStartState(input, p) {\n const initialContext = PredictionContext.EMPTY;\n const configs = new OrderedATNConfigSet();\n for (let i = 0; i < p.transitions.length; i++) {\n const target = p.transitions[i].target;\n const cfg = new LexerATNConfig({state: target, alt: i + 1, context: initialContext}, null);\n this.closure(input, cfg, configs, false, false, false);\n }\n return configs;\n }\n\n /**\n * Since the alternatives within any lexer decision are ordered by\n * preference, this method stops pursuing the closure as soon as an accept\n * state is reached. After the first accept state is reached by depth-first\n * search from {@code config}, all other (potentially reachable) states for\n * this rule would have a lower priority.\n *\n * @return {Boolean} {@code true} if an accept state is reached, otherwise\n * {@code false}.\n */\n closure(input, config, configs,\n currentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n let cfg = null;\n if (LexerATNSimulator.debug) {\n console.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n }\n if (config.state instanceof RuleStopState) {\n if (LexerATNSimulator.debug) {\n if (this.recog !== null) {\n console.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n } else {\n console.log(\"closure at rule stop %s\\n\", config);\n }\n }\n if (config.context === null || config.context.hasEmptyPath()) {\n if (config.context === null || config.context.isEmpty()) {\n configs.add(config);\n return true;\n } else {\n configs.add(new LexerATNConfig({state: config.state, context: PredictionContext.EMPTY}, config));\n currentAltReachedAcceptState = true;\n }\n }\n if (config.context !== null && !config.context.isEmpty()) {\n for (let i = 0; i < config.context.length; i++) {\n if (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n const newContext = config.context.getParent(i); // \"pop\" return state\n const returnState = this.atn.states[config.context.getReturnState(i)];\n cfg = new LexerATNConfig({state: returnState, context: newContext}, config);\n currentAltReachedAcceptState = this.closure(input, cfg,\n configs, currentAltReachedAcceptState, speculative,\n treatEofAsEpsilon);\n }\n }\n }\n return currentAltReachedAcceptState;\n }\n // optimization\n if (!config.state.epsilonOnlyTransitions) {\n if (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n configs.add(config);\n }\n }\n for (let j = 0; j < config.state.transitions.length; j++) {\n const trans = config.state.transitions[j];\n cfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n if (cfg !== null) {\n currentAltReachedAcceptState = this.closure(input, cfg, configs,\n currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n }\n }\n return currentAltReachedAcceptState;\n }\n\n // side-effect: can alter configs.hasSemanticContext\n getEpsilonTarget(input, config, trans,\n configs, speculative, treatEofAsEpsilon) {\n let cfg = null;\n if (trans.serializationType === Transition.RULE) {\n const newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n cfg = new LexerATNConfig({state: trans.target, context: newContext}, config);\n } else if (trans.serializationType === Transition.PRECEDENCE) {\n throw \"Precedence predicates are not supported in lexers.\";\n } else if (trans.serializationType === Transition.PREDICATE) {\n // Track traversing semantic predicates. If we traverse,\n // we cannot add a DFA state for this \"reach\" computation\n // because the DFA would not test the predicate again in the\n // future. Rather than creating collections of semantic predicates\n // like v3 and testing them on prediction, v4 will test them on the\n // fly all the time using the ATN not the DFA. This is slower but\n // semantically it's not used that often. One of the key elements to\n // this predicate mechanism is not adding DFA states that see\n // predicates immediately afterwards in the ATN. For example,\n\n // a : ID {p1}? | ID {p2}? ;\n\n // should create the start state for rule 'a' (to save start state\n // competition), but should not create target of ID state. The\n // collection of ATN states the following ID references includes\n // states reached by traversing predicates. Since this is when we\n // test them, we cannot cash the DFA state target of ID.\n\n if (LexerATNSimulator.debug) {\n console.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n }\n configs.hasSemanticContext = true;\n if (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n cfg = new LexerATNConfig({state: trans.target}, config);\n }\n } else if (trans.serializationType === Transition.ACTION) {\n if (config.context === null || config.context.hasEmptyPath()) {\n // execute actions anywhere in the start rule for a token.\n //\n // TODO: if the entry rule is invoked recursively, some\n // actions may be executed during the recursive call. The\n // problem can appear when hasEmptyPath() is true but\n // isEmpty() is false. In this case, the config needs to be\n // split into two contexts - one with just the empty path\n // and another with everything but the empty path.\n // Unfortunately, the current algorithm does not allow\n // getEpsilonTarget to return two configurations, so\n // additional modifications are needed before we can support\n // the split operation.\n const lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n this.atn.lexerActions[trans.actionIndex]);\n cfg = new LexerATNConfig({state: trans.target, lexerActionExecutor: lexerActionExecutor}, config);\n } else {\n // ignore actions in referenced rules\n cfg = new LexerATNConfig({state: trans.target}, config);\n }\n } else if (trans.serializationType === Transition.EPSILON) {\n cfg = new LexerATNConfig({state: trans.target}, config);\n } else if (trans.serializationType === Transition.ATOM ||\n trans.serializationType === Transition.RANGE ||\n trans.serializationType === Transition.SET) {\n if (treatEofAsEpsilon) {\n if (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n cfg = new LexerATNConfig({state: trans.target}, config);\n }\n }\n }\n return cfg;\n }\n\n /**\n * Evaluate a predicate specified in the lexer.\n *\n *

        If {@code speculative} is {@code true}, this method was called before\n * {@link //consume} for the matched character. This method should call\n * {@link //consume} before evaluating the predicate to ensure position\n * sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n * and {@link Lexer//getcolumn}, properly reflect the current\n * lexer state. This method should restore {@code input} and the simulator\n * to the original state before returning (i.e. undo the actions made by the\n * call to {@link //consume}.

        \n *\n * @param input The input stream.\n * @param ruleIndex The rule containing the predicate.\n * @param predIndex The index of the predicate within the rule.\n * @param speculative {@code true} if the current index in {@code input} is\n * one character before the predicate's location.\n *\n * @return {@code true} if the specified predicate evaluates to\n * {@code true}.\n */\n evaluatePredicate(input, ruleIndex,\n predIndex, speculative) {\n // assume true if no recognizer was provided\n if (this.recog === null) {\n return true;\n }\n if (!speculative) {\n return this.recog.sempred(null, ruleIndex, predIndex);\n }\n const savedcolumn = this.column;\n const savedLine = this.line;\n const index = input.index;\n const marker = input.mark();\n try {\n this.consume(input);\n return this.recog.sempred(null, ruleIndex, predIndex);\n } finally {\n this.column = savedcolumn;\n this.line = savedLine;\n input.seek(index);\n input.release(marker);\n }\n }\n\n captureSimState(settings, input, dfaState) {\n settings.index = input.index;\n settings.line = this.line;\n settings.column = this.column;\n settings.dfaState = dfaState;\n }\n\n addDFAEdge(from_, tk, to, cfgs) {\n if (to === undefined) {\n to = null;\n }\n if (cfgs === undefined) {\n cfgs = null;\n }\n if (to === null && cfgs !== null) {\n // leading to this call, ATNConfigSet.hasSemanticContext is used as a\n // marker indicating dynamic predicate evaluation makes this edge\n // dependent on the specific input sequence, so the static edge in the\n // DFA should be omitted. The target DFAState is still created since\n // execATN has the ability to resynchronize with the DFA state cache\n // following the predicate evaluation step.\n //\n // TJP notes: next time through the DFA, we see a pred again and eval.\n // If that gets us to a previously created (but dangling) DFA\n // state, we can continue in pure DFA mode from there.\n // /\n const suppressEdge = cfgs.hasSemanticContext;\n cfgs.hasSemanticContext = false;\n\n to = this.addDFAState(cfgs);\n\n if (suppressEdge) {\n return to;\n }\n }\n // add the edge\n if (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n // Only track edges within the DFA bounds\n return to;\n }\n if (LexerATNSimulator.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n }\n if (from_.edges === null) {\n // make room for tokens 1..n and -1 masquerading as index 0\n from_.edges = [];\n }\n from_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n return to;\n }\n\n /**\n * Add a new DFA state if there isn't one with this set of\n * configurations already. This method also detects the first\n * configuration containing an ATN rule stop state. Later, when\n * traversing the DFA, we will know which rule to accept.\n */\n addDFAState(configs) {\n const proposed = new DFAState(null, configs);\n let firstConfigWithRuleStopState = null;\n for (let i = 0; i < configs.items.length; i++) {\n const cfg = configs.items[i];\n if (cfg.state instanceof RuleStopState) {\n firstConfigWithRuleStopState = cfg;\n break;\n }\n }\n if (firstConfigWithRuleStopState !== null) {\n proposed.isAcceptState = true;\n proposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n proposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n }\n const dfa = this.decisionToDFA[this.mode];\n const existing = dfa.states.get(proposed);\n if (existing !== null) {\n return existing;\n }\n const newState = proposed;\n newState.stateNumber = dfa.states.length;\n configs.setReadonly(true);\n newState.configs = configs;\n dfa.states.add(newState);\n return newState;\n }\n\n getDFA(mode) {\n return this.decisionToDFA[mode];\n }\n\n// Get the text matched so far for the current token.\n getText(input) {\n // index is first lookahead char, don't include.\n return input.getText(this.startIndex, input.index - 1);\n }\n\n consume(input) {\n const curChar = input.LA(1);\n if (curChar === \"\\n\".charCodeAt(0)) {\n this.line += 1;\n this.column = 0;\n } else {\n this.column += 1;\n }\n input.consume();\n }\n\n getTokenName(tt) {\n if (tt === -1) {\n return \"EOF\";\n } else {\n return \"'\" + String.fromCharCode(tt) + \"'\";\n }\n }\n}\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport Recognizer from './Recognizer.js';\nimport CommonTokenFactory from './CommonTokenFactory.js';\nimport RecognitionException from './error/RecognitionException.js';\nimport LexerNoViableAltException from './error/LexerNoViableAltException.js';\n\n/**\n * A lexer is recognizer that draws input symbols from a character stream.\n * lexer grammars result in a subclass of this object. A Lexer object\n * uses simplified match() and error recovery mechanisms in the interest of speed.\n */\nexport default class Lexer extends Recognizer {\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis._input = input;\n\t\tthis._factory = CommonTokenFactory.DEFAULT;\n\t\tthis._tokenFactorySourcePair = [ this, input ];\n\n\t\tthis._interp = null; // child classes must populate this\n\n\t\t/**\n\t\t * The goal of all lexer rules/methods is to create a token object.\n\t\t * this is an instance variable as multiple rules may collaborate to\n\t\t * create a single token. nextToken will return this object after\n\t\t * matching lexer rule(s). If you subclass to allow multiple token\n\t\t * emissions, then set this to the last token to be matched or\n\t\t * something nonnull so that the auto token emit mechanism will not\n\t\t * emit another token.\n\t\t */\n\t\tthis._token = null;\n\n\t\t/**\n\t\t * What character index in the stream did the current token start at?\n\t\t * Needed, for example, to get the text for current token. Set at\n\t\t * the start of nextToken.\n\t\t */\n\t\tthis._tokenStartCharIndex = -1;\n\n\t\t// The line on which the first character of the token resides///\n\t\tthis._tokenStartLine = -1;\n\n\t\t// The character position of first character within the line///\n\t\tthis._tokenStartColumn = -1;\n\n\t\t// Once we see EOF on char stream, next token will be EOF.\n\t\t// If you have DONE : EOF ; then you see DONE EOF.\n\t\tthis._hitEOF = false;\n\n\t\t// The channel number for the current token///\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t\t// The token type for the current token///\n\t\tthis._type = Token.INVALID_TYPE;\n\n\t\tthis._modeStack = [];\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t\t/**\n\t\t * You can set the text for the current token to override what is in\n\t\t * the input char buffer. Use setText() or can set this instance var.\n\t\t */\n\t\tthis._text = null;\n\t}\n\n\treset() {\n\t\t// wack Lexer state variables\n\t\tif (this._input !== null) {\n\t\t\tthis._input.seek(0); // rewind the input\n\t\t}\n\t\tthis._token = null;\n\t\tthis._type = Token.INVALID_TYPE;\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\tthis._tokenStartCharIndex = -1;\n\t\tthis._tokenStartColumn = -1;\n\t\tthis._tokenStartLine = -1;\n\t\tthis._text = null;\n\n\t\tthis._hitEOF = false;\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\t\tthis._modeStack = [];\n\n\t\tthis._interp.reset();\n\t}\n\n// Return a token from this source; i.e., match a token on the char stream.\n\tnextToken() {\n\t\tif (this._input === null) {\n\t\t\tthrow \"nextToken requires a non-null input stream.\";\n\t\t}\n\n\t\t/**\n\t\t * Mark start location in char stream so unbuffered streams are\n\t\t * guaranteed at least have text of current token\n\t\t */\n\t\tconst tokenStartMarker = this._input.mark();\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tif (this._hitEOF) {\n\t\t\t\t\tthis.emitEOF();\n\t\t\t\t\treturn this._token;\n\t\t\t\t}\n\t\t\t\tthis._token = null;\n\t\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\t\tthis._text = null;\n\t\t\t\tlet continueOuter = false;\n\t\t\t\tfor (;;) {\n\t\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\t\tlet ttype = Lexer.SKIP;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif(e instanceof RecognitionException) {\n\t\t\t\t\t\t\tthis.notifyListeners(e); // report error\n\t\t\t\t\t\t\tthis.recover(e);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(e.stack);\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\t\tthis._type = ttype;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (continueOuter) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._token === null) {\n\t\t\t\t\tthis.emit();\n\t\t\t\t}\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t} finally {\n\t\t\t// make sure we release marker after match or\n\t\t\t// unbuffered char stream will keep buffering\n\t\t\tthis._input.release(tokenStartMarker);\n\t\t}\n\t}\n\n\t/**\n\t * Instruct the lexer to skip creating a token for current lexer rule\n\t * and look for another token. nextToken() knows to keep looking when\n\t * a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n\t * if token==null at end of any token rule, it creates one for you\n\t * and emits it.\n\t */\n\tskip() {\n\t\tthis._type = Lexer.SKIP;\n\t}\n\n\tmore() {\n\t\tthis._type = Lexer.MORE;\n\t}\n\n\tmode(m) {\n\t\tthis._mode = m;\n\t}\n\n\tpushMode(m) {\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"pushMode \" + m);\n\t\t}\n\t\tthis._modeStack.push(this._mode);\n\t\tthis.mode(m);\n\t}\n\n\tpopMode() {\n\t\tif (this._modeStack.length === 0) {\n\t\t\tthrow \"Empty Stack\";\n\t\t}\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t\t}\n\t\tthis.mode(this._modeStack.pop());\n\t\treturn this._mode;\n\t}\n\n\t/**\n\t * By default does not support multiple emits per nextToken invocation\n\t * for efficiency reasons. Subclass and override this method, nextToken,\n\t * and getToken (to push tokens into a list and pull from that list\n\t * rather than a single variable as this implementation does).\n\t */\n\temitToken(token) {\n\t\tthis._token = token;\n\t}\n\n\t/**\n\t * The standard method called to automatically emit a token at the\n\t * outermost lexical rule. The token object should point into the\n\t * char buffer start..stop. If there is a text override in 'text',\n\t * use that to set the token's text. Override this method to emit\n\t * custom Token objects or provide a new factory.\n\t */\n\temit() {\n\t\tconst t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn);\n\t\tthis.emitToken(t);\n\t\treturn t;\n\t}\n\n\temitEOF() {\n\t\tconst cpos = this.column;\n\t\tconst lpos = this.line;\n\t\tconst eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\t\tthis._input.index - 1, lpos, cpos);\n\t\tthis.emitToken(eof);\n\t\treturn eof;\n\t}\n\n// What is the index of the current character of lookahead?///\n\tgetCharIndex() {\n\t\treturn this._input.index;\n\t}\n\n\t/**\n\t * Return a list of all Token objects in input char stream.\n\t * Forces load of all tokens. Does not include EOF token.\n\t */\n\tgetAllTokens() {\n\t\tconst tokens = [];\n\t\tlet t = this.nextToken();\n\t\twhile (t.type !== Token.EOF) {\n\t\t\ttokens.push(t);\n\t\t\tt = this.nextToken();\n\t\t}\n\t\treturn tokens;\n\t}\n\n\tnotifyListeners(e) {\n\t\tconst start = this._tokenStartCharIndex;\n\t\tconst stop = this._input.index;\n\t\tconst text = this._input.getText(start, stop);\n\t\tconst msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\t\tconst listener = this.getErrorListenerDispatch();\n\t\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn, msg, e);\n\t}\n\n\tgetErrorDisplay(s) {\n\t\tconst d = [];\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\td.push(s[i]);\n\t\t}\n\t\treturn d.join('');\n\t}\n\n\tgetErrorDisplayForChar(c) {\n\t\tif (c.charCodeAt(0) === Token.EOF) {\n\t\t\treturn \"\";\n\t\t} else if (c === '\\n') {\n\t\t\treturn \"\\\\n\";\n\t\t} else if (c === '\\t') {\n\t\t\treturn \"\\\\t\";\n\t\t} else if (c === '\\r') {\n\t\t\treturn \"\\\\r\";\n\t\t} else {\n\t\t\treturn c;\n\t\t}\n\t}\n\n\tgetCharErrorDisplay(c) {\n\t\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n\t}\n\n\t/**\n\t * Lexers can normally match any char in it's vocabulary after matching\n\t * a token, so do the easy thing and just kill a character and hope\n\t * it all works out. You can instead use the rule invocation stack\n\t * to do sophisticated error recovery if you are in a fragment rule.\n\t */\n\trecover(re) {\n\t\tif (this._input.LA(1) !== Token.EOF) {\n\t\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t\t// skip a char and try again\n\t\t\t\tthis._interp.consume(this._input);\n\t\t\t} else {\n\t\t\t\t// TODO: Do we lose character or line position information?\n\t\t\t\tthis._input.consume();\n\t\t\t}\n\t\t}\n\t}\n\n\tget inputStream(){\n\t\treturn this._input;\n\t}\n\n\tset inputStream(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n\n\tget sourceName(){\n\t\treturn this._input.sourceName;\n\t}\n\n\tget type(){\n\t\treturn this._type;\n\t}\n\n\tset type(type) {\n\t\tthis._type = type;\n\t}\n\n\tget line(){\n\t\treturn this._interp.line;\n\t}\n\n\tset line(line) {\n\t\tthis._interp.line = line;\n\t}\n\n\tget column(){\n\t\treturn this._interp.column;\n\t}\n\n\tset column(column) {\n\t\tthis._interp.column = column;\n\t}\n\n\tget text(){\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\n\n\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport ConsoleErrorListener from './error/ConsoleErrorListener.js';\nimport ProxyErrorListener from './error/ProxyErrorListener.js';\n\nexport default class Recognizer {\n constructor() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n }\n\n checkVersion(toolVersion) {\n const runtimeVersion = \"4.10.1\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n }\n\n addErrorListener(listener) {\n this._listeners.push(listener);\n }\n\n removeErrorListeners() {\n this._listeners = [];\n }\n\n getLiteralNames() {\n return Object.getPrototypeOf(this).constructor.literalNames || [];\n }\n\n getSymbolicNames() {\n return Object.getPrototypeOf(this).constructor.symbolicNames || [];\n }\n\n getTokenNames() {\n if(!this.tokenNames) {\n const literalNames = this.getLiteralNames();\n const symbolicNames = this.getSymbolicNames();\n const length = literalNames.length > symbolicNames.length ? literalNames.length : symbolicNames.length;\n this.tokenNames = [];\n for(let i=0; iUsed for XPath and tree pattern compilation.

        \n */\n getRuleIndexMap() {\n const ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n let result = this.ruleIndexMapCache[ruleNames]; // todo: should it be Recognizer.ruleIndexMapCache ?\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n }\n\n getTokenType(tokenName) {\n const ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n }\n\n // What is the error header, normally line/character position information?\n getErrorHeader(e) {\n const line = e.getOffendingToken().line;\n const column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n }\n\n /**\n * How should a token be displayed in an error message? The default\n * is to display just the text, but during development you might\n * want to have a lot of information spit out. Override in that case\n * to use t.toString() (which, for CommonToken, dumps everything about\n * the token). This is better than forcing you to override a method in\n * your token objects because you don't have to go modify your lexer\n * so that it creates a new Java type.\n *\n * @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n * implementations of {@link ANTLRErrorStrategy} may provide a similar\n * feature when necessary. For example, see\n * {@link DefaultErrorStrategy//getTokenErrorDisplay}.*/\n getTokenErrorDisplay(t) {\n if (t===null) {\n return \"\";\n }\n let s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n }\n\n getErrorListenerDispatch() {\n return new ProxyErrorListener(this._listeners);\n }\n\n /**\n * subclass needs to override these if there are sempreds or actions\n * that the ATN interp needs to execute\n */\n sempred(localctx, ruleIndex, actionIndex) {\n return true;\n }\n\n precpred(localctx , precedence) {\n return true;\n }\n\n get state(){\n return this._stateNumber;\n }\n\n set state(state) {\n this._stateNumber = state;\n }\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ErrorListener from \"./ErrorListener.js\";\n\n/**\n * {@inheritDoc}\n *\n *

        \n * This implementation prints messages to {@link System//err} containing the\n * values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n * the following format.

        \n *\n *
        \n * line line:charPositionInLine msg\n * 
        \n *\n */\nexport default class ConsoleErrorListener extends ErrorListener {\n constructor() {\n super();\n }\n\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n }\n}\n\n\n/**\n * Provides a default instance of {@link ConsoleErrorListener}.\n */\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Provides an empty default implementation of {@link ANTLRErrorListener}. The\n * default implementation of each method does nothing, but can be overridden as\n * necessary.\n */\nexport default class ErrorListener {\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n }\n\n reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n }\n\n reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n }\n\n reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ErrorListener from \"./ErrorListener.js\";\n\nexport default class ProxyErrorListener extends ErrorListener {\n constructor(delegates) {\n super();\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n return this;\n }\n\n syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(d => d.syntaxError(recognizer, offendingSymbol, line, column, msg, e));\n }\n\n reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(d => d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs));\n }\n\n reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n this.delegates.map(d => d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs));\n }\n\n reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n this.delegates.map(d => d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs));\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport CommonToken from './CommonToken.js';\n\nclass TokenFactory {}\n\n/**\n * This default implementation of {@link TokenFactory} creates\n * {@link CommonToken} objects.\n */\nexport default class CommonTokenFactory extends TokenFactory {\n constructor(copyText) {\n super();\n /**\n * Indicates whether {@link CommonToken//setText} should be called after\n * constructing tokens to explicitly set the text. This is useful for cases\n * where the input stream might not be able to provide arbitrary substrings\n * of text from the input after the lexer creates a token (e.g. the\n * implementation of {@link CharStream//getText} in\n * {@link UnbufferedCharStream} throws an\n * {@link UnsupportedOperationException}). Explicitly setting the token text\n * allows {@link Token//getText} to be called at any time regardless of the\n * input stream implementation.\n *\n *

        \n * The default value is {@code false} to avoid the performance and memory\n * overhead of copying text for every token unless explicitly requested.

        \n */\n this.copyText = copyText===undefined ? false : copyText;\n }\n\n create(source, type, text, channel, start, stop, line, column) {\n const t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n }\n\n createThin(type, text) {\n const t = new CommonToken(null, type);\n t.text = text;\n return t;\n }\n}\n\n/**\n * The default {@link CommonTokenFactory} instance.\n *\n *

        \n * This token factory does not explicitly copy token text when constructing\n * tokens.

        \n */\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n", "import Token from \"./Token.js\";\n\nexport default class CommonToken extends Token {\n constructor(source, type, channel, start, stop) {\n super();\n this.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n this.type = type !== undefined ? type : null;\n this.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n this.start = start !== undefined ? start : -1;\n this.stop = stop !== undefined ? stop : -1;\n this.tokenIndex = -1;\n if (this.source[0] !== null) {\n this.line = source[0].line;\n this.column = source[0].column;\n } else {\n this.column = -1;\n }\n }\n\n /**\n * Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n *\n *

        \n * If {@code oldToken} is also a {@link CommonToken} instance, the newly\n * constructed token will share a reference to the {@link //text} field and\n * the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n * be assigned the result of calling {@link //getText}, and {@link //source}\n * will be constructed from the result of {@link Token//getTokenSource} and\n * {@link Token//getInputStream}.

        \n *\n * @param oldToken The token to copy.\n */\n clone() {\n const t = new CommonToken(this.source, this.type, this.channel, this.start, this.stop);\n t.tokenIndex = this.tokenIndex;\n t.line = this.line;\n t.column = this.column;\n t.text = this.text;\n return t;\n }\n\n toString() {\n let txt = this.text;\n if (txt !== null) {\n txt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n } else {\n txt = \"\";\n }\n return \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n txt + \"',<\" + this.type + \">\" +\n (this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n this.line + \":\" + this.column + \"]\";\n }\n\n get text(){\n if (this._text !== null) {\n return this._text;\n }\n const input = this.getInputStream();\n if (input === null) {\n return null;\n }\n const n = input.size;\n if (this.start < n && this.stop < n) {\n return input.getText(this.start, this.stop);\n } else {\n return \"\";\n }\n }\n\n set text(text) {\n this._text = text;\n }\n}\n\n/**\n * An empty {@link Pair} which is used as the default value of\n * {@link //source} for tokens that do not have a source.\n */\nCommonToken.EMPTY_SOURCE = [ null, null ];\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n * 3 kinds of errors: prediction errors, failed predicate errors, and\n * mismatched input errors. In each case, the parser knows where it is\n * in the input, where it is in the ATN, the rule invocation stack,\n * and what kind of problem occurred.\n */\n\nexport default class RecognitionException extends Error {\n constructor(params) {\n super(params.message);\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, RecognitionException);\n this.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n /**\n * The current {@link Token} when an error occurred. Since not all streams\n * support accessing symbols by index, we have to track the {@link Token}\n * instance itself\n */\n this.offendingToken = null;\n /**\n * Get the ATN state number the parser was in at the time the error\n * occurred. For {@link NoViableAltException} and\n * {@link LexerNoViableAltException} exceptions, this is the\n * {@link DecisionState} number. For others, it is the state whose outgoing\n * edge we couldn't match.\n */\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n }\n\n /**\n * Gets the set of input symbols which could potentially follow the\n * previously matched symbol at the time this exception was thrown.\n *\n *

        If the set of expected tokens is not known and could not be computed,\n * this method returns {@code null}.

        \n *\n * @return The set of token types that could potentially follow the current\n * state in the ATN, or {@code null} if the information is not available.\n */\n getExpectedTokens() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n }\n\n //

        If the state number is not known, this method returns -1.

        \n toString() {\n return this.message;\n }\n}\n\n\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Interval from \"../misc/Interval.js\";\nimport RecognitionException from \"./RecognitionException.js\";\n\nexport default class LexerNoViableAltException extends RecognitionException {\n constructor(lexer, input, startIndex, deadEndConfigs) {\n super({message: \"\", recognizer: lexer, input: input, ctx: null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n }\n\n toString() {\n let symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText(new Interval(this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFAState from '../dfa/DFAState.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport { getCachedPredictionContext } from '../context/PredictionContextUtils.js';\nimport HashMap from \"../misc/HashMap.js\";\n\nexport default class ATNSimulator {\n constructor(atn, sharedContextCache) {\n /**\n * The context cache maps all PredictionContext objects that are ==\n * to a single cached copy. This cache is shared across all contexts\n * in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n * to use only cached nodes/graphs in addDFAState(). We don't want to\n * fill this during closure() since there are lots of contexts that\n * pop up but are not used ever again. It also greatly slows down closure().\n *\n *

        This cache makes a huge difference in memory and a little bit in speed.\n * For the Java grammar on java.*, it dropped the memory requirements\n * at the end from 25M to 16M. We don't store any of the full context\n * graphs in the DFA because they are limited to local context only,\n * but apparently there's a lot of repetition there as well. We optimize\n * the config contexts before storing the config set in the DFA states\n * by literally rebuilding them with cached subgraphs only.

        \n *\n *

        I tried a cache for use during closure operations, that was\n * whacked after each adaptivePredict(). It cost a little bit\n * more time I think and doesn't save on the overall footprint\n * so it's not worth the complexity.

        \n */\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n }\n\n getCachedContext(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n const visited = new HashMap();\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n }\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATNConfigSet from '../atn/ATNConfigSet.js';\nimport HashCode from \"../misc/HashCode.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n\n/**\n * A DFA state represents a set of possible ATN configurations.\n * As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n * to keep track of all possible states the ATN can be in after\n * reading each input symbol. That is to say, after reading\n * input a1a2..an, the DFA is in a state that represents the\n * subset T of the states of the ATN that are reachable from the\n * ATN's start state along some path labeled a1a2..an.\"\n * In conventional NFA→DFA conversion, therefore, the subset T\n * would be a bitset representing the set of states the\n * ATN could be in. We need to track the alt predicted by each\n * state as well, however. More importantly, we need to maintain\n * a stack of states, tracking the closure operations as they\n * jump from rule to rule, emulating rule invocations (method calls).\n * I have to add a stack to simulate the proper lookahead sequences for\n * the underlying LL grammar from which the ATN was derived.\n *\n *

        I use a set of ATNConfig objects not simple states. An ATNConfig\n * is both a state (ala normal conversion) and a RuleContext describing\n * the chain of rules (if any) followed to arrive at that state.

        \n *\n *

        A DFA state may have multiple references to a particular state,\n * but with different ATN contexts (with same or different alts)\n * meaning that state was reached via a different set of rule invocations.

        \n */\nexport default class DFAState {\n\tconstructor(stateNumber, configs) {\n\t\tif (stateNumber === null) {\n\t\t\tstateNumber = -1;\n\t\t}\n\t\tif (configs === null) {\n\t\t\tconfigs = new ATNConfigSet();\n\t\t}\n\t\tthis.stateNumber = stateNumber;\n\t\tthis.configs = configs;\n\t\t/**\n\t\t * {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t\t * {@link Token//EOF} maps to {@code edges[0]}.\n\t\t */\n\t\tthis.edges = null;\n\t\tthis.isAcceptState = false;\n\t\t/**\n\t\t * if accept state, what ttype do we match or alt do we predict?\n\t\t * This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link//predicates}\n\t\t * {@code !=null} or {@link //requiresFullContext}.\n\t\t */\n\t\tthis.prediction = 0;\n\t\tthis.lexerActionExecutor = null;\n\t\t/**\n\t\t * Indicates that this state was created during SLL prediction that\n\t\t * discovered a conflict between the configurations in the state. Future\n\t\t * {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t\t * full context prediction if this field is true.\n\t\t */\n\t\tthis.requiresFullContext = false;\n\t\t/**\n\t\t * During SLL parsing, this is a list of predicates associated with the\n\t\t * ATN configurations of the DFA state. When we have predicates,\n\t\t * {@link //requiresFullContext} is {@code false} since full context\n\t\t * prediction evaluates predicates\n\t\t * on-the-fly. If this is not null, then {@link //prediction} is\n\t\t * {@link ATN//INVALID_ALT_NUMBER}.\n\t\t *\n\t\t *

        We only use these for non-{@link //requiresFullContext} but\n\t\t * conflicting states. That\n\t\t * means we know from the context (it's $ or we don't dip into outer\n\t\t * context) that it's an ambiguity not a conflict.

        \n\t\t *\n\t\t *

        This list is computed by {@link\n\t\t * ParserATNSimulator//predicateDFAState}.

        \n\t\t */\n\t\tthis.predicates = null;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the set of all alts mentioned by all ATN configurations in this\n\t * DFA state.\n\t */\n\tgetAltSet() {\n\t\tconst alts = new HashSet();\n\t\tif (this.configs !== null) {\n\t\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\t\tconst c = this.configs[i];\n\t\t\t\talts.add(c.alt);\n\t\t\t}\n\t\t}\n\t\tif (alts.length === 0) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn alts;\n\t\t}\n\t}\n\n\t/**\n\t * Two {@link DFAState} instances are equal if their ATN configuration sets\n\t * are the same. This method is used to see if a state already exists.\n\t *\n\t *

        Because the number of alternatives and number of ATN configurations are\n\t * finite, there is a finite number of DFA states that can be processed.\n\t * This is necessary to show that the algorithm terminates.

        \n\t *\n\t *

        Cannot test the DFA state numbers here because in\n\t * {@link ParserATNSimulator//addDFAState} we need to know if any other state\n\t * exists that has this exact set of ATN configurations. The\n\t * {@link //stateNumber} is irrelevant.

        \n\t */\n\tequals(other) {\n\t\t// compare set of ATN configurations in this set with other\n\t\treturn this === other ||\n\t\t\t\t(other instanceof DFAState &&\n\t\t\t\t\tthis.configs.equals(other.configs));\n\t}\n\n\ttoString() {\n\t\tlet s = \"\" + this.stateNumber + \":\" + this.configs;\n\t\tif(this.isAcceptState) {\n\t\t\ts = s + \"=>\";\n\t\t\tif (this.predicates !== null)\n\t\t\t\ts = s + this.predicates;\n\t\t\telse\n\t\t\t\ts = s + this.prediction;\n\t\t}\n\t\treturn s;\n\t}\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport SemanticContext from './SemanticContext.js';\nimport { merge } from '../context/PredictionContextUtils.js';\nimport arrayToString from \"../utils/arrayToString.js\";\nimport HashSet from \"../misc/HashSet.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n/**\n * Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n * info about the set, with support for combining similar configurations using a\n * graph-structured stack\n */\nexport default class ATNConfigSet {\n\tconstructor(fullCtx) {\n\t\t/**\n\t\t * The reason that we need this is because we don't want the hash map to use\n\t\t * the standard hash code and equals. We need all configurations with the\n\t\t * same\n\t\t * {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t\t * doubles\n\t\t * the number of objects associated with ATNConfigs. The other solution is\n\t\t * to\n\t\t * use a hash table that lets us specify the equals/hashcode operation.\n\t\t * All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t\t * when we go readonly as this set becomes a DFA state\n\t\t */\n\t\tthis.configLookup = new HashSet(hashATNConfig, equalATNConfigs);\n\t\t/**\n\t\t * Indicates that this configuration set is part of a full context\n\t\t * LL prediction. It will be used to determine how to merge $. With SLL\n\t\t * it's a wildcard whereas it is not for LL context merge\n\t\t */\n\t\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t\t/**\n\t\t * Indicates that the set of configurations is read-only. Do not\n\t\t * allow any code to manipulate the set; DFA states will point at\n\t\t * the sets and they must not change. This does not protect the other\n\t\t * fields; in particular, conflictingAlts is set after\n\t\t * we've made this readonly\n\t\t */\n\t\tthis.readOnly = false;\n\t\t// Track the elements as they are added to the set; supports get(i)///\n\t\tthis.configs = [];\n\n\t\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t\t// together, saves recomputation\n\t\t// TODO: can we track conflicts as they are added to save scanning configs\n\t\t// later?\n\t\tthis.uniqueAlt = 0;\n\t\tthis.conflictingAlts = null;\n\n\t\t/**\n\t\t * Used in parser and lexer. In lexer, it indicates we hit a pred\n\t\t * while computing a closure operation. Don't make a DFA state from this\n\t\t */\n\t\tthis.hasSemanticContext = false;\n\t\tthis.dipsIntoOuterContext = false;\n\n\t\tthis.cachedHashCode = -1;\n\t}\n\n\t/**\n\t * Adding a new config means merging contexts with existing configs for\n\t * {@code (s, i, pi, _)}, where {@code s} is the\n\t * {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n\t * {@code pi} is the {@link ATNConfig//semanticContext}. We use\n\t * {@code (s,i,pi)} as key.\n\t *\n\t *

        This method updates {@link //dipsIntoOuterContext} and\n\t * {@link //hasSemanticContext} when necessary.

        \n\t */\n\tadd(config, mergeCache) {\n\t\tif (mergeCache === undefined) {\n\t\t\tmergeCache = null;\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\t\tthis.hasSemanticContext = true;\n\t\t}\n\t\tif (config.reachesIntoOuterContext > 0) {\n\t\t\tthis.dipsIntoOuterContext = true;\n\t\t}\n\t\tconst existing = this.configLookup.add(config);\n\t\tif (existing === config) {\n\t\t\tthis.cachedHashCode = -1;\n\t\t\tthis.configs.push(config); // track order here\n\t\t\treturn true;\n\t\t}\n\t\t// a previous (s,i,pi,_), merge with it and save result\n\t\tconst rootIsWildcard = !this.fullCtx;\n\t\tconst merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t\t/**\n\t\t * no need to check for existing.context, config.context in cache\n\t\t * since only way to create new graphs is \"call rule\" and here. We\n\t\t * cache at both places\n\t\t */\n\t\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t\t// make sure to preserve the precedence filter suppression during the merge\n\t\tif (config.precedenceFilterSuppressed) {\n\t\t\texisting.precedenceFilterSuppressed = true;\n\t\t}\n\t\texisting.context = merged; // replace context; no need to alt mapping\n\t\treturn true;\n\t}\n\n\tgetStates() {\n\t\tconst states = new HashSet();\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tstates.add(this.configs[i].state);\n\t\t}\n\t\treturn states;\n\t}\n\n\tgetPredicates() {\n\t\tconst preds = [];\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst c = this.configs[i].semanticContext;\n\t\t\tif (c !== SemanticContext.NONE) {\n\t\t\t\tpreds.push(c.semanticContext);\n\t\t\t}\n\t\t}\n\t\treturn preds;\n\t}\n\n\toptimizeConfigs(interpreter) {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (this.configLookup.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst config = this.configs[i];\n\t\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t\t}\n\t}\n\n\taddAll(coll) {\n\t\tfor (let i = 0; i < coll.length; i++) {\n\t\t\tthis.add(coll[i]);\n\t\t}\n\t\treturn false;\n\t}\n\n\tequals(other) {\n\t\treturn this === other ||\n\t\t\t(other instanceof ATNConfigSet &&\n\t\t\tequalArrays(this.configs, other.configs) &&\n\t\t\tthis.fullCtx === other.fullCtx &&\n\t\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n\t}\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n\n\tupdateHashCode(hash) {\n\t\tif (this.readOnly) {\n\t\t\tif (this.cachedHashCode === -1) {\n\t\t\t\tthis.cachedHashCode = this.hashCode();\n\t\t\t}\n\t\t\thash.update(this.cachedHashCode);\n\t\t} else {\n\t\t\thash.update(this.hashCode());\n\t\t}\n\t}\n\n\tisEmpty() {\n\t\treturn this.configs.length === 0;\n\t}\n\n\tcontains(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.contains(item);\n\t}\n\n\tcontainsFast(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.containsFast(item);\n\t}\n\n\tclear() {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tthis.configs = [];\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configLookup = new HashSet();\n\t}\n\n\tsetReadonly(readOnly) {\n\t\tthis.readOnly = readOnly;\n\t\tif (readOnly) {\n\t\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn arrayToString(this.configs) +\n\t\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n\t}\n\n\tget items(){\n\t\treturn this.configs;\n\t}\n\n\tget length(){\n\t\treturn this.configs.length;\n\t}\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNConfigSet from \"./ATNConfigSet.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class OrderedATNConfigSet extends ATNConfigSet {\n constructor() {\n super();\n this.configLookup = new HashSet();\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"../state/DecisionState.js\";\nimport ATNConfig from \"./ATNConfig.js\";\n\nexport default class LexerATNConfig extends ATNConfig {\n constructor(params, config) {\n super(params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n const lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n this.equalsForConfigSet = LexerATNConfig.prototype.equals;\n return this;\n }\n\n updateHashCode(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n }\n\n equals(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n super.equals(other));\n }\n\n checkNonGreedyDecision(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport LexerIndexedCustomAction from '../action/LexerIndexedCustomAction.js';\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class LexerActionExecutor {\n\t/**\n\t * Represents an executor for a sequence of lexer actions which traversed during\n\t * the matching operation of a lexer rule (token).\n\t *\n\t *

        The executor tracks position information for position-dependent lexer actions\n\t * efficiently, ensuring that actions appearing only at the end of the rule do\n\t * not cause bloating of the {@link DFA} created for the lexer.

        \n\t */\n\tconstructor(lexerActions) {\n\t\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t\t/**\n\t\t * Caches the result of {@link //hashCode} since the hash code is an element\n\t\t * of the performance-critical {@link LexerATNConfig//hashCode} operation\n\t\t */\n\t\tthis.cachedHashCode = HashCode.hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t\t// lexerActions]))\n\t\treturn this;\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which encodes the current offset\n\t * for position-dependent lexer actions.\n\t *\n\t *

        Normally, when the executor encounters lexer actions where\n\t * {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n\t * {@link IntStream//seek} on the input {@link CharStream} to set the input\n\t * position to the end of the current token. This behavior provides\n\t * for efficient DFA representation of lexer actions which appear at the end\n\t * of a lexer rule, even when the lexer rule matches a variable number of\n\t * characters.

        \n\t *\n\t *

        Prior to traversing a match transition in the ATN, the current offset\n\t * from the token start index is assigned to all position-dependent lexer\n\t * actions which have not already been assigned a fixed offset. By storing\n\t * the offsets relative to the token start index, the DFA representation of\n\t * lexer actions which appear in the middle of tokens remains efficient due\n\t * to sharing among tokens of the same length, regardless of their absolute\n\t * position in the input stream.

        \n\t *\n\t *

        If the current executor already has offsets assigned to all\n\t * position-dependent lexer actions, the method returns {@code this}.

        \n\t *\n\t * @param offset The current offset to assign to all position-dependent\n\t * lexer actions which do not already have offsets assigned.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} which stores input stream offsets\n\t * for all position-dependent lexer actions.\n\t */\n\tfixOffsetBeforeMatch(offset) {\n\t\tlet updatedLexerActions = null;\n\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\t\tif (updatedLexerActions === null) {\n\t\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t\t}\n\t\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\t\tthis.lexerActions[i]);\n\t\t\t}\n\t\t}\n\t\tif (updatedLexerActions === null) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t\t}\n\t}\n\n\t/**\n\t * Execute the actions encapsulated by this executor within the context of a\n\t * particular {@link Lexer}.\n\t *\n\t *

        This method calls {@link IntStream//seek} to set the position of the\n\t * {@code input} {@link CharStream} prior to calling\n\t * {@link LexerAction//execute} on a position-dependent action. Before the\n\t * method returns, the input position will be restored to the same position\n\t * it was in when the method was invoked.

        \n\t *\n\t * @param lexer The lexer instance.\n\t * @param input The input stream which is the source for the current token.\n\t * When this method is called, the current {@link IntStream//index} for\n\t * {@code input} should be the start of the following token, i.e. 1\n\t * character past the end of the current token.\n\t * @param startIndex The token start index. This value may be passed to\n\t * {@link IntStream//seek} to set the {@code input} position to the beginning\n\t * of the token.\n\t */\n\texecute(lexer, input, startIndex) {\n\t\tlet requiresSeek = false;\n\t\tconst stopIndex = input.index;\n\t\ttry {\n\t\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\t\tlet lexerAction = this.lexerActions[i];\n\t\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\t\tconst offset = lexerAction.offset;\n\t\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\t\tinput.seek(stopIndex);\n\t\t\t\t\trequiresSeek = false;\n\t\t\t\t}\n\t\t\t\tlexerAction.execute(lexer);\n\t\t\t}\n\t\t} finally {\n\t\t\tif (requiresSeek) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t}\n\t\t}\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\t\treturn false;\n\t\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\t\treturn false;\n\t\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tconst numActions = this.lexerActions.length\n\t\t\tfor (let idx = 0; idx < numActions; ++idx) {\n\t\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which executes the actions for\n\t * the input {@code lexerActionExecutor} followed by a specified\n\t * {@code lexerAction}.\n\t *\n\t * @param lexerActionExecutor The executor for actions already traversed by\n\t * the lexer while matching a token within a particular\n\t * {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n\t * though it were an empty executor.\n\t * @param lexerAction The lexer action to execute after the actions\n\t * specified in {@code lexerActionExecutor}.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} for executing the combine actions\n\t * of {@code lexerActionExecutor} and {@code lexerAction}.\n\t */\n\tstatic append(lexerActionExecutor, lexerAction) {\n\t\tif (lexerActionExecutor === null) {\n\t\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t\t}\n\t\tconst lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\t\treturn new LexerActionExecutor(lexerActions);\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * This implementation of {@link LexerAction} is used for tracking input offsets\n * for position-dependent actions within a {@link LexerActionExecutor}.\n *\n *

        This action is not serialized as part of the ATN, and is only required for\n * position-dependent lexer actions which appear at a location other than the\n * end of a rule. For more information about DFA optimizations employed for\n * lexer actions, see {@link LexerActionExecutor//append} and\n * {@link LexerActionExecutor//fixOffsetBeforeMatch}.

        \n *\n * Constructs a new indexed custom action by associating a character offset\n * with a {@link LexerAction}.\n *\n *

        Note: This class is only required for lexer actions for which\n * {@link LexerAction//isPositionDependent} returns {@code true}.

        \n *\n * @param offset The offset into the input {@link CharStream}, relative to\n * the token start index, at which the specified lexer action should be\n * executed.\n * @param action The lexer action to execute at a particular offset in the\n * input {@link CharStream}.\n */\nimport LexerAction from \"./LexerAction.js\";\n\n\nexport default class LexerIndexedCustomAction extends LexerAction {\n constructor(offset, action) {\n super(action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n }\n\n /**\n *

        This method calls {@link //execute} on the result of {@link //getAction}\n * using the provided {@code lexer}.

        \n */\n execute(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n }\n\n updateHashCode(hash) {\n hash.update(this.actionType, this.offset, this.action);\n }\n\n equals(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport ATNState from '../state/ATNState.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport ATNConfig from './ATNConfig.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport Token from '../Token.js';\nimport DFAState from '../dfa/DFAState.js';\nimport PredPrediction from '../dfa/PredPrediction.js';\nimport ATNSimulator from './ATNSimulator.js';\nimport PredictionMode from './PredictionMode.js';\nimport RuleContext from '../context/RuleContext.js';\nimport SemanticContext from './SemanticContext.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport Interval from '../misc/Interval.js';\nimport Transition from '../transition/Transition.js';\nimport SetTransition from '../transition/SetTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport ActionTransition from '../transition/ActionTransition.js';\nimport NoViableAltException from '../error/NoViableAltException.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport { predictionContextFromRuleContext } from '../context/PredictionContextUtils.js';\nimport AtomTransition from \"../transition/AtomTransition.js\";\nimport arrayToString from \"../utils/arrayToString.js\";\nimport BitSet from \"../misc/BitSet.js\";\nimport DoubleDict from \"../utils/DoubleDict.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n/**\n * The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n *\n *

        \n * The basic complexity of the adaptive strategy makes it harder to understand.\n * We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n * requests go through the DFA first. If they reach a state without an edge for\n * the current symbol, the algorithm fails over to the ATN simulation to\n * complete the DFA path for the current input (until it finds a conflict state\n * or uniquely predicting state).

        \n *\n *

        \n * All of that is done without using the outer context because we want to create\n * a DFA that is not dependent upon the rule invocation stack when we do a\n * prediction. One DFA works in all contexts. We avoid using context not\n * necessarily because it's slower, although it can be, but because of the DFA\n * caching problem. The closure routine only considers the rule invocation stack\n * created during prediction beginning in the decision rule. For example, if\n * prediction occurs without invoking another rule's ATN, there are no context\n * stacks in the configurations. When lack of context leads to a conflict, we\n * don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n * strategy (versus full LL(*)).

        \n *\n *

        \n * When SLL yields a configuration set with conflict, we rewind the input and\n * retry the ATN simulation, this time using full outer context without adding\n * to the DFA. Configuration context stacks will be the full invocation stacks\n * from the start rule. If we get a conflict using full context, then we can\n * definitively say we have a true ambiguity for that input sequence. If we\n * don't get a conflict, it implies that the decision is sensitive to the outer\n * context. (It is not context-sensitive in the sense of context-sensitive\n * grammars.)

        \n *\n *

        \n * The next time we reach this DFA state with an SLL conflict, through DFA\n * simulation, we will again retry the ATN simulation using full context mode.\n * This is slow because we can't save the results and have to \"interpret\" the\n * ATN each time we get that input.

        \n *\n *

        \n * CACHING FULL CONTEXT PREDICTIONS

        \n *\n *

        \n * We could cache results from full context to predicted alternative easily and\n * that saves a lot of time but doesn't work in presence of predicates. The set\n * of visible predicates from the ATN start state changes depending on the\n * context, because closure can fall off the end of a rule. I tried to cache\n * tuples (stack context, semantic context, predicted alt) but it was slower\n * than interpreting and much more complicated. Also required a huge amount of\n * memory. The goal is not to create the world's fastest parser anyway. I'd like\n * to keep this algorithm simple. By launching multiple threads, we can improve\n * the speed of parsing across a large number of files.

        \n *\n *

        \n * There is no strict ordering between the amount of input used by SLL vs LL,\n * which makes it really hard to build a cache for full context. Let's say that\n * we have input A B C that leads to an SLL conflict with full context X. That\n * implies that using X we might only use A B but we could also use A B C D to\n * resolve conflict. Input A B C D could predict alternative 1 in one position\n * in the input and A B C E could predict alternative 2 in another position in\n * input. The conflicting SLL configurations could still be non-unique in the\n * full context prediction, which would lead us to requiring more input than the\n * original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n * input\tused during the previous prediction. That amounts to a cache that maps\n * X to a specific DFA for that context.

        \n *\n *

        \n * Something should be done for left-recursive expression predictions. They are\n * likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n * with full LL thing Sam does.

        \n *\n *

        \n * AVOIDING FULL CONTEXT PREDICTION

        \n *\n *

        \n * We avoid doing full context retry when the outer context is empty, we did not\n * dip into the outer context by falling off the end of the decision state rule,\n * or when we force SLL mode.

        \n *\n *

        \n * As an example of the not dip into outer context case, consider as super\n * constructor calls versus function calls. One grammar might look like\n * this:

        \n *\n *
        \n * ctorBody\n *   : '{' superCall? stat* '}'\n *   ;\n * 
        \n *\n *

        \n * Or, you might see something like

        \n *\n *
        \n * stat\n *   : superCall ';'\n *   | expression ';'\n *   | ...\n *   ;\n * 
        \n *\n *

        \n * In both cases I believe that no closure operations will dip into the outer\n * context. In the first case ctorBody in the worst case will stop at the '}'.\n * In the 2nd case it should stop at the ';'. Both cases should stay within the\n * entry rule and not dip into the outer context.

        \n *\n *

        \n * PREDICATES

        \n *\n *

        \n * Predicates are always evaluated if present in either SLL or LL both. SLL and\n * LL simulation deals with predicates differently. SLL collects predicates as\n * it performs closure operations like ANTLR v3 did. It delays predicate\n * evaluation until it reaches and accept state. This allows us to cache the SLL\n * ATN simulation whereas, if we had evaluated predicates on-the-fly during\n * closure, the DFA state configuration sets would be different and we couldn't\n * build up a suitable DFA.

        \n *\n *

        \n * When building a DFA accept state during ATN simulation, we evaluate any\n * predicates and return the sole semantically valid alternative. If there is\n * more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n * we throw an exception. Alternatives without predicates act like they have\n * true predicates. The simple way to think about it is to strip away all\n * alternatives with false predicates and choose the minimum alternative that\n * remains.

        \n *\n *

        \n * When we start in the DFA and reach an accept state that's predicated, we test\n * those and return the minimum semantically viable alternative. If no\n * alternatives are viable, we throw an exception.

        \n *\n *

        \n * During full LL ATN simulation, closure always evaluates predicates and\n * on-the-fly. This is crucial to reducing the configuration set size during\n * closure. It hits a landmine when parsing with the Java grammar, for example,\n * without this on-the-fly evaluation.

        \n *\n *

        \n * SHARING DFA

        \n *\n *

        \n * All instances of the same parser share the same decision DFAs through a\n * static field. Each instance gets its own ATN simulator but they share the\n * same {@link //decisionToDFA} field. They also share a\n * {@link PredictionContextCache} object that makes sure that all\n * {@link PredictionContext} objects are shared among the DFA states. This makes\n * a big size difference.

        \n *\n *

        \n * THREAD SAFETY

        \n *\n *

        \n * The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n * it adds a new DFA object to that array. {@link //addDFAEdge}\n * locks on the DFA for the current decision when setting the\n * {@link DFAState//edges} field. {@link //addDFAState} locks on\n * the DFA for the current decision when looking up a DFA state to see if it\n * already exists. We must make sure that all requests to add DFA states that\n * are equivalent result in the same shared DFA object. This is because lots of\n * threads will be trying to update the DFA at once. The\n * {@link //addDFAState} method also locks inside the DFA lock\n * but this time on the shared context cache when it rebuilds the\n * configurations' {@link PredictionContext} objects using cached\n * subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n * safe as long as we can guarantee that all threads referencing\n * {@code s.edge[t]} get the same physical target {@link DFAState}, or\n * {@code null}. Once into the DFA, the DFA simulation does not reference the\n * {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n * targets. The DFA simulator will either find {@link DFAState//edges} to be\n * {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n * {@code dfa.edges[t]} to be non-null. The\n * {@link //addDFAEdge} method could be racing to set the field\n * but in either case the DFA simulator works; if {@code null}, and requests ATN\n * simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n * way it will work because it's not doing a test and set operation.

        \n *\n *

        \n * Starting with SLL then failing to combined SLL/LL (Two-Stage\n * Parsing)

        \n *\n *

        \n * Sam pointed out that if SLL does not give a syntax error, then there is no\n * point in doing full LL, which is slower. We only have to try LL if we get a\n * syntax error. For maximum speed, Sam starts the parser set to pure SLL\n * mode with the {@link BailErrorStrategy}:

        \n *\n *
        \n * parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n * parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n * 
        \n *\n *

        \n * If it does not get a syntax error, then we're done. If it does get a syntax\n * error, we need to retry with the combined SLL/LL strategy.

        \n *\n *

        \n * The reason this works is as follows. If there are no SLL conflicts, then the\n * grammar is SLL (at least for that input set). If there is an SLL conflict,\n * the full LL analysis must yield a set of viable alternatives which is a\n * subset of the alternatives reported by SLL. If the LL set is a singleton,\n * then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n * set, the decision is SLL. If the LL set has size > 1, then that decision\n * is truly ambiguous on the current input. If the LL set is smaller, then the\n * SLL conflict resolution might choose an alternative that the full LL would\n * rule out as a possibility based upon better context information. If that's\n * the case, then the SLL parse will definitely get an error because the full LL\n * analysis says it's not viable. If SLL conflict resolution chooses an\n * alternative within the LL set, them both SLL and LL would choose the same\n * alternative because they both choose the minimum of multiple conflicting\n * alternatives.

        \n *\n *

        \n * Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n * a smaller LL set called s. If s is {@code {2, 3}}, then SLL\n * parsing will get an error because SLL will pursue alternative 1. If\n * s is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n * choose the same alternative because alternative one is the minimum of either\n * set. If s is {@code {2}} or {@code {3}} then SLL will get a syntax\n * error. If s is {@code {1}} then SLL will succeed.

        \n *\n *

        \n * Of course, if the input is invalid, then we will get an error for sure in\n * both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n * the input.

        \n */\nexport default class ParserATNSimulator extends ATNSimulator {\n constructor(parser, atn, decisionToDFA, sharedContextCache) {\n super(atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n /**\n * Each prediction operation uses a cache for merge of prediction contexts.\n * Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n * isn't synchronized but we're ok since two threads shouldn't reuse same\n * parser/atnsim object because it can only handle one input at a time.\n * This maps graphs a and b to merged result c. (a,b)→c. We can avoid\n * the merge if we ever see a and b again. Note that (b,a)→c should\n * also be examined during cache lookup.\n */\n this.mergeCache = null;\n this.debug = false;\n this.debug_closure = false;\n this.debug_add = false;\n this.debug_list_atn_decisions = false;\n this.dfa_debug = false;\n this.retry_debug = false;\n }\n\n reset() {}\n\n adaptivePredict(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n const dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n const m = input.mark();\n const index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n let s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n const fullCtx = false;\n let s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n const alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames, this.parser.symbolicNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n }\n\n /**\n * Performs ATN simulation to compute a predicted alternative based\n * upon the remaining input, but also updates the DFA cache to avoid\n * having to traverse the ATN again for the same input sequence.\n *\n * There are some key conditions we're looking for after computing a new\n * set of ATN configs (proposed DFA state):\n * if the set is empty, there is no viable alternative for current symbol\n * does the state uniquely predict an alternative?\n * does the state have a conflict that would prevent us from\n * putting it on the work list?\n *\n * We also have some key operations to do:\n * add an edge from previous DFA state to potentially new DFA state, D,\n * upon current symbol but only if adding to work list, which means in all\n * cases except no viable alternative (and possibly non-greedy decisions?)\n * collecting predicates and adding semantic context to DFA accept states\n * adding rule context to context-sensitive DFA accept states\n * consuming an input symbol\n * reporting a conflict\n * reporting an ambiguity\n * reporting a context sensitivity\n * reporting insufficient predicates\n *\n * cover these cases:\n * dead end\n * single alt\n * single alt + preds\n * conflict\n * conflict + preds\n *\n */\n execATN(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n let alt;\n let previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n let t = input.LA(1);\n for(;;) { // while more work\n let D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n const e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n let conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n const conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n const fullCtx = true;\n const s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n const stopIndex = input.index;\n input.seek(startIndex);\n const alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n }\n\n /**\n * Get an existing target state for an edge in the DFA. If the target state\n * for the edge has not yet been computed or is otherwise not available,\n * this method returns {@code null}.\n *\n * @param previousD The current DFA state\n * @param t The next input symbol\n * @return The existing target DFA state for the given input symbol\n * {@code t}, or {@code null} if the target state for this edge is not\n * already cached\n */\n getExistingTargetState(previousD, t) {\n const edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n }\n\n /**\n * Compute a target state for an edge in the DFA, and attempt to add the\n * computed state and corresponding edge to the DFA.\n *\n * @param dfa The DFA\n * @param previousD The current DFA state\n * @param t The next input symbol\n *\n * @return The computed target DFA state for the given input symbol\n * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n * returns {@link //ERROR\n */\n computeTargetState(dfa, previousD, t) {\n const reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n let D = new DFAState(null, reach);\n\n const predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + arrayToString(altSubSets) +\n /*\", previous=\" + previousD.configs + */\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n }\n\n predicateDFAState(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n const nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n const altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n const altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n }\n\n// comes back with reach.uniqueAlt set to a valid alt\n execATNWithFullContext(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n const fullCtx = true;\n let foundExactAmbig = false;\n let reach;\n let previous = s0;\n input.seek(startIndex);\n let t = input.LA(1);\n let predictedAlt = -1;\n for (;;) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n const e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n const alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n }\n\n computeReachSet(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n const intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n let skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (let i=0; iWhen {@code lookToEndOfRule} is true, this method uses\n * {@link ATN//nextTokens} for each configuration in {@code configs} which is\n * not already in a rule stop state to see if a rule stop state is reachable\n * from the configuration via epsilon-only transitions.

        \n *\n * @param configs the configuration set to update\n * @param lookToEndOfRule when true, this method checks for rule stop states\n * reachable by epsilon-only transitions from each configuration in\n * {@code configs}.\n *\n * @return {@code configs} if all configurations in {@code configs} are in a\n * rule stop state, otherwise return a new configuration set containing only\n * the configurations from {@code configs} which are in a rule stop state\n */\n removeAllConfigsNotInRuleStopState(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n const result = new ATNConfigSet(configs.fullCtx);\n for(let i=0; i\n *
      • Evaluate the precedence predicates for each configuration using\n * {@link SemanticContext//evalPrecedence}.
      • \n *
      • Remove all configurations which predict an alternative greater than\n * 1, for which another configuration that predicts alternative 1 is in the\n * same ATN state with the same prediction context. This transformation is\n * valid for the following reasons:\n *
          \n *
        • The closure block cannot contain any epsilon transitions which bypass\n * the body of the closure, so all states reachable via alternative 1 are\n * part of the precedence alternatives of the transformed left-recursive\n * rule.
        • \n *
        • The \"primary\" portion of a left recursive rule cannot contain an\n * epsilon transition, so the only way an alternative other than 1 can exist\n * in a state that is also reachable via alternative 1 is by nesting calls\n * to the left-recursive rule, with the outer calls not being at the\n * preferred precedence level.
        • \n *
        \n *
      • \n * \n *\n *

        \n * The prediction context must be considered by this filter to address\n * situations like the following.\n *

        \n * \n *
        \n     * grammar TA;\n     * prog: statement* EOF;\n     * statement: letterA | statement letterA 'b' ;\n     * letterA: 'a';\n     * 
        \n *
        \n *

        \n * If the above grammar, the ATN state immediately before the token\n * reference {@code 'a'} in {@code letterA} is reachable from the left edge\n * of both the primary and closure blocks of the left-recursive rule\n * {@code statement}. The prediction context associated with each of these\n * configurations distinguishes between them, and prevents the alternative\n * which stepped out to {@code prog} (and then back in to {@code statement}\n * from being eliminated by the filter.\n *

        \n *\n * @param configs The configuration set computed by\n * {@link //computeStartState} as the start state for the DFA.\n * @return The transformed configuration set representing the start state\n * for a precedence DFA at a particular precedence level (determined by\n * calling {@link Parser//getPrecedence})\n */\n applyPrecedenceFilter(configs) {\n let config;\n const statesFromAlt1 = [];\n const configSet = new ATNConfigSet(configs.fullCtx);\n for(let i=0; i1\n // (basically a graph subtraction algorithm).\n if (!config.precedenceFilterSuppressed) {\n const context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n }\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n }\n\n getReachableTarget(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n }\n\n getPredsForAmbigAlts(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n let altToPred = [];\n for(let i=0;i\n * The default implementation of this method uses the following\n * algorithm to identify an ATN configuration which successfully parsed the\n * decision entry rule. Choosing such an alternative ensures that the\n * {@link ParserRuleContext} returned by the calling rule will be complete\n * and valid, and the syntax error will be reported later at a more\n * localized location.

        \n *\n *
          \n *
        • If a syntactically valid path or paths reach the end of the decision rule and\n * they are semantically valid if predicated, return the min associated alt.
        • \n *
        • Else, if a semantically invalid but syntactically valid path exist\n * or paths exist, return the minimum associated alt.\n *
        • \n *
        • Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.
        • \n *
        \n *\n *

        \n * In some scenarios, the algorithm described above could predict an\n * alternative which will result in a {@link FailedPredicateException} in\n * the parser. Specifically, this could occur if the only configuration\n * capable of successfully parsing to the end of the decision rule is\n * blocked by a semantic predicate. By choosing this alternative within\n * {@link //adaptivePredict} instead of throwing a\n * {@link NoViableAltException}, the resulting\n * {@link FailedPredicateException} in the parser will identify the specific\n * predicate which is preventing the parser from successfully parsing the\n * decision rule, which helps developers identify and correct logic errors\n * in semantic predicates.\n *

        \n *\n * @param configs The ATN configurations which were valid immediately before\n * the {@link //ERROR} state was reached\n * @param outerContext The is the \\gamma_0 initial parser context from the paper\n * or the parser stack at the instant before prediction commences.\n *\n * @return The value to return from {@link //adaptivePredict}, or\n * {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n * identified and {@link //adaptivePredict} should report an error instead\n */\n getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs, outerContext) {\n const cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n const semValidConfigs = cfgs[0];\n const semInvalidConfigs = cfgs[1];\n let alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n }\n\n getAltThatFinishedDecisionEntryRule(configs) {\n const alts = [];\n for(let i=0;i0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n }\n\n /**\n * Walk the list of configurations and split them according to\n * those that have preds evaluating to true/false. If no pred, assume\n * true pred and include in succeeded set. Returns Pair of sets.\n *\n * Create a new set so as not to alter the incoming parameter.\n *\n * Assumption: the input stream has been restored to the starting point\n * prediction, which is where predicates need to evaluate.*/\n splitAccordingToSemanticValidity( configs, outerContext) {\n const succeeded = new ATNConfigSet(configs.fullCtx);\n const failed = new ATNConfigSet(configs.fullCtx);\n for(let i=0;i50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for (let i =0; i 0.\n if (this._dfa !== null && this._dfa.precedenceDfa) {\n if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n c.precedenceFilterSuppressed = true;\n }\n }\n\n c.reachesIntoOuterContext += 1;\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else {\n if (!t.isEpsilon && closureBusy.add(c)!==c){\n // avoid infinite recursion for EOF* and EOF+\n continue;\n }\n if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n }\n\n canDropLoopEntryEdgeInLeftRecursiveRule(config) {\n // return False\n const p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType !== ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType !== ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n const numCtxs = config.context.length;\n for(let i=0; i=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"\";\n }\n }\n\n getEpsilonTarget(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n return null;\n }\n }\n\n actionTransition(config, t) {\n if (this.debug) {\n const index = t.actionIndex === -1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n }\n\n precedenceTransition(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n let c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n const currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n }\n\n predTransition(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n let c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n const currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n }\n\n ruleTransition(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n const returnState = t.followState;\n const newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n }\n\n getConflictingAlts(configs) {\n const altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n }\n\n /**\n * Sam pointed out a problem with the previous definition, v3, of\n * ambiguous states. If we have another state associated with conflicting\n * alternatives, we should keep going. For example, the following grammar\n *\n * s : (ID | ID ID?) ';' ;\n *\n * When the ATN simulation reaches the state before ';', it has a DFA\n * state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n * 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n * because alternative to has another way to continue, via [6|2|[]].\n * The key is that we have a single state that has config's only associated\n * with a single alternative, 2, and crucially the state transitions\n * among the configurations are all non-epsilon transitions. That means\n * we don't consider any conflicts that include alternative 2. So, we\n * ignore the conflict between alts 1 and 2. We ignore a set of\n * conflicting alts when there is an intersection with an alternative\n * associated with a single alt state in the state→config-list map.\n *\n * It's also the case that we might have two conflicting configurations but\n * also a 3rd nonconflicting configuration for a different alternative:\n * [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n *\n * a : A | A | A B ;\n *\n * After matching input A, we reach the stop state for rule A, state 1.\n * State 8 is the state right before B. Clearly alternatives 1 and 2\n * conflict and no amount of further lookahead will separate the two.\n * However, alternative 3 will be able to continue and so we do not\n * stop working on this state. In the previous example, we're concerned\n * with states associated with the conflicting alternatives. Here alt\n * 3 is not associated with the conflicting configs, but since we can continue\n * looking for input reasonably, I don't declare the state done. We\n * ignore a set of conflicting alts when we have an alternative\n * that we still need to pursue\n */\n getConflictingAltsOrUniqueAlt(configs) {\n let conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n }\n\n getTokenName(t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n const name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n }\n\n getLookaheadName(input) {\n return this.getTokenName(input.LA(1));\n }\n\n /**\n * Used for debugging in adaptivePredict around execATN but I cut\n * it out for clarity now that alg. works well. We can leave this\n * \"dead\" code for a bit\n */\n dumpDeadEndConfigs(nvae) {\n console.log(\"dead end configs: \");\n const decs = nvae.getDeadEndConfigs();\n for(let i=0; i0) {\n const t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n const neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n }\n\n noViableAlt(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n }\n\n getUniqueAlt(configs) {\n let alt = ATN.INVALID_ALT_NUMBER;\n for(let i=0;iIf {@code to} is {@code null}, this method returns {@code null}.\n * Otherwise, this method returns the {@link DFAState} returned by calling\n * {@link //addDFAState} for the {@code to} state.

        \n *\n * @param dfa The DFA\n * @param from_ The source state for the edge\n * @param t The input symbol\n * @param to The target state for the edge\n *\n * @return If {@code to} is {@code null}, this method returns {@code null};\n * otherwise this method returns the result of calling {@link //addDFAState}\n * on {@code to}\n */\n addDFAEdge(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n const literalNames = this.parser===null ? null : this.parser.literalNames;\n const symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n }\n\n /**\n * Add state {@code D} to the DFA if it is not already present, and return\n * the actual instance stored in the DFA. If a state equivalent to {@code D}\n * is already in the DFA, the existing state is returned. Otherwise this\n * method returns {@code D} after adding it to the DFA.\n *\n *

        If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n * does not change the DFA.

        \n *\n * @param dfa The dfa\n * @param D The DFA state to add\n * @return The state stored in the DFA. This will be either the existing\n * state if {@code D} is already in the DFA, or {@code D} itself if the\n * state was not already present\n */\n addDFAState(dfa, D) {\n if (D === ATNSimulator.ERROR) {\n return D;\n }\n const existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n }\n\n reportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n }\n\n reportContextSensitivity(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n }\n\n // If context sensitive parsing, we know it's ambiguity not conflict//\n reportAmbiguity(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n const interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * Map a predicate to a predicted alternative.\n */\nexport default class PredPrediction {\n constructor(pred, alt) {\n this.alt = alt;\n this.pred = pred;\n }\n\n toString() {\n return \"(\" + this.pred + \", \" + this.alt + \")\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport ATNConfig from './ATNConfig.js';\nimport SemanticContext from './SemanticContext.js';\nimport BitSet from \"../misc/BitSet.js\";\nimport AltDict from \"../misc/AltDict.js\";\nimport HashCode from \"../misc/HashCode.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * This enumeration defines the prediction modes available in ANTLR 4 along with\n * utility methods for analyzing configuration sets for conflicts and/or\n * ambiguities.\n */\nconst PredictionMode = {\n /**\n * The SLL(*) prediction mode. This prediction mode ignores the current\n * parser context when making predictions. This is the fastest prediction\n * mode, and provides correct results for many grammars. This prediction\n * mode is more powerful than the prediction mode provided by ANTLR 3, but\n * may result in syntax errors for grammar and input combinations which are\n * not SLL.\n *\n *

        \n * When using this prediction mode, the parser will either return a correct\n * parse tree (i.e. the same parse tree that would be returned with the\n * {@link //LL} prediction mode), or it will report a syntax error. If a\n * syntax error is encountered when using the {@link //SLL} prediction mode,\n * it may be due to either an actual syntax error in the input or indicate\n * that the particular combination of grammar and input requires the more\n * powerful {@link //LL} prediction abilities to complete successfully.

        \n *\n *

        \n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

        \n */\n SLL: 0,\n\n /**\n * The LL(*) prediction mode. This prediction mode allows the current parser\n * context to be used for resolving SLL conflicts that occur during\n * prediction. This is the fastest prediction mode that guarantees correct\n * parse results for all combinations of grammars with syntactically correct\n * inputs.\n *\n *

        \n * When using this prediction mode, the parser will make correct decisions\n * for all syntactically-correct grammar and input combinations. However, in\n * cases where the grammar is truly ambiguous this prediction mode might not\n * report a precise answer for exactly which alternatives are\n * ambiguous.

        \n *\n *

        \n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

        \n */\n LL: 1,\n\n /**\n *\n * The LL(*) prediction mode with exact ambiguity detection. In addition to\n * the correctness guarantees provided by the {@link //LL} prediction mode,\n * this prediction mode instructs the prediction algorithm to determine the\n * complete and exact set of ambiguous alternatives for every ambiguous\n * decision encountered while parsing.\n *\n *

        \n * This prediction mode may be used for diagnosing ambiguities during\n * grammar development. Due to the performance overhead of calculating sets\n * of ambiguous alternatives, this prediction mode should be avoided when\n * the exact results are not necessary.

        \n *\n *

        \n * This prediction mode does not provide any guarantees for prediction\n * behavior for syntactically-incorrect inputs.

        \n */\n LL_EXACT_AMBIG_DETECTION: 2,\n\n /**\n *\n * Computes the SLL prediction termination condition.\n *\n *

        \n * This method computes the SLL prediction termination condition for both of\n * the following cases.

        \n *\n *
          \n *
        • The usual SLL+LL fallback upon SLL conflict
        • \n *
        • Pure SLL without LL fallback
        • \n *
        \n *\n *

        COMBINED SLL+LL PARSING

        \n *\n *

        When LL-fallback is enabled upon SLL conflict, correct predictions are\n * ensured regardless of how the termination condition is computed by this\n * method. Due to the substantially higher cost of LL prediction, the\n * prediction should only fall back to LL when the additional lookahead\n * cannot lead to a unique SLL prediction.

        \n *\n *

        Assuming combined SLL+LL parsing, an SLL configuration set with only\n * conflicting subsets should fall back to full LL, even if the\n * configuration sets don't resolve to the same alternative (e.g.\n * {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n * configuration, SLL could continue with the hopes that more lookahead will\n * resolve via one of those non-conflicting configurations.

        \n *\n *

        Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n * stops when it sees only conflicting configuration subsets. In contrast,\n * full LL keeps going when there is uncertainty.

        \n *\n *

        HEURISTIC

        \n *\n *

        As a heuristic, we stop prediction when we see any conflicting subset\n * unless we see a state that only has one alternative associated with it.\n * The single-alt-state thing lets prediction continue upon rules like\n * (otherwise, it would admit defeat too soon):

        \n *\n *

        {@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}

        \n *\n *

        When the ATN simulation reaches the state before {@code ';'}, it has a\n * DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n * {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n * processing this node because alternative to has another way to continue,\n * via {@code [6|2|[]]}.

        \n *\n *

        It also let's us continue for this rule:

        \n *\n *

        {@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}

        \n *\n *

        After matching input A, we reach the stop state for rule A, state 1.\n * State 8 is the state right before B. Clearly alternatives 1 and 2\n * conflict and no amount of further lookahead will separate the two.\n * However, alternative 3 will be able to continue and so we do not stop\n * working on this state. In the previous example, we're concerned with\n * states associated with the conflicting alternatives. Here alt 3 is not\n * associated with the conflicting configs, but since we can continue\n * looking for input reasonably, don't declare the state done.

        \n *\n *

        PURE SLL PARSING

        \n *\n *

        To handle pure SLL parsing, all we have to do is make sure that we\n * combine stack contexts for configurations that differ only by semantic\n * predicate. From there, we can do the usual SLL termination heuristic.

        \n *\n *

        PREDICATES IN SLL+LL PARSING

        \n *\n *

        SLL decisions don't evaluate predicates until after they reach DFA stop\n * states because they need to create the DFA cache that works in all\n * semantic situations. In contrast, full LL evaluates predicates collected\n * during start state computation so it can ignore predicates thereafter.\n * This means that SLL termination detection can totally ignore semantic\n * predicates.

        \n *\n *

        Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n * semantic predicate contexts so we might see two configurations like the\n * following.

        \n *\n *

        {@code (s, 1, x, {}), (s, 1, x', {p})}

        \n *\n *

        Before testing these configurations against others, we have to merge\n * {@code x} and {@code x'} (without modifying the existing configurations).\n * For example, we test {@code (x+x')==x''} when looking for conflicts in\n * the following configurations.

        \n *\n *

        {@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}

        \n *\n *

        If the configuration set has predicates (as indicated by\n * {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n * the configurations to strip out all of the predicates so that a standard\n * {@link ATNConfigSet} will merge everything ignoring predicates.

        \n */\n hasSLLConflictTerminatingPrediction: function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n const dup = new ATNConfigSet();\n for(let i=0;iCan we stop looking ahead during ATN simulation or is there some\n * uncertainty as to which alternative we will ultimately pick, after\n * consuming more input? Even if there are partial conflicts, we might know\n * that everything is going to resolve to the same minimum alternative. That\n * means we can stop since no more lookahead will change that fact. On the\n * other hand, there might be multiple conflicts that resolve to different\n * minimums. That means we need more look ahead to decide which of those\n * alternatives we should predict.

        \n *\n *

        The basic idea is to split the set of configurations {@code C}, into\n * conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n * non-conflicting configurations. Two configurations conflict if they have\n * identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n * but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n * and {@code (s, j, ctx, _)} for {@code i!=j}.

        \n *\n *

        Reduce these configuration subsets to the set of possible alternatives.\n * You can compute the alternative subsets in one pass as follows:

        \n *\n *

        {@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n * {@code C} holding {@code s} and {@code ctx} fixed.

        \n *\n *

        Or in pseudo-code, for each configuration {@code c} in {@code C}:

        \n *\n *
        \n     * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n     * alt and not pred\n     * 
        \n *\n *

        The values in {@code map} are the set of {@code A_s,ctx} sets.

        \n *\n *

        If {@code |A_s,ctx|=1} then there is no conflict associated with\n * {@code s} and {@code ctx}.

        \n *\n *

        Reduce the subsets to singletons by choosing a minimum of each subset. If\n * the union of these alternative subsets is a singleton, then no amount of\n * more lookahead will help us. We will always pick that alternative. If,\n * however, there is more than one alternative, then we are uncertain which\n * alternative to predict and must continue looking for resolution. We may\n * or may not discover an ambiguity in the future, even if there are no\n * conflicting subsets this round.

        \n *\n *

        The biggest sin is to terminate early because it means we've made a\n * decision but were uncertain as to the eventual outcome. We haven't used\n * enough lookahead. On the other hand, announcing a conflict too late is no\n * big deal; you will still have the conflict. It's just inefficient. It\n * might even look until the end of file.

        \n *\n *

        No special consideration for semantic predicates is required because\n * predicates are evaluated on-the-fly for full LL prediction, ensuring that\n * no configuration contains a semantic context during the termination\n * check.

        \n *\n *

        CONFLICTING CONFIGS

        \n *\n *

        Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n * when {@code i!=j} but {@code x=x'}. Because we merge all\n * {@code (s, i, _)} configurations together, that means that there are at\n * most {@code n} configurations associated with state {@code s} for\n * {@code n} possible alternatives in the decision. The merged stacks\n * complicate the comparison of configuration contexts {@code x} and\n * {@code x'}. Sam checks to see if one is a subset of the other by calling\n * merge and checking to see if the merged result is either {@code x} or\n * {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n * is the superset, then {@code i} is the only possible prediction since the\n * others resolve to {@code min(i)} as well. However, if {@code x} is\n * associated with {@code j>i} then at least one stack configuration for\n * {@code j} is not in conflict with alternative {@code i}. The algorithm\n * should keep going, looking for more lookahead due to the uncertainty.

        \n *\n *

        For simplicity, I'm doing a equality check between {@code x} and\n * {@code x'} that lets the algorithm continue to consume lookahead longer\n * than necessary. The reason I like the equality is of course the\n * simplicity but also because that is the test you need to detect the\n * alternatives that are actually in conflict.

        \n *\n *

        CONTINUE/STOP RULE

        \n *\n *

        Continue if union of resolved alternative sets from non-conflicting and\n * conflicting alternative subsets has more than one alternative. We are\n * uncertain about which alternative to predict.

        \n *\n *

        The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n * alternatives are still in the running for the amount of input we've\n * consumed at this point. The conflicting sets let us to strip away\n * configurations that won't lead to more states because we resolve\n * conflicts to the configuration with a minimum alternate for the\n * conflicting set.

        \n *\n *

        CASES

        \n *\n *
          \n *\n *
        • no conflicts and more than 1 alternative in set => continue
        • \n *\n *
        • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n * {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n * {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n * {@code {1,3}} => continue\n *
        • \n *\n *
        • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n * {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n * {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n * {@code {1}} => stop and predict 1
        • \n *\n *
        • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n * {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {1}} = {@code {1}} => stop and predict 1, can announce\n * ambiguity {@code {1,2}}
        • \n *\n *
        • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n * {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {2}} = {@code {1,2}} => continue
        • \n *\n *
        • {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n * {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n * {@code {3}} = {@code {1,3}} => continue
        • \n *\n *
        \n *\n *

        EXACT AMBIGUITY DETECTION

        \n *\n *

        If all states report the same conflicting set of alternatives, then we\n * know we have the exact ambiguity set.

        \n *\n *

        |A_i|>1 and\n * A_i = A_j for all i, j.

        \n *\n *

        In other words, we continue examining lookahead until all {@code A_i}\n * have more than one alternative and all {@code A_i} are the same. If\n * {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n * because the resolved set is {@code {1}}. To determine what the real\n * ambiguity is, we have to know whether the ambiguity is between one and\n * two or one and three so we keep going. We can only stop prediction when\n * we need exact ambiguity detection when the sets look like\n * {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...

        \n */\n resolvesToJustOneViableAlt: function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n },\n\n /**\n * Determines if every alternative subset in {@code altsets} contains more\n * than one alternative.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if every {@link BitSet} in {@code altsets} has\n * {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n */\n allSubsetsConflict: function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n },\n /**\n * Determines if any single alternative subset in {@code altsets} contains\n * exactly one alternative.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if {@code altsets} contains a {@link BitSet} with\n * {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n */\n hasNonConflictingAltSet: function(altsets) {\n for(let i=0;i1) {\n return true;\n }\n }\n return false;\n },\n\n\n /**\n * Determines if every alternative subset in {@code altsets} is equivalent.\n *\n * @param altsets a collection of alternative subsets\n * @return {@code true} if every member of {@code altsets} is equal to the\n * others, otherwise {@code false}\n */\n allSubsetsEqual: function(altsets) {\n let first = null;\n for(let i=0;i\n * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n * alt and not pred\n * \n */\n getConflictingAltSubsets: function(configs) {\n const configToAlts = new HashMap();\n configToAlts.hashFunction = function(cfg) { HashCode.hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber === c2.state.stateNumber && c1.context.equals(c2.context);};\n configs.items.map(function(cfg) {\n let alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.set(cfg, alts);\n }\n alts.add(cfg.alt);\n });\n return configToAlts.getValues();\n },\n\n /**\n * Get a map from state to alt subset from a configuration set. For each\n * configuration {@code c} in {@code configs}:\n *\n *
        \n     * map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n     * 
        \n */\n getStateToAltMap: function(configs) {\n const m = new AltDict();\n configs.items.map(function(c) {\n let alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.set(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n },\n\n hasStateAssociatedWithOneAlt: function(configs) {\n const values = PredictionMode.getStateToAltMap(configs).values();\n for(let i=0;i key.startsWith(\"k-\")).map(key => this.data[key], this);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * Indicates that the parser could not decide which of two or more paths\n * to take based upon the remaining input. It tracks the starting token\n * of the offending input and also knows where the parser was\n * in the various paths when the error. Reported by reportNoViableAlternative()\n */\n\nexport default class NoViableAltException extends RecognitionException {\n constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n ctx = ctx || recognizer._ctx;\n offendingToken = offendingToken || recognizer.getCurrentToken();\n startToken = startToken || recognizer.getCurrentToken();\n input = input || recognizer.getInputStream();\n super({message: \"\", recognizer: recognizer, input: input, ctx: ctx});\n // Which configurations did we try at input.index() that couldn't match\n // input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashMap from \"../misc/HashMap.js\";\n\nexport default class DoubleDict {\n\n constructor(defaultMapCtor) {\n this.defaultMapCtor = defaultMapCtor || HashMap;\n this.cacheMap = new this.defaultMapCtor();\n }\n\n get(a, b) {\n const d = this.cacheMap.get(a) || null;\n return d === null ? null : (d.get(b) || null);\n }\n\n set(a, b, o) {\n let d = this.cacheMap.get(a) || null;\n if (d === null) {\n d = new this.defaultMapCtor();\n this.cacheMap.set(a, d);\n }\n d.set(b, o);\n }\n\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFA from './DFA.js';\nimport DFASerializer from './DFASerializer.js';\nimport LexerDFASerializer from './LexerDFASerializer.js';\nimport PredPrediction from './PredPrediction.js';\n\nexport default { DFA, DFASerializer, LexerDFASerializer, PredPrediction };\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFAState from './DFAState.js';\nimport StarLoopEntryState from '../state/StarLoopEntryState.js';\nimport ATNConfigSet from './../atn/ATNConfigSet.js';\nimport DFASerializer from './DFASerializer.js';\nimport LexerDFASerializer from './LexerDFASerializer.js';\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class DFA {\n\tconstructor(atnStartState, decision) {\n\t\tif (decision === undefined) {\n\t\t\tdecision = 0;\n\t\t}\n\t\t/**\n\t\t * From which ATN state did we create this DFA?\n\t\t */\n\t\tthis.atnStartState = atnStartState;\n\t\tthis.decision = decision;\n\t\t/**\n\t\t * A set of all DFA states. Use {@link Map} so we can get old state back\n\t\t * ({@link Set} only allows you to see if it's there).\n\t\t */\n\t\tthis._states = new HashSet();\n\t\tthis.s0 = null;\n\t\t/**\n\t\t * {@code true} if this DFA is for a precedence decision; otherwise,\n\t\t * {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t\t * {@link //setPrecedenceDfa}\n\t\t */\n\t\tthis.precedenceDfa = false;\n\t\tif (atnStartState instanceof StarLoopEntryState)\n\t\t{\n\t\t\tif (atnStartState.isPrecedenceDecision) {\n\t\t\t\tthis.precedenceDfa = true;\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @return The start state corresponding to the specified precedence, or\n\t * {@code null} if no start state exists for the specified precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tgetPrecedenceStartState(precedence) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\t// s0.edges is never null for a precedence DFA\n\t\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.s0.edges[precedence] || null;\n\t}\n\n\t/**\n\t * Set the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @param startState The start state corresponding to the specified\n\t * precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tsetPrecedenceStartState(precedence, startState) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\tif (precedence < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * synchronization on s0 here is ok. when the DFA is turned into a\n\t\t * precedence DFA, s0 will be initialized once and not updated again\n\t\t * s0.edges is never null for a precedence DFA\n\t\t */\n\t\tthis.s0.edges[precedence] = startState;\n\t}\n\n\t/**\n\t * Sets whether this is a precedence DFA. If the specified value differs\n\t * from the current DFA configuration, the following actions are taken;\n\t * otherwise no changes are made to the current DFA.\n\t *\n\t *
          \n\t *
        • The {@link //states} map is cleared
        • \n\t *
        • If {@code precedenceDfa} is {@code false}, the initial state\n\t * {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n\t * {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n\t * store the start states for individual precedence values.
        • \n\t *
        • The {@link //precedenceDfa} field is updated
        • \n\t *
        \n\t *\n\t * @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n\t * {@code false}\n\t */\n\tsetPrecedenceDfa(precedenceDfa) {\n\t\tif (this.precedenceDfa!==precedenceDfa) {\n\t\t\tthis._states = new HashSet();\n\t\t\tif (precedenceDfa) {\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t} else {\n\t\t\t\tthis.s0 = null;\n\t\t\t}\n\t\t\tthis.precedenceDfa = precedenceDfa;\n\t\t}\n\t}\n\n\t/**\n\t * Return a list of all states in this DFA, ordered by state number.\n\t */\n\tsortedStates() {\n\t\tconst list = this._states.values();\n\t\treturn list.sort(function(a, b) {\n\t\t\treturn a.stateNumber - b.stateNumber;\n\t\t});\n\t}\n\n\ttoString(literalNames, symbolicNames) {\n\t\tliteralNames = literalNames || null;\n\t\tsymbolicNames = symbolicNames || null;\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new DFASerializer(this, literalNames, symbolicNames);\n\t\treturn serializer.toString();\n\t}\n\n\ttoLexerString() {\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new LexerDFASerializer(this);\n\t\treturn serializer.toString();\n\t}\n\n\tget states(){\n\t\treturn this._states;\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nimport arrayToString from \"../utils/arrayToString.js\";\n\n/**\n * A DFA walker that knows how to dump them to serialized strings.\n */\nexport default class DFASerializer {\n constructor(dfa, literalNames, symbolicNames) {\n this.dfa = dfa;\n this.literalNames = literalNames || [];\n this.symbolicNames = symbolicNames || [];\n }\n\n toString() {\n if(this.dfa.s0 === null) {\n return null;\n }\n let buf = \"\";\n const states = this.dfa.sortedStates();\n for(let i=0; i\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n }\n\n getEdgeLabel(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n }\n\n getStateString(s) {\n const baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + arrayToString(s.predicates);\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n }\n}\n\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DFASerializer from \"./DFASerializer.js\";\n\nexport default class LexerDFASerializer extends DFASerializer {\n constructor(dfa) {\n super(dfa, null);\n }\n\n getEdgeLabel(i) {\n return \"'\" + String.fromCharCode(i) + \"'\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleNode from './RuleNode.js';\nimport ErrorNode from './ErrorNode.js';\nimport TerminalNode from './TerminalNode.js';\nimport ParseTreeListener from './ParseTreeListener.js';\nimport ParseTreeVisitor from './ParseTreeVisitor.js';\nimport ParseTreeWalker from './ParseTreeWalker.js';\nimport { default as Trees } from './Trees.js';\n\nexport default { Trees, RuleNode, ErrorNode, TerminalNode, ParseTreeListener, ParseTreeVisitor, ParseTreeWalker }\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseTreeListener {\n visitTerminal(node) {\n }\n\n visitErrorNode(node) {\n }\n\n enterEveryRule(node) {\n }\n\n exitEveryRule(node) {\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseTreeVisitor {\n visit(ctx) {\n if (Array.isArray(ctx)) {\n return ctx.map(function(child) {\n return child.accept(this);\n }, this);\n } else {\n return ctx.accept(this);\n }\n }\n\n visitChildren(ctx) {\n if (ctx.children) {\n return this.visit(ctx.children);\n } else {\n return null;\n }\n }\n\n visitTerminal(node) {\n }\n\n visitErrorNode(node) {\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport TerminalNode from \"./TerminalNode.js\";\nimport ErrorNode from \"./ErrorNode.js\";\n\nexport default class ParseTreeWalker {\n\n /**\n * Performs a walk on the given parse tree starting at the root and going down recursively\n * with depth-first search. On each node, {@link ParseTreeWalker//enterRule} is called before\n * recursively walking down into child nodes, then\n * {@link ParseTreeWalker//exitRule} is called after the recursive call to wind up.\n * @param listener The listener used by the walker to process grammar rules\n * @param t The parse tree to be walked on\n */\n walk(listener, t) {\n const errorNode = t instanceof ErrorNode ||\n (t.isErrorNode !== undefined && t.isErrorNode());\n if (errorNode) {\n listener.visitErrorNode(t);\n } else if (t instanceof TerminalNode) {\n listener.visitTerminal(t);\n } else {\n this.enterRule(listener, t);\n for (let i = 0; i < t.getChildCount(); i++) {\n const child = t.getChild(i);\n this.walk(listener, child);\n }\n this.exitRule(listener, t);\n }\n }\n\n /**\n * Enters a grammar rule by first triggering the generic event {@link ParseTreeListener//enterEveryRule}\n * then by triggering the event specific to the given parse tree node\n * @param listener The listener responding to the trigger events\n * @param r The grammar rule containing the rule context\n */\n enterRule(listener, r) {\n const ctx = r.getRuleContext();\n listener.enterEveryRule(ctx);\n ctx.enterRule(listener);\n }\n\n /**\n * Exits a grammar rule by first triggering the event specific to the given parse tree node\n * then by triggering the generic event {@link ParseTreeListener//exitEveryRule}\n * @param listener The listener responding to the trigger events\n * @param r The grammar rule containing the rule context\n */\n exitRule(listener, r) {\n const ctx = r.getRuleContext();\n ctx.exitRule(listener);\n listener.exitEveryRule(ctx);\n }\n}\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RecognitionException from './RecognitionException.js';\nimport NoViableAltException from './NoViableAltException.js';\nimport LexerNoViableAltException from './LexerNoViableAltException.js';\nimport InputMismatchException from './InputMismatchException.js';\nimport FailedPredicateException from './FailedPredicateException.js';\nimport DiagnosticErrorListener from './DiagnosticErrorListener.js';\nimport BailErrorStrategy from './BailErrorStrategy.js';\nimport DefaultErrorStrategy from './DefaultErrorStrategy.js';\nimport ErrorListener from './ErrorListener.js';\n\nexport default {\n RecognitionException, NoViableAltException, LexerNoViableAltException, InputMismatchException, FailedPredicateException,\n DiagnosticErrorListener, BailErrorStrategy, DefaultErrorStrategy, ErrorListener\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * This signifies any kind of mismatched input exceptions such as\n * when the current input does not match the expected token.\n */\nexport default class InputMismatchException extends RecognitionException {\n constructor(recognizer) {\n super({message: \"\", recognizer: recognizer, input: recognizer.getInputStream(), ctx: recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredicateTransition from \"../transition/PredicateTransition.js\";\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * A semantic predicate failed during validation. Validation of predicates\n * occurs when normally parsing the alternative just like matching a token.\n * Disambiguating predicate evaluation occurs when we test a predicate during\n * prediction.\n */\nexport default class FailedPredicateException extends RecognitionException {\n constructor(recognizer, predicate, message) {\n super({\n message: formatMessage(predicate, message || null), recognizer: recognizer,\n input: recognizer.getInputStream(), ctx: recognizer._ctx\n });\n const s = recognizer._interp.atn.states[recognizer.state]\n const trans = s.transitions[0]\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n }\n}\n\n\nfunction formatMessage(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ErrorListener from './ErrorListener.js';\nimport Interval from '../misc/Interval.js';\nimport BitSet from \"../misc/BitSet.js\";\n\n\n/**\n * This implementation of {@link ANTLRErrorListener} can be used to identify\n * certain potential correctness and performance problems in grammars. \"Reports\"\n * are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n * message.\n *\n *
          \n *
        • Ambiguities: These are cases where more than one path through the\n * grammar can match the input.
        • \n *
        • Weak context sensitivity: These are cases where full-context\n * prediction resolved an SLL conflict to a unique alternative which equaled the\n * minimum alternative of the SLL conflict.
        • \n *
        • Strong (forced) context sensitivity: These are cases where the\n * full-context prediction resolved an SLL conflict to a unique alternative,\n * and the minimum alternative of the SLL conflict was found to not be\n * a truly viable alternative. Two-stage parsing cannot be used for inputs where\n * this situation occurs.
        • \n *
        \n */\nexport default class DiagnosticErrorListener extends ErrorListener {\n\tconstructor(exactOnly) {\n\t\tsuper();\n\t\texactOnly = exactOnly || true;\n\t\t// whether all ambiguities or only exact ambiguities are reported.\n\t\tthis.exactOnly = exactOnly;\n\t}\n\n\treportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n\t\tif (this.exactOnly && !exact) {\n\t\t\treturn;\n\t\t}\n\t\tconst msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\t\tconst msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\t\tconst msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\tgetDecisionDescription(recognizer, dfa) {\n\t\tconst decision = dfa.decision\n\t\tconst ruleIndex = dfa.atnStartState.ruleIndex\n\n\t\tconst ruleNames = recognizer.ruleNames\n\t\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\tconst ruleName = ruleNames[ruleIndex] || null\n\t\tif (ruleName === null || ruleName.length === 0) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\treturn `${decision} (${ruleName})`;\n\t}\n\n\t/**\n\t * Computes the set of conflicting or ambiguous alternatives from a\n\t * configuration set, if that information was not already provided by the\n\t * parser.\n\t *\n\t * @param reportedAlts The set of conflicting or ambiguous alternatives, as\n\t * reported by the parser.\n\t * @param configs The conflicting or ambiguous configuration set.\n\t * @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n\t * returns the set of alternatives represented in {@code configs}.\n */\n\tgetConflictingAlts(reportedAlts, configs) {\n\t\tif (reportedAlts !== null) {\n\t\t\treturn reportedAlts;\n\t\t}\n\t\tconst result = new BitSet()\n\t\tfor (let i = 0; i < configs.items.length; i++) {\n\t\t\tresult.add(configs.items[i].alt);\n\t\t}\n\t\treturn `{${result.values().join(\", \")}}`;\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport InputMismatchException from \"./InputMismatchException.js\";\nimport ParseCancellationException from \"./ParseCancellationException.js\";\nimport DefaultErrorStrategy from \"./DefaultErrorStrategy.js\";\n\n/**\n * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n * by immediately canceling the parse operation with a\n * {@link ParseCancellationException}. The implementation ensures that the\n * {@link ParserRuleContext//exception} field is set for all parse tree nodes\n * that were not completed prior to encountering the error.\n *\n *

        \n * This error strategy is useful in the following scenarios.

        \n *\n *
          \n *
        • Two-stage parsing: This error strategy allows the first\n * stage of two-stage parsing to immediately terminate if an error is\n * encountered, and immediately fall back to the second stage. In addition to\n * avoiding wasted work by attempting to recover from errors here, the empty\n * implementation of {@link BailErrorStrategy//sync} improves the performance of\n * the first stage.
        • \n *
        • Silent validation: When syntax errors are not being\n * reported or logged, and the parse result is simply ignored if errors occur,\n * the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n * when the result will be ignored either way.
        • \n *
        \n *\n *

        \n * {@code myparser.setErrorHandler(new BailErrorStrategy());}

        \n *\n * @see Parser//setErrorHandler(ANTLRErrorStrategy)\n * */\nexport default class BailErrorStrategy extends DefaultErrorStrategy {\n\n constructor() {\n super();\n }\n\n /**\n * Instead of recovering from exception {@code e}, re-throw it wrapped\n * in a {@link ParseCancellationException} so it is not caught by the\n * rule function catches. Use {@link Exception//getCause()} to get the\n * original {@link RecognitionException}.\n */\n recover(recognizer, e) {\n let context = recognizer._ctx\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n }\n\n /**\n * Make sure we don't attempt to recover inline; if the parser\n * successfully recovers, it won't throw an exception.\n */\n recoverInline(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n }\n\n// Make sure we don't attempt to recover from problems in subrules.//\n sync(recognizer) {\n // pass\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseCancellationException extends Error {\n constructor() {\n super()\n Error.captureStackTrace(this, ParseCancellationException);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport FailedPredicateException from \"./FailedPredicateException.js\";\nimport InputMismatchException from \"./InputMismatchException.js\";\nimport NoViableAltException from \"./NoViableAltException.js\";\nimport ATNState from \"../state/ATNState.js\";\nimport Token from '../Token.js';\nimport Interval from \"../misc/Interval.js\";\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport ErrorStrategy from \"./ErrorStrategy.js\";\n\n/**\n * This is the default implementation of {@link ANTLRErrorStrategy} used for\n * error reporting and recovery in ANTLR parsers.\n */\nexport default class DefaultErrorStrategy extends ErrorStrategy {\n constructor() {\n super();\n /**\n * Indicates whether the error strategy is currently \"recovering from an\n * error\". This is used to suppress reporting multiple error messages while\n * attempting to recover from a detected syntax error.\n *\n * @see //inErrorRecoveryMode\n */\n this.errorRecoveryMode = false;\n\n /**\n * The index into the input stream where the last error occurred.\n * This is used to prevent infinite loops where an error is found\n * but no token is consumed during recovery...another error is found,\n * ad nauseum. This is a failsafe mechanism to guarantee that at least\n * one token/tree node is consumed for two errors.\n */\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n this.nextTokensContext = null;\n this.nextTokenState = 0;\n }\n\n /**\n *

        The default implementation simply calls {@link //endErrorCondition} to\n * ensure that the handler is not in error recovery mode.

        \n */\n reset(recognizer) {\n this.endErrorCondition(recognizer);\n }\n\n /**\n * This method is called to enter error recovery mode when a recognition\n * exception is reported.\n *\n * @param recognizer the parser instance\n */\n beginErrorCondition(recognizer) {\n this.errorRecoveryMode = true;\n }\n\n inErrorRecoveryMode(recognizer) {\n return this.errorRecoveryMode;\n }\n\n /**\n * This method is called to leave error recovery mode after recovering from\n * a recognition exception.\n * @param recognizer\n */\n endErrorCondition(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n }\n\n /**\n * {@inheritDoc}\n *

        The default implementation simply calls {@link //endErrorCondition}.

        \n */\n reportMatch(recognizer) {\n this.endErrorCondition(recognizer);\n }\n\n /**\n * {@inheritDoc}\n *\n *

        The default implementation returns immediately if the handler is already\n * in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n * and dispatches the reporting task based on the runtime type of {@code e}\n * according to the following table.

        \n *\n *
          \n *
        • {@link NoViableAltException}: Dispatches the call to\n * {@link //reportNoViableAlternative}
        • \n *
        • {@link InputMismatchException}: Dispatches the call to\n * {@link //reportInputMismatch}
        • \n *
        • {@link FailedPredicateException}: Dispatches the call to\n * {@link //reportFailedPredicate}
        • \n *
        • All other types: calls {@link Parser//notifyErrorListeners} to report\n * the exception
        • \n *
        \n */\n reportError(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n }\n\n /**\n *\n * {@inheritDoc}\n *\n *

        The default implementation resynchronizes the parser by consuming tokens\n * until we find one in the resynchronization set--loosely the set of tokens\n * that can follow the current rule.

        \n *\n */\n recover(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n // uh oh, another error at same token index and previously-visited\n // state in ATN; must be a case where LT(1) is in the recovery\n // token set so nothing got consumed. Consume a single token\n // at least to prevent an infinite loop; this is a failsafe.\n recognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n const followSet = this.getErrorRecoverySet(recognizer)\n this.consumeUntil(recognizer, followSet);\n }\n\n /**\n * The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n * that the current lookahead symbol is consistent with what were expecting\n * at this point in the ATN. You can call this anytime but ANTLR only\n * generates code to check before subrules/loops and each iteration.\n *\n *

        Implements Jim Idle's magic sync mechanism in closures and optional\n * subrules. E.g.,

        \n *\n *
        \n     * a : sync ( stuff sync )* ;\n     * sync : {consume to what can follow sync} ;\n     * 
        \n *\n * At the start of a sub rule upon error, {@link //sync} performs single\n * token deletion, if possible. If it can't do that, it bails on the current\n * rule and uses the default error recovery, which consumes until the\n * resynchronization set of the current rule.\n *\n *

        If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n * with an empty alternative), then the expected set includes what follows\n * the subrule.

        \n *\n *

        During loop iteration, it consumes until it sees a token that can start a\n * sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n * stay in the loop as long as possible.

        \n *\n *

        ORIGINS

        \n *\n *

        Previous versions of ANTLR did a poor job of their recovery within loops.\n * A single mismatch token or missing token would force the parser to bail\n * out of the entire rules surrounding the loop. So, for rule

        \n *\n *
        \n     * classDef : 'class' ID '{' member* '}'\n     * 
        \n *\n * input with an extra token between members would force the parser to\n * consume until it found the next class definition rather than the next\n * member definition of the current class.\n *\n *

        This functionality cost a little bit of effort because the parser has to\n * compare token set at the start of the loop and at each iteration. If for\n * some reason speed is suffering for you, you can turn off this\n * functionality by simply overriding this method as a blank { }.

        \n *\n */\n sync(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n const s = recognizer._interp.atn.states[recognizer.state];\n const la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n const nextTokens = recognizer.atn.nextTokens(s);\n if(nextTokens.contains(la)) {\n this.nextTokensContext = null;\n this.nextTokenState = ATNState.INVALID_STATE_NUMBER;\n return;\n } else if (nextTokens.contains(Token.EPSILON)) {\n if(this.nextTokensContext === null) {\n // It's possible the next token won't match information tracked\n // by sync is restricted for performance.\n this.nextTokensContext = recognizer._ctx;\n this.nextTokensState = recognizer._stateNumber;\n }\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n {\n this.reportUnwantedToken(recognizer);\n const expecting = new IntervalSet();\n expecting.addSet(recognizer.getExpectedTokens());\n const whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n }\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n }\n\n /**\n * This is called by {@link //reportError} when the exception is a\n * {@link NoViableAltException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportNoViableAlternative(recognizer, e) {\n const tokens = recognizer.getTokenStream()\n let input\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"\";\n }\n const msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input)\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This is called by {@link //reportError} when the exception is an\n * {@link InputMismatchException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportInputMismatch(recognizer, e) {\n const msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames)\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This is called by {@link //reportError} when the exception is a\n * {@link FailedPredicateException}.\n *\n * @see //reportError\n *\n * @param recognizer the parser instance\n * @param e the recognition exception\n */\n reportFailedPredicate(recognizer, e) {\n const ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex]\n const msg = \"rule \" + ruleName + \" \" + e.message\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n }\n\n /**\n * This method is called to report a syntax error which requires the removal\n * of a token from the input stream. At the time this method is called, the\n * erroneous symbol is current {@code LT(1)} symbol and has not yet been\n * removed from the input stream. When this method returns,\n * {@code recognizer} is in error recovery mode.\n *\n *

        This method is called when {@link //singleTokenDeletion} identifies\n * single-token deletion as a viable recovery strategy for a mismatched\n * input error.

        \n *\n *

        The default implementation simply returns if the handler is already in\n * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n * enter error recovery mode, followed by calling\n * {@link Parser//notifyErrorListeners}.

        \n *\n * @param recognizer the parser instance\n *\n */\n reportUnwantedToken(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n const t = recognizer.getCurrentToken()\n const tokenName = this.getTokenErrorDisplay(t)\n const expecting = this.getExpectedTokens(recognizer)\n const msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames)\n recognizer.notifyErrorListeners(msg, t, null);\n }\n\n /**\n * This method is called to report a syntax error which requires the\n * insertion of a missing token into the input stream. At the time this\n * method is called, the missing token has not yet been inserted. When this\n * method returns, {@code recognizer} is in error recovery mode.\n *\n *

        This method is called when {@link //singleTokenInsertion} identifies\n * single-token insertion as a viable recovery strategy for a mismatched\n * input error.

        \n *\n *

        The default implementation simply returns if the handler is already in\n * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n * enter error recovery mode, followed by calling\n * {@link Parser//notifyErrorListeners}.

        \n *\n * @param recognizer the parser instance\n */\n reportMissingToken(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n const t = recognizer.getCurrentToken()\n const expecting = this.getExpectedTokens(recognizer)\n const msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t)\n recognizer.notifyErrorListeners(msg, t, null);\n }\n\n /**\n *

        The default implementation attempts to recover from the mismatched input\n * by using single token insertion and deletion as described below. If the\n * recovery attempt fails, this method throws an\n * {@link InputMismatchException}.

        \n *\n *

        EXTRA TOKEN (single token deletion)

        \n *\n *

        {@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n * right token, however, then assume {@code LA(1)} is some extra spurious\n * token and delete it. Then consume and return the next token (which was\n * the {@code LA(2)} token) as the successful result of the match operation.

        \n *\n *

        This recovery strategy is implemented by {@link\n * //singleTokenDeletion}.

        \n *\n *

        MISSING TOKEN (single token insertion)

        \n *\n *

        If current token (at {@code LA(1)}) is consistent with what could come\n * after the expected {@code LA(1)} token, then assume the token is missing\n * and use the parser's {@link TokenFactory} to create it on the fly. The\n * \"insertion\" is performed by returning the created token as the successful\n * result of the match operation.

        \n *\n *

        This recovery strategy is implemented by {@link\n * //singleTokenInsertion}.

        \n *\n *

        EXAMPLE

        \n *\n *

        For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n * the parser returns from the nested call to {@code expr}, it will have\n * call chain:

        \n *\n *
        \n     * stat → expr → atom\n     * 
        \n *\n * and it will be trying to match the {@code ')'} at this point in the\n * derivation:\n *\n *
        \n     * => ID '=' '(' INT ')' ('+' atom)* ';'\n     * ^\n     * 
        \n *\n * The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n * call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n * is in the set of tokens that can follow the {@code ')'} token reference\n * in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n */\n recoverInline(recognizer) {\n // SINGLE TOKEN DELETION\n const matchedSymbol = this.singleTokenDeletion(recognizer)\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n }\n\n /**\n * This method implements the single-token insertion inline error recovery\n * strategy. It is called by {@link //recoverInline} if the single-token\n * deletion strategy fails to recover from the mismatched input. If this\n * method returns {@code true}, {@code recognizer} will be in error recovery\n * mode.\n *\n *

        This method determines whether or not single-token insertion is viable by\n * checking if the {@code LA(1)} input symbol could be successfully matched\n * if it were instead the {@code LA(2)} symbol. If this method returns\n * {@code true}, the caller is responsible for creating and inserting a\n * token with the correct type to produce this behavior.

        \n *\n * @param recognizer the parser instance\n * @return {@code true} if single-token insertion is a viable recovery\n * strategy for the current mismatched input, otherwise {@code false}\n */\n singleTokenInsertion(recognizer) {\n const currentSymbolType = recognizer.getTokenStream().LA(1)\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n const atn = recognizer._interp.atn\n const currentState = atn.states[recognizer.state]\n const next = currentState.transitions[0].target\n const expectingAtLL2 = atn.nextTokens(next, recognizer._ctx)\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * This method implements the single-token deletion inline error recovery\n * strategy. It is called by {@link //recoverInline} to attempt to recover\n * from mismatched input. If this method returns null, the parser and error\n * handler state will not have changed. If this method returns non-null,\n * {@code recognizer} will not be in error recovery mode since the\n * returned token was a successful match.\n *\n *

        If the single-token deletion is successful, this method calls\n * {@link //reportUnwantedToken} to report the error, followed by\n * {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n * before returning {@link //reportMatch} is called to signal a successful\n * match.

        \n *\n * @param recognizer the parser instance\n * @return the successfully matched {@link Token} instance if single-token\n * deletion successfully recovers from the mismatched input, otherwise\n * {@code null}\n */\n singleTokenDeletion(recognizer) {\n const nextTokenType = recognizer.getTokenStream().LA(2)\n const expecting = this.getExpectedTokens(recognizer)\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n const matchedSymbol = recognizer.getCurrentToken()\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n }\n\n /**\n * Conjure up a missing token during error recovery.\n *\n * The recognizer attempts to recover from single missing\n * symbols. But, actions might refer to that missing symbol.\n * For example, x=ID {f($x);}. The action clearly assumes\n * that there has been an identifier matched previously and that\n * $x points at that token. If that token is missing, but\n * the next token in the stream is what we want we assume that\n * this token is missing and we keep going. Because we\n * have to return some token to replace the missing token,\n * we have to conjure one up. This method gives the user control\n * over the tokens returned for missing tokens. Mostly,\n * you will want to create something special for identifier\n * tokens. For literals such as '{' and ',', the default\n * action in the parser or tree parser works. It simply creates\n * a CommonToken of the appropriate type. The text will be the token.\n * If you change what tokens must be created by the lexer,\n * override this method to create the appropriate tokens.\n *\n */\n getMissingSymbol(recognizer) {\n const currentSymbol = recognizer.getCurrentToken()\n const expecting = this.getExpectedTokens(recognizer)\n const expectedTokenType = expecting.first() // get any element\n let tokenText\n if (expectedTokenType===Token.EOF) {\n tokenText = \"\";\n } else {\n tokenText = \"\";\n }\n let current = currentSymbol\n const lookback = recognizer.getTokenStream().LT(-1)\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n }\n\n getExpectedTokens(recognizer) {\n return recognizer.getExpectedTokens();\n }\n\n /**\n * How should a token be displayed in an error message? The default\n * is to display just the text, but during development you might\n * want to have a lot of information spit out. Override in that case\n * to use t.toString() (which, for CommonToken, dumps everything about\n * the token). This is better than forcing you to override a method in\n * your token objects because you don't have to go modify your lexer\n * so that it creates a new Java type.\n */\n getTokenErrorDisplay(t) {\n if (t === null) {\n return \"\";\n }\n let s = t.text\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n }\n\n escapeWSAndQuote(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n }\n\n /**\n * Compute the error recovery set for the current rule. During\n * rule invocation, the parser pushes the set of tokens that can\n * follow that rule reference on the stack; this amounts to\n * computing FIRST of what follows the rule reference in the\n * enclosing rule. See LinearApproximator.FIRST().\n * This local follow set only includes tokens\n * from within the rule; i.e., the FIRST computation done by\n * ANTLR stops at the end of a rule.\n *\n * EXAMPLE\n *\n * When you find a \"no viable alt exception\", the input is not\n * consistent with any of the alternatives for rule r. The best\n * thing to do is to consume tokens until you see something that\n * can legally follow a call to r//or* any rule that called r.\n * You don't want the exact set of viable next tokens because the\n * input might just be missing a token--you might consume the\n * rest of the input looking for one of the missing tokens.\n *\n * Consider grammar:\n *\n * a : '[' b ']'\n * | '(' b ')'\n * ;\n * b : c '^' INT ;\n * c : ID\n * | INT\n * ;\n *\n * At each rule invocation, the set of tokens that could follow\n * that rule is pushed on a stack. Here are the various\n * context-sensitive follow sets:\n *\n * FOLLOW(b1_in_a) = FIRST(']') = ']'\n * FOLLOW(b2_in_a) = FIRST(')') = ')'\n * FOLLOW(c_in_b) = FIRST('^') = '^'\n *\n * Upon erroneous input \"[]\", the call chain is\n *\n * a -> b -> c\n *\n * and, hence, the follow context stack is:\n *\n * depth follow set start of rule execution\n * 0 a (from main())\n * 1 ']' b\n * 2 '^' c\n *\n * Notice that ')' is not included, because b would have to have\n * been called from a different context in rule a for ')' to be\n * included.\n *\n * For error recovery, we cannot consider FOLLOW(c)\n * (context-sensitive or otherwise). We need the combined set of\n * all context-sensitive FOLLOW sets--the set of all tokens that\n * could follow any reference in the call chain. We need to\n * resync to one of those tokens. Note that FOLLOW(c)='^' and if\n * we resync'd to that token, we'd consume until EOF. We need to\n * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n * In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n * not consume anything. After printing an error, rule c would\n * return normally. Rule b would not find the required '^' though.\n * At this point, it gets a mismatched token error and throws an\n * exception (since LA(1) is not in the viable following token\n * set). The rule exception handler tries to recover, but finds\n * the same recovery set and doesn't consume anything. Rule b\n * exits normally returning to rule a. Now it finds the ']' (and\n * with the successful match exits errorRecovery mode).\n *\n * So, you can see that the parser walks up the call chain looking\n * for the token that was a member of the recovery set.\n *\n * Errors are not generated in errorRecovery mode.\n *\n * ANTLR's error recovery mechanism is based upon original ideas:\n *\n * \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n *\n * and\n *\n * \"A note on error recovery in recursive descent parsers\":\n * http://portal.acm.org/citation.cfm?id=947902.947905\n *\n * Later, Josef Grosch had some good ideas:\n *\n * \"Efficient and Comfortable Error Recovery in Recursive Descent\n * Parsers\":\n * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n *\n * Like Grosch I implement context-sensitive FOLLOW sets that are combined\n * at run-time upon error to avoid overhead during parsing.\n */\n getErrorRecoverySet(recognizer) {\n const atn = recognizer._interp.atn\n let ctx = recognizer._ctx\n const recoverSet = new IntervalSet()\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n const invokingState = atn.states[ctx.invokingState]\n const rt = invokingState.transitions[0]\n const follow = atn.nextTokens(rt.followState)\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n }\n\n// Consume tokens until one matches the given token set.//\n consumeUntil(recognizer, set) {\n let ttype = recognizer.getTokenStream().LA(1)\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexport default class ErrorStrategy {\n\n reset(recognizer) {\n }\n\n recoverInline(recognizer) {\n }\n\n recover(recognizer, e) {\n }\n\n sync(recognizer) {\n }\n\n inErrorRecoveryMode(recognizer) {\n }\n\n reportError(recognizer) {\n }\n}\n\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport InputStream from './InputStream.js';\nimport fs from \"fs\";\n\n/**\n * Utility functions to create InputStreams from various sources.\n *\n * All returned InputStreams support the full range of Unicode\n * up to U+10FFFF (the default behavior of InputStream only supports\n * code points up to U+FFFF).\n */\nexport default {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n /**\n * Asynchronously creates an InputStream from a blob given the\n * encoding of the bytes in that blob (defaults to 'utf8' if\n * encoding is null).\n *\n * Invokes onLoad(result) on success, onError(error) on\n * failure.\n */\n fromBlob: function(blob, encoding, onLoad, onError) {\n const reader = new window.FileReader();\n reader.onload = function(e) {\n const is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n /**\n * Creates an InputStream from a Buffer given the\n * encoding of the bytes in that buffer (defaults to 'utf8' if\n * encoding is null).\n */\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n /** Asynchronously creates an InputStream from a file on disk given\n * the encoding of the bytes in that file (defaults to 'utf8' if\n * encoding is null).\n *\n * Invokes callback(error, result) on completion.\n */\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n let is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n /**\n * Synchronously creates an InputStream given a path to a file\n * on disk and the encoding of the bytes in that file (defaults to\n * 'utf8' if encoding is null).\n */\n fromPathSync: function(path, encoding) {\n const data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport './polyfills/codepointat.js';\nimport './polyfills/fromcodepoint.js';\n\n/**\n * If decodeToUnicodeCodePoints is true, the input is treated\n * as a series of Unicode code points.\n *\n * Otherwise, the input is treated as a series of 16-bit UTF-16 code\n * units.\n */\nexport default class InputStream {\n\tconstructor(data, decodeToUnicodeCodePoints) {\n\t\tthis.name = \"\";\n\t\tthis.strdata = data;\n\t\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t\t// _loadString - Vacuum all input from a string and then treat it like a buffer.\n\t\tthis._index = 0;\n\t\tthis.data = [];\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tfor (let i = 0; i < this.strdata.length; ) {\n\t\t\t\tconst codePoint = this.strdata.codePointAt(i);\n\t\t\t\tthis.data.push(codePoint);\n\t\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.data = new Array(this.strdata.length);\n\t\t\tfor (let i = 0; i < this.strdata.length; i++) {\n\t\t\t\tconst codeUnit = this.strdata.charCodeAt(i);\n\t\t\t\tthis.data[i] = codeUnit;\n\t\t\t}\n\t\t}\n\t\tthis._size = this.data.length;\n\t}\n\n\t/**\n\t * Reset the stream so that it's in the same state it was\n\t * when the object was created *except* the data array is not\n\t * touched.\n\t */\n\treset() {\n\t\tthis._index = 0;\n\t}\n\n\tconsume() {\n\t\tif (this._index >= this._size) {\n\t\t\t// assert this.LA(1) == Token.EOF\n\t\t\tthrow (\"cannot consume EOF\");\n\t\t}\n\t\tthis._index += 1;\n\t}\n\n\tLA(offset) {\n\t\tif (offset === 0) {\n\t\t\treturn 0; // undefined\n\t\t}\n\t\tif (offset < 0) {\n\t\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t\t}\n\t\tconst pos = this._index + offset - 1;\n\t\tif (pos < 0 || pos >= this._size) { // invalid\n\t\t\treturn Token.EOF;\n\t\t}\n\t\treturn this.data[pos];\n\t}\n\n\tLT(offset) {\n\t\treturn this.LA(offset);\n\t}\n\n// mark/release do nothing; we have entire buffer\n\tmark() {\n\t\treturn -1;\n\t}\n\n\trelease(marker) {\n\t}\n\n\t/**\n\t * consume() ahead until p==_index; can't just set p=_index as we must\n\t * update line and column. If we seek backwards, just set p\n\t */\n\tseek(_index) {\n\t\tif (_index <= this._index) {\n\t\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t\t// ...)\n\t\t\treturn;\n\t\t}\n\t\t// seek forward\n\t\tthis._index = Math.min(_index, this._size);\n\t}\n\n\tgetText(start, stop) {\n\t\tif (stop >= this._size) {\n\t\t\tstop = this._size - 1;\n\t\t}\n\t\tif (start >= this._size) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\t\tlet result = \"\";\n\t\t\t\tfor (let i = start; i <= stop; i++) {\n\t\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn this.strdata;\n\t}\n\n\tget index(){\n\t\treturn this._index;\n\t}\n\n\tget size(){\n\t\treturn this._size;\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport InputStream from './InputStream.js';\nimport fs from \"fs\";\n\n/**\n * This is an InputStream that is loaded from a file all at once\n * when you construct the object.\n */\nexport default class FileStream extends InputStream {\n\tconstructor(fileName, decodeToUnicodeCodePoints) {\n\t\tconst data = fs.readFileSync(fileName, \"utf8\");\n\t\tsuper(data, decodeToUnicodeCodePoints);\n\t\tthis.fileName = fileName;\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nimport Token from './Token.js';\nimport BufferedTokenStream from './BufferedTokenStream.js';\n\n/**\n * This class extends {@link BufferedTokenStream} with functionality to filter\n * token streams to tokens on a particular channel (tokens where\n * {@link Token//getChannel} returns a particular value).\n *\n *

        \n * This token stream provides access to all tokens by index or when calling\n * methods like {@link //getText}. The channel filtering is only used for code\n * accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n * {@link //LB}.

        \n *\n *

        \n * By default, tokens are placed on the default channel\n * ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n * {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n * call {@link Lexer//setChannel}.\n *

        \n *\n *

        \n * Note: lexer rules which use the {@code ->skip} lexer command or call\n * {@link Lexer//skip} do not produce tokens at all, so input text matched by\n * such a rule will not be available as part of the token stream, regardless of\n * channel.

        \n */\nexport default class CommonTokenStream extends BufferedTokenStream {\n constructor(lexer, channel) {\n super(lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n }\n\n adjustSeekIndex(i) {\n return this.nextTokenOnChannel(i, this.channel);\n }\n\n LB(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n let i = this.index;\n let n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n }\n\n LT(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n let i = this.index;\n let n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n }\n\n // Count EOF just once.\n getNumberOfOnChannelTokens() {\n let n = 0;\n this.fill();\n for (let i =0; i< this.tokens.length;i++) {\n const t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport Lexer from './Lexer.js';\nimport Interval from './misc/Interval.js';\nimport TokenStream from \"./TokenStream.js\";\n\n/**\n * This implementation of {@link TokenStream} loads tokens from a\n * {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n * access to any previous token by index.\n *\n *

        \n * This token stream ignores the value of {@link Token//getChannel}. If your\n * parser requires the token stream filter tokens to only those on a particular\n * channel, such as {@link Token//DEFAULT_CHANNEL} or\n * {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n * {@link CommonTokenStream}.

        \n */\nexport default class BufferedTokenStream extends TokenStream {\n\tconstructor(tokenSource) {\n\n\t\tsuper();\n\t\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\t\tthis.tokenSource = tokenSource;\n\t\t/**\n\t\t * A collection of all tokens fetched from the token source. The list is\n\t\t * considered a complete view of the input once {@link //fetchedEOF} is set\n\t\t * to {@code true}.\n\t\t */\n\t\tthis.tokens = [];\n\n\t\t/**\n\t\t * The index into {@link //tokens} of the current token (next token to\n\t\t * {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t\t * be\n\t\t * {@link //LT LT(1)}.\n\t\t *\n\t\t *

        This field is set to -1 when the stream is first constructed or when\n\t\t * {@link //setTokenSource} is called, indicating that the first token has\n\t\t * not yet been fetched from the token source. For additional information,\n\t\t * see the documentation of {@link IntStream} for a description of\n\t\t * Initializing Methods.

        \n\t\t */\n\t\tthis.index = -1;\n\n\t\t/**\n\t\t * Indicates whether the {@link Token//EOF} token has been fetched from\n\t\t * {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t\t * performance for the following cases:\n\t\t *\n\t\t *
          \n\t\t *
        • {@link //consume}: The lookahead check in {@link //consume} to\n\t\t * prevent\n\t\t * consuming the EOF symbol is optimized by checking the values of\n\t\t * {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t\t * //LA}.
        • \n\t\t *
        • {@link //fetch}: The check to prevent adding multiple EOF symbols\n\t\t * into\n\t\t * {@link //tokens} is trivial with this field.
        • \n\t\t *
            \n\t\t */\n\t\tthis.fetchedEOF = false;\n\t}\n\n\tmark() {\n\t\treturn 0;\n\t}\n\n\trelease(marker) {\n\t\t// no resources to release\n\t}\n\n\treset() {\n\t\tthis.seek(0);\n\t}\n\n\tseek(index) {\n\t\tthis.lazyInit();\n\t\tthis.index = this.adjustSeekIndex(index);\n\t}\n\n\tget(index) {\n\t\tthis.lazyInit();\n\t\treturn this.tokens[index];\n\t}\n\n\tconsume() {\n\t\tlet skipEofCheck = false;\n\t\tif (this.index >= 0) {\n\t\t\tif (this.fetchedEOF) {\n\t\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t\t// fetched token except the last.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t\t} else {\n\t\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t\t}\n\t\t} else {\n\t\t\t// not yet initialized\n\t\t\tskipEofCheck = false;\n\t\t}\n\t\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\t\tthrow \"cannot consume EOF\";\n\t\t}\n\t\tif (this.sync(this.index + 1)) {\n\t\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t\t}\n\t}\n\n\t/**\n\t * Make sure index {@code i} in tokens has a token.\n\t *\n\t * @return {Boolean} {@code true} if a token is located at index {@code i}, otherwise\n\t * {@code false}.\n\t * @see //get(int i)\n\t */\n\tsync(i) {\n\t\tconst n = i - this.tokens.length + 1; // how many more elements we need?\n\t\tif (n > 0) {\n\t\t\tconst fetched = this.fetch(n);\n\t\t\treturn fetched >= n;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Add {@code n} elements to buffer.\n\t *\n\t * @return {Number} The actual number of elements added to the buffer.\n\t */\n\tfetch(n) {\n\t\tif (this.fetchedEOF) {\n\t\t\treturn 0;\n\t\t}\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst t = this.tokenSource.nextToken();\n\t\t\tt.tokenIndex = this.tokens.length;\n\t\t\tthis.tokens.push(t);\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tthis.fetchedEOF = true;\n\t\t\t\treturn i + 1;\n\t\t\t}\n\t\t}\n\t\treturn n;\n\t}\n\n// Get all tokens from start..stop inclusively///\n\tgetTokens(start, stop, types) {\n\t\tif (types === undefined) {\n\t\t\ttypes = null;\n\t\t}\n\t\tif (start < 0 || stop < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.lazyInit();\n\t\tconst subset = [];\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tfor (let i = start; i < stop; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (types === null || types.contains(t.type)) {\n\t\t\t\tsubset.push(t);\n\t\t\t}\n\t\t}\n\t\treturn subset;\n\t}\n\n\tLA(i) {\n\t\treturn this.LT(i).type;\n\t}\n\n\tLB(k) {\n\t\tif (this.index - k < 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.tokens[this.index - k];\n\t}\n\n\tLT(k) {\n\t\tthis.lazyInit();\n\t\tif (k === 0) {\n\t\t\treturn null;\n\t\t}\n\t\tif (k < 0) {\n\t\t\treturn this.LB(-k);\n\t\t}\n\t\tconst i = this.index + k - 1;\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) { // return EOF token\n\t\t\t// EOF must be last token\n\t\t\treturn this.tokens[this.tokens.length - 1];\n\t\t}\n\t\treturn this.tokens[i];\n\t}\n\n\t/**\n\t * Allowed derived classes to modify the behavior of operations which change\n\t * the current stream position by adjusting the target token index of a seek\n\t * operation. The default implementation simply returns {@code i}. If an\n\t * exception is thrown in this method, the current stream index should not be\n\t * changed.\n\t *\n\t *

            For example, {@link CommonTokenStream} overrides this method to ensure\n\t * that\n\t * the seek target is always an on-channel token.

            \n\t *\n\t * @param {Number} i The target token index.\n\t * @return {Number} The adjusted target token index.\n\t */\n\tadjustSeekIndex(i) {\n\t\treturn i;\n\t}\n\n\tlazyInit() {\n\t\tif (this.index === -1) {\n\t\t\tthis.setup();\n\t\t}\n\t}\n\n\tsetup() {\n\t\tthis.sync(0);\n\t\tthis.index = this.adjustSeekIndex(0);\n\t}\n\n// Reset this token stream by setting its token source.///\n\tsetTokenSource(tokenSource) {\n\t\tthis.tokenSource = tokenSource;\n\t\tthis.tokens = [];\n\t\tthis.index = -1;\n\t\tthis.fetchedEOF = false;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the next token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and EOF.\n\t */\n\tnextTokenOnChannel(i, channel) {\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet token = this.tokens[i];\n\t\twhile (token.channel !== this.channel) {\n\t\t\tif (token.type === Token.EOF) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\ti += 1;\n\t\t\tthis.sync(i);\n\t\t\ttoken = this.tokens[i];\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the previous token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and 0.\n\t */\n\tpreviousTokenOnChannel(i, channel) {\n\t\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\t\ti -= 1;\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the right of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n\t * EOF. If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToRight(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tconst from_ = tokenIndex + 1;\n\t\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\t\tconst to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the left of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n\t * If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToLeft(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tif (prevOnChannel === tokenIndex - 1) {\n\t\t\treturn null;\n\t\t}\n\t\t// if none on channel to left, prevOnChannel=-1 then from=0\n\t\tconst from_ = prevOnChannel + 1;\n\t\tconst to = tokenIndex - 1;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\tfilterForChannel(left, right, channel) {\n\t\tconst hidden = [];\n\t\tfor (let i = left; i < right + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (channel === -1) {\n\t\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\t\thidden.push(t);\n\t\t\t\t}\n\t\t\t} else if (t.channel === channel) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t}\n\t\tif (hidden.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn hidden;\n\t}\n\n\tgetSourceName() {\n\t\treturn this.tokenSource.getSourceName();\n\t}\n\n// Get the text of all tokens in this buffer.///\n\tgetText(interval) {\n\t\tthis.lazyInit();\n\t\tthis.fill();\n\t\tif (interval === undefined || interval === null) {\n\t\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t\t}\n\t\tlet start = interval.start;\n\t\tif (start instanceof Token) {\n\t\t\tstart = start.tokenIndex;\n\t\t}\n\t\tlet stop = interval.stop;\n\t\tif (stop instanceof Token) {\n\t\t\tstop = stop.tokenIndex;\n\t\t}\n\t\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tlet s = \"\";\n\t\tfor (let i = start; i < stop + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ts = s + t.text;\n\t\t}\n\t\treturn s;\n\t}\n\n// Get all tokens from lexer until EOF///\n\tfill() {\n\t\tthis.lazyInit();\n\t\twhile (this.fetch(1000) === 1000) {\n\t\t\tcontinue;\n\t\t}\n\t}\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n// this is just to keep meaningful parameter types to Parser\nexport default class TokenStream {}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport TerminalNode from './tree/TerminalNode.js';\nimport ErrorNode from './tree/ErrorNode.js';\nimport Recognizer from './Recognizer.js';\nimport DefaultErrorStrategy from './error/DefaultErrorStrategy.js';\nimport ATNDeserializer from './atn/ATNDeserializer.js';\nimport ATNDeserializationOptions from './atn/ATNDeserializationOptions.js';\nimport TraceListener from \"./TraceListener.js\";\n\nexport default class Parser extends Recognizer {\n /**\n * this is all the parsing support code essentially; most of it is error\n * recovery stuff.\n */\n constructor(input) {\n super();\n // The input stream.\n this._input = null;\n /**\n * The error handling strategy for the parser. The default value is a new\n * instance of {@link DefaultErrorStrategy}.\n */\n this._errHandler = new DefaultErrorStrategy();\n this._precedenceStack = [];\n this._precedenceStack.push(0);\n /**\n * The {@link ParserRuleContext} object for the currently executing rule.\n * this is always non-null during the parsing process.\n */\n this._ctx = null;\n /**\n * Specifies whether or not the parser should construct a parse tree during\n * the parsing process. The default value is {@code true}.\n */\n this.buildParseTrees = true;\n /**\n * When {@link //setTrace}{@code (true)} is called, a reference to the\n * {@link TraceListener} is stored here so it can be easily removed in a\n * later call to {@link //setTrace}{@code (false)}. The listener itself is\n * implemented as a parser listener so this field is not directly used by\n * other parser methods.\n */\n this._tracer = null;\n /**\n * The list of {@link ParseTreeListener} listeners registered to receive\n * events during the parse.\n */\n this._parseListeners = null;\n /**\n * The number of syntax errors reported during parsing. this value is\n * incremented each time {@link //notifyErrorListeners} is called.\n */\n this._syntaxErrors = 0;\n this.setInputStream(input);\n }\n\n // reset the parser's state\n reset() {\n if (this._input !== null) {\n this._input.seek(0);\n }\n this._errHandler.reset(this);\n this._ctx = null;\n this._syntaxErrors = 0;\n this.setTrace(false);\n this._precedenceStack = [];\n this._precedenceStack.push(0);\n if (this._interp !== null) {\n this._interp.reset();\n }\n }\n\n /**\n * Match current input symbol against {@code ttype}. If the symbol type\n * matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n * called to complete the match process.\n *\n *

            If the symbol type does not match,\n * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n * strategy to attempt recovery. If {@link //getBuildParseTree} is\n * {@code true} and the token index of the symbol returned by\n * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n * the parse tree by calling {@link ParserRuleContext//addErrorNode}.

            \n *\n * @param ttype the token type to match\n * @return the matched symbol\n * @throws RecognitionException if the current input symbol did not match\n * {@code ttype} and the error strategy could not recover from the\n * mismatched symbol\n */\n match(ttype) {\n let t = this.getCurrentToken();\n if (t.type === ttype) {\n this._errHandler.reportMatch(this);\n this.consume();\n } else {\n t = this._errHandler.recoverInline(this);\n if (this.buildParseTrees && t.tokenIndex === -1) {\n // we must have conjured up a new token during single token\n // insertion\n // if it's not the current symbol\n this._ctx.addErrorNode(t);\n }\n }\n return t;\n }\n\n /**\n * Match current input symbol as a wildcard. If the symbol type matches\n * (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n * and {@link //consume} are called to complete the match process.\n *\n *

            If the symbol type does not match,\n * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n * strategy to attempt recovery. If {@link //getBuildParseTree} is\n * {@code true} and the token index of the symbol returned by\n * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n * the parse tree by calling {@link ParserRuleContext//addErrorNode}.

            \n *\n * @return the matched symbol\n * @throws RecognitionException if the current input symbol did not match\n * a wildcard and the error strategy could not recover from the mismatched\n * symbol\n */\n matchWildcard() {\n let t = this.getCurrentToken();\n if (t.type > 0) {\n this._errHandler.reportMatch(this);\n this.consume();\n } else {\n t = this._errHandler.recoverInline(this);\n if (this._buildParseTrees && t.tokenIndex === -1) {\n // we must have conjured up a new token during single token\n // insertion\n // if it's not the current symbol\n this._ctx.addErrorNode(t);\n }\n }\n return t;\n }\n\n getParseListeners() {\n return this._parseListeners || [];\n }\n\n /**\n * Registers {@code listener} to receive events during the parsing process.\n *\n *

            To support output-preserving grammar transformations (including but not\n * limited to left-recursion removal, automated left-factoring, and\n * optimized code generation), calls to listener methods during the parse\n * may differ substantially from calls made by\n * {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n * particular, rule entry and exit events may occur in a different order\n * during the parse than after the parser. In addition, calls to certain\n * rule entry methods may be omitted.

            \n *\n *

            With the following specific exceptions, calls to listener events are\n * deterministic, i.e. for identical input the calls to listener\n * methods will be the same.

            \n *\n *
              \n *
            • Alterations to the grammar used to generate code may change the\n * behavior of the listener calls.
            • \n *
            • Alterations to the command line options passed to ANTLR 4 when\n * generating the parser may change the behavior of the listener calls.
            • \n *
            • Changing the version of the ANTLR Tool used to generate the parser\n * may change the behavior of the listener calls.
            • \n *
            \n *\n * @param listener the listener to add\n *\n * @throws NullPointerException if {@code} listener is {@code null}\n */\n addParseListener(listener) {\n if (listener === null) {\n throw \"listener\";\n }\n if (this._parseListeners === null) {\n this._parseListeners = [];\n }\n this._parseListeners.push(listener);\n }\n\n /**\n * Remove {@code listener} from the list of parse listeners.\n *\n *

            If {@code listener} is {@code null} or has not been added as a parse\n * listener, this method does nothing.

            \n * @param listener the listener to remove\n */\n removeParseListener(listener) {\n if (this._parseListeners !== null) {\n const idx = this._parseListeners.indexOf(listener);\n if (idx >= 0) {\n this._parseListeners.splice(idx, 1);\n }\n if (this._parseListeners.length === 0) {\n this._parseListeners = null;\n }\n }\n }\n\n // Remove all parse listeners.\n removeParseListeners() {\n this._parseListeners = null;\n }\n\n // Notify any parse listeners of an enter rule event.\n triggerEnterRuleEvent() {\n if (this._parseListeners !== null) {\n const ctx = this._ctx;\n this._parseListeners.forEach(function (listener) {\n listener.enterEveryRule(ctx);\n ctx.enterRule(listener);\n });\n }\n }\n\n /**\n * Notify any parse listeners of an exit rule event.\n * @see //addParseListener\n */\n triggerExitRuleEvent() {\n if (this._parseListeners !== null) {\n // reverse order walk of listeners\n const ctx = this._ctx;\n this._parseListeners.slice(0).reverse().forEach(function (listener) {\n ctx.exitRule(listener);\n listener.exitEveryRule(ctx);\n });\n }\n }\n\n getTokenFactory() {\n return this._input.tokenSource._factory;\n }\n\n // Tell our token source and error strategy about a new way to create tokens.\n setTokenFactory(factory) {\n this._input.tokenSource._factory = factory;\n }\n\n /**\n * The ATN with bypass alternatives is expensive to create so we create it\n * lazily.\n *\n * @throws UnsupportedOperationException if the current parser does not\n * implement the {@link //getSerializedATN()} method.\n */\n getATNWithBypassAlts() {\n const serializedAtn = this.getSerializedATN();\n if (serializedAtn === null) {\n throw \"The current parser does not support an ATN with bypass alternatives.\";\n }\n let result = this.bypassAltsAtnCache[serializedAtn];\n if (result === null) {\n const deserializationOptions = new ATNDeserializationOptions();\n deserializationOptions.generateRuleBypassTransitions = true;\n result = new ATNDeserializer(deserializationOptions)\n .deserialize(serializedAtn);\n this.bypassAltsAtnCache[serializedAtn] = result;\n }\n return result;\n }\n\n getInputStream() {\n return this.getTokenStream();\n }\n\n setInputStream(input) {\n this.setTokenStream(input);\n }\n\n getTokenStream() {\n return this._input;\n }\n\n // Set the token stream and reset the parser.\n setTokenStream(input) {\n this._input = null;\n this.reset();\n this._input = input;\n }\n\n /**\n * Match needs to return the current input symbol, which gets put\n * into the label for the associated token ref; e.g., x=ID.\n */\n getCurrentToken() {\n return this._input.LT(1);\n }\n\n notifyErrorListeners(msg, offendingToken, err) {\n offendingToken = offendingToken || null;\n err = err || null;\n if (offendingToken === null) {\n offendingToken = this.getCurrentToken();\n }\n this._syntaxErrors += 1;\n const line = offendingToken.line;\n const column = offendingToken.column;\n const listener = this.getErrorListenerDispatch();\n listener.syntaxError(this, offendingToken, line, column, msg, err);\n }\n\n /**\n * Consume and return the {@linkplain //getCurrentToken current symbol}.\n *\n *

            E.g., given the following input with {@code A} being the current\n * lookahead symbol, this function moves the cursor to {@code B} and returns\n * {@code A}.

            \n *\n *
            \n     * A B\n     * ^\n     * 
            \n *\n * If the parser is not in error recovery mode, the consumed symbol is added\n * to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n * {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n * If the parser is in error recovery mode, the consumed symbol is\n * added to the parse tree using\n * {@link ParserRuleContext//addErrorNode(Token)}, and\n * {@link ParseTreeListener//visitErrorNode} is called on any parse\n * listeners.\n */\n consume() {\n const o = this.getCurrentToken();\n if (o.type !== Token.EOF) {\n this.getInputStream().consume();\n }\n const hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n if (this.buildParseTrees || hasListener) {\n let node;\n if (this._errHandler.inErrorRecoveryMode(this)) {\n node = this._ctx.addErrorNode(o);\n } else {\n node = this._ctx.addTokenNode(o);\n }\n node.invokingState = this.state;\n if (hasListener) {\n this._parseListeners.forEach(function (listener) {\n if (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n listener.visitErrorNode(node);\n } else if (node instanceof TerminalNode) {\n listener.visitTerminal(node);\n }\n });\n }\n }\n return o;\n }\n\n addContextToParseTree() {\n // add current context to parent if we have a parent\n if (this._ctx.parentCtx !== null) {\n this._ctx.parentCtx.addChild(this._ctx);\n }\n }\n\n /**\n * Always called by generated parsers upon entry to a rule. Access field\n * {@link //_ctx} get the current context.\n */\n enterRule(localctx, state, ruleIndex) {\n this.state = state;\n this._ctx = localctx;\n this._ctx.start = this._input.LT(1);\n if (this.buildParseTrees) {\n this.addContextToParseTree();\n }\n this.triggerEnterRuleEvent();\n }\n\n exitRule() {\n this._ctx.stop = this._input.LT(-1);\n // trigger event on _ctx, before it reverts to parent\n this.triggerExitRuleEvent();\n this.state = this._ctx.invokingState;\n this._ctx = this._ctx.parentCtx;\n }\n\n enterOuterAlt(localctx, altNum) {\n localctx.setAltNumber(altNum);\n // if we have new localctx, make sure we replace existing ctx\n // that is previous child of parse tree\n if (this.buildParseTrees && this._ctx !== localctx) {\n if (this._ctx.parentCtx !== null) {\n this._ctx.parentCtx.removeLastChild();\n this._ctx.parentCtx.addChild(localctx);\n }\n }\n this._ctx = localctx;\n }\n\n /**\n * Get the precedence level for the top-most precedence rule.\n *\n * @return The precedence level for the top-most precedence rule, or -1 if\n * the parser context is not nested within a precedence rule.\n */\n getPrecedence() {\n if (this._precedenceStack.length === 0) {\n return -1;\n } else {\n return this._precedenceStack[this._precedenceStack.length - 1];\n }\n }\n\n enterRecursionRule(localctx, state, ruleIndex, precedence) {\n this.state = state;\n this._precedenceStack.push(precedence);\n this._ctx = localctx;\n this._ctx.start = this._input.LT(1);\n this.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\n }\n\n // Like {@link //enterRule} but for recursive rules.\n pushNewRecursionContext(localctx, state, ruleIndex) {\n const previous = this._ctx;\n previous.parentCtx = localctx;\n previous.invokingState = state;\n previous.stop = this._input.LT(-1);\n\n this._ctx = localctx;\n this._ctx.start = previous.start;\n if (this.buildParseTrees) {\n this._ctx.addChild(previous);\n }\n this.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\n }\n\n unrollRecursionContexts(parentCtx) {\n this._precedenceStack.pop();\n this._ctx.stop = this._input.LT(-1);\n const retCtx = this._ctx; // save current ctx (return value)\n // unroll so _ctx is as it was before call to recursive method\n const parseListeners = this.getParseListeners();\n if (parseListeners !== null && parseListeners.length > 0) {\n while (this._ctx !== parentCtx) {\n this.triggerExitRuleEvent();\n this._ctx = this._ctx.parentCtx;\n }\n } else {\n this._ctx = parentCtx;\n }\n // hook into tree\n retCtx.parentCtx = parentCtx;\n if (this.buildParseTrees && parentCtx !== null) {\n // add return ctx into invoking rule's tree\n parentCtx.addChild(retCtx);\n }\n }\n\n getInvokingContext(ruleIndex) {\n let ctx = this._ctx;\n while (ctx !== null) {\n if (ctx.ruleIndex === ruleIndex) {\n return ctx;\n }\n ctx = ctx.parentCtx;\n }\n return null;\n }\n\n precpred(localctx, precedence) {\n return precedence >= this._precedenceStack[this._precedenceStack.length - 1];\n }\n\n inContext(context) {\n // TODO: useful in parser?\n return false;\n }\n\n /**\n * Checks whether or not {@code symbol} can follow the current state in the\n * ATN. The behavior of this method is equivalent to the following, but is\n * implemented such that the complete context-sensitive follow set does not\n * need to be explicitly constructed.\n *\n *
            \n     * return getExpectedTokens().contains(symbol);\n     * 
            \n *\n * @param symbol the symbol type to check\n * @return {@code true} if {@code symbol} can follow the current state in\n * the ATN, otherwise {@code false}.\n */\n isExpectedToken(symbol) {\n const atn = this._interp.atn;\n let ctx = this._ctx;\n const s = atn.states[this.state];\n let following = atn.nextTokens(s);\n if (following.contains(symbol)) {\n return true;\n }\n if (!following.contains(Token.EPSILON)) {\n return false;\n }\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n const invokingState = atn.states[ctx.invokingState];\n const rt = invokingState.transitions[0];\n following = atn.nextTokens(rt.followState);\n if (following.contains(symbol)) {\n return true;\n }\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Computes the set of input symbols which could follow the current parser\n * state and context, as given by {@link //getState} and {@link //getContext},\n * respectively.\n *\n * @see ATN//getExpectedTokens(int, RuleContext)\n */\n getExpectedTokens() {\n return this._interp.atn.getExpectedTokens(this.state, this._ctx);\n }\n\n getExpectedTokensWithinCurrentRule() {\n const atn = this._interp.atn;\n const s = atn.states[this.state];\n return atn.nextTokens(s);\n }\n\n // Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.\n getRuleIndex(ruleName) {\n const ruleIndex = this.getRuleIndexMap()[ruleName];\n if (ruleIndex !== null) {\n return ruleIndex;\n } else {\n return -1;\n }\n }\n\n /**\n * Return List<String> of the rule names in your parser instance\n * leading up to a call to the current rule. You could override if\n * you want more details such as the file/line info of where\n * in the ATN a rule is invoked.\n *\n * this is very useful for error messages.\n */\n getRuleInvocationStack(p) {\n p = p || null;\n if (p === null) {\n p = this._ctx;\n }\n const stack = [];\n while (p !== null) {\n // compute what follows who invoked us\n const ruleIndex = p.ruleIndex;\n if (ruleIndex < 0) {\n stack.push(\"n/a\");\n } else {\n stack.push(this.ruleNames[ruleIndex]);\n }\n p = p.parentCtx;\n }\n return stack;\n }\n\n // For debugging and other purposes.\n getDFAStrings() {\n return this._interp.decisionToDFA.toString();\n }\n\n // For debugging and other purposes.\n dumpDFA() {\n let seenOne = false;\n for (let i = 0; i < this._interp.decisionToDFA.length; i++) {\n const dfa = this._interp.decisionToDFA[i];\n if (dfa.states.length > 0) {\n if (seenOne) {\n console.log();\n }\n this.printer.println(\"Decision \" + dfa.decision + \":\");\n this.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n seenOne = true;\n }\n }\n }\n\n /*\n \"\t\t\tprinter = function() {\\r\\n\" +\n \"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n \"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n \"\t\t\t};\\r\\n\" +\n */\n getSourceName() {\n return this._input.sourceName;\n }\n\n /**\n * During a parse is sometimes useful to listen in on the rule entry and exit\n * events as well as token matches. this is for quick and dirty debugging.\n */\n setTrace(trace) {\n if (!trace) {\n this.removeParseListener(this._tracer);\n this._tracer = null;\n } else {\n if (this._tracer !== null) {\n this.removeParseListener(this._tracer);\n }\n this._tracer = new TraceListener(this);\n this.addParseListener(this._tracer);\n }\n }\n}\n\n/**\n * this field maps from the serialized ATN string to the deserialized {@link\n * ATN} with\n * bypass alternatives.\n *\n * @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n */\nParser.bypassAltsAtnCache = {};\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ParseTreeListener from \"./tree/ParseTreeListener.js\";\n\nexport default class TraceListener extends ParseTreeListener {\n constructor(parser) {\n super();\n this.parser = parser;\n }\n\n enterEveryRule(ctx) {\n console.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n }\n\n visitTerminal(node) {\n console.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n }\n\n exitEveryRule(ctx) {\n console.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"../context/PredictionContext.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * Used to cache {@link PredictionContext} objects. Its used for the shared\n * context cash associated with contexts in DFA states. This cache\n * can be used for both lexers and parsers.\n */\nexport default class PredictionContextCache {\n\n constructor() {\n this.cache = new HashMap();\n }\n\n /**\n * Add a context to the cache and return it. If the context already exists,\n * return that one instead and do not add a new context to the cache.\n * Protect shared cache from unsafe thread access.\n */\n add(ctx) {\n if (ctx === PredictionContext.EMPTY) {\n return PredictionContext.EMPTY;\n }\n const existing = this.cache.get(ctx) || null;\n if (existing !== null) {\n return existing;\n }\n this.cache.set(ctx, ctx);\n return ctx;\n }\n\n get(ctx) {\n return this.cache.get(ctx) || null;\n }\n\n get length(){\n return this.cache.length;\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleContext from './RuleContext.js';\nimport TerminalNode from '../tree/TerminalNode.js';\nimport TerminalNodeImpl from '../tree/TerminalNodeImpl.js';\nimport ErrorNodeImpl from '../tree/ErrorNodeImpl.js';\nimport Interval from \"../misc/Interval.js\";\n\n/**\n * A rule invocation record for parsing.\n *\n * Contains all of the information about the current rule not stored in the\n * RuleContext. It handles parse tree children list, Any ATN state\n * tracing, and the default values available for rule indications:\n * start, stop, rule index, current alt number, current\n * ATN state.\n *\n * Subclasses made for each rule and grammar track the parameters,\n * return values, locals, and labels specific to that rule. These\n * are the objects that are returned from rules.\n *\n * Note text is not an actual field of a rule return value; it is computed\n * from start and stop using the input stream's toString() method. I\n * could add a ctor to this so that we can pass in and store the input\n * stream, but I'm not sure we want to do that. It would seem to be undefined\n * to get the .text property anyway if the rule matches tokens from multiple\n * input streams.\n *\n * I do not use getters for fields of objects that are used simply to\n * group values such as this aggregate. The getters/setters are there to\n * satisfy the superclass interface.\n */\nexport default class ParserRuleContext extends RuleContext {\n\tconstructor(parent, invokingStateNumber) {\n\t\tparent = parent || null;\n\t\tinvokingStateNumber = invokingStateNumber || null;\n\t\tsuper(parent, invokingStateNumber);\n\t\tthis.ruleIndex = -1;\n\t\t/**\n\t\t * If we are debugging or building a parse tree for a visitor,\n\t\t * we need to track all of the tokens and rule invocations associated\n\t\t * with this rule's context. This is empty for parsing w/o tree constr.\n\t\t * operation because we don't the need to track the details about\n\t\t * how we parse this rule.\n\t\t */\n\t\tthis.children = null;\n\t\tthis.start = null;\n\t\tthis.stop = null;\n\t\t/**\n\t\t * The exception that forced this rule to return. If the rule successfully\n\t\t * completed, this is {@code null}.\n\t\t */\n\t\tthis.exception = null;\n\t}\n\n\t// COPY a ctx (I'm deliberately not using copy constructor)\n\tcopyFrom(ctx) {\n\t\t// from RuleContext\n\t\tthis.parentCtx = ctx.parentCtx;\n\t\tthis.invokingState = ctx.invokingState;\n\t\tthis.children = null;\n\t\tthis.start = ctx.start;\n\t\tthis.stop = ctx.stop;\n\t\t// copy any error nodes to alt label node\n\t\tif(ctx.children) {\n\t\t\tthis.children = [];\n\t\t\t// reset parent pointer for any error nodes\n\t\t\tctx.children.map(function(child) {\n\t\t\t\tif (child instanceof ErrorNodeImpl) {\n\t\t\t\t\tthis.children.push(child);\n\t\t\t\t\tchild.parentCtx = this;\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\t// Double dispatch methods for listeners\n\tenterRule(listener) {\n\t}\n\n\texitRule(listener) {\n\t}\n\n\t// Does not set parent link; other add methods do that\n\taddChild(child) {\n\t\tif (this.children === null) {\n\t\t\tthis.children = [];\n\t\t}\n\t\tthis.children.push(child);\n\t\treturn child;\n\t}\n\n\t/** Used by enterOuterAlt to toss out a RuleContext previously added as\n\t * we entered a rule. If we have // label, we will need to remove\n\t * generic ruleContext object.\n\t */\n\tremoveLastChild() {\n\t\tif (this.children !== null) {\n\t\t\tthis.children.pop();\n\t\t}\n\t}\n\n\taddTokenNode(token) {\n\t\tconst node = new TerminalNodeImpl(token);\n\t\tthis.addChild(node);\n\t\tnode.parentCtx = this;\n\t\treturn node;\n\t}\n\n\taddErrorNode(badToken) {\n\t\tconst node = new ErrorNodeImpl(badToken);\n\t\tthis.addChild(node);\n\t\tnode.parentCtx = this;\n\t\treturn node;\n\t}\n\n\tgetChild(i, type) {\n\t\ttype = type || null;\n\t\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tif (type === null) {\n\t\t\treturn this.children[i];\n\t\t} else {\n\t\t\tfor(let j=0; j= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tfor(let j=0; j\";\n } else {\n return this.symbol.text;\n }\n }\n}\n\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * Represents a token that was consumed during resynchronization\n * rather than during a valid match operation. For example,\n * we will create this kind of a node during single token insertion\n * and deletion as well as during \"consume until error recovery set\"\n * upon no viable alternative exceptions.\n */\nimport TerminalNodeImpl from \"./TerminalNodeImpl.js\";\n\nexport default class ErrorNodeImpl extends TerminalNodeImpl {\n constructor(token) {\n super(token);\n }\n\n isErrorNode() {\n return true;\n }\n\n accept(visitor) {\n return visitor.visitErrorNode(this);\n }\n}\n", "/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport arrayToString from \"../utils/arrayToString.js\";\n\nexport default { arrayToString };\n", "import { Token, AntlrToken, TokenizeOptions } from './types'\nimport untypedTokens from './tokens-string'\n\nconst tokens = untypedTokens as string\n\nconst TYPE_TOKENS = [\n 'var',\n 'bool',\n 'address',\n 'string',\n 'Int',\n 'Uint',\n 'Byte',\n 'Fixed',\n 'UFixed',\n]\n\nfunction rsplit(str: string, value: string) {\n const index = str.lastIndexOf(value)\n return [str.substring(0, index), str.substring(index + 1, str.length)]\n}\n\nfunction normalizeTokenType(value: string) {\n if (value.endsWith(\"'\")) {\n value = value.substring(0, value.length - 1)\n }\n if (value.startsWith(\"'\")) {\n value = value.substring(1, value.length)\n }\n return value\n}\n\nfunction getTokenType(value: string) {\n if (value === 'Identifier' || value === 'from') {\n return 'Identifier'\n } else if (value === 'TrueLiteral' || value === 'FalseLiteral') {\n return 'Boolean'\n } else if (value === 'VersionLiteral') {\n return 'Version'\n } else if (value === 'StringLiteral') {\n return 'String'\n } else if (TYPE_TOKENS.includes(value)) {\n return 'Type'\n } else if (value === 'NumberUnit') {\n return 'Subdenomination'\n } else if (value === 'DecimalNumber') {\n return 'Numeric'\n } else if (value === 'HexLiteral') {\n return 'Hex'\n } else if (value === 'ReservedKeyword') {\n return 'Reserved'\n } else if (/^\\W+$/.test(value)) {\n return 'Punctuator'\n } else {\n return 'Keyword'\n }\n}\n\nfunction getTokenTypeMap() {\n return tokens\n .split('\\n')\n .map((line) => rsplit(line, '='))\n .reduce((acum: any, [value, key]) => {\n acum[parseInt(key, 10)] = normalizeTokenType(value)\n return acum\n }, {})\n}\n\nexport function buildTokenList(\n tokensArg: AntlrToken[],\n options: TokenizeOptions\n): Token[] {\n const tokenTypes = getTokenTypeMap()\n\n const result = tokensArg.map((token) => {\n const type = getTokenType(tokenTypes[token.type])\n const node: Token = { type, value: token.text }\n if (options.range === true) {\n node.range = [token.startIndex, token.stopIndex + 1]\n }\n if (options.loc === true) {\n node.loc = {\n start: { line: token.line, column: token.charPositionInLine },\n end: { line: token.line, column: token.charPositionInLine + (token.text?.length ?? 0) },\n }\n }\n return node\n })\n\n return result\n}\n"], + "mappings": "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", "names": [] } diff --git a/libs/remix-core-plugin/src/lib/editor-context-listener.ts b/libs/remix-core-plugin/src/lib/editor-context-listener.ts index 32909a519c..d66f026013 100644 --- a/libs/remix-core-plugin/src/lib/editor-context-listener.ts +++ b/libs/remix-core-plugin/src/lib/editor-context-listener.ts @@ -5,11 +5,12 @@ import { CompilerAbstract } from '@remix-project/remix-solidity' import { Compiler } from '@remix-project/remix-solidity' import { helper } from '@remix-project/remix-solidity' -import type { CompilationError } from '@remix-project/remix-solidity-ts' +import type { CompilationError, CompilationResult, CompilationSource } from '@remix-project/remix-solidity-ts' + const profile = { name: 'contextualListener', - methods: ['getBlockName', 'resolveImports', 'getAST', 'nodesWithScope', 'nodesWithName', 'getNodes', 'compile', 'getNodeById', 'getLastCompilationResult', 'positionOfDefinition', 'definitionAtPosition', 'jumpToDefinition', 'referrencesAtPosition', 'nodesAtEditorPosition', 'referencesOf', 'getActiveHighlights', 'gasEstimation', 'declarationOf', 'jumpToPosition'], + methods: ['getBlockName', 'getLastNodeInLine', 'resolveImports', 'parseSource', 'getAST', 'nodesWithScope', 'nodesWithName', 'getNodes', 'compile', 'getNodeById', 'getLastCompilationResult', 'positionOfDefinition', 'definitionAtPosition', 'jumpToDefinition', 'referrencesAtPosition', 'nodesAtEditorPosition', 'referencesOf', 'getActiveHighlights', 'gasEstimation', 'declarationOf', 'jumpToPosition'], events: [], version: '0.0.1' } @@ -66,11 +67,17 @@ export class EditorContextListener extends Plugin { this._stopHighlighting() }) + this.on('fileManager', 'currentFileChanged', async () => { + await this.getAST() + await this.compile() + this._stopHighlighting() + }) + this.on('solidity', 'loadingCompiler', async (url) => { console.log('loading compiler', url) this.compiler.loadVersion(true, url) - this.compiler.event.register('compilerLoaded', async () =>{ + this.compiler.event.register('compilerLoaded', async () => { console.log('compiler loaded') //await this.compile() //await this.getAST() @@ -78,15 +85,15 @@ export class EditorContextListener extends Plugin { const ast = (SolidityParser as any).parse(a, { loc: true, range: true, tolerant: true }) console.log('BAD AST', ast) }) - + }) this.compiler = new Compiler((url, cb) => this.call('contentImport', 'resolveAndSave', url, undefined, false).then((result) => cb(null, result)).catch((error) => cb(error.message))) - this.onAstFinished = async (success, data, source, input, version) => { - console.log('compile success', success) + this.onAstFinished = async (success, data: CompilationResult, source: CompilationSource, input: any, version) => { + console.log('compile success', success, data) this.call('editor', 'clearAnnotations') let noFatalErrors = true // ie warnings are ok const checkIfFatalError = (error: CompilationError) => { @@ -101,16 +108,8 @@ export class EditorContextListener extends Plugin { if (data.errors) data.errors.forEach((err) => checkIfFatalError(err)) if (data.errors) { for (const error of data.errors) { - let pos = helper.getPositionDetails(error.formattedMessage) - if (pos.errFile) { - pos = { - row: pos.errLine, - column: pos.errCol, - text: error.formattedMessage, - type: error.severity - } - await this.call('editor', 'addAnnotation', pos, pos.errFile) - } + console.log('ERROR POS', error) + await this.call('editor', 'addErrorMarker', error) } } if (!data.sources) return @@ -136,6 +135,7 @@ export class EditorContextListener extends Plugin { setInterval(async () => { + return const compilationResult = this.lastCompilationResult // await this.call('compilerArtefacts', 'getLastCompilationResult') if (compilationResult && compilationResult.languageversion.indexOf('soljson') === 0) { @@ -170,7 +170,7 @@ export class EditorContextListener extends Plugin { this.currentFile = await this.call('fileManager', 'file') if (!this.currentFile) return const content = await this.call('fileManager', 'readFile', this.currentFile) - console.log('compile', this.currentFile, content) + // console.log('compile', this.currentFile, content) const sources = { [this.currentFile]: { content } } this.compiler.compile(sources, this.currentFile) } catch (e) { @@ -220,8 +220,9 @@ export class EditorContextListener extends Plugin { if (!this.currentFile) return const fileContent = text || await this.call('fileManager', 'readFile', this.currentFile) try { - const ast = (SolidityParser as any).parse(fileContent, { loc: true, range: true, tolerant: true }) + const ast = await this.parseSource(fileContent) this.lastAST = ast + console.log('AST PARSE SUCCESS', ast) } catch (e) { console.log(e) } @@ -229,6 +230,41 @@ export class EditorContextListener extends Plugin { return this.lastAST } + async parseSource(text: string) { + //console.log('PARSING', text) + const ast = (SolidityParser as any).parse(text, { loc: true, range: true, tolerant: true }) + console.log('AST PARSE SUCCESS', ast) + return ast + } + + async getLastNodeInLine(ast: string) { + let lastNode + const checkLastNode = (node) => { + if (lastNode && lastNode.range && lastNode.range[1]) { + if (node.range[1] > lastNode.range[1]) { + lastNode = node + } + } else { + lastNode = node + } + } + + (SolidityParser as any).visit(ast, { + MemberAccess: function (node) { + checkLastNode(node) + }, + Identifier: function (node) { + checkLastNode(node) + } + }) + if (lastNode && lastNode.expression) { + console.log('lastNode', lastNode.expression) + return lastNode.expression + } + console.log('lastNode', lastNode) + return lastNode + } + getActiveHighlights() { return [...this._activeHighlights] } diff --git a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx index 8d0aeec020..5bd57b66d2 100644 --- a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx +++ b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx @@ -23,7 +23,7 @@ const RemixApp = (props: IRemixAppUi) => { async function activateApp () { props.app.themeModule.initTheme(() => { setAppReady(true) - props.app.activate() + props.app.activate() setListeners() }) } diff --git a/libs/remix-ui/editor/src/lib/providers/completionProvider.ts b/libs/remix-ui/editor/src/lib/providers/completionProvider.ts index d3863f7f95..53b8f73d8b 100644 --- a/libs/remix-ui/editor/src/lib/providers/completionProvider.ts +++ b/libs/remix-ui/editor/src/lib/providers/completionProvider.ts @@ -60,10 +60,55 @@ export class RemixCompletionProvider implements languages.CompletionItemProvider console.log('cursor', cursorPosition) if (context.triggerCharacter === '.') { + console.clear() console.log('TEXT', line) - const textBeforeCursor = line.substring(0, position.column - 1) const textAfterCursor = line.substring(position.column - 1) + // parse the line witout changing the line + + const wrapLineInFunction = (text: string) => { + return `function() { + ${text} + }` + } + + let lastNode + const checkLastNode = (node) => { + if (!node) return + if (lastNode && lastNode.range && lastNode.range[1]) { + if (node.range[1] > lastNode.range[1]) { + lastNode = node + } + } else { + lastNode = node + } + } + + + const linesToCheck = + [ + textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode;", + textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode;}", + textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode);", + wrapLineInFunction(textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode;"), + wrapLineInFunction(textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode;}"), + wrapLineInFunction(textBeforeCursor.substring(0, textBeforeCursor.lastIndexOf('.')) + ".lastnode;)"), + ] + + for (const line of linesToCheck) { + try { + const lineAst = await this.props.plugin.call('contextualListener', 'parseSource', line) + const lastNode = await this.props.plugin.call('contextualListener', 'getLastNodeInLine', lineAst) + checkLastNode(lastNode) + } catch (e) { + + } + } + + console.log('lastNode found', lastNode) + + + console.log(textBeforeCursor, textAfterCursor) const splits = textBeforeCursor.split('.') @@ -90,7 +135,7 @@ export class RemixCompletionProvider implements languages.CompletionItemProvider console.log('text without edits', textBefore, textAfterCursor) lineWithoutEdits = `${textBefore}${textAfterCursor}` } - last = lastWord || last + last = lastNode.name || lastNode.memberName console.log('last', last) const lines = model.getLinesContent() @@ -151,7 +196,7 @@ export class RemixCompletionProvider implements languages.CompletionItemProvider // brute force search in all nodes with the name - //if (!nodes.length) { + if (!nodes.length) { const nodesOfScope = await this.props.plugin.call('contextualListener', 'nodesWithName', last) console.log('NODES WITHE NAME ', last, nodesOfScope) for (const nodeOfScope of nodesOfScope) { @@ -160,16 +205,15 @@ export class RemixCompletionProvider implements languages.CompletionItemProvider if (nodeOfScope.typeName && nodeOfScope.typeName.nodeType === 'UserDefinedTypeName') { const declarationOf = await this.props.plugin.call('contextualListener', 'declarationOf', nodeOfScope.typeName) console.log('HAS DECLARATION OF', declarationOf) - nodes = [...nodes,...declarationOf.nodes || declarationOf.members] + // nodes = [...nodes, ...declarationOf.nodes || declarationOf.members] const baseContracts = await getlinearizedBaseContracts(declarationOf) for (const baseContract of baseContracts) { - nodes = [...nodes, ...baseContract.nodes] + //nodes = [...nodes, ...baseContract.nodes] } } } } - - //} + } } } else { const cursorPosition = this.props.editorAPI.getCursorPosition() diff --git a/libs/remix-ui/editor/src/lib/providers/hoverProvider.ts b/libs/remix-ui/editor/src/lib/providers/hoverProvider.ts index 61b320d66e..4fec34dd9c 100644 --- a/libs/remix-ui/editor/src/lib/providers/hoverProvider.ts +++ b/libs/remix-ui/editor/src/lib/providers/hoverProvider.ts @@ -13,6 +13,7 @@ export class RemixHoverProvider implements languages.HoverProvider { provideHover = async function (model: editor.ITextModel, position: Position) { console.log('HOVERING') + return null const cursorPosition = this.props.editorAPI.getHoverPosition(position) const nodeAtPosition = await this.props.plugin.call('contextualListener', 'definitionAtPosition', cursorPosition) diff --git a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx index 1de147871d..f433dd7595 100644 --- a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx +++ b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx @@ -8,12 +8,13 @@ import { cairoLang, cairoConf } from './cairoSyntax' import './remix-ui-editor.css' import { loadTypes } from './web-types' import monaco from '../types/monaco' -import { IPosition } from 'monaco-editor' +import { IPosition, MarkerSeverity } from 'monaco-editor' import { RemixHoverProvider } from './providers/hoverProvider' import { RemixReferenceProvider } from './providers/referenceProvider' import { RemixCompletionProvider } from './providers/completionProvider' import { RemixSignatureProvider } from './providers/signatureProvider' +import { CompilationError } from '@remix-project/remix-solidity-ts' type cursorPosition = { startLineNumber: number, @@ -76,11 +77,11 @@ export interface EditorUIProps { getCursorPosition: () => cursorPosition getHoverPosition: (position: IPosition) => number addDecoration: (marker: sourceMarker, filePath: string, typeOfDecoration: string) => DecorationsReturn + addErrorMarker: (error: CompilationError) => void clearDecorationsByPlugin: (filePath: string, plugin: string, typeOfDecoration: string, registeredDecorations: any, currentDecorations: any) => DecorationsReturn keepDecorationsFor: (filePath: string, plugin: string, typeOfDecoration: string, registeredDecorations: any, currentDecorations: any) => DecorationsReturn } } - export const EditorUI = (props: EditorUIProps) => { const [, setCurrentBreakpoints] = useState({}) const defaultEditorValue = ` @@ -265,6 +266,7 @@ export const EditorUI = (props: EditorUIProps) => { } else if (file.language === 'cairo') { monacoRef.current.editor.setModelLanguage(file.model, 'remix-cairo') } + }, [props.currentFile]) const convertToMonacoDecoration = (decoration: sourceAnnotation | sourceMarker, typeOfDecoration: string) => { @@ -354,6 +356,35 @@ export const EditorUI = (props: EditorUIProps) => { return addDecoration(marker, filePath, typeOfDecoration) } + props.editorAPI.addErrorMarker = async (marker: CompilationError) => { + + console.log(editorModelsState) + let filePath = marker.sourceLocation.file + console.log(filePath) + if (!filePath) return + const fileFromUrl = await props.plugin.call('fileManager', 'getPathFromUrl', filePath) + filePath = fileFromUrl.file + const model = editorModelsState[filePath]?.model + if (model) { + console.log(model) + const markerData: monaco.editor.IMarkerData = { + severity: MarkerSeverity.Error, + startLineNumber: 1, + startColumn: 1, + endLineNumber: 1, + endColumn: 2, + message: marker.message, + code: '21ji2j21ij21iji' + } + console.log(markerData) + monacoRef.current.editor.colorizeModelLine(model,1) + monacoRef.current.editor.colorizeModelLine(model,2) + console.log(monacoRef.current.editor.getModels()) + monacoRef.current.editor.setModelMarkers(model, 'remix-solidity', [markerData]) + console.log(monacoRef.current.editor.getModelMarkers({})) + } + } + props.editorAPI.findMatches = (uri: string, value: string) => { if (!editorRef.current) return const model = editorModelsState[uri]?.model @@ -436,7 +467,7 @@ export const EditorUI = (props: EditorUIProps) => { }) } - function handleEditorWillMount(monaco: Monaco) { + function handleEditorWillMount(monaco: Monaco) { console.log('editor will mount', monaco, typeof monaco) monacoRef.current = monaco // Register a new language @@ -451,20 +482,24 @@ export const EditorUI = (props: EditorUIProps) => { // register Definition Provider monacoRef.current.languages.registerDefinitionProvider('remix-solidity', { - - provideDefinition(model:any, position: any, token: any) { + + provideDefinition(model: any, position: any, token: any) { const cursorPosition = props.editorAPI.getCursorPosition() props.plugin.call('contextualListener', 'jumpToDefinition', cursorPosition) return null } }) + monacoRef.current.languages.typescript.typescriptDefaults.setDiagnosticsOptions({ + noSemanticValidation: false, + noSyntaxValidation: false, + }); monacoRef.current.languages.registerReferenceProvider('remix-solidity', new RemixReferenceProvider(props, monaco)) monacoRef.current.languages.registerHoverProvider('remix-solidity', new RemixHoverProvider(props, monaco)) monacoRef.current.languages.registerCompletionItemProvider('remix-solidity', new RemixCompletionProvider(props, monaco)) // monacoRef.current.languages.registerSignatureHelpProvider('remix-solidity', new RemixSignatureProvider(props, monaco)) loadTypes(monacoRef.current) - + } return ( diff --git a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx index cbb5f05179..b6f0ec94ef 100644 --- a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx +++ b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.tsx @@ -82,6 +82,7 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => { const rightPanel = useRef(null) useEffect(() => { + plugin.call('theme', 'currentTheme').then((theme) => { // update theme quality. To be used for for images setState(prevState => { @@ -94,6 +95,7 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => { return { ...prevState, themeQuality: theme.quality === 'dark' ? themes.dark : themes.light } }) }) + window.addEventListener('click', (event) => { const target = event.target as Element const id = target.id @@ -107,11 +109,13 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => { scriptTwitter.src = 'https://platform.twitter.com/widgets.js' scriptTwitter.async = true document.body.appendChild(scriptTwitter) + // to retrieve medium publications const scriptMedium = document.createElement('script') scriptMedium.src = 'https://www.twilik.com/assets/retainable/rss-embed/retainable-rss-embed.js' scriptMedium.async = true - document.body.appendChild(scriptMedium) + // causes bugs in Monaco + // document.body.appendChild(scriptMedium) return () => { document.body.removeChild(scriptTwitter) document.body.removeChild(scriptMedium) @@ -188,21 +192,21 @@ export const RemixUiHomeTab = (props: RemixUiHomeTabProps) => { <> hideFullMessage() } - okFn={ () => processLoading() } + hide={!state.showModalDialog} + handleHide={() => hideFullMessage()} + okFn={() => processLoading()} >
            - { state.modalInfo.loadItem !== '' && Enter the { state.modalInfo.loadItem } you would like to load. } - { state.modalInfo.examples.length !== 0 && - <> -
            e.g
            -
            - { examples } -
            - } + {state.modalInfo.loadItem !== '' && Enter the {state.modalInfo.loadItem} you would like to load.} + {state.modalInfo.examples.length !== 0 && + <> +
            e.g
            +
            + {examples} +
            + } {
            - +
            - playRemi() } alt=""> + playRemi()} alt="">