From 7fc72f1c08642ff644bfa8af6d93615aa35c090e Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 11:58:02 +0000 Subject: [PATCH 01/16] switch from antrl4ts to antlr4 --- package.json | 5 ++--- yarn.lock | 13 ++++--------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 0dfe190744415..c66d6dd0f3914 100644 --- a/package.json +++ b/package.json @@ -905,7 +905,7 @@ "adm-zip": "^0.5.9", "ajv": "^8.12.0", "ansi-regex": "^6.0.1", - "antlr4ts": "^0.5.0-alpha.3", + "antlr4": "^4.13.1-patch-1", "archiver": "^5.3.1", "async": "^3.2.3", "aws4": "^1.12.0", @@ -1512,7 +1512,6 @@ "@yarnpkg/lockfile": "^1.1.0", "abab": "^2.0.4", "aggregate-error": "^3.1.0", - "antlr4ts-cli": "^0.5.0-alpha.3", "apidoc-markdown": "^7.3.0", "argsplit": "^1.0.5", "autoprefixer": "^10.4.7", @@ -1696,4 +1695,4 @@ "zod-to-json-schema": "^3.22.3" }, "packageManager": "yarn@1.22.21" -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 6635d37906d6a..cccddd7f61166 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11422,15 +11422,10 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= -antlr4ts-cli@^0.5.0-alpha.3: - version "0.5.0-alpha.3" - resolved "https://registry.yarnpkg.com/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.3.tgz#1f581b2a3c840d3921a2f3b1e739e48c7e7c18cd" - integrity sha512-i6oyxfaXU6qnw4HgyeSIsOLlsvT7zU3vmenoJKFNVFP1QNodtJMZYpnyxc8TmOFpJs7fEoWanLavSSDEmcCZBQ== - -antlr4ts@^0.5.0-alpha.3: - version "0.5.0-alpha.3" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.3.tgz#fa6d39d88d6b96341a8afef45867af9abcb38766" - integrity sha512-La89tKkGcHFIVuruv4Bm1esc3zLmES2NOTEwwNS1pudz+zx/0FNqQeUu9p48i9/QHKPVqjN87LB+q3buTg7oDQ== +antlr4@^4.13.1-patch-1: + version "4.13.1-patch-1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1-patch-1.tgz#946176f863f890964a050c4f18c47fd6f7e57602" + integrity sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow== any-observable@^0.3.0: version "0.3.0" From bd6c219d3df11ab110f1babdea7cc42ec23d1de2 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 12:01:30 +0000 Subject: [PATCH 02/16] switch cli reference to antlr4 package --- packages/kbn-monaco/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index a20980d11864e..61448f72e1e54 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -4,8 +4,8 @@ "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", "scripts": { - "build:antlr4ts:painless": "../../node_modules/antlr4ts-cli/antlr4ts ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", - "build:antlr4ts:esql": "../../node_modules/antlr4ts-cli/antlr4ts src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", - "build:antlr4ts": "npm run build:antlr4ts:painless && npm run build:antlr4ts:esql" + "build:antlr4:painless": "yarn bin antlr4 -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", + "build:antlr4:esql": "yarn bin antlr4 -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", + "build:antlr4": "npm run build:antlr4:painless && npm run build:antlr4:esql" } } From 4f50f910102a9b4b3f1570197bf0b3f4d8cad34f Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 14:49:35 +0000 Subject: [PATCH 03/16] naively replace antlr4ts references with official antlr4 package --- packages/kbn-monaco/BUILD.bazel | 2 +- packages/kbn-monaco/package.json | 6 +- .../scripts/esql_update_ast_script.js | 4 +- .../kbn-monaco/scripts/fix_generated_antlr.js | 6 +- .../kbn-monaco/src/common/error_listener.ts | 2 +- .../kbn-monaco/src/esql/antlr/esql_lexer.ts | 887 --- .../kbn-monaco/src/esql/antlr/esql_parser.ts | 5355 --------------- .../src/esql/antlr/esql_parser_listener.ts | 1032 --- .../kbn-monaco/src/esql/lib/antlr_facade.ts | 2 +- .../kbn-monaco/src/esql/lib/ast/ast_errors.ts | 2 +- .../src/esql/lib/ast/ast_helpers.ts | 8 +- .../src/esql/lib/ast/ast_position_utils.ts | 2 +- .../kbn-monaco/src/esql/lib/ast/ast_walker.ts | 2 +- .../lib/ast/autocomplete/autocomplete.test.ts | 2 +- .../esql/lib/ast/code_actions/actions.test.ts | 2 +- .../src/esql/lib/ast/hover/hover.test.ts | 2 +- .../lib/ast/validation/validation.test.ts | 2 +- .../esql/lib/monaco/esql_error_listener.ts | 2 +- .../esql/lib/monaco/esql_tokens_provider.ts | 2 +- .../kbn-monaco/src/esql/worker/esql_worker.ts | 2 +- packages/kbn-monaco/src/painless/README.md | 2 +- .../src/painless/antlr/painless_lexer.ts | 537 -- .../src/painless/antlr/painless_parser.ts | 5850 ----------------- .../antlr/painless_parser_listener.ts | 1182 ---- .../src/painless/worker/lib/lexer.ts | 2 +- .../src/painless/worker/lib/parser.ts | 2 +- 26 files changed, 29 insertions(+), 14870 deletions(-) delete mode 100644 packages/kbn-monaco/src/esql/antlr/esql_lexer.ts delete mode 100644 packages/kbn-monaco/src/esql/antlr/esql_parser.ts delete mode 100644 packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts delete mode 100644 packages/kbn-monaco/src/painless/antlr/painless_lexer.ts delete mode 100644 packages/kbn-monaco/src/painless/antlr/painless_parser.ts delete mode 100644 packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts diff --git a/packages/kbn-monaco/BUILD.bazel b/packages/kbn-monaco/BUILD.bazel index 95833afd585b8..05616f813e937 100644 --- a/packages/kbn-monaco/BUILD.bazel +++ b/packages/kbn-monaco/BUILD.bazel @@ -26,7 +26,7 @@ SRCS = glob( SHARED_DEPS = [ "//packages/kbn-i18n", "//packages/kbn-ui-theme", - "@npm//antlr4ts", + "@npm//antlr4", "@npm//monaco-editor", "@npm//monaco-yaml", "@npm//js-levenshtein", diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index 61448f72e1e54..7c1149c4d2ed7 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -4,8 +4,8 @@ "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", "scripts": { - "build:antlr4:painless": "yarn bin antlr4 -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", - "build:antlr4:esql": "yarn bin antlr4 -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", - "build:antlr4": "npm run build:antlr4:painless && npm run build:antlr4:esql" + "build:antlr4:painless": "../../node_modules/antlr4/dist/antlr4.node.cjs -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", + "build:antlr4:esql": "../../node_modules/antlr4/dist/antlr4.node.cjs -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", + "build:antlr4": "yarn run build:antlr4:painless && npm run build:antlr4:esql" } } diff --git a/packages/kbn-monaco/scripts/esql_update_ast_script.js b/packages/kbn-monaco/scripts/esql_update_ast_script.js index 1cee3d7024b7c..539b5793f03d6 100644 --- a/packages/kbn-monaco/scripts/esql_update_ast_script.js +++ b/packages/kbn-monaco/scripts/esql_update_ast_script.js @@ -13,11 +13,11 @@ const { readdirSync, readFileSync, writeFileSync } = require('fs'); const ora = require('ora'); const log = ora('Updating ES|QL AST walker from antlr grammar').start(); /* - * This script will read from the parser file generated by the "build:antlr4ts:esql" task + * This script will read from the parser file generated by the "build:antlr4:esql" task * and extract all quoted/unquoted tokens to update their ids * into the "ast_helper" file. * This prevents the bundle size to increase by ~500 kb ("esql_parser" size). - * This script is run at the end of "build:antlr4ts:esql" task, so no need to call it manually. + * This script is run at the end of "build:antlr4:esql" task, so no need to call it manually. */ async function execute(folder) { const generatedAntlrFolder = join(__dirname, '..', 'src', folder, 'antlr'); diff --git a/packages/kbn-monaco/scripts/fix_generated_antlr.js b/packages/kbn-monaco/scripts/fix_generated_antlr.js index bdb246703d04b..f1f616651e88c 100644 --- a/packages/kbn-monaco/scripts/fix_generated_antlr.js +++ b/packages/kbn-monaco/scripts/fix_generated_antlr.js @@ -32,7 +32,9 @@ function execute(folder) { .toString() .split('\n'); - fileContentRows.unshift('// @ts-nocheck'); + if (!/\@ts-nocheck/.test(fileContentRows[0])) { + fileContentRows.unshift('// @ts-nocheck'); + } const filePath = join(generatedAntlrFolder, file); const fileContent = fileContentRows.join('\n'); @@ -44,7 +46,7 @@ function execute(folder) { }); // Rename generated parserListener file to snakecase to satisfy file casing check - // There doesn't appear to be a way to fix this OOTB with antlr4ts-cli + // There doesn't appear to be a way to fix this OOTB with antlr4 try { renameSync( join(generatedAntlrFolder, `${folder}_parserListener.ts`), diff --git a/packages/kbn-monaco/src/common/error_listener.ts b/packages/kbn-monaco/src/common/error_listener.ts index efcacb88d2c2a..36e98a504d6ad 100644 --- a/packages/kbn-monaco/src/common/error_listener.ts +++ b/packages/kbn-monaco/src/common/error_listener.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ANTLRErrorListener, Recognizer } from 'antlr4ts'; +import { ANTLRErrorListener, Recognizer } from 'antlr4'; import type { EditorError } from '../types'; export class ANTLREErrorListener implements ANTLRErrorListener { diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts b/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts deleted file mode 100644 index 62d73860c3883..0000000000000 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts +++ /dev/null @@ -1,887 +0,0 @@ -// @ts-nocheck -// Generated from src/esql/antlr/esql_lexer.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { CharStream } from "antlr4ts/CharStream"; -import { Lexer } from "antlr4ts/Lexer"; -import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator"; -import { NotNull } from "antlr4ts/Decorators"; -import { Override } from "antlr4ts/Decorators"; -import { RuleContext } from "antlr4ts/RuleContext"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - - -export class esql_lexer extends Lexer { - public static readonly DISSECT = 1; - public static readonly DROP = 2; - public static readonly ENRICH = 3; - public static readonly EVAL = 4; - public static readonly EXPLAIN = 5; - public static readonly FROM = 6; - public static readonly GROK = 7; - public static readonly INLINESTATS = 8; - public static readonly KEEP = 9; - public static readonly LIMIT = 10; - public static readonly MV_EXPAND = 11; - public static readonly RENAME = 12; - public static readonly ROW = 13; - public static readonly SHOW = 14; - public static readonly SORT = 15; - public static readonly STATS = 16; - public static readonly WHERE = 17; - public static readonly UNKNOWN_CMD = 18; - public static readonly LINE_COMMENT = 19; - public static readonly MULTILINE_COMMENT = 20; - public static readonly WS = 21; - public static readonly EXPLAIN_WS = 22; - public static readonly EXPLAIN_LINE_COMMENT = 23; - public static readonly EXPLAIN_MULTILINE_COMMENT = 24; - public static readonly PIPE = 25; - public static readonly STRING = 26; - public static readonly INTEGER_LITERAL = 27; - public static readonly DECIMAL_LITERAL = 28; - public static readonly BY = 29; - public static readonly AND = 30; - public static readonly ASC = 31; - public static readonly ASSIGN = 32; - public static readonly COMMA = 33; - public static readonly DESC = 34; - public static readonly DOT = 35; - public static readonly FALSE = 36; - public static readonly FIRST = 37; - public static readonly LAST = 38; - public static readonly LP = 39; - public static readonly IN = 40; - public static readonly IS = 41; - public static readonly LIKE = 42; - public static readonly NOT = 43; - public static readonly NULL = 44; - public static readonly NULLS = 45; - public static readonly OR = 46; - public static readonly PARAM = 47; - public static readonly RLIKE = 48; - public static readonly RP = 49; - public static readonly TRUE = 50; - public static readonly EQ = 51; - public static readonly CIEQ = 52; - public static readonly NEQ = 53; - public static readonly LT = 54; - public static readonly LTE = 55; - public static readonly GT = 56; - public static readonly GTE = 57; - public static readonly PLUS = 58; - public static readonly MINUS = 59; - public static readonly ASTERISK = 60; - public static readonly SLASH = 61; - public static readonly PERCENT = 62; - public static readonly OPENING_BRACKET = 63; - public static readonly CLOSING_BRACKET = 64; - public static readonly UNQUOTED_IDENTIFIER = 65; - public static readonly QUOTED_IDENTIFIER = 66; - public static readonly EXPR_LINE_COMMENT = 67; - public static readonly EXPR_MULTILINE_COMMENT = 68; - public static readonly EXPR_WS = 69; - public static readonly METADATA = 70; - public static readonly FROM_UNQUOTED_IDENTIFIER = 71; - public static readonly FROM_LINE_COMMENT = 72; - public static readonly FROM_MULTILINE_COMMENT = 73; - public static readonly FROM_WS = 74; - public static readonly ID_PATTERN = 75; - public static readonly PROJECT_LINE_COMMENT = 76; - public static readonly PROJECT_MULTILINE_COMMENT = 77; - public static readonly PROJECT_WS = 78; - public static readonly AS = 79; - public static readonly RENAME_LINE_COMMENT = 80; - public static readonly RENAME_MULTILINE_COMMENT = 81; - public static readonly RENAME_WS = 82; - public static readonly ON = 83; - public static readonly WITH = 84; - public static readonly ENRICH_POLICY_NAME = 85; - public static readonly ENRICH_LINE_COMMENT = 86; - public static readonly ENRICH_MULTILINE_COMMENT = 87; - public static readonly ENRICH_WS = 88; - public static readonly ENRICH_FIELD_LINE_COMMENT = 89; - public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 90; - public static readonly ENRICH_FIELD_WS = 91; - public static readonly MVEXPAND_LINE_COMMENT = 92; - public static readonly MVEXPAND_MULTILINE_COMMENT = 93; - public static readonly MVEXPAND_WS = 94; - public static readonly INFO = 95; - public static readonly FUNCTIONS = 96; - public static readonly SHOW_LINE_COMMENT = 97; - public static readonly SHOW_MULTILINE_COMMENT = 98; - public static readonly SHOW_WS = 99; - public static readonly COLON = 100; - public static readonly SETTING = 101; - public static readonly SETTING_LINE_COMMENT = 102; - public static readonly SETTTING_MULTILINE_COMMENT = 103; - public static readonly SETTING_WS = 104; - public static readonly EXPLAIN_MODE = 1; - public static readonly EXPRESSION_MODE = 2; - public static readonly FROM_MODE = 3; - public static readonly PROJECT_MODE = 4; - public static readonly RENAME_MODE = 5; - public static readonly ENRICH_MODE = 6; - public static readonly ENRICH_FIELD_MODE = 7; - public static readonly MVEXPAND_MODE = 8; - public static readonly SHOW_MODE = 9; - public static readonly SETTING_MODE = 10; - - // tslint:disable:no-trailing-whitespace - public static readonly channelNames: string[] = [ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - ]; - - // tslint:disable:no-trailing-whitespace - public static readonly modeNames: string[] = [ - "DEFAULT_MODE", "EXPLAIN_MODE", "EXPRESSION_MODE", "FROM_MODE", "PROJECT_MODE", - "RENAME_MODE", "ENRICH_MODE", "ENRICH_FIELD_MODE", "MVEXPAND_MODE", "SHOW_MODE", - "SETTING_MODE", - ]; - - public static readonly ruleNames: string[] = [ - "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", "INLINESTATS", - "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS", - "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "EXPLAIN_OPENING_BRACKET", - "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT", - "ASPERAND", "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", "UNQUOTED_ID_BODY", - "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", - "COMMA", "DESC", "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", "IS", "LIKE", - "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "CIEQ", - "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", - "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", - "QUOTED_ID", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", - "EXPR_WS", "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", - "FROM_COMMA", "FROM_ASSIGN", "METADATA", "FROM_UNQUOTED_IDENTIFIER_PART", - "FROM_UNQUOTED_IDENTIFIER", "FROM_QUOTED_IDENTIFIER", "FROM_LINE_COMMENT", - "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", - "UNQUOTED_ID_BODY_WITH_PATTERN", "UNQUOTED_ID_PATTERN", "ID_PATTERN", - "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "RENAME_PIPE", - "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT", "AS", "RENAME_ID_PATTERN", - "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ENRICH_PIPE", - "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY", "ENRICH_POLICY_NAME", - "ENRICH_QUOTED_IDENTIFIER", "ENRICH_MODE_UNQUOTED_VALUE", "ENRICH_LINE_COMMENT", - "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN", - "ENRICH_FIELD_COMMA", "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_ID_PATTERN", - "ENRICH_FIELD_QUOTED_IDENTIFIER", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", - "ENRICH_FIELD_WS", "MVEXPAND_PIPE", "MVEXPAND_DOT", "MVEXPAND_QUOTED_IDENTIFIER", - "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", - "MVEXPAND_WS", "SHOW_PIPE", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", - "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING_CLOSING_BRACKET", "COLON", - "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT", "SETTING_WS", - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", - "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, "'|'", undefined, undefined, - undefined, undefined, undefined, undefined, "'='", "','", undefined, "'.'", - undefined, undefined, undefined, "'('", undefined, undefined, undefined, - undefined, undefined, undefined, undefined, "'?'", undefined, "')'", undefined, - "'=='", "'=~'", "'!='", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", - "'/'", "'%'", undefined, "']'", undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, "':'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", - "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", - "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", - "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "PIPE", "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", - "ASSIGN", "COMMA", "DESC", "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", - "IS", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", - "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", - "SLASH", "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", - "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", - "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", - "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", - "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", - "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", - "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", - "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", - "SHOW_MULTILINE_COMMENT", "SHOW_WS", "COLON", "SETTING", "SETTING_LINE_COMMENT", - "SETTTING_MULTILINE_COMMENT", "SETTING_WS", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(esql_lexer._LITERAL_NAMES, esql_lexer._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return esql_lexer.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - - constructor(input: CharStream) { - super(input); - this._interp = new LexerATNSimulator(esql_lexer._ATN, this); - } - - // @Override - public get grammarFileName(): string { return "esql_lexer.g4"; } - - // @Override - public get ruleNames(): string[] { return esql_lexer.ruleNames; } - - // @Override - public get serializedATN(): string { return esql_lexer._serializedATN; } - - // @Override - public get channelNames(): string[] { return esql_lexer.channelNames; } - - // @Override - public get modeNames(): string[] { return esql_lexer.modeNames; } - - private static readonly _serializedATNSegments: number = 3; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02j\u04E5\b\x01" + - "\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\x04\x02\t" + - "\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\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\t\r\x04\x0E" + - "\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04\x13" + - "\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04\x18" + - "\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04\x1D" + - "\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#\t#\x04" + - "$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t+\x04,\t" + - ",\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x044\t4\x04" + - "5\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04=\t=\x04" + - ">\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04F\tF\x04" + - "G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04O\tO\x04" + - "P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04X\tX\x04" + - "Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t`\x04a\t" + - "a\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04i\ti\x04" + - "j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04r\tr\x04" + - "s\ts\x04t\tt\x04u\tu\x04v\tv\x04w\tw\x04x\tx\x04y\ty\x04z\tz\x04{\t{\x04" + - "|\t|\x04}\t}\x04~\t~\x04\x7F\t\x7F\x04\x80\t\x80\x04\x81\t\x81\x04\x82" + - "\t\x82\x04\x83\t\x83\x04\x84\t\x84\x04\x85\t\x85\x04\x86\t\x86\x04\x87" + - "\t\x87\x04\x88\t\x88\x04\x89\t\x89\x04\x8A\t\x8A\x04\x8B\t\x8B\x04\x8C" + - "\t\x8C\x04\x8D\t\x8D\x04\x8E\t\x8E\x04\x8F\t\x8F\x04\x90\t\x90\x04\x91" + - "\t\x91\x04\x92\t\x92\x04\x93\t\x93\x04\x94\t\x94\x04\x95\t\x95\x04\x96" + - "\t\x96\x04\x97\t\x97\x04\x98\t\x98\x04\x99\t\x99\x04\x9A\t\x9A\x04\x9B" + - "\t\x9B\x04\x9C\t\x9C\x04\x9D\t\x9D\x04\x9E\t\x9E\x04\x9F\t\x9F\x04\xA0" + - "\t\xA0\x04\xA1\t\xA1\x04\xA2\t\xA2\x04\xA3\t\xA3\x04\xA4\t\xA4\x04\xA5" + - "\t\xA5\x04\xA6\t\xA6\x04\xA7\t\xA7\x04\xA8\t\xA8\x04\xA9\t\xA9\x04\xAA" + - "\t\xAA\x04\xAB\t\xAB\x04\xAC\t\xAC\x04\xAD\t\xAD\x04\xAE\t\xAE\x04\xAF" + - "\t\xAF\x04\xB0\t\xB0\x04\xB1\t\xB1\x04\xB2\t\xB2\x04\xB3\t\xB3\x03\x02" + - "\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02" + - "\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04" + - "\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05" + - "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06" + - "\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07" + - "\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03" + - "\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\v\x03\v\x03" + - "\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03" + - "\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03" + - "\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F" + - "\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10" + - "\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11" + - "\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12" + - "\x03\x12\x03\x12\x03\x13\x06\x13\u0202\n\x13\r\x13\x0E\x13\u0203\x03\x13" + - "\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x07\x14\u020C\n\x14\f\x14\x0E" + - "\x14\u020F\v\x14\x03\x14\x05\x14\u0212\n\x14\x03\x14\x05\x14\u0215\n\x14" + - "\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x07\x15\u021E" + - "\n\x15\f\x15\x0E\x15\u0221\v\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" + - "\x03\x16\x06\x16\u0229\n\x16\r\x16\x0E\x16\u022A\x03\x16\x03\x16\x03\x17" + - "\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18" + - "\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1B" + - "\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D\x03\x1D" + - "\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03!\x03!\x05!\u0254" + - "\n!\x03!\x06!\u0257\n!\r!\x0E!\u0258\x03\"\x03\"\x03#\x03#\x03$\x03$\x03" + - "$\x05$\u0262\n$\x03%\x03%\x03&\x03&\x03&\x05&\u0269\n&\x03\'\x03\'\x03" + - "\'\x07\'\u026E\n\'\f\'\x0E\'\u0271\v\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03" + - "\'\x07\'\u0279\n\'\f\'\x0E\'\u027C\v\'\x03\'\x03\'\x03\'\x03\'\x03\'\x05" + - "\'\u0283\n\'\x03\'\x05\'\u0286\n\'\x05\'\u0288\n\'\x03(\x06(\u028B\n(" + - "\r(\x0E(\u028C\x03)\x06)\u0290\n)\r)\x0E)\u0291\x03)\x03)\x07)\u0296\n" + - ")\f)\x0E)\u0299\v)\x03)\x03)\x06)\u029D\n)\r)\x0E)\u029E\x03)\x06)\u02A2" + - "\n)\r)\x0E)\u02A3\x03)\x03)\x07)\u02A8\n)\f)\x0E)\u02AB\v)\x05)\u02AD" + - "\n)\x03)\x03)\x03)\x03)\x06)\u02B3\n)\r)\x0E)\u02B4\x03)\x03)\x05)\u02B9" + - "\n)\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03-\x03-\x03" + - ".\x03.\x03/\x03/\x03/\x03/\x03/\x030\x030\x031\x031\x031\x031\x031\x03" + - "1\x032\x032\x032\x032\x032\x032\x033\x033\x033\x033\x033\x034\x034\x03" + - "5\x035\x035\x036\x036\x036\x037\x037\x037\x037\x037\x038\x038\x038\x03" + - "8\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x03:\x03:\x03;\x03;\x03" + - ";\x03<\x03<\x03=\x03=\x03=\x03=\x03=\x03=\x03>\x03>\x03?\x03?\x03?\x03" + - "?\x03?\x03@\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03C\x03C\x03D\x03" + - "D\x03D\x03E\x03E\x03F\x03F\x03F\x03G\x03G\x03H\x03H\x03I\x03I\x03J\x03" + - "J\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x03M\x03M\x03M\x03N\x03" + - "N\x07N\u0339\nN\fN\x0EN\u033C\vN\x03N\x03N\x05N\u0340\nN\x03N\x06N\u0343" + - "\nN\rN\x0EN\u0344\x05N\u0347\nN\x03O\x03O\x06O\u034B\nO\rO\x0EO\u034C" + - "\x03O\x03O\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x03R\x03R\x03R\x03R\x03S\x03" + - "S\x03S\x03S\x03T\x03T\x03T\x03T\x03T\x03U\x03U\x03U\x03U\x03V\x03V\x03" + - "V\x03V\x03W\x03W\x03W\x03W\x03X\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Y\x03" + - "Y\x03Y\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x05Z\u0380\nZ\x03[\x06[\u0383\n[" + - "\r[\x0E[\u0384\x03\\\x03\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03^\x03^\x03" + - "^\x03^\x03_\x03_\x03_\x03_\x03`\x03`\x03`\x03`\x03`\x03a\x03a\x03a\x03" + - "a\x03b\x03b\x03b\x03b\x03c\x03c\x03c\x03c\x05c\u03A8\nc\x03d\x03d\x05" + - "d\u03AC\nd\x03d\x07d\u03AF\nd\fd\x0Ed\u03B2\vd\x03d\x03d\x05d\u03B6\n" + - "d\x03d\x06d\u03B9\nd\rd\x0Ed\u03BA\x05d\u03BD\nd\x03e\x03e\x06e\u03C1" + - "\ne\re\x0Ee\u03C2\x03f\x03f\x03f\x03f\x03g\x03g\x03g\x03g\x03h\x03h\x03" + - "h\x03h\x03i\x03i\x03i\x03i\x03i\x03j\x03j\x03j\x03j\x03k\x03k\x03k\x03" + - "k\x03l\x03l\x03l\x03l\x03m\x03m\x03m\x03n\x03n\x03n\x03n\x03o\x03o\x03" + - "o\x03o\x03p\x03p\x03p\x03p\x03q\x03q\x03q\x03q\x03r\x03r\x03r\x03r\x03" + - "r\x03s\x03s\x03s\x03s\x03s\x03t\x03t\x03t\x03t\x03t\x03u\x03u\x03u\x03" + - "u\x03u\x03u\x03u\x03v\x03v\x03w\x06w\u040E\nw\rw\x0Ew\u040F\x03w\x03w" + - "\x05w\u0414\nw\x03w\x06w\u0417\nw\rw\x0Ew\u0418\x03x\x03x\x03x\x03x\x03" + - "y\x03y\x03y\x03y\x03z\x03z\x03z\x03z\x03{\x03{\x03{\x03{\x03|\x03|\x03" + - "|\x03|\x03}\x03}\x03}\x03}\x03}\x03}\x03~\x03~\x03~\x03~\x03\x7F\x03\x7F" + - "\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03\x81\x03\x81\x03\x81" + - "\x03\x81\x03\x82\x03\x82\x03\x82\x03\x82\x03\x83\x03\x83\x03\x83\x03\x83" + - "\x03\x84\x03\x84\x03\x84\x03\x84\x03\x85\x03\x85\x03\x85\x03\x85\x03\x86" + - "\x03\x86\x03\x86\x03\x86\x03\x87\x03\x87\x03\x87\x03\x87\x03\x87\x03\x88" + - "\x03\x88\x03\x88\x03\x88\x03\x89\x03\x89\x03\x89\x03\x89\x03\x8A\x03\x8A" + - "\x03\x8A\x03\x8A\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x03\x8C\x03\x8C\x03\x8C" + - "\x03\x8C\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8E\x03\x8E\x03\x8E\x03\x8E" + - "\x03\x8E\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x90\x03\x90\x03\x90" + - "\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x91\x03\x91" + - "\x03\x91\x03\x91\x03\x92\x03\x92\x03\x92\x03\x92\x03\x93\x03\x93\x03\x93" + - "\x03\x93\x03\x94\x03\x94\x03\x94\x03\x94\x03\x94\x03\x95\x03\x95\x03\x96" + - "\x03\x96\x03\x96\x03\x96\x03\x96\x06\x96\u04A2\n\x96\r\x96\x0E\x96\u04A3" + - "\x03\x97\x03\x97\x03\x97\x03\x97\x03\x98\x03\x98\x03\x98\x03\x98\x03\x99" + - "\x03\x99\x03\x99\x03\x99\x03\x9A\x03\x9A\x03\x9B\x03\x9B\x03\x9C\x03\x9C" + - "\x03\x9D\x03\x9D\x03\x9E\x03\x9E\x03\x9F\x03\x9F\x03\xA0\x03\xA0\x03\xA1" + - "\x03\xA1\x03\xA2\x03\xA2\x03\xA3\x03\xA3\x03\xA4\x03\xA4\x03\xA5\x03\xA5" + - "\x03\xA6\x03\xA6\x03\xA7\x03\xA7\x03\xA8\x03\xA8\x03\xA9\x03\xA9\x03\xAA" + - "\x03\xAA\x03\xAB\x03\xAB\x03\xAC\x03\xAC\x03\xAD\x03\xAD\x03\xAE\x03\xAE" + - "\x03\xAF\x03\xAF\x03\xB0\x03\xB0\x03\xB1\x03\xB1\x03\xB2\x03\xB2\x03\xB3" + - "\x03\xB3\x04\u021F\u027A\x02\x02\xB4\r\x02\x03\x0F\x02\x04\x11\x02\x05" + - "\x13\x02\x06\x15\x02\x07\x17\x02\b\x19\x02\t\x1B\x02\n\x1D\x02\v\x1F\x02" + - "\f!\x02\r#\x02\x0E%\x02\x0F\'\x02\x10)\x02\x11+\x02\x12-\x02\x13/\x02" + - "\x141\x02\x153\x02\x165\x02\x177\x02\x029\x02\x02;\x02\x18=\x02\x19?\x02" + - "\x1AA\x02\x1BC\x02\x02E\x02\x02G\x02\x02I\x02\x02K\x02\x02M\x02\x02O\x02" + - "\x02Q\x02\x02S\x02\x02U\x02\x02W\x02\x1CY\x02\x1D[\x02\x1E]\x02\x1F_\x02" + - " a\x02!c\x02\"e\x02#g\x02$i\x02%k\x02&m\x02\'o\x02(q\x02)s\x02*u\x02+" + - "w\x02,y\x02-{\x02.}\x02/\x7F\x020\x81\x021\x83\x022\x85\x023\x87\x024" + - "\x89\x025\x8B\x026\x8D\x027\x8F\x028\x91\x029\x93\x02:\x95\x02;\x97\x02" + - "<\x99\x02=\x9B\x02>\x9D\x02?\x9F\x02@\xA1\x02A\xA3\x02B\xA5\x02C\xA7\x02" + - "\x02\xA9\x02D\xAB\x02E\xAD\x02F\xAF\x02G\xB1\x02\x02\xB3\x02\x02\xB5\x02" + - "\x02\xB7\x02\x02\xB9\x02\x02\xBB\x02H\xBD\x02\x02\xBF\x02I\xC1\x02\x02" + - "\xC3\x02J\xC5\x02K\xC7\x02L\xC9\x02\x02\xCB\x02\x02\xCD\x02\x02\xCF\x02" + - "\x02\xD1\x02\x02\xD3\x02M\xD5\x02N\xD7\x02O\xD9\x02P\xDB\x02\x02\xDD\x02" + - "\x02\xDF\x02\x02\xE1\x02\x02\xE3\x02Q\xE5\x02\x02\xE7\x02R\xE9\x02S\xEB" + - "\x02T\xED\x02\x02\xEF\x02\x02\xF1\x02U\xF3\x02V\xF5\x02\x02\xF7\x02W\xF9" + - "\x02\x02\xFB\x02\x02\xFD\x02X\xFF\x02Y\u0101\x02Z\u0103\x02\x02\u0105" + - "\x02\x02\u0107\x02\x02\u0109\x02\x02\u010B\x02\x02\u010D\x02\x02\u010F" + - "\x02\x02\u0111\x02[\u0113\x02\\\u0115\x02]\u0117\x02\x02\u0119\x02\x02" + - "\u011B\x02\x02\u011D\x02\x02\u011F\x02^\u0121\x02_\u0123\x02`\u0125\x02" + - "\x02\u0127\x02a\u0129\x02b\u012B\x02c\u012D\x02d\u012F\x02e\u0131\x02" + - "\x02\u0133\x02f\u0135\x02g\u0137\x02h\u0139\x02i\u013B\x02j\u013D\x02" + - "\x02\u013F\x02\x02\u0141\x02\x02\u0143\x02\x02\u0145\x02\x02\u0147\x02" + - "\x02\u0149\x02\x02\u014B\x02\x02\u014D\x02\x02\u014F\x02\x02\u0151\x02" + - "\x02\u0153\x02\x02\u0155\x02\x02\u0157\x02\x02\u0159\x02\x02\u015B\x02" + - "\x02\u015D\x02\x02\u015F\x02\x02\u0161\x02\x02\u0163\x02\x02\u0165\x02" + - "\x02\u0167\x02\x02\u0169\x02\x02\u016B\x02\x02\u016D\x02\x02\u016F\x02" + - "\x02\r\x02\x03\x04\x05\x06\x07\b\t\n\v\f(\b\x02\v\f\x0F\x0F\"\"11]]__" + - "\x04\x02\f\f\x0F\x0F\x05\x02\v\f\x0F\x0F\"\"\x03\x022;\x04\x02C\\c|\x07" + - "\x02$$^^ppttvv\x06\x02\f\f\x0F\x0F$$^^\x04\x02GGgg\x04\x02--//\x03\x02" + - "bb\f\x02\v\f\x0F\x0F\"\"..11??]]__bb~~\x04\x02,,11\r\x02\v\f\x0F\x0F\"" + - "\"$%..11<<>>@A^^~~\x04\x02CCcc\x04\x02DDdd\x04\x02EEee\x04\x02FFff\x04" + - "\x02HHhh\x04\x02IIii\x04\x02JJjj\x04\x02KKkk\x04\x02LLll\x04\x02MMmm\x04" + - "\x02NNnn\x04\x02OOoo\x04\x02PPpp\x04\x02QQqq\x04\x02RRrr\x04\x02SSss\x04" + - "\x02TTtt\x04\x02UUuu\x04\x02VVvv\x04\x02WWww\x04\x02XXxx\x04\x02YYyy\x04" + - "\x02ZZzz\x04\x02[[{{\x04\x02\\\\||\x02\u04E7\x02\r\x03\x02\x02\x02\x02" + - "\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02" + - "\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02" + - "\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02" + - "!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03" + - "\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02" + - "\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02\x02\x02" + - "5\x03\x02\x02\x02\x037\x03\x02\x02\x02\x039\x03\x02\x02\x02\x03;\x03\x02" + - "\x02\x02\x03=\x03\x02\x02\x02\x03?\x03\x02\x02\x02\x04A\x03\x02\x02\x02" + - "\x04W\x03\x02\x02\x02\x04Y\x03\x02\x02\x02\x04[\x03\x02\x02\x02\x04]\x03" + - "\x02\x02\x02\x04_\x03\x02\x02\x02\x04a\x03\x02\x02\x02\x04c\x03\x02\x02" + - "\x02\x04e\x03\x02\x02\x02\x04g\x03\x02\x02\x02\x04i\x03\x02\x02\x02\x04" + - "k\x03\x02\x02\x02\x04m\x03\x02\x02\x02\x04o\x03\x02\x02\x02\x04q\x03\x02" + - "\x02\x02\x04s\x03\x02\x02\x02\x04u\x03\x02\x02\x02\x04w\x03\x02\x02\x02" + - "\x04y\x03\x02\x02\x02\x04{\x03\x02\x02\x02\x04}\x03\x02\x02\x02\x04\x7F" + - "\x03\x02\x02\x02\x04\x81\x03\x02\x02\x02\x04\x83\x03\x02\x02\x02\x04\x85" + - "\x03\x02\x02\x02\x04\x87\x03\x02\x02\x02\x04\x89\x03\x02\x02\x02\x04\x8B" + - "\x03\x02\x02\x02\x04\x8D\x03\x02\x02\x02\x04\x8F\x03\x02\x02\x02\x04\x91" + - "\x03\x02\x02\x02\x04\x93\x03\x02\x02\x02\x04\x95\x03\x02\x02\x02\x04\x97" + - "\x03\x02\x02\x02\x04\x99\x03\x02\x02\x02\x04\x9B\x03\x02\x02\x02\x04\x9D" + - "\x03\x02\x02\x02\x04\x9F\x03\x02\x02\x02\x04\xA1\x03\x02\x02\x02\x04\xA3" + - "\x03\x02\x02\x02\x04\xA5\x03\x02\x02\x02\x04\xA9\x03\x02\x02\x02\x04\xAB" + - "\x03\x02\x02\x02\x04\xAD\x03\x02\x02\x02\x04\xAF\x03\x02\x02\x02\x05\xB1" + - "\x03\x02\x02\x02\x05\xB3\x03\x02\x02\x02\x05\xB5\x03\x02\x02\x02\x05\xB7" + - "\x03\x02\x02\x02\x05\xB9\x03\x02\x02\x02\x05\xBB\x03\x02\x02\x02\x05\xBF" + - "\x03\x02\x02\x02\x05\xC1\x03\x02\x02\x02\x05\xC3\x03\x02\x02\x02\x05\xC5" + - "\x03\x02\x02\x02\x05\xC7\x03\x02\x02\x02\x06\xC9\x03\x02\x02\x02\x06\xCB" + - "\x03\x02\x02\x02\x06\xCD\x03\x02\x02\x02\x06\xD3\x03\x02\x02\x02\x06\xD5" + - "\x03\x02\x02\x02\x06\xD7\x03\x02\x02\x02\x06\xD9\x03\x02\x02\x02\x07\xDB" + - "\x03\x02\x02\x02\x07\xDD\x03\x02\x02\x02\x07\xDF\x03\x02\x02\x02\x07\xE1" + - "\x03\x02\x02\x02\x07\xE3\x03\x02\x02\x02\x07\xE5\x03\x02\x02\x02\x07\xE7" + - "\x03\x02\x02\x02\x07\xE9\x03\x02\x02\x02\x07\xEB\x03\x02\x02\x02\b\xED" + - "\x03\x02\x02\x02\b\xEF\x03\x02\x02\x02\b\xF1\x03\x02\x02\x02\b\xF3\x03" + - "\x02\x02\x02\b\xF7\x03\x02\x02\x02\b\xF9\x03\x02\x02\x02\b\xFB\x03\x02" + - "\x02\x02\b\xFD\x03\x02\x02\x02\b\xFF\x03\x02\x02\x02\b\u0101\x03\x02\x02" + - "\x02\t\u0103\x03\x02\x02\x02\t\u0105\x03\x02\x02\x02\t\u0107\x03\x02\x02" + - "\x02\t\u0109\x03\x02\x02\x02\t\u010B\x03\x02\x02\x02\t\u010D\x03\x02\x02" + - "\x02\t\u010F\x03\x02\x02\x02\t\u0111\x03\x02\x02\x02\t\u0113\x03\x02\x02" + - "\x02\t\u0115\x03\x02\x02\x02\n\u0117\x03\x02\x02\x02\n\u0119\x03\x02\x02" + - "\x02\n\u011B\x03\x02\x02\x02\n\u011D\x03\x02\x02\x02\n\u011F\x03\x02\x02" + - "\x02\n\u0121\x03\x02\x02\x02\n\u0123\x03\x02\x02\x02\v\u0125\x03\x02\x02" + - "\x02\v\u0127\x03\x02\x02\x02\v\u0129\x03\x02\x02\x02\v\u012B\x03\x02\x02" + - "\x02\v\u012D\x03\x02\x02\x02\v\u012F\x03\x02\x02\x02\f\u0131\x03\x02\x02" + - "\x02\f\u0133\x03\x02\x02\x02\f\u0135\x03\x02\x02\x02\f\u0137\x03\x02\x02" + - "\x02\f\u0139\x03\x02\x02\x02\f\u013B\x03\x02\x02\x02\r\u0171\x03\x02\x02" + - "\x02\x0F\u017B\x03\x02\x02\x02\x11\u0182\x03\x02\x02\x02\x13\u018B\x03" + - "\x02\x02\x02\x15\u0192\x03\x02\x02\x02\x17\u019C\x03\x02\x02\x02\x19\u01A3" + - "\x03\x02\x02\x02\x1B\u01AA\x03\x02\x02\x02\x1D\u01B8\x03\x02\x02\x02\x1F" + - "\u01BF\x03\x02\x02\x02!\u01C7\x03\x02\x02\x02#\u01D3\x03\x02\x02\x02%" + - "\u01DC\x03\x02\x02\x02\'\u01E2\x03\x02\x02\x02)\u01E9\x03\x02\x02\x02" + - "+\u01F0\x03\x02\x02\x02-\u01F8\x03\x02\x02\x02/\u0201\x03\x02\x02\x02" + - "1\u0207\x03\x02\x02\x023\u0218\x03\x02\x02\x025\u0228\x03\x02\x02\x02" + - "7\u022E\x03\x02\x02\x029\u0233\x03\x02\x02\x02;\u0238\x03\x02\x02\x02" + - "=\u023C\x03\x02\x02\x02?\u0240\x03\x02\x02\x02A\u0244\x03\x02\x02\x02" + - "C\u0248\x03\x02\x02\x02E\u024A\x03\x02\x02\x02G\u024C\x03\x02\x02\x02" + - "I\u024F\x03\x02\x02\x02K\u0251\x03\x02\x02\x02M\u025A\x03\x02\x02\x02" + - "O\u025C\x03\x02\x02\x02Q\u0261\x03\x02\x02\x02S\u0263\x03\x02\x02\x02" + - "U\u0268\x03\x02\x02\x02W\u0287\x03\x02\x02\x02Y\u028A\x03\x02\x02\x02" + - "[\u02B8\x03\x02\x02\x02]\u02BA\x03\x02\x02\x02_\u02BD\x03\x02\x02\x02" + - "a\u02C1\x03\x02\x02\x02c\u02C5\x03\x02\x02\x02e\u02C7\x03\x02\x02\x02" + - "g\u02C9\x03\x02\x02\x02i\u02CE\x03\x02\x02\x02k\u02D0\x03\x02\x02\x02" + - "m\u02D6\x03\x02\x02\x02o\u02DC\x03\x02\x02\x02q\u02E1\x03\x02\x02\x02" + - "s\u02E3\x03\x02\x02\x02u\u02E6\x03\x02\x02\x02w\u02E9\x03\x02\x02\x02" + - "y\u02EE\x03\x02\x02\x02{\u02F2\x03\x02\x02\x02}\u02F7\x03\x02\x02\x02" + - "\x7F\u02FD\x03\x02\x02\x02\x81\u0300\x03\x02\x02\x02\x83\u0302\x03\x02" + - "\x02\x02\x85\u0308\x03\x02\x02\x02\x87\u030A\x03\x02\x02\x02\x89\u030F" + - "\x03\x02\x02\x02\x8B\u0312\x03\x02\x02\x02\x8D\u0315\x03\x02\x02\x02\x8F" + - "\u0318\x03\x02\x02\x02\x91\u031A\x03\x02\x02\x02\x93\u031D\x03\x02\x02" + - "\x02\x95\u031F\x03\x02\x02\x02\x97\u0322\x03\x02\x02\x02\x99\u0324\x03" + - "\x02\x02\x02\x9B\u0326\x03\x02\x02\x02\x9D\u0328\x03\x02\x02\x02\x9F\u032A" + - "\x03\x02\x02\x02\xA1\u032C\x03\x02\x02\x02\xA3\u0331\x03\x02\x02\x02\xA5" + - "\u0346\x03\x02\x02\x02\xA7\u0348\x03\x02\x02\x02\xA9\u0350\x03\x02\x02" + - "\x02\xAB\u0352\x03\x02\x02\x02\xAD\u0356\x03\x02\x02\x02\xAF\u035A\x03" + - "\x02\x02\x02\xB1\u035E\x03\x02\x02\x02\xB3\u0363\x03\x02\x02\x02\xB5\u0367" + - "\x03\x02\x02\x02\xB7\u036B\x03\x02\x02\x02\xB9\u036F\x03\x02\x02\x02\xBB" + - "\u0373\x03\x02\x02\x02\xBD\u037F\x03\x02\x02\x02\xBF\u0382\x03\x02\x02" + - "\x02\xC1\u0386\x03\x02\x02\x02\xC3\u038A\x03\x02\x02\x02\xC5\u038E\x03" + - "\x02\x02\x02\xC7\u0392\x03\x02\x02\x02\xC9\u0396\x03\x02\x02\x02\xCB\u039B" + - "\x03\x02\x02\x02\xCD\u039F\x03\x02\x02\x02\xCF\u03A7\x03\x02\x02\x02\xD1" + - "\u03BC\x03\x02\x02\x02\xD3\u03C0\x03\x02\x02\x02\xD5\u03C4\x03\x02\x02" + - "\x02\xD7\u03C8\x03\x02\x02\x02\xD9\u03CC\x03\x02\x02\x02\xDB\u03D0\x03" + - "\x02\x02\x02\xDD\u03D5\x03\x02\x02\x02\xDF\u03D9\x03\x02\x02\x02\xE1\u03DD" + - "\x03\x02\x02\x02\xE3\u03E1\x03\x02\x02\x02\xE5\u03E4\x03\x02\x02\x02\xE7" + - "\u03E8\x03\x02\x02\x02\xE9\u03EC\x03\x02\x02\x02\xEB\u03F0\x03\x02\x02" + - "\x02\xED\u03F4\x03\x02\x02\x02\xEF\u03F9\x03\x02\x02\x02\xF1\u03FE\x03" + - "\x02\x02\x02\xF3\u0403\x03\x02\x02\x02\xF5\u040A\x03\x02\x02\x02\xF7\u0413" + - "\x03\x02\x02\x02\xF9\u041A\x03\x02\x02\x02\xFB\u041E\x03\x02\x02\x02\xFD" + - "\u0422\x03\x02\x02\x02\xFF\u0426\x03\x02\x02\x02\u0101\u042A\x03\x02\x02" + - "\x02\u0103\u042E\x03\x02\x02\x02\u0105\u0434\x03\x02\x02\x02\u0107\u0438" + - "\x03\x02\x02\x02\u0109\u043C\x03\x02\x02\x02\u010B\u0440\x03"; - private static readonly _serializedATNSegment1: string = - "\x02\x02\x02\u010D\u0444\x03\x02\x02\x02\u010F\u0448\x03\x02\x02\x02\u0111" + - "\u044C\x03\x02\x02\x02\u0113\u0450\x03\x02\x02\x02\u0115\u0454\x03\x02" + - "\x02\x02\u0117\u0458\x03\x02\x02\x02\u0119\u045D\x03\x02\x02\x02\u011B" + - "\u0461\x03\x02\x02\x02\u011D\u0465\x03\x02\x02\x02\u011F\u0469\x03\x02" + - "\x02\x02\u0121\u046D\x03\x02\x02\x02\u0123\u0471\x03\x02\x02\x02\u0125" + - "\u0475\x03\x02\x02\x02\u0127\u047A\x03\x02\x02\x02\u0129\u047F\x03\x02" + - "\x02\x02\u012B\u0489\x03\x02\x02\x02\u012D\u048D\x03\x02\x02\x02\u012F" + - "\u0491\x03\x02\x02\x02\u0131\u0495\x03\x02\x02\x02\u0133\u049A\x03\x02" + - "\x02\x02\u0135\u04A1\x03\x02\x02\x02\u0137\u04A5\x03\x02\x02\x02\u0139" + - "\u04A9\x03\x02\x02\x02\u013B\u04AD\x03\x02\x02\x02\u013D\u04B1\x03\x02" + - "\x02\x02\u013F\u04B3\x03\x02\x02\x02\u0141\u04B5\x03\x02\x02\x02\u0143" + - "\u04B7\x03\x02\x02\x02\u0145\u04B9\x03\x02\x02\x02\u0147\u04BB\x03\x02" + - "\x02\x02\u0149\u04BD\x03\x02\x02\x02\u014B\u04BF\x03\x02\x02\x02\u014D" + - "\u04C1\x03\x02\x02\x02\u014F\u04C3\x03\x02\x02\x02\u0151\u04C5\x03\x02" + - "\x02\x02\u0153\u04C7\x03\x02\x02\x02\u0155\u04C9\x03\x02\x02\x02\u0157" + - "\u04CB\x03\x02\x02\x02\u0159\u04CD\x03\x02\x02\x02\u015B\u04CF\x03\x02" + - "\x02\x02\u015D\u04D1\x03\x02\x02\x02\u015F\u04D3\x03\x02\x02\x02\u0161" + - "\u04D5\x03\x02\x02\x02\u0163\u04D7\x03\x02\x02\x02\u0165\u04D9\x03\x02" + - "\x02\x02\u0167\u04DB\x03\x02\x02\x02\u0169\u04DD\x03\x02\x02\x02\u016B" + - "\u04DF\x03\x02\x02\x02\u016D\u04E1\x03\x02\x02\x02\u016F\u04E3\x03\x02" + - "\x02\x02\u0171\u0172\x05\u0143\x9D\x02\u0172\u0173\x05\u014D\xA2\x02\u0173" + - "\u0174\x05\u0161\xAC\x02\u0174\u0175\x05\u0161\xAC\x02\u0175\u0176\x05" + - "\u0145\x9E\x02\u0176\u0177\x05\u0141\x9C\x02\u0177\u0178\x05\u0163\xAD" + - "\x02\u0178\u0179\x03\x02\x02\x02\u0179\u017A\b\x02\x02\x02\u017A\x0E\x03" + - "\x02\x02\x02\u017B\u017C\x05\u0143\x9D\x02\u017C\u017D\x05\u015F\xAB\x02" + - "\u017D\u017E\x05\u0159\xA8\x02\u017E\u017F\x05\u015B\xA9\x02\u017F\u0180" + - "\x03\x02\x02\x02\u0180\u0181\b\x03\x03\x02\u0181\x10\x03\x02\x02\x02\u0182" + - "\u0183\x05\u0145\x9E\x02\u0183\u0184\x05\u0157\xA7\x02\u0184\u0185\x05" + - "\u015F\xAB\x02\u0185\u0186\x05\u014D\xA2\x02\u0186\u0187\x05\u0141\x9C" + - "\x02\u0187\u0188\x05\u014B\xA1\x02\u0188\u0189\x03\x02\x02\x02\u0189\u018A" + - "\b\x04\x04\x02\u018A\x12\x03\x02\x02\x02\u018B\u018C\x05\u0145\x9E\x02" + - "\u018C\u018D\x05\u0167\xAF\x02\u018D\u018E\x05\u013D\x9A\x02\u018E\u018F" + - "\x05\u0153\xA5\x02\u018F\u0190\x03\x02\x02\x02\u0190\u0191\b\x05\x02\x02" + - "\u0191\x14\x03\x02\x02\x02\u0192\u0193\x05\u0145\x9E\x02\u0193\u0194\x05" + - "\u016B\xB1\x02\u0194\u0195\x05\u015B\xA9\x02\u0195\u0196\x05\u0153\xA5" + - "\x02\u0196\u0197\x05\u013D\x9A\x02\u0197\u0198\x05\u014D\xA2\x02\u0198" + - "\u0199\x05\u0157\xA7\x02\u0199\u019A\x03\x02\x02\x02\u019A\u019B\b\x06" + - "\x05\x02\u019B\x16\x03\x02\x02\x02\u019C\u019D\x05\u0147\x9F\x02\u019D" + - "\u019E\x05\u015F\xAB\x02\u019E\u019F\x05\u0159\xA8\x02\u019F\u01A0\x05" + - "\u0155\xA6\x02\u01A0\u01A1\x03\x02\x02\x02\u01A1\u01A2\b\x07\x06\x02\u01A2" + - "\x18\x03\x02\x02\x02\u01A3\u01A4\x05\u0149\xA0\x02\u01A4\u01A5\x05\u015F" + - "\xAB\x02\u01A5\u01A6\x05\u0159\xA8\x02\u01A6\u01A7\x05\u0151\xA4\x02\u01A7" + - "\u01A8\x03\x02\x02\x02\u01A8\u01A9\b\b\x02\x02\u01A9\x1A\x03\x02\x02\x02" + - "\u01AA\u01AB\x05\u014D\xA2\x02\u01AB\u01AC\x05\u0157\xA7\x02\u01AC\u01AD" + - "\x05\u0153\xA5\x02\u01AD\u01AE\x05\u014D\xA2\x02\u01AE\u01AF\x05\u0157" + - "\xA7\x02\u01AF\u01B0\x05\u0145\x9E\x02\u01B0\u01B1\x05\u0161\xAC\x02\u01B1" + - "\u01B2\x05\u0163\xAD\x02\u01B2\u01B3\x05\u013D\x9A\x02\u01B3\u01B4\x05" + - "\u0163\xAD\x02\u01B4\u01B5\x05\u0161\xAC\x02\u01B5\u01B6\x03\x02\x02\x02" + - "\u01B6\u01B7\b\t\x02\x02\u01B7\x1C\x03\x02\x02\x02\u01B8\u01B9\x05\u0151" + - "\xA4\x02\u01B9\u01BA\x05\u0145\x9E\x02\u01BA\u01BB\x05\u0145\x9E\x02\u01BB" + - "\u01BC\x05\u015B\xA9\x02\u01BC\u01BD\x03\x02\x02\x02\u01BD\u01BE\b\n\x03" + - "\x02\u01BE\x1E\x03\x02\x02\x02\u01BF\u01C0\x05\u0153\xA5\x02\u01C0\u01C1" + - "\x05\u014D\xA2\x02\u01C1\u01C2\x05\u0155\xA6\x02\u01C2\u01C3\x05\u014D" + - "\xA2\x02\u01C3\u01C4\x05\u0163\xAD\x02\u01C4\u01C5\x03\x02\x02\x02\u01C5" + - "\u01C6\b\v\x02\x02\u01C6 \x03\x02\x02\x02\u01C7\u01C8\x05\u0155\xA6\x02" + - "\u01C8\u01C9\x05\u0167\xAF\x02\u01C9\u01CA\x05S%\x02\u01CA\u01CB\x05\u0145" + - "\x9E\x02\u01CB\u01CC\x05\u016B\xB1\x02\u01CC\u01CD\x05\u015B\xA9\x02\u01CD" + - "\u01CE\x05\u013D\x9A\x02\u01CE\u01CF\x05\u0157\xA7\x02\u01CF\u01D0\x05" + - "\u0143\x9D\x02\u01D0\u01D1\x03\x02\x02\x02\u01D1\u01D2\b\f\x07\x02\u01D2" + - "\"\x03\x02\x02\x02\u01D3\u01D4\x05\u015F\xAB\x02\u01D4\u01D5\x05\u0145" + - "\x9E\x02\u01D5\u01D6\x05\u0157\xA7\x02\u01D6\u01D7\x05\u013D\x9A\x02\u01D7" + - "\u01D8\x05\u0155\xA6\x02\u01D8\u01D9\x05\u0145\x9E\x02\u01D9\u01DA\x03" + - "\x02\x02\x02\u01DA\u01DB\b\r\b\x02\u01DB$\x03\x02\x02\x02\u01DC\u01DD" + - "\x05\u015F\xAB\x02\u01DD\u01DE\x05\u0159\xA8\x02\u01DE\u01DF\x05\u0169" + - "\xB0\x02\u01DF\u01E0\x03\x02\x02\x02\u01E0\u01E1\b\x0E\x02\x02\u01E1&" + - "\x03\x02\x02\x02\u01E2\u01E3\x05\u0161\xAC\x02\u01E3\u01E4\x05\u014B\xA1" + - "\x02\u01E4\u01E5\x05\u0159\xA8\x02\u01E5\u01E6\x05\u0169\xB0\x02\u01E6" + - "\u01E7\x03\x02\x02\x02\u01E7\u01E8\b\x0F\t\x02\u01E8(\x03\x02\x02\x02" + - "\u01E9\u01EA\x05\u0161\xAC\x02\u01EA\u01EB\x05\u0159\xA8\x02\u01EB\u01EC" + - "\x05\u015F\xAB\x02\u01EC\u01ED\x05\u0163\xAD\x02\u01ED\u01EE\x03\x02\x02" + - "\x02\u01EE\u01EF\b\x10\x02\x02\u01EF*\x03\x02\x02\x02\u01F0\u01F1\x05" + - "\u0161\xAC\x02\u01F1\u01F2\x05\u0163\xAD\x02\u01F2\u01F3\x05\u013D\x9A" + - "\x02\u01F3\u01F4\x05\u0163\xAD\x02\u01F4\u01F5\x05\u0161\xAC\x02\u01F5" + - "\u01F6\x03\x02\x02\x02\u01F6\u01F7\b\x11\x02\x02\u01F7,\x03\x02\x02\x02" + - "\u01F8\u01F9\x05\u0169\xB0\x02\u01F9\u01FA\x05\u014B\xA1\x02\u01FA\u01FB" + - "\x05\u0145\x9E\x02\u01FB\u01FC\x05\u015F\xAB\x02\u01FC\u01FD\x05\u0145" + - "\x9E\x02\u01FD\u01FE\x03\x02\x02\x02\u01FE\u01FF\b\x12\x02\x02\u01FF." + - "\x03\x02\x02\x02\u0200\u0202\n\x02\x02\x02\u0201\u0200\x03\x02\x02\x02" + - "\u0202\u0203\x03\x02\x02\x02\u0203\u0201\x03\x02\x02\x02\u0203\u0204\x03" + - "\x02\x02\x02\u0204\u0205\x03\x02\x02\x02\u0205\u0206\b\x13\x02\x02\u0206" + - "0\x03\x02\x02\x02\u0207\u0208\x071\x02\x02\u0208\u0209\x071\x02\x02\u0209" + - "\u020D\x03\x02\x02\x02\u020A\u020C\n\x03\x02\x02\u020B\u020A\x03\x02\x02" + - "\x02\u020C\u020F\x03\x02\x02\x02\u020D\u020B\x03\x02\x02\x02\u020D\u020E" + - "\x03\x02\x02\x02\u020E\u0211\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02" + - "\u0210\u0212\x07\x0F\x02\x02\u0211\u0210\x03\x02\x02\x02\u0211\u0212\x03" + - "\x02\x02\x02\u0212\u0214\x03\x02\x02\x02\u0213\u0215\x07\f\x02\x02\u0214" + - "\u0213\x03\x02\x02\x02\u0214\u0215\x03\x02\x02\x02\u0215\u0216\x03\x02" + - "\x02\x02\u0216\u0217\b\x14\n\x02\u02172\x03\x02\x02\x02\u0218\u0219\x07" + - "1\x02\x02\u0219\u021A\x07,\x02\x02\u021A\u021F\x03\x02\x02\x02\u021B\u021E" + - "\x053\x15\x02\u021C\u021E\v\x02\x02\x02\u021D\u021B\x03\x02\x02\x02\u021D" + - "\u021C\x03\x02\x02\x02\u021E\u0221\x03\x02\x02\x02\u021F\u0220\x03\x02" + - "\x02\x02\u021F\u021D\x03\x02\x02\x02\u0220\u0222\x03\x02\x02\x02\u0221" + - "\u021F\x03\x02\x02\x02\u0222\u0223\x07,\x02\x02\u0223\u0224\x071\x02\x02" + - "\u0224\u0225\x03\x02\x02\x02\u0225\u0226\b\x15\n\x02\u02264\x03\x02\x02" + - "\x02\u0227\u0229\t\x04\x02\x02\u0228\u0227\x03\x02\x02\x02\u0229\u022A" + - "\x03\x02\x02\x02\u022A\u0228\x03\x02\x02\x02\u022A\u022B\x03\x02\x02\x02" + - "\u022B\u022C\x03\x02\x02\x02\u022C\u022D\b\x16\n\x02\u022D6\x03\x02\x02" + - "\x02\u022E\u022F\x05\xA1L\x02\u022F\u0230\x03\x02\x02\x02\u0230\u0231" + - "\b\x17\v\x02\u0231\u0232\b\x17\f\x02\u02328\x03\x02\x02\x02\u0233\u0234" + - "\x05A\x1C\x02\u0234\u0235\x03\x02\x02\x02\u0235\u0236\b\x18\r\x02\u0236" + - "\u0237\b\x18\x0E\x02\u0237:\x03\x02\x02\x02\u0238\u0239\x055\x16\x02\u0239" + - "\u023A\x03\x02\x02\x02\u023A\u023B\b\x19\n\x02\u023B<\x03\x02\x02\x02" + - "\u023C\u023D\x051\x14\x02\u023D\u023E\x03\x02\x02\x02\u023E\u023F\b\x1A" + - "\n\x02\u023F>\x03\x02\x02\x02\u0240\u0241\x053\x15\x02\u0241\u0242\x03" + - "\x02\x02\x02\u0242\u0243\b\x1B\n\x02\u0243@\x03\x02\x02\x02\u0244\u0245" + - "\x07~\x02\x02\u0245\u0246\x03\x02\x02\x02\u0246\u0247\b\x1C\x0E\x02\u0247" + - "B\x03\x02\x02\x02\u0248\u0249\t\x05\x02\x02\u0249D\x03\x02\x02\x02\u024A" + - "\u024B\t\x06\x02\x02\u024BF\x03\x02\x02\x02\u024C\u024D\x07^\x02\x02\u024D" + - "\u024E\t\x07\x02\x02\u024EH\x03\x02\x02\x02\u024F\u0250\n\b\x02\x02\u0250" + - "J\x03\x02\x02\x02\u0251\u0253\t\t\x02\x02\u0252\u0254\t\n\x02\x02\u0253" + - "\u0252\x03\x02\x02\x02\u0253\u0254\x03\x02\x02\x02\u0254\u0256\x03\x02" + - "\x02\x02\u0255\u0257\x05C\x1D\x02\u0256\u0255\x03\x02\x02\x02\u0257\u0258" + - "\x03\x02\x02\x02\u0258\u0256\x03\x02\x02\x02\u0258\u0259\x03\x02\x02\x02" + - "\u0259L\x03\x02\x02\x02\u025A\u025B\x07B\x02\x02\u025BN\x03\x02\x02\x02" + - "\u025C\u025D\x07b\x02\x02\u025DP\x03\x02\x02\x02\u025E\u0262\n\v\x02\x02" + - "\u025F\u0260\x07b\x02\x02\u0260\u0262\x07b\x02\x02\u0261\u025E\x03\x02" + - "\x02\x02\u0261\u025F\x03\x02\x02\x02\u0262R\x03\x02\x02\x02\u0263\u0264" + - "\x07a\x02\x02\u0264T\x03\x02\x02\x02\u0265\u0269\x05E\x1E\x02\u0266\u0269" + - "\x05C\x1D\x02\u0267\u0269\x05S%\x02\u0268\u0265\x03\x02\x02\x02\u0268" + - "\u0266\x03\x02\x02\x02\u0268\u0267\x03\x02\x02\x02\u0269V\x03\x02\x02" + - "\x02\u026A\u026F\x07$\x02\x02\u026B\u026E\x05G\x1F\x02\u026C\u026E\x05" + - "I \x02\u026D\u026B\x03\x02\x02\x02\u026D\u026C\x03\x02\x02\x02\u026E\u0271" + - "\x03\x02\x02\x02\u026F\u026D\x03\x02\x02\x02\u026F\u0270\x03\x02\x02\x02" + - "\u0270\u0272\x03\x02\x02\x02\u0271\u026F\x03\x02\x02\x02\u0272\u0288\x07" + - "$\x02\x02\u0273\u0274\x07$\x02\x02\u0274\u0275\x07$\x02\x02\u0275\u0276" + - "\x07$\x02\x02\u0276\u027A\x03\x02\x02\x02\u0277\u0279\n\x03\x02\x02\u0278" + - "\u0277\x03\x02\x02\x02\u0279\u027C\x03\x02\x02\x02\u027A\u027B\x03\x02" + - "\x02\x02\u027A\u0278\x03\x02\x02\x02\u027B\u027D\x03\x02\x02\x02\u027C" + - "\u027A\x03\x02\x02\x02\u027D\u027E\x07$\x02\x02\u027E\u027F\x07$\x02\x02" + - "\u027F\u0280\x07$\x02\x02\u0280\u0282\x03\x02\x02\x02\u0281\u0283\x07" + - "$\x02\x02\u0282\u0281\x03\x02\x02\x02\u0282\u0283\x03\x02\x02\x02\u0283" + - "\u0285\x03\x02\x02\x02\u0284\u0286\x07$\x02\x02\u0285\u0284\x03\x02\x02" + - "\x02\u0285\u0286\x03\x02\x02\x02\u0286\u0288\x03\x02\x02\x02\u0287\u026A" + - "\x03\x02\x02\x02\u0287\u0273\x03\x02\x02\x02\u0288X\x03\x02\x02\x02\u0289" + - "\u028B\x05C\x1D\x02\u028A\u0289\x03\x02\x02\x02\u028B\u028C\x03\x02\x02" + - "\x02\u028C\u028A\x03\x02\x02\x02\u028C\u028D\x03\x02\x02\x02\u028DZ\x03" + - "\x02\x02\x02\u028E\u0290\x05C\x1D\x02\u028F\u028E\x03\x02\x02\x02\u0290" + - "\u0291\x03\x02\x02\x02\u0291\u028F\x03\x02\x02\x02\u0291\u0292\x03\x02" + - "\x02\x02\u0292\u0293\x03\x02\x02\x02\u0293\u0297\x05i0\x02\u0294\u0296" + - "\x05C\x1D\x02\u0295\u0294\x03\x02\x02\x02\u0296\u0299\x03\x02\x02\x02" + - "\u0297\u0295\x03\x02\x02\x02\u0297\u0298\x03\x02\x02\x02\u0298\u02B9\x03" + - "\x02\x02\x02\u0299\u0297\x03\x02\x02\x02\u029A\u029C\x05i0\x02\u029B\u029D" + - "\x05C\x1D\x02\u029C\u029B\x03\x02\x02\x02\u029D\u029E\x03\x02\x02\x02" + - "\u029E\u029C\x03\x02\x02\x02\u029E\u029F\x03\x02\x02\x02\u029F\u02B9\x03" + - "\x02\x02\x02\u02A0\u02A2\x05C\x1D\x02\u02A1\u02A0\x03\x02\x02\x02\u02A2" + - "\u02A3\x03\x02\x02\x02\u02A3\u02A1\x03\x02\x02\x02\u02A3\u02A4\x03\x02" + - "\x02\x02\u02A4\u02AC\x03\x02\x02\x02\u02A5\u02A9\x05i0\x02\u02A6\u02A8" + - "\x05C\x1D\x02\u02A7\u02A6\x03\x02\x02\x02\u02A8\u02AB\x03\x02\x02\x02" + - "\u02A9\u02A7\x03\x02\x02\x02\u02A9\u02AA\x03\x02\x02\x02\u02AA\u02AD\x03" + - "\x02\x02\x02\u02AB\u02A9\x03\x02\x02\x02\u02AC\u02A5\x03\x02\x02\x02\u02AC" + - "\u02AD\x03\x02\x02\x02\u02AD\u02AE\x03\x02\x02\x02\u02AE\u02AF\x05K!\x02" + - "\u02AF\u02B9\x03\x02\x02\x02\u02B0\u02B2\x05i0\x02\u02B1\u02B3\x05C\x1D" + - "\x02\u02B2\u02B1\x03\x02\x02\x02\u02B3\u02B4\x03\x02\x02\x02\u02B4\u02B2" + - "\x03\x02\x02\x02\u02B4\u02B5\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02" + - "\u02B6\u02B7\x05K!\x02\u02B7\u02B9\x03\x02\x02\x02\u02B8\u028F\x03\x02" + - "\x02\x02\u02B8\u029A\x03\x02\x02\x02\u02B8\u02A1\x03\x02\x02\x02\u02B8" + - "\u02B0\x03\x02\x02\x02\u02B9\\\x03\x02\x02\x02\u02BA\u02BB\x05\u013F\x9B" + - "\x02\u02BB\u02BC\x05\u016D\xB2\x02\u02BC^\x03\x02\x02\x02\u02BD\u02BE" + - "\x05\u013D\x9A\x02\u02BE\u02BF\x05\u0157\xA7\x02\u02BF\u02C0\x05\u0143" + - "\x9D\x02\u02C0`\x03\x02\x02\x02\u02C1\u02C2\x05\u013D\x9A\x02\u02C2\u02C3" + - "\x05\u0161\xAC\x02\u02C3\u02C4\x05\u0141\x9C\x02\u02C4b\x03\x02\x02\x02" + - "\u02C5\u02C6\x07?\x02\x02\u02C6d\x03\x02\x02\x02\u02C7\u02C8\x07.\x02" + - "\x02\u02C8f\x03\x02\x02\x02\u02C9\u02CA\x05\u0143\x9D\x02\u02CA\u02CB" + - "\x05\u0145\x9E\x02\u02CB\u02CC\x05\u0161\xAC\x02\u02CC\u02CD\x05\u0141" + - "\x9C\x02\u02CDh\x03\x02\x02\x02\u02CE\u02CF\x070\x02\x02\u02CFj\x03\x02" + - "\x02\x02\u02D0\u02D1\x05\u0147\x9F\x02\u02D1\u02D2\x05\u013D\x9A\x02\u02D2" + - "\u02D3\x05\u0153\xA5\x02\u02D3\u02D4\x05\u0161\xAC\x02\u02D4\u02D5\x05" + - "\u0145\x9E\x02\u02D5l\x03\x02\x02\x02\u02D6\u02D7\x05\u0147\x9F\x02\u02D7" + - "\u02D8\x05\u014D\xA2\x02\u02D8\u02D9\x05\u015F\xAB\x02\u02D9\u02DA\x05" + - "\u0161\xAC\x02\u02DA\u02DB\x05\u0163\xAD\x02\u02DBn\x03\x02\x02\x02\u02DC" + - "\u02DD\x05\u0153\xA5\x02\u02DD\u02DE\x05\u013D\x9A\x02\u02DE\u02DF\x05" + - "\u0161\xAC\x02\u02DF\u02E0\x05\u0163\xAD\x02\u02E0p\x03\x02\x02\x02\u02E1" + - "\u02E2\x07*\x02\x02\u02E2r\x03\x02\x02\x02\u02E3\u02E4\x05\u014D\xA2\x02" + - "\u02E4\u02E5\x05\u0157\xA7\x02\u02E5t\x03\x02\x02\x02\u02E6\u02E7\x05" + - "\u014D\xA2\x02\u02E7\u02E8\x05\u0161\xAC\x02\u02E8v\x03\x02\x02\x02\u02E9" + - "\u02EA\x05\u0153\xA5\x02\u02EA\u02EB\x05\u014D\xA2\x02\u02EB\u02EC\x05" + - "\u0151\xA4\x02\u02EC\u02ED\x05\u0145\x9E\x02\u02EDx\x03\x02\x02\x02\u02EE" + - "\u02EF\x05\u0157\xA7\x02\u02EF\u02F0\x05\u0159\xA8\x02\u02F0\u02F1\x05" + - "\u0163\xAD\x02\u02F1z\x03\x02\x02\x02\u02F2\u02F3\x05\u0157\xA7\x02\u02F3" + - "\u02F4\x05\u0165\xAE\x02\u02F4\u02F5\x05\u0153\xA5\x02\u02F5\u02F6\x05" + - "\u0153\xA5\x02\u02F6|\x03\x02\x02\x02\u02F7\u02F8\x05\u0157\xA7\x02\u02F8" + - "\u02F9\x05\u0165\xAE\x02\u02F9\u02FA\x05\u0153\xA5\x02\u02FA\u02FB\x05" + - "\u0153\xA5\x02\u02FB\u02FC\x05\u0161\xAC\x02\u02FC~\x03\x02\x02\x02\u02FD" + - "\u02FE\x05\u0159\xA8\x02\u02FE\u02FF\x05\u015F\xAB\x02\u02FF\x80\x03\x02" + - "\x02\x02\u0300\u0301\x07A\x02\x02\u0301\x82\x03\x02\x02\x02\u0302\u0303" + - "\x05\u015F\xAB\x02\u0303\u0304\x05\u0153\xA5\x02\u0304\u0305\x05\u014D" + - "\xA2\x02\u0305\u0306\x05\u0151\xA4\x02\u0306\u0307\x05\u0145\x9E\x02\u0307" + - "\x84\x03\x02\x02\x02\u0308\u0309\x07+\x02\x02\u0309\x86\x03\x02\x02\x02" + - "\u030A\u030B\x05\u0163\xAD\x02\u030B\u030C\x05\u015F\xAB\x02\u030C\u030D" + - "\x05\u0165\xAE\x02\u030D\u030E\x05\u0145\x9E\x02\u030E\x88\x03\x02\x02" + - "\x02\u030F\u0310\x07?\x02\x02\u0310\u0311\x07?\x02\x02\u0311\x8A\x03\x02" + - "\x02\x02\u0312\u0313\x07?\x02\x02\u0313\u0314\x07\x80\x02\x02\u0314\x8C" + - "\x03\x02\x02\x02\u0315\u0316\x07#\x02\x02\u0316\u0317\x07?\x02\x02\u0317" + - "\x8E\x03\x02\x02\x02\u0318\u0319\x07>\x02\x02\u0319\x90\x03\x02\x02\x02" + - "\u031A\u031B\x07>\x02\x02\u031B\u031C\x07?\x02\x02\u031C\x92\x03\x02\x02" + - "\x02\u031D\u031E\x07@\x02\x02\u031E\x94\x03\x02\x02\x02\u031F\u0320\x07" + - "@\x02\x02\u0320\u0321\x07?\x02\x02\u0321\x96\x03\x02\x02\x02\u0322\u0323" + - "\x07-\x02\x02\u0323\x98\x03\x02\x02\x02\u0324\u0325\x07/\x02\x02\u0325" + - "\x9A\x03\x02\x02\x02\u0326\u0327\x07,\x02\x02\u0327\x9C\x03\x02\x02\x02" + - "\u0328\u0329\x071\x02\x02\u0329\x9E\x03\x02\x02\x02\u032A\u032B\x07\'" + - "\x02\x02\u032B\xA0\x03\x02\x02\x02\u032C\u032D\x07]\x02\x02\u032D\u032E" + - "\x03\x02\x02\x02\u032E\u032F\bL\x02\x02\u032F\u0330\bL\x02\x02\u0330\xA2" + - "\x03\x02\x02\x02\u0331\u0332\x07_\x02\x02\u0332\u0333\x03\x02\x02\x02" + - "\u0333\u0334\bM\x0E\x02\u0334\u0335\bM\x0E\x02\u0335\xA4\x03\x02\x02\x02" + - "\u0336\u033A\x05E\x1E\x02\u0337\u0339\x05U&\x02\u0338\u0337\x03\x02\x02" + - "\x02\u0339\u033C\x03\x02\x02\x02\u033A\u0338\x03\x02\x02\x02\u033A\u033B" + - "\x03\x02\x02\x02\u033B\u0347\x03\x02\x02\x02\u033C\u033A\x03\x02\x02\x02" + - "\u033D\u0340\x05S%\x02\u033E\u0340\x05M\"\x02\u033F\u033D\x03\x02\x02" + - "\x02\u033F\u033E\x03\x02\x02\x02\u0340\u0342\x03\x02\x02\x02\u0341\u0343" + - "\x05U&\x02\u0342\u0341\x03\x02\x02\x02\u0343\u0344\x03\x02\x02\x02\u0344" + - "\u0342\x03\x02\x02\x02\u0344\u0345\x03\x02\x02\x02\u0345\u0347\x03\x02" + - "\x02\x02\u0346\u0336\x03\x02\x02\x02\u0346\u033F\x03\x02\x02\x02\u0347" + - "\xA6\x03\x02\x02\x02\u0348\u034A\x05O#\x02\u0349\u034B\x05Q$\x02\u034A" + - "\u0349\x03\x02\x02\x02\u034B\u034C\x03\x02\x02\x02\u034C\u034A\x03\x02" + - "\x02\x02\u034C\u034D\x03\x02\x02\x02\u034D\u034E\x03\x02\x02\x02\u034E" + - "\u034F\x05O#\x02\u034F\xA8\x03\x02\x02\x02\u0350\u0351\x05\xA7O\x02\u0351" + - "\xAA\x03\x02\x02\x02\u0352\u0353\x051\x14\x02\u0353\u0354\x03\x02\x02" + - "\x02\u0354\u0355\bQ\n\x02\u0355\xAC\x03\x02\x02\x02\u0356\u0357\x053\x15" + - "\x02\u0357\u0358\x03\x02\x02\x02\u0358\u0359\bR\n\x02\u0359\xAE\x03\x02" + - "\x02\x02\u035A\u035B\x055\x16\x02\u035B\u035C\x03\x02\x02\x02\u035C\u035D" + - "\bS\n\x02\u035D\xB0\x03\x02\x02\x02\u035E\u035F\x05A\x1C\x02\u035F\u0360" + - "\x03\x02\x02\x02\u0360\u0361\bT\r\x02\u0361\u0362\bT\x0E\x02\u0362\xB2" + - "\x03\x02\x02\x02\u0363\u0364\x05\xA1L\x02\u0364\u0365\x03\x02\x02\x02" + - "\u0365\u0366\bU\v\x02\u0366\xB4\x03\x02\x02\x02\u0367\u0368\x05\xA3M\x02" + - "\u0368\u0369\x03\x02\x02\x02\u0369\u036A\bV\x0F\x02\u036A\xB6\x03\x02" + - "\x02\x02\u036B\u036C\x05e.\x02\u036C\u036D\x03\x02\x02\x02\u036D\u036E" + - "\bW\x10\x02\u036E\xB8\x03\x02\x02\x02\u036F\u0370\x05c-\x02\u0370\u0371" + - "\x03\x02\x02\x02\u0371\u0372\bX\x11\x02\u0372\xBA\x03\x02\x02\x02\u0373" + - "\u0374\x05\u0155\xA6\x02\u0374\u0375\x05\u0145\x9E\x02\u0375\u0376\x05" + - "\u0163\xAD\x02\u0376\u0377\x05\u013D\x9A\x02\u0377\u0378\x05\u0143\x9D" + - "\x02\u0378\u0379\x05\u013D\x9A\x02\u0379\u037A\x05\u0163\xAD\x02\u037A" + - "\u037B\x05\u013D\x9A\x02\u037B\xBC\x03\x02\x02\x02\u037C\u0380\n\f\x02" + - "\x02\u037D\u037E\x071\x02\x02\u037E\u0380\n\r\x02\x02\u037F\u037C\x03" + - "\x02\x02\x02\u037F\u037D\x03\x02\x02\x02\u0380\xBE\x03\x02\x02\x02\u0381" + - "\u0383\x05\xBDZ\x02\u0382\u0381\x03\x02\x02\x02\u0383\u0384\x03\x02\x02" + - "\x02\u0384\u0382\x03\x02\x02\x02\u0384\u0385\x03\x02\x02\x02\u0385\xC0" + - "\x03\x02\x02\x02\u0386\u0387\x05\xA9P\x02\u0387\u0388\x03\x02\x02\x02" + - "\u0388\u0389\b\\\x12\x02\u0389\xC2\x03\x02\x02\x02\u038A\u038B\x051\x14" + - "\x02\u038B\u038C\x03\x02\x02\x02\u038C\u038D\b]\n\x02\u038D\xC4\x03\x02" + - "\x02\x02\u038E\u038F\x053\x15\x02\u038F\u0390\x03\x02\x02\x02\u0390\u0391" + - "\b^\n\x02\u0391\xC6\x03\x02\x02\x02\u0392\u0393\x055\x16\x02\u0393\u0394" + - "\x03\x02\x02\x02\u0394\u0395\b_\n\x02\u0395\xC8\x03\x02\x02\x02\u0396" + - "\u0397\x05A\x1C\x02\u0397\u0398\x03\x02\x02\x02\u0398\u0399\b`\r\x02\u0399" + - "\u039A\b`\x0E\x02\u039A\xCA\x03\x02\x02\x02\u039B\u039C\x05i0\x02\u039C" + - "\u039D\x03\x02\x02\x02\u039D\u039E\ba\x13\x02\u039E\xCC\x03\x02\x02\x02" + - "\u039F\u03A0\x05e.\x02\u03A0\u03A1\x03\x02\x02\x02\u03A1\u03A2\bb\x10" + - "\x02\u03A2\xCE\x03\x02\x02\x02\u03A3\u03A8\x05E\x1E\x02\u03A4\u03A8\x05" + - "C\x1D\x02\u03A5\u03A8\x05S%\x02\u03A6\u03A8\x05\x9BI\x02\u03A7\u03A3\x03" + - "\x02\x02\x02\u03A7\u03A4\x03\x02\x02\x02\u03A7\u03A5\x03\x02\x02\x02\u03A7" + - "\u03A6\x03\x02\x02\x02\u03A8\xD0\x03\x02\x02\x02\u03A9\u03AC\x05E\x1E" + - "\x02\u03AA\u03AC\x05\x9BI\x02\u03AB\u03A9\x03\x02\x02\x02\u03AB\u03AA" + - "\x03\x02\x02\x02\u03AC\u03B0\x03\x02\x02\x02\u03AD\u03AF\x05\xCFc\x02" + - "\u03AE\u03AD\x03\x02\x02\x02\u03AF\u03B2\x03\x02\x02\x02\u03B0\u03AE\x03" + - "\x02\x02\x02\u03B0\u03B1\x03\x02\x02\x02\u03B1\u03BD\x03\x02\x02\x02\u03B2" + - "\u03B0\x03\x02\x02\x02\u03B3\u03B6\x05S%\x02\u03B4\u03B6\x05M\"\x02\u03B5" + - "\u03B3\x03\x02\x02\x02\u03B5\u03B4\x03\x02\x02\x02\u03B6\u03B8\x03\x02" + - "\x02\x02\u03B7\u03B9\x05\xCFc\x02\u03B8\u03B7\x03\x02\x02\x02\u03B9\u03BA" + - "\x03\x02\x02\x02\u03BA\u03B8\x03\x02\x02\x02\u03BA\u03BB\x03\x02\x02\x02" + - "\u03BB\u03BD\x03\x02\x02\x02\u03BC\u03AB\x03\x02\x02\x02\u03BC\u03B5\x03" + - "\x02\x02\x02\u03BD\xD2\x03\x02\x02\x02\u03BE\u03C1\x05\xD1d\x02\u03BF" + - "\u03C1\x05\xA7O\x02\u03C0\u03BE\x03\x02\x02\x02\u03C0\u03BF\x03\x02\x02" + - "\x02\u03C1\u03C2\x03\x02\x02\x02\u03C2\u03C0\x03\x02\x02\x02\u03C2\u03C3" + - "\x03\x02\x02\x02\u03C3\xD4\x03\x02\x02\x02\u03C4\u03C5\x051\x14\x02\u03C5" + - "\u03C6\x03\x02\x02\x02\u03C6\u03C7\bf\n\x02\u03C7\xD6\x03\x02\x02\x02" + - "\u03C8\u03C9\x053\x15\x02\u03C9\u03CA\x03\x02\x02\x02\u03CA\u03CB\bg\n" + - "\x02\u03CB\xD8\x03\x02\x02\x02\u03CC\u03CD\x055\x16\x02\u03CD\u03CE\x03" + - "\x02\x02\x02\u03CE\u03CF\bh\n\x02\u03CF\xDA\x03\x02\x02\x02\u03D0\u03D1" + - "\x05A\x1C\x02\u03D1\u03D2\x03\x02\x02\x02\u03D2\u03D3\bi\r\x02\u03D3\u03D4" + - "\bi\x0E\x02\u03D4\xDC\x03\x02\x02\x02\u03D5\u03D6\x05c-\x02\u03D6\u03D7" + - "\x03\x02\x02\x02\u03D7\u03D8\bj\x11\x02\u03D8\xDE\x03\x02\x02\x02\u03D9" + - "\u03DA\x05e.\x02\u03DA\u03DB\x03\x02\x02\x02\u03DB\u03DC\bk\x10\x02\u03DC" + - "\xE0\x03\x02\x02\x02\u03DD\u03DE\x05i0\x02\u03DE\u03DF\x03\x02\x02\x02" + - "\u03DF\u03E0\bl\x13\x02\u03E0\xE2\x03\x02\x02\x02\u03E1\u03E2\x05\u013D" + - "\x9A\x02\u03E2\u03E3\x05\u0161\xAC\x02\u03E3\xE4\x03\x02\x02\x02\u03E4" + - "\u03E5\x05\xD3e\x02\u03E5\u03E6\x03\x02\x02\x02\u03E6\u03E7\bn\x14\x02" + - "\u03E7\xE6\x03\x02\x02\x02\u03E8\u03E9\x051\x14\x02\u03E9\u03EA\x03\x02" + - "\x02\x02\u03EA\u03EB\bo\n\x02\u03EB\xE8\x03\x02\x02\x02\u03EC\u03ED\x05" + - "3\x15\x02\u03ED\u03EE\x03\x02\x02\x02\u03EE\u03EF\bp\n\x02\u03EF\xEA\x03" + - "\x02\x02\x02\u03F0\u03F1\x055\x16\x02\u03F1\u03F2\x03\x02\x02\x02\u03F2" + - "\u03F3\bq\n\x02\u03F3\xEC\x03\x02\x02\x02\u03F4\u03F5\x05A\x1C\x02\u03F5" + - "\u03F6\x03\x02\x02\x02\u03F6\u03F7\br\r\x02\u03F7\u03F8\br\x0E\x02\u03F8" + - "\xEE\x03\x02\x02\x02\u03F9\u03FA\x05\xA1L\x02\u03FA\u03FB\x03\x02\x02" + - "\x02\u03FB\u03FC\bs\v\x02\u03FC\u03FD\bs\x15\x02\u03FD\xF0\x03\x02\x02" + - "\x02\u03FE\u03FF\x05\u0159\xA8\x02\u03FF\u0400\x05\u0157\xA7\x02\u0400" + - "\u0401\x03\x02\x02\x02\u0401\u0402\bt\x16\x02\u0402\xF2\x03\x02\x02\x02" + - "\u0403\u0404\x05\u0169\xB0\x02\u0404\u0405\x05\u014D\xA2\x02\u0405\u0406" + - "\x05\u0163\xAD\x02\u0406\u0407\x05\u014B\xA1\x02\u0407\u0408\x03\x02\x02" + - "\x02\u0408\u0409\bu\x16\x02\u0409\xF4\x03\x02\x02\x02\u040A\u040B\n\x0E" + - "\x02\x02\u040B\xF6\x03\x02\x02\x02\u040C\u040E\x05\xF5v\x02\u040D\u040C" + - "\x03\x02\x02\x02\u040E\u040F\x03\x02\x02\x02\u040F\u040D\x03\x02\x02\x02" + - "\u040F\u0410\x03\x02\x02\x02\u0410\u0411\x03\x02\x02\x02\u0411\u0412\x05" + - "\u0133\x95\x02\u0412\u0414\x03\x02\x02\x02\u0413\u040D\x03\x02\x02\x02" + - "\u0413\u0414\x03\x02\x02\x02\u0414\u0416\x03\x02\x02\x02\u0415\u0417\x05" + - "\xF5v\x02\u0416\u0415\x03\x02\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418" + - "\u0416\x03\x02\x02\x02\u0418\u0419\x03\x02\x02\x02\u0419\xF8\x03\x02\x02" + - "\x02\u041A\u041B\x05\xA9P\x02\u041B\u041C\x03\x02\x02\x02\u041C\u041D" + - "\bx\x12\x02\u041D\xFA\x03\x02\x02\x02\u041E\u041F\x05\xF7w\x02\u041F\u0420" + - "\x03\x02\x02\x02\u0420\u0421\by\x17\x02\u0421\xFC\x03\x02\x02\x02\u0422" + - "\u0423\x051\x14\x02\u0423\u0424\x03\x02\x02\x02\u0424\u0425\bz\n\x02\u0425" + - "\xFE\x03\x02\x02\x02\u0426\u0427\x053\x15\x02\u0427\u0428\x03\x02\x02" + - "\x02\u0428\u0429\b{\n\x02\u0429\u0100\x03\x02\x02\x02\u042A\u042B\x05" + - "5\x16\x02\u042B\u042C\x03\x02\x02\x02\u042C\u042D\b|\n\x02\u042D\u0102" + - "\x03\x02\x02\x02\u042E\u042F\x05A\x1C\x02\u042F\u0430\x03\x02\x02\x02" + - "\u0430\u0431\b}\r\x02\u0431\u0432\b}\x0E\x02\u0432\u0433\b}\x0E\x02\u0433" + - "\u0104\x03\x02\x02\x02\u0434\u0435\x05c-\x02\u0435\u0436\x03\x02\x02\x02" + - "\u0436\u0437\b~\x11\x02\u0437\u0106\x03\x02\x02\x02\u0438\u0439\x05e." + - "\x02\u0439\u043A\x03\x02\x02\x02\u043A\u043B\b\x7F\x10\x02\u043B\u0108" + - "\x03\x02\x02\x02\u043C\u043D\x05i0\x02\u043D\u043E\x03\x02\x02\x02\u043E" + - "\u043F\b\x80\x13\x02\u043F\u010A\x03\x02\x02\x02\u0440\u0441\x05\xF3u" + - "\x02\u0441\u0442\x03\x02\x02\x02\u0442\u0443\b\x81\x18\x02\u0443\u010C" + - "\x03\x02\x02\x02\u0444\u0445\x05\xD3e\x02\u0445\u0446\x03\x02\x02\x02" + - "\u0446\u0447\b\x82\x14\x02\u0447\u010E\x03\x02\x02\x02\u0448\u0449\x05" + - "\xA9P\x02\u0449\u044A\x03\x02\x02\x02\u044A\u044B\b\x83\x12\x02\u044B" + - "\u0110\x03\x02\x02\x02\u044C\u044D\x051\x14\x02\u044D\u044E\x03\x02\x02" + - "\x02\u044E\u044F\b\x84\n"; - private static readonly _serializedATNSegment2: string = - "\x02\u044F\u0112\x03\x02\x02\x02\u0450\u0451\x053\x15\x02\u0451\u0452" + - "\x03\x02\x02\x02\u0452\u0453\b\x85\n\x02\u0453\u0114\x03\x02\x02\x02\u0454" + - "\u0455\x055\x16\x02\u0455\u0456\x03\x02\x02\x02\u0456\u0457\b\x86\n\x02" + - "\u0457\u0116\x03\x02\x02\x02\u0458\u0459\x05A\x1C\x02\u0459\u045A\x03" + - "\x02\x02\x02\u045A\u045B\b\x87\r\x02\u045B\u045C\b\x87\x0E\x02\u045C\u0118" + - "\x03\x02\x02\x02\u045D\u045E\x05i0\x02\u045E\u045F\x03\x02\x02\x02\u045F" + - "\u0460\b\x88\x13\x02\u0460\u011A\x03\x02\x02\x02\u0461\u0462\x05\xA9P" + - "\x02\u0462\u0463\x03\x02\x02\x02\u0463\u0464\b\x89\x12\x02\u0464\u011C" + - "\x03\x02\x02\x02\u0465\u0466\x05\xA5N\x02\u0466\u0467\x03\x02\x02\x02" + - "\u0467\u0468\b\x8A\x19\x02\u0468\u011E\x03\x02\x02\x02\u0469\u046A\x05" + - "1\x14\x02\u046A\u046B\x03\x02\x02\x02\u046B\u046C\b\x8B\n\x02\u046C\u0120" + - "\x03\x02\x02\x02\u046D\u046E\x053\x15\x02\u046E\u046F\x03\x02\x02\x02" + - "\u046F\u0470\b\x8C\n\x02\u0470\u0122\x03\x02\x02\x02\u0471\u0472\x055" + - "\x16\x02\u0472\u0473\x03\x02\x02\x02\u0473\u0474\b\x8D\n\x02\u0474\u0124" + - "\x03\x02\x02\x02\u0475\u0476\x05A\x1C\x02\u0476\u0477\x03\x02\x02\x02" + - "\u0477\u0478\b\x8E\r\x02\u0478\u0479\b\x8E\x0E\x02\u0479\u0126\x03\x02" + - "\x02\x02\u047A\u047B\x05\u014D\xA2\x02\u047B\u047C\x05\u0157\xA7\x02\u047C" + - "\u047D\x05\u0147\x9F\x02\u047D\u047E\x05\u0159\xA8\x02\u047E\u0128\x03" + - "\x02\x02\x02\u047F\u0480\x05\u0147\x9F\x02\u0480\u0481\x05\u0165\xAE\x02" + - "\u0481\u0482\x05\u0157\xA7\x02\u0482\u0483\x05\u0141\x9C\x02\u0483\u0484" + - "\x05\u0163\xAD\x02\u0484\u0485\x05\u014D\xA2\x02\u0485\u0486\x05\u0159" + - "\xA8\x02\u0486\u0487\x05\u0157\xA7\x02\u0487\u0488\x05\u0161\xAC\x02\u0488" + - "\u012A\x03\x02\x02\x02\u0489\u048A\x051\x14\x02\u048A\u048B\x03\x02\x02" + - "\x02\u048B\u048C\b\x91\n\x02\u048C\u012C\x03\x02\x02\x02\u048D\u048E\x05" + - "3\x15\x02\u048E\u048F\x03\x02\x02\x02\u048F\u0490\b\x92\n\x02\u0490\u012E" + - "\x03\x02\x02\x02\u0491\u0492\x055\x16\x02\u0492\u0493\x03\x02\x02\x02" + - "\u0493\u0494\b\x93\n\x02\u0494\u0130\x03\x02\x02\x02\u0495\u0496\x05\xA3" + - "M\x02\u0496\u0497\x03\x02\x02\x02\u0497\u0498\b\x94\x0F\x02\u0498\u0499" + - "\b\x94\x0E\x02\u0499\u0132\x03\x02\x02\x02\u049A\u049B\x07<\x02\x02\u049B" + - "\u0134\x03\x02\x02\x02\u049C\u04A2\x05M\"\x02\u049D\u04A2\x05C\x1D\x02" + - "\u049E\u04A2\x05i0\x02\u049F\u04A2\x05E\x1E\x02\u04A0\u04A2\x05S%\x02" + - "\u04A1\u049C\x03\x02\x02\x02\u04A1\u049D\x03\x02\x02\x02\u04A1\u049E\x03" + - "\x02\x02\x02\u04A1\u049F\x03\x02\x02\x02\u04A1\u04A0\x03\x02\x02\x02\u04A2" + - "\u04A3\x03\x02\x02\x02\u04A3\u04A1\x03\x02\x02\x02\u04A3\u04A4\x03\x02" + - "\x02\x02\u04A4\u0136\x03\x02\x02\x02\u04A5\u04A6\x051\x14\x02\u04A6\u04A7" + - "\x03\x02\x02\x02\u04A7\u04A8\b\x97\n\x02\u04A8\u0138\x03\x02\x02\x02\u04A9" + - "\u04AA\x053\x15\x02\u04AA\u04AB\x03\x02\x02\x02\u04AB\u04AC\b\x98\n\x02" + - "\u04AC\u013A\x03\x02\x02\x02\u04AD\u04AE\x055\x16\x02\u04AE\u04AF\x03" + - "\x02\x02\x02\u04AF\u04B0\b\x99\n\x02\u04B0\u013C\x03\x02\x02\x02\u04B1" + - "\u04B2\t\x0F\x02\x02\u04B2\u013E\x03\x02\x02\x02\u04B3\u04B4\t\x10\x02" + - "\x02\u04B4\u0140\x03\x02\x02\x02\u04B5\u04B6\t\x11\x02\x02\u04B6\u0142" + - "\x03\x02\x02\x02\u04B7\u04B8\t\x12\x02\x02\u04B8\u0144\x03\x02\x02\x02" + - "\u04B9\u04BA\t\t\x02\x02\u04BA\u0146\x03\x02\x02\x02\u04BB\u04BC\t\x13" + - "\x02\x02\u04BC\u0148\x03\x02\x02\x02\u04BD\u04BE\t\x14\x02\x02\u04BE\u014A" + - "\x03\x02\x02\x02\u04BF\u04C0\t\x15\x02\x02\u04C0\u014C\x03\x02\x02\x02" + - "\u04C1\u04C2\t\x16\x02\x02\u04C2\u014E\x03\x02\x02\x02\u04C3\u04C4\t\x17" + - "\x02\x02\u04C4\u0150\x03\x02\x02\x02\u04C5\u04C6\t\x18\x02\x02\u04C6\u0152" + - "\x03\x02\x02\x02\u04C7\u04C8\t\x19\x02\x02\u04C8\u0154\x03\x02\x02\x02" + - "\u04C9\u04CA\t\x1A\x02\x02\u04CA\u0156\x03\x02\x02\x02\u04CB\u04CC\t\x1B" + - "\x02\x02\u04CC\u0158\x03\x02\x02\x02\u04CD\u04CE\t\x1C\x02\x02\u04CE\u015A" + - "\x03\x02\x02\x02\u04CF\u04D0\t\x1D\x02\x02\u04D0\u015C\x03\x02\x02\x02" + - "\u04D1\u04D2\t\x1E\x02\x02\u04D2\u015E\x03\x02\x02\x02\u04D3\u04D4\t\x1F" + - "\x02\x02\u04D4\u0160\x03\x02\x02\x02\u04D5\u04D6\t \x02\x02\u04D6\u0162" + - "\x03\x02\x02\x02\u04D7\u04D8\t!\x02\x02\u04D8\u0164\x03\x02\x02\x02\u04D9" + - "\u04DA\t\"\x02\x02\u04DA\u0166\x03\x02\x02\x02\u04DB\u04DC\t#\x02\x02" + - "\u04DC\u0168\x03\x02\x02\x02\u04DD\u04DE\t$\x02\x02\u04DE\u016A\x03\x02" + - "\x02\x02\u04DF\u04E0\t%\x02\x02\u04E0\u016C\x03\x02\x02\x02\u04E1\u04E2" + - "\t&\x02\x02\u04E2\u016E\x03\x02\x02\x02\u04E3\u04E4\t\'\x02\x02\u04E4" + - "\u0170\x03\x02\x02\x02;\x02\x03\x04\x05\x06\x07\b\t\n\v\f\u0203\u020D" + - "\u0211\u0214\u021D\u021F\u022A\u0253\u0258\u0261\u0268\u026D\u026F\u027A" + - "\u0282\u0285\u0287\u028C\u0291\u0297\u029E\u02A3\u02A9\u02AC\u02B4\u02B8" + - "\u033A\u033F\u0344\u0346\u034C\u037F\u0384\u03A7\u03AB\u03B0\u03B5\u03BA" + - "\u03BC\u03C0\u03C2\u040F\u0413\u0418\u04A1\u04A3\x1A\x07\x04\x02\x07\x06" + - "\x02\x07\b\x02\x07\x03\x02\x07\x05\x02\x07\n\x02\x07\x07\x02\x07\v\x02" + - "\x02\x03\x02\tA\x02\x07\x02\x02\t\x1B\x02\x06\x02\x02\tB\x02\t#\x02\t" + - "\"\x02\tD\x02\t%\x02\tM\x02\x07\f\x02\x07\t\x02\tW\x02\tV\x02\tC\x02"; - public static readonly _serializedATN: string = Utils.join( - [ - esql_lexer._serializedATNSegment0, - esql_lexer._serializedATNSegment1, - esql_lexer._serializedATNSegment2, - ], - "", - ); - public static __ATN: ATN; - public static get _ATN(): ATN { - if (!esql_lexer.__ATN) { - esql_lexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(esql_lexer._serializedATN)); - } - - return esql_lexer.__ATN; - } - -} - diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts deleted file mode 100644 index 194a489a4ce8d..0000000000000 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts +++ /dev/null @@ -1,5355 +0,0 @@ -// @ts-nocheck -// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; -import { NotNull } from "antlr4ts/Decorators"; -import { NoViableAltException } from "antlr4ts/NoViableAltException"; -import { Override } from "antlr4ts/Decorators"; -import { Parser } from "antlr4ts/Parser"; -import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; -import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; -import { RecognitionException } from "antlr4ts/RecognitionException"; -import { RuleContext } from "antlr4ts/RuleContext"; -//import { RuleVersion } from "antlr4ts/RuleVersion"; -import { TerminalNode } from "antlr4ts/tree/TerminalNode"; -import { Token } from "antlr4ts/Token"; -import { TokenStream } from "antlr4ts/TokenStream"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - -import { esql_parserListener } from "./esql_parserListener"; - -export class esql_parser extends Parser { - public static readonly DISSECT = 1; - public static readonly DROP = 2; - public static readonly ENRICH = 3; - public static readonly EVAL = 4; - public static readonly EXPLAIN = 5; - public static readonly FROM = 6; - public static readonly GROK = 7; - public static readonly INLINESTATS = 8; - public static readonly KEEP = 9; - public static readonly LIMIT = 10; - public static readonly MV_EXPAND = 11; - public static readonly RENAME = 12; - public static readonly ROW = 13; - public static readonly SHOW = 14; - public static readonly SORT = 15; - public static readonly STATS = 16; - public static readonly WHERE = 17; - public static readonly UNKNOWN_CMD = 18; - public static readonly LINE_COMMENT = 19; - public static readonly MULTILINE_COMMENT = 20; - public static readonly WS = 21; - public static readonly EXPLAIN_WS = 22; - public static readonly EXPLAIN_LINE_COMMENT = 23; - public static readonly EXPLAIN_MULTILINE_COMMENT = 24; - public static readonly PIPE = 25; - public static readonly STRING = 26; - public static readonly INTEGER_LITERAL = 27; - public static readonly DECIMAL_LITERAL = 28; - public static readonly BY = 29; - public static readonly AND = 30; - public static readonly ASC = 31; - public static readonly ASSIGN = 32; - public static readonly COMMA = 33; - public static readonly DESC = 34; - public static readonly DOT = 35; - public static readonly FALSE = 36; - public static readonly FIRST = 37; - public static readonly LAST = 38; - public static readonly LP = 39; - public static readonly IN = 40; - public static readonly IS = 41; - public static readonly LIKE = 42; - public static readonly NOT = 43; - public static readonly NULL = 44; - public static readonly NULLS = 45; - public static readonly OR = 46; - public static readonly PARAM = 47; - public static readonly RLIKE = 48; - public static readonly RP = 49; - public static readonly TRUE = 50; - public static readonly EQ = 51; - public static readonly CIEQ = 52; - public static readonly NEQ = 53; - public static readonly LT = 54; - public static readonly LTE = 55; - public static readonly GT = 56; - public static readonly GTE = 57; - public static readonly PLUS = 58; - public static readonly MINUS = 59; - public static readonly ASTERISK = 60; - public static readonly SLASH = 61; - public static readonly PERCENT = 62; - public static readonly OPENING_BRACKET = 63; - public static readonly CLOSING_BRACKET = 64; - public static readonly UNQUOTED_IDENTIFIER = 65; - public static readonly QUOTED_IDENTIFIER = 66; - public static readonly EXPR_LINE_COMMENT = 67; - public static readonly EXPR_MULTILINE_COMMENT = 68; - public static readonly EXPR_WS = 69; - public static readonly METADATA = 70; - public static readonly FROM_UNQUOTED_IDENTIFIER = 71; - public static readonly FROM_LINE_COMMENT = 72; - public static readonly FROM_MULTILINE_COMMENT = 73; - public static readonly FROM_WS = 74; - public static readonly ID_PATTERN = 75; - public static readonly PROJECT_LINE_COMMENT = 76; - public static readonly PROJECT_MULTILINE_COMMENT = 77; - public static readonly PROJECT_WS = 78; - public static readonly AS = 79; - public static readonly RENAME_LINE_COMMENT = 80; - public static readonly RENAME_MULTILINE_COMMENT = 81; - public static readonly RENAME_WS = 82; - public static readonly ON = 83; - public static readonly WITH = 84; - public static readonly ENRICH_POLICY_NAME = 85; - public static readonly ENRICH_LINE_COMMENT = 86; - public static readonly ENRICH_MULTILINE_COMMENT = 87; - public static readonly ENRICH_WS = 88; - public static readonly ENRICH_FIELD_LINE_COMMENT = 89; - public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 90; - public static readonly ENRICH_FIELD_WS = 91; - public static readonly MVEXPAND_LINE_COMMENT = 92; - public static readonly MVEXPAND_MULTILINE_COMMENT = 93; - public static readonly MVEXPAND_WS = 94; - public static readonly INFO = 95; - public static readonly FUNCTIONS = 96; - public static readonly SHOW_LINE_COMMENT = 97; - public static readonly SHOW_MULTILINE_COMMENT = 98; - public static readonly SHOW_WS = 99; - public static readonly COLON = 100; - public static readonly SETTING = 101; - public static readonly SETTING_LINE_COMMENT = 102; - public static readonly SETTTING_MULTILINE_COMMENT = 103; - public static readonly SETTING_WS = 104; - public static readonly UNQUOTED_ID_PATTERN = 105; - public static readonly RULE_singleStatement = 0; - public static readonly RULE_query = 1; - public static readonly RULE_sourceCommand = 2; - public static readonly RULE_processingCommand = 3; - public static readonly RULE_whereCommand = 4; - public static readonly RULE_booleanExpression = 5; - public static readonly RULE_regexBooleanExpression = 6; - public static readonly RULE_valueExpression = 7; - public static readonly RULE_operatorExpression = 8; - public static readonly RULE_primaryExpression = 9; - public static readonly RULE_functionExpression = 10; - public static readonly RULE_rowCommand = 11; - public static readonly RULE_fields = 12; - public static readonly RULE_field = 13; - public static readonly RULE_fromCommand = 14; - public static readonly RULE_metadata = 15; - public static readonly RULE_metadataOption = 16; - public static readonly RULE_deprecated_metadata = 17; - public static readonly RULE_evalCommand = 18; - public static readonly RULE_statsCommand = 19; - public static readonly RULE_inlinestatsCommand = 20; - public static readonly RULE_fromIdentifier = 21; - public static readonly RULE_qualifiedName = 22; - public static readonly RULE_qualifiedNamePattern = 23; - public static readonly RULE_identifier = 24; - public static readonly RULE_identifierPattern = 25; - public static readonly RULE_idPattern = 26; - public static readonly RULE_constant = 27; - public static readonly RULE_limitCommand = 28; - public static readonly RULE_sortCommand = 29; - public static readonly RULE_orderExpression = 30; - public static readonly RULE_keepCommand = 31; - public static readonly RULE_dropCommand = 32; - public static readonly RULE_renameCommand = 33; - public static readonly RULE_renameClause = 34; - public static readonly RULE_dissectCommand = 35; - public static readonly RULE_grokCommand = 36; - public static readonly RULE_mvExpandCommand = 37; - public static readonly RULE_commandOptions = 38; - public static readonly RULE_commandOption = 39; - public static readonly RULE_booleanValue = 40; - public static readonly RULE_numericValue = 41; - public static readonly RULE_decimalValue = 42; - public static readonly RULE_integerValue = 43; - public static readonly RULE_string = 44; - public static readonly RULE_comparisonOperator = 45; - public static readonly RULE_explainCommand = 46; - public static readonly RULE_subqueryExpression = 47; - public static readonly RULE_showCommand = 48; - public static readonly RULE_enrichCommand = 49; - public static readonly RULE_enrichWithClause = 50; - // tslint:disable:no-trailing-whitespace - public static readonly ruleNames: string[] = [ - "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", - "booleanExpression", "regexBooleanExpression", "valueExpression", "operatorExpression", - "primaryExpression", "functionExpression", "rowCommand", "fields", "field", - "fromCommand", "metadata", "metadataOption", "deprecated_metadata", "evalCommand", - "statsCommand", "inlinestatsCommand", "fromIdentifier", "qualifiedName", - "qualifiedNamePattern", "identifier", "identifierPattern", "idPattern", - "constant", "limitCommand", "sortCommand", "orderExpression", "keepCommand", - "dropCommand", "renameCommand", "renameClause", "dissectCommand", "grokCommand", - "mvExpandCommand", "commandOptions", "commandOption", "booleanValue", - "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator", - "explainCommand", "subqueryExpression", "showCommand", "enrichCommand", - "enrichWithClause", - ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, "'|'", undefined, undefined, - undefined, undefined, undefined, undefined, "'='", "','", undefined, "'.'", - undefined, undefined, undefined, "'('", undefined, undefined, undefined, - undefined, undefined, undefined, undefined, "'?'", undefined, "')'", undefined, - "'=='", "'=~'", "'!='", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", - "'/'", "'%'", undefined, "']'", undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, "':'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", - "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", - "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", - "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "PIPE", "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", - "ASSIGN", "COMMA", "DESC", "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", - "IS", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", - "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", - "SLASH", "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", - "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", - "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", - "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", - "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", - "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", - "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", - "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", - "SHOW_MULTILINE_COMMENT", "SHOW_WS", "COLON", "SETTING", "SETTING_LINE_COMMENT", - "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "UNQUOTED_ID_PATTERN", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(esql_parser._LITERAL_NAMES, esql_parser._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return esql_parser.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - // @Override - public get grammarFileName(): string { return "esql_parser.g4"; } - - // @Override - public get ruleNames(): string[] { return esql_parser.ruleNames; } - - // @Override - public get serializedATN(): string { return esql_parser._serializedATN; } - - constructor(input: TokenStream) { - super(input); - this._interp = new ParserATNSimulator(esql_parser._ATN, this); - } - // @RuleVersion(0) - public singleStatement(): SingleStatementContext { - let _localctx: SingleStatementContext = new SingleStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 0, esql_parser.RULE_singleStatement); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 102; - this.query(0); - this.state = 103; - this.match(esql_parser.EOF); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public query(): QueryContext; - public query(_p: number): QueryContext; - // @RuleVersion(0) - public query(_p?: number): QueryContext { - if (_p === undefined) { - _p = 0; - } - - let _parentctx: ParserRuleContext = this._ctx; - let _parentState: number = this.state; - let _localctx: QueryContext = new QueryContext(this._ctx, _parentState); - let _prevctx: QueryContext = _localctx; - let _startState: number = 2; - this.enterRecursionRule(_localctx, 2, esql_parser.RULE_query, _p); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - { - _localctx = new SingleCommandQueryContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - - this.state = 106; - this.sourceCommand(); - } - this._ctx._stop = this._input.tryLT(-1); - this.state = 113; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - _prevctx = _localctx; - { - { - _localctx = new CompositeQueryContext(new QueryContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_query); - this.state = 108; - if (!(this.precpred(this._ctx, 1))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); - } - this.state = 109; - this.match(esql_parser.PIPE); - this.state = 110; - this.processingCommand(); - } - } - } - this.state = 115; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(_parentctx); - } - return _localctx; - } - // @RuleVersion(0) - public sourceCommand(): SourceCommandContext { - let _localctx: SourceCommandContext = new SourceCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 4, esql_parser.RULE_sourceCommand); - try { - this.state = 120; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case esql_parser.EXPLAIN: - this.enterOuterAlt(_localctx, 1); - { - this.state = 116; - this.explainCommand(); - } - break; - case esql_parser.FROM: - this.enterOuterAlt(_localctx, 2); - { - this.state = 117; - this.fromCommand(); - } - break; - case esql_parser.ROW: - this.enterOuterAlt(_localctx, 3); - { - this.state = 118; - this.rowCommand(); - } - break; - case esql_parser.SHOW: - this.enterOuterAlt(_localctx, 4); - { - this.state = 119; - this.showCommand(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public processingCommand(): ProcessingCommandContext { - let _localctx: ProcessingCommandContext = new ProcessingCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 6, esql_parser.RULE_processingCommand); - try { - this.state = 135; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case esql_parser.EVAL: - this.enterOuterAlt(_localctx, 1); - { - this.state = 122; - this.evalCommand(); - } - break; - case esql_parser.INLINESTATS: - this.enterOuterAlt(_localctx, 2); - { - this.state = 123; - this.inlinestatsCommand(); - } - break; - case esql_parser.LIMIT: - this.enterOuterAlt(_localctx, 3); - { - this.state = 124; - this.limitCommand(); - } - break; - case esql_parser.KEEP: - this.enterOuterAlt(_localctx, 4); - { - this.state = 125; - this.keepCommand(); - } - break; - case esql_parser.SORT: - this.enterOuterAlt(_localctx, 5); - { - this.state = 126; - this.sortCommand(); - } - break; - case esql_parser.STATS: - this.enterOuterAlt(_localctx, 6); - { - this.state = 127; - this.statsCommand(); - } - break; - case esql_parser.WHERE: - this.enterOuterAlt(_localctx, 7); - { - this.state = 128; - this.whereCommand(); - } - break; - case esql_parser.DROP: - this.enterOuterAlt(_localctx, 8); - { - this.state = 129; - this.dropCommand(); - } - break; - case esql_parser.RENAME: - this.enterOuterAlt(_localctx, 9); - { - this.state = 130; - this.renameCommand(); - } - break; - case esql_parser.DISSECT: - this.enterOuterAlt(_localctx, 10); - { - this.state = 131; - this.dissectCommand(); - } - break; - case esql_parser.GROK: - this.enterOuterAlt(_localctx, 11); - { - this.state = 132; - this.grokCommand(); - } - break; - case esql_parser.ENRICH: - this.enterOuterAlt(_localctx, 12); - { - this.state = 133; - this.enrichCommand(); - } - break; - case esql_parser.MV_EXPAND: - this.enterOuterAlt(_localctx, 13); - { - this.state = 134; - this.mvExpandCommand(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public whereCommand(): WhereCommandContext { - let _localctx: WhereCommandContext = new WhereCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 8, esql_parser.RULE_whereCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 137; - this.match(esql_parser.WHERE); - this.state = 138; - this.booleanExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public booleanExpression(): BooleanExpressionContext; - public booleanExpression(_p: number): BooleanExpressionContext; - // @RuleVersion(0) - public booleanExpression(_p?: number): BooleanExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let _parentctx: ParserRuleContext = this._ctx; - let _parentState: number = this.state; - let _localctx: BooleanExpressionContext = new BooleanExpressionContext(this._ctx, _parentState); - let _prevctx: BooleanExpressionContext = _localctx; - let _startState: number = 10; - this.enterRecursionRule(_localctx, 10, esql_parser.RULE_booleanExpression, _p); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 168; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 6, this._ctx) ) { - case 1: - { - _localctx = new LogicalNotContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - - this.state = 141; - this.match(esql_parser.NOT); - this.state = 142; - this.booleanExpression(7); - } - break; - - case 2: - { - _localctx = new BooleanDefaultContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - this.state = 143; - this.valueExpression(); - } - break; - - case 3: - { - _localctx = new RegexExpressionContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - this.state = 144; - this.regexBooleanExpression(); - } - break; - - case 4: - { - _localctx = new LogicalInContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - this.state = 145; - this.valueExpression(); - this.state = 147; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.NOT) { - { - this.state = 146; - this.match(esql_parser.NOT); - } - } - - this.state = 149; - this.match(esql_parser.IN); - this.state = 150; - this.match(esql_parser.LP); - this.state = 151; - this.valueExpression(); - this.state = 156; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 152; - this.match(esql_parser.COMMA); - this.state = 153; - this.valueExpression(); - } - } - this.state = 158; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 159; - this.match(esql_parser.RP); - } - break; - - case 5: - { - _localctx = new IsNullContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - this.state = 161; - this.valueExpression(); - this.state = 162; - this.match(esql_parser.IS); - this.state = 164; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.NOT) { - { - this.state = 163; - this.match(esql_parser.NOT); - } - } - - this.state = 166; - this.match(esql_parser.NULL); - } - break; - } - this._ctx._stop = this._input.tryLT(-1); - this.state = 178; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - _prevctx = _localctx; - { - this.state = 176; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { - case 1: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - (_localctx as LogicalBinaryContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 170; - if (!(this.precpred(this._ctx, 4))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 4)"); - } - this.state = 171; - (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.AND); - this.state = 172; - (_localctx as LogicalBinaryContext)._right = this.booleanExpression(5); - } - break; - - case 2: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - (_localctx as LogicalBinaryContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 173; - if (!(this.precpred(this._ctx, 3))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 3)"); - } - this.state = 174; - (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.OR); - this.state = 175; - (_localctx as LogicalBinaryContext)._right = this.booleanExpression(4); - } - break; - } - } - } - this.state = 180; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(_parentctx); - } - return _localctx; - } - // @RuleVersion(0) - public regexBooleanExpression(): RegexBooleanExpressionContext { - let _localctx: RegexBooleanExpressionContext = new RegexBooleanExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 12, esql_parser.RULE_regexBooleanExpression); - let _la: number; - try { - this.state = 195; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 181; - this.valueExpression(); - this.state = 183; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.NOT) { - { - this.state = 182; - this.match(esql_parser.NOT); - } - } - - this.state = 185; - _localctx._kind = this.match(esql_parser.LIKE); - this.state = 186; - _localctx._pattern = this.string(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 188; - this.valueExpression(); - this.state = 190; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.NOT) { - { - this.state = 189; - this.match(esql_parser.NOT); - } - } - - this.state = 192; - _localctx._kind = this.match(esql_parser.RLIKE); - this.state = 193; - _localctx._pattern = this.string(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public valueExpression(): ValueExpressionContext { - let _localctx: ValueExpressionContext = new ValueExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 14, esql_parser.RULE_valueExpression); - try { - this.state = 202; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { - case 1: - _localctx = new ValueExpressionDefaultContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 197; - this.operatorExpression(0); - } - break; - - case 2: - _localctx = new ComparisonContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 198; - (_localctx as ComparisonContext)._left = this.operatorExpression(0); - this.state = 199; - this.comparisonOperator(); - this.state = 200; - (_localctx as ComparisonContext)._right = this.operatorExpression(0); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public operatorExpression(): OperatorExpressionContext; - public operatorExpression(_p: number): OperatorExpressionContext; - // @RuleVersion(0) - public operatorExpression(_p?: number): OperatorExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let _parentctx: ParserRuleContext = this._ctx; - let _parentState: number = this.state; - let _localctx: OperatorExpressionContext = new OperatorExpressionContext(this._ctx, _parentState); - let _prevctx: OperatorExpressionContext = _localctx; - let _startState: number = 16; - this.enterRecursionRule(_localctx, 16, esql_parser.RULE_operatorExpression, _p); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 208; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) { - case 1: - { - _localctx = new OperatorExpressionDefaultContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - - this.state = 205; - this.primaryExpression(); - } - break; - - case 2: - { - _localctx = new ArithmeticUnaryContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - this.state = 206; - (_localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); - _la = this._input.LA(1); - if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { - (_localctx as ArithmeticUnaryContext)._operator = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 207; - this.operatorExpression(3); - } - break; - } - this._ctx._stop = this._input.tryLT(-1); - this.state = 218; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - _prevctx = _localctx; - { - this.state = 216; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { - case 1: - { - _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); - (_localctx as ArithmeticBinaryContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 210; - if (!(this.precpred(this._ctx, 2))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 2)"); - } - this.state = 211; - (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); - _la = this._input.LA(1); - if (!(((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & ((1 << (esql_parser.ASTERISK - 60)) | (1 << (esql_parser.SLASH - 60)) | (1 << (esql_parser.PERCENT - 60)))) !== 0))) { - (_localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 212; - (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); - } - break; - - case 2: - { - _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); - (_localctx as ArithmeticBinaryContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 213; - if (!(this.precpred(this._ctx, 1))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); - } - this.state = 214; - (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); - _la = this._input.LA(1); - if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { - (_localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 215; - (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); - } - break; - } - } - } - this.state = 220; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(_parentctx); - } - return _localctx; - } - // @RuleVersion(0) - public primaryExpression(): PrimaryExpressionContext { - let _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 18, esql_parser.RULE_primaryExpression); - try { - this.state = 228; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 16, this._ctx) ) { - case 1: - _localctx = new ConstantDefaultContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 221; - this.constant(); - } - break; - - case 2: - _localctx = new DereferenceContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 222; - this.qualifiedName(); - } - break; - - case 3: - _localctx = new FunctionContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 223; - this.functionExpression(); - } - break; - - case 4: - _localctx = new ParenthesizedExpressionContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 224; - this.match(esql_parser.LP); - this.state = 225; - this.booleanExpression(0); - this.state = 226; - this.match(esql_parser.RP); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public functionExpression(): FunctionExpressionContext { - let _localctx: FunctionExpressionContext = new FunctionExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 20, esql_parser.RULE_functionExpression); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 230; - this.identifier(); - this.state = 231; - this.match(esql_parser.LP); - this.state = 241; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case esql_parser.ASTERISK: - { - this.state = 232; - this.match(esql_parser.ASTERISK); - } - break; - case esql_parser.STRING: - case esql_parser.INTEGER_LITERAL: - case esql_parser.DECIMAL_LITERAL: - case esql_parser.FALSE: - case esql_parser.LP: - case esql_parser.NOT: - case esql_parser.NULL: - case esql_parser.PARAM: - case esql_parser.TRUE: - case esql_parser.PLUS: - case esql_parser.MINUS: - case esql_parser.OPENING_BRACKET: - case esql_parser.UNQUOTED_IDENTIFIER: - case esql_parser.QUOTED_IDENTIFIER: - { - { - this.state = 233; - this.booleanExpression(0); - this.state = 238; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 234; - this.match(esql_parser.COMMA); - this.state = 235; - this.booleanExpression(0); - } - } - this.state = 240; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - break; - case esql_parser.RP: - break; - default: - break; - } - this.state = 243; - this.match(esql_parser.RP); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public rowCommand(): RowCommandContext { - let _localctx: RowCommandContext = new RowCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 22, esql_parser.RULE_rowCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 245; - this.match(esql_parser.ROW); - this.state = 246; - this.fields(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public fields(): FieldsContext { - let _localctx: FieldsContext = new FieldsContext(this._ctx, this.state); - this.enterRule(_localctx, 24, esql_parser.RULE_fields); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 248; - this.field(); - this.state = 253; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 249; - this.match(esql_parser.COMMA); - this.state = 250; - this.field(); - } - } - } - this.state = 255; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public field(): FieldContext { - let _localctx: FieldContext = new FieldContext(this._ctx, this.state); - this.enterRule(_localctx, 26, esql_parser.RULE_field); - try { - this.state = 261; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 256; - this.booleanExpression(0); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 257; - this.qualifiedName(); - this.state = 258; - this.match(esql_parser.ASSIGN); - this.state = 259; - this.booleanExpression(0); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public fromCommand(): FromCommandContext { - let _localctx: FromCommandContext = new FromCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 28, esql_parser.RULE_fromCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 263; - this.match(esql_parser.FROM); - this.state = 264; - this.fromIdentifier(); - this.state = 269; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 265; - this.match(esql_parser.COMMA); - this.state = 266; - this.fromIdentifier(); - } - } - } - this.state = 271; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); - } - this.state = 273; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { - case 1: - { - this.state = 272; - this.metadata(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public metadata(): MetadataContext { - let _localctx: MetadataContext = new MetadataContext(this._ctx, this.state); - this.enterRule(_localctx, 30, esql_parser.RULE_metadata); - try { - this.state = 277; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case esql_parser.METADATA: - this.enterOuterAlt(_localctx, 1); - { - this.state = 275; - this.metadataOption(); - } - break; - case esql_parser.OPENING_BRACKET: - this.enterOuterAlt(_localctx, 2); - { - this.state = 276; - this.deprecated_metadata(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public metadataOption(): MetadataOptionContext { - let _localctx: MetadataOptionContext = new MetadataOptionContext(this._ctx, this.state); - this.enterRule(_localctx, 32, esql_parser.RULE_metadataOption); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 279; - this.match(esql_parser.METADATA); - this.state = 280; - this.fromIdentifier(); - this.state = 285; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 281; - this.match(esql_parser.COMMA); - this.state = 282; - this.fromIdentifier(); - } - } - } - this.state = 287; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public deprecated_metadata(): Deprecated_metadataContext { - let _localctx: Deprecated_metadataContext = new Deprecated_metadataContext(this._ctx, this.state); - this.enterRule(_localctx, 34, esql_parser.RULE_deprecated_metadata); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 288; - this.match(esql_parser.OPENING_BRACKET); - this.state = 289; - this.metadataOption(); - this.state = 290; - this.match(esql_parser.CLOSING_BRACKET); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public evalCommand(): EvalCommandContext { - let _localctx: EvalCommandContext = new EvalCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 36, esql_parser.RULE_evalCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 292; - this.match(esql_parser.EVAL); - this.state = 293; - this.fields(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public statsCommand(): StatsCommandContext { - let _localctx: StatsCommandContext = new StatsCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 38, esql_parser.RULE_statsCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 295; - this.match(esql_parser.STATS); - this.state = 297; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) { - case 1: - { - this.state = 296; - _localctx._stats = this.fields(); - } - break; - } - this.state = 301; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { - case 1: - { - this.state = 299; - this.match(esql_parser.BY); - this.state = 300; - _localctx._grouping = this.fields(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public inlinestatsCommand(): InlinestatsCommandContext { - let _localctx: InlinestatsCommandContext = new InlinestatsCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 40, esql_parser.RULE_inlinestatsCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 303; - this.match(esql_parser.INLINESTATS); - this.state = 304; - _localctx._stats = this.fields(); - this.state = 307; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 27, this._ctx) ) { - case 1: - { - this.state = 305; - this.match(esql_parser.BY); - this.state = 306; - _localctx._grouping = this.fields(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public fromIdentifier(): FromIdentifierContext { - let _localctx: FromIdentifierContext = new FromIdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 42, esql_parser.RULE_fromIdentifier); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 309; - _la = this._input.LA(1); - if (!(_la === esql_parser.QUOTED_IDENTIFIER || _la === esql_parser.FROM_UNQUOTED_IDENTIFIER)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public qualifiedName(): QualifiedNameContext { - let _localctx: QualifiedNameContext = new QualifiedNameContext(this._ctx, this.state); - this.enterRule(_localctx, 44, esql_parser.RULE_qualifiedName); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 311; - this.identifier(); - this.state = 316; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 312; - this.match(esql_parser.DOT); - this.state = 313; - this.identifier(); - } - } - } - this.state = 318; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public qualifiedNamePattern(): QualifiedNamePatternContext { - let _localctx: QualifiedNamePatternContext = new QualifiedNamePatternContext(this._ctx, this.state); - this.enterRule(_localctx, 46, esql_parser.RULE_qualifiedNamePattern); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 319; - this.identifierPattern(); - this.state = 324; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 320; - this.match(esql_parser.DOT); - this.state = 321; - this.identifierPattern(); - } - } - } - this.state = 326; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public identifier(): IdentifierContext { - let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 48, esql_parser.RULE_identifier); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 327; - _la = this._input.LA(1); - if (!(_la === esql_parser.UNQUOTED_IDENTIFIER || _la === esql_parser.QUOTED_IDENTIFIER)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public identifierPattern(): IdentifierPatternContext { - let _localctx: IdentifierPatternContext = new IdentifierPatternContext(this._ctx, this.state); - this.enterRule(_localctx, 50, esql_parser.RULE_identifierPattern); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 329; - this.match(esql_parser.ID_PATTERN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public idPattern(): IdPatternContext { - let _localctx: IdPatternContext = new IdPatternContext(this._ctx, this.state); - this.enterRule(_localctx, 52, esql_parser.RULE_idPattern); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 331; - _la = this._input.LA(1); - if (!(_la === esql_parser.QUOTED_IDENTIFIER || _la === esql_parser.UNQUOTED_ID_PATTERN)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public constant(): ConstantContext { - let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state); - this.enterRule(_localctx, 54, esql_parser.RULE_constant); - let _la: number; - try { - this.state = 375; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) { - case 1: - _localctx = new NullLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 333; - this.match(esql_parser.NULL); - } - break; - - case 2: - _localctx = new QualifiedIntegerLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 334; - this.integerValue(); - this.state = 335; - this.match(esql_parser.UNQUOTED_IDENTIFIER); - } - break; - - case 3: - _localctx = new DecimalLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 337; - this.decimalValue(); - } - break; - - case 4: - _localctx = new IntegerLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 338; - this.integerValue(); - } - break; - - case 5: - _localctx = new BooleanLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 5); - { - this.state = 339; - this.booleanValue(); - } - break; - - case 6: - _localctx = new InputParamContext(_localctx); - this.enterOuterAlt(_localctx, 6); - { - this.state = 340; - this.match(esql_parser.PARAM); - } - break; - - case 7: - _localctx = new StringLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 7); - { - this.state = 341; - this.string(); - } - break; - - case 8: - _localctx = new NumericArrayLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 8); - { - this.state = 342; - this.match(esql_parser.OPENING_BRACKET); - this.state = 343; - this.numericValue(); - this.state = 348; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 344; - this.match(esql_parser.COMMA); - this.state = 345; - this.numericValue(); - } - } - this.state = 350; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 351; - this.match(esql_parser.CLOSING_BRACKET); - } - break; - - case 9: - _localctx = new BooleanArrayLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 9); - { - this.state = 353; - this.match(esql_parser.OPENING_BRACKET); - this.state = 354; - this.booleanValue(); - this.state = 359; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 355; - this.match(esql_parser.COMMA); - this.state = 356; - this.booleanValue(); - } - } - this.state = 361; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 362; - this.match(esql_parser.CLOSING_BRACKET); - } - break; - - case 10: - _localctx = new StringArrayLiteralContext(_localctx); - this.enterOuterAlt(_localctx, 10); - { - this.state = 364; - this.match(esql_parser.OPENING_BRACKET); - this.state = 365; - this.string(); - this.state = 370; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === esql_parser.COMMA) { - { - { - this.state = 366; - this.match(esql_parser.COMMA); - this.state = 367; - this.string(); - } - } - this.state = 372; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 373; - this.match(esql_parser.CLOSING_BRACKET); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public limitCommand(): LimitCommandContext { - let _localctx: LimitCommandContext = new LimitCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 56, esql_parser.RULE_limitCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 377; - this.match(esql_parser.LIMIT); - this.state = 378; - this.match(esql_parser.INTEGER_LITERAL); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public sortCommand(): SortCommandContext { - let _localctx: SortCommandContext = new SortCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 58, esql_parser.RULE_sortCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 380; - this.match(esql_parser.SORT); - this.state = 381; - this.orderExpression(); - this.state = 386; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 34, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 382; - this.match(esql_parser.COMMA); - this.state = 383; - this.orderExpression(); - } - } - } - this.state = 388; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 34, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public orderExpression(): OrderExpressionContext { - let _localctx: OrderExpressionContext = new OrderExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 60, esql_parser.RULE_orderExpression); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 389; - this.booleanExpression(0); - this.state = 391; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 35, this._ctx) ) { - case 1: - { - this.state = 390; - _localctx._ordering = this._input.LT(1); - _la = this._input.LA(1); - if (!(_la === esql_parser.ASC || _la === esql_parser.DESC)) { - _localctx._ordering = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 395; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) { - case 1: - { - this.state = 393; - this.match(esql_parser.NULLS); - this.state = 394; - _localctx._nullOrdering = this._input.LT(1); - _la = this._input.LA(1); - if (!(_la === esql_parser.FIRST || _la === esql_parser.LAST)) { - _localctx._nullOrdering = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public keepCommand(): KeepCommandContext { - let _localctx: KeepCommandContext = new KeepCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 62, esql_parser.RULE_keepCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 397; - this.match(esql_parser.KEEP); - this.state = 398; - this.qualifiedNamePattern(); - this.state = 403; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 37, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 399; - this.match(esql_parser.COMMA); - this.state = 400; - this.qualifiedNamePattern(); - } - } - } - this.state = 405; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 37, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public dropCommand(): DropCommandContext { - let _localctx: DropCommandContext = new DropCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 64, esql_parser.RULE_dropCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 406; - this.match(esql_parser.DROP); - this.state = 407; - this.qualifiedNamePattern(); - this.state = 412; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 408; - this.match(esql_parser.COMMA); - this.state = 409; - this.qualifiedNamePattern(); - } - } - } - this.state = 414; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public renameCommand(): RenameCommandContext { - let _localctx: RenameCommandContext = new RenameCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 66, esql_parser.RULE_renameCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 415; - this.match(esql_parser.RENAME); - this.state = 416; - this.renameClause(); - this.state = 421; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 417; - this.match(esql_parser.COMMA); - this.state = 418; - this.renameClause(); - } - } - } - this.state = 423; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public renameClause(): RenameClauseContext { - let _localctx: RenameClauseContext = new RenameClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 68, esql_parser.RULE_renameClause); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 424; - _localctx._oldName = this.qualifiedNamePattern(); - this.state = 425; - this.match(esql_parser.AS); - this.state = 426; - _localctx._newName = this.qualifiedNamePattern(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public dissectCommand(): DissectCommandContext { - let _localctx: DissectCommandContext = new DissectCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 70, esql_parser.RULE_dissectCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 428; - this.match(esql_parser.DISSECT); - this.state = 429; - this.primaryExpression(); - this.state = 430; - this.string(); - this.state = 432; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) { - case 1: - { - this.state = 431; - this.commandOptions(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public grokCommand(): GrokCommandContext { - let _localctx: GrokCommandContext = new GrokCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 72, esql_parser.RULE_grokCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 434; - this.match(esql_parser.GROK); - this.state = 435; - this.primaryExpression(); - this.state = 436; - this.string(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public mvExpandCommand(): MvExpandCommandContext { - let _localctx: MvExpandCommandContext = new MvExpandCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 74, esql_parser.RULE_mvExpandCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 438; - this.match(esql_parser.MV_EXPAND); - this.state = 439; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public commandOptions(): CommandOptionsContext { - let _localctx: CommandOptionsContext = new CommandOptionsContext(this._ctx, this.state); - this.enterRule(_localctx, 76, esql_parser.RULE_commandOptions); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 441; - this.commandOption(); - this.state = 446; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 442; - this.match(esql_parser.COMMA); - this.state = 443; - this.commandOption(); - } - } - } - this.state = 448; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public commandOption(): CommandOptionContext { - let _localctx: CommandOptionContext = new CommandOptionContext(this._ctx, this.state); - this.enterRule(_localctx, 78, esql_parser.RULE_commandOption); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 449; - this.identifier(); - this.state = 450; - this.match(esql_parser.ASSIGN); - this.state = 451; - this.constant(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public booleanValue(): BooleanValueContext { - let _localctx: BooleanValueContext = new BooleanValueContext(this._ctx, this.state); - this.enterRule(_localctx, 80, esql_parser.RULE_booleanValue); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 453; - _la = this._input.LA(1); - if (!(_la === esql_parser.FALSE || _la === esql_parser.TRUE)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public numericValue(): NumericValueContext { - let _localctx: NumericValueContext = new NumericValueContext(this._ctx, this.state); - this.enterRule(_localctx, 82, esql_parser.RULE_numericValue); - try { - this.state = 457; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 455; - this.decimalValue(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 456; - this.integerValue(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public decimalValue(): DecimalValueContext { - let _localctx: DecimalValueContext = new DecimalValueContext(this._ctx, this.state); - this.enterRule(_localctx, 84, esql_parser.RULE_decimalValue); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 460; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { - { - this.state = 459; - _la = this._input.LA(1); - if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 462; - this.match(esql_parser.DECIMAL_LITERAL); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public integerValue(): IntegerValueContext { - let _localctx: IntegerValueContext = new IntegerValueContext(this._ctx, this.state); - this.enterRule(_localctx, 86, esql_parser.RULE_integerValue); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 465; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { - { - this.state = 464; - _la = this._input.LA(1); - if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 467; - this.match(esql_parser.INTEGER_LITERAL); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public string(): StringContext { - let _localctx: StringContext = new StringContext(this._ctx, this.state); - this.enterRule(_localctx, 88, esql_parser.RULE_string); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 469; - this.match(esql_parser.STRING); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public comparisonOperator(): ComparisonOperatorContext { - let _localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this._ctx, this.state); - this.enterRule(_localctx, 90, esql_parser.RULE_comparisonOperator); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 471; - _la = this._input.LA(1); - if (!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (esql_parser.EQ - 51)) | (1 << (esql_parser.NEQ - 51)) | (1 << (esql_parser.LT - 51)) | (1 << (esql_parser.LTE - 51)) | (1 << (esql_parser.GT - 51)) | (1 << (esql_parser.GTE - 51)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public explainCommand(): ExplainCommandContext { - let _localctx: ExplainCommandContext = new ExplainCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 92, esql_parser.RULE_explainCommand); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 473; - this.match(esql_parser.EXPLAIN); - this.state = 474; - this.subqueryExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public subqueryExpression(): SubqueryExpressionContext { - let _localctx: SubqueryExpressionContext = new SubqueryExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 94, esql_parser.RULE_subqueryExpression); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 476; - this.match(esql_parser.OPENING_BRACKET); - this.state = 477; - this.query(0); - this.state = 478; - this.match(esql_parser.CLOSING_BRACKET); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public showCommand(): ShowCommandContext { - let _localctx: ShowCommandContext = new ShowCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 96, esql_parser.RULE_showCommand); - try { - this.state = 484; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 45, this._ctx) ) { - case 1: - _localctx = new ShowInfoContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 480; - this.match(esql_parser.SHOW); - this.state = 481; - this.match(esql_parser.INFO); - } - break; - - case 2: - _localctx = new ShowFunctionsContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 482; - this.match(esql_parser.SHOW); - this.state = 483; - this.match(esql_parser.FUNCTIONS); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public enrichCommand(): EnrichCommandContext { - let _localctx: EnrichCommandContext = new EnrichCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 98, esql_parser.RULE_enrichCommand); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 486; - this.match(esql_parser.ENRICH); - this.state = 487; - _localctx._policyName = this.match(esql_parser.ENRICH_POLICY_NAME); - this.state = 490; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { - case 1: - { - this.state = 488; - this.match(esql_parser.ON); - this.state = 489; - _localctx._matchField = this.qualifiedNamePattern(); - } - break; - } - this.state = 501; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { - case 1: - { - this.state = 492; - this.match(esql_parser.WITH); - this.state = 493; - this.enrichWithClause(); - this.state = 498; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 494; - this.match(esql_parser.COMMA); - this.state = 495; - this.enrichWithClause(); - } - } - } - this.state = 500; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); - } - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public enrichWithClause(): EnrichWithClauseContext { - let _localctx: EnrichWithClauseContext = new EnrichWithClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 100, esql_parser.RULE_enrichWithClause); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 506; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) { - case 1: - { - this.state = 503; - _localctx._newName = this.qualifiedNamePattern(); - this.state = 504; - this.match(esql_parser.ASSIGN); - } - break; - } - this.state = 508; - _localctx._enrichField = this.qualifiedNamePattern(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 1: - return this.query_sempred(_localctx as QueryContext, predIndex); - - case 5: - return this.booleanExpression_sempred(_localctx as BooleanExpressionContext, predIndex); - - case 8: - return this.operatorExpression_sempred(_localctx as OperatorExpressionContext, predIndex); - } - return true; - } - private query_sempred(_localctx: QueryContext, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.precpred(this._ctx, 1); - } - return true; - } - private booleanExpression_sempred(_localctx: BooleanExpressionContext, predIndex: number): boolean { - switch (predIndex) { - case 1: - return this.precpred(this._ctx, 4); - - case 2: - return this.precpred(this._ctx, 3); - } - return true; - } - private operatorExpression_sempred(_localctx: OperatorExpressionContext, predIndex: number): boolean { - switch (predIndex) { - case 3: - return this.precpred(this._ctx, 2); - - case 4: - return this.precpred(this._ctx, 1); - } - return true; - } - - public static readonly _serializedATN: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03k\u0201\x04\x02" + - "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\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\t\r\x04" + - "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + - "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + - "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + - "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + - "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t+" + - "\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x044" + - "\t4\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03" + - "\x03\x07\x03r\n\x03\f\x03\x0E\x03u\v\x03\x03\x04\x03\x04\x03\x04\x03\x04" + - "\x05\x04{\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05" + - "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05\x8A\n\x05\x03" + - "\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + - "\x07\x05\x07\x96\n\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07" + - "\x9D\n\x07\f\x07\x0E\x07\xA0\v\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + - "\x07\x05\x07\xA7\n\x07\x03\x07\x03\x07\x05\x07\xAB\n\x07\x03\x07\x03\x07" + - "\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07\xB3\n\x07\f\x07\x0E\x07\xB6\v" + - "\x07\x03\b\x03\b\x05\b\xBA\n\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\xC1" + - "\n\b\x03\b\x03\b\x03\b\x05\b\xC6\n\b\x03\t\x03\t\x03\t\x03\t\x03\t\x05" + - "\t\xCD\n\t\x03\n\x03\n\x03\n\x03\n\x05\n\xD3\n\n\x03\n\x03\n\x03\n\x03" + - "\n\x03\n\x03\n\x07\n\xDB\n\n\f\n\x0E\n\xDE\v\n\x03\v\x03\v\x03\v\x03\v" + - "\x03\v\x03\v\x03\v\x05\v\xE7\n\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x07" + - "\f\xEF\n\f\f\f\x0E\f\xF2\v\f\x05\f\xF4\n\f\x03\f\x03\f\x03\r\x03\r\x03" + - "\r\x03\x0E\x03\x0E\x03\x0E\x07\x0E\xFE\n\x0E\f\x0E\x0E\x0E\u0101\v\x0E" + - "\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x05\x0F\u0108\n\x0F\x03\x10\x03" + - "\x10\x03\x10\x03\x10\x07\x10\u010E\n\x10\f\x10\x0E\x10\u0111\v\x10\x03" + - "\x10\x05\x10\u0114\n\x10\x03\x11\x03\x11\x05\x11\u0118\n\x11\x03\x12\x03" + - "\x12\x03\x12\x03\x12\x07\x12\u011E\n\x12\f\x12\x0E\x12\u0121\v\x12\x03" + - "\x13\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x05" + - "\x15\u012C\n\x15\x03\x15\x03\x15\x05\x15\u0130\n\x15\x03\x16\x03\x16\x03" + - "\x16\x03\x16\x05\x16\u0136\n\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18" + - "\x07\x18\u013D\n\x18\f\x18\x0E\x18\u0140\v\x18\x03\x19\x03\x19\x03\x19" + - "\x07\x19\u0145\n\x19\f\x19\x0E\x19\u0148\v\x19\x03\x1A\x03\x1A\x03\x1B" + - "\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + - "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D\u015D" + - "\n\x1D\f\x1D\x0E\x1D\u0160\v\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + - "\x03\x1D\x07\x1D\u0168\n\x1D\f\x1D\x0E\x1D\u016B\v\x1D\x03\x1D\x03\x1D" + - "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D\u0173\n\x1D\f\x1D\x0E\x1D\u0176" + - "\v\x1D\x03\x1D\x03\x1D\x05\x1D\u017A\n\x1D\x03\x1E\x03\x1E\x03\x1E\x03" + - "\x1F\x03\x1F\x03\x1F\x03\x1F\x07\x1F\u0183\n\x1F\f\x1F\x0E\x1F\u0186\v" + - "\x1F\x03 \x03 \x05 \u018A\n \x03 \x03 \x05 \u018E\n \x03!\x03!\x03!\x03" + - "!\x07!\u0194\n!\f!\x0E!\u0197\v!\x03\"\x03\"\x03\"\x03\"\x07\"\u019D\n" + - "\"\f\"\x0E\"\u01A0\v\"\x03#\x03#\x03#\x03#\x07#\u01A6\n#\f#\x0E#\u01A9" + - "\v#\x03$\x03$\x03$\x03$\x03%\x03%\x03%\x03%\x05%\u01B3\n%\x03&\x03&\x03" + - "&\x03&\x03\'\x03\'\x03\'\x03(\x03(\x03(\x07(\u01BF\n(\f(\x0E(\u01C2\v" + - "(\x03)\x03)\x03)\x03)\x03*\x03*\x03+\x03+\x05+\u01CC\n+\x03,\x05,\u01CF" + - "\n,\x03,\x03,\x03-\x05-\u01D4\n-\x03-\x03-\x03.\x03.\x03/\x03/\x030\x03" + - "0\x030\x031\x031\x031\x031\x032\x032\x032\x032\x052\u01E7\n2\x033\x03" + - "3\x033\x033\x053\u01ED\n3\x033\x033\x033\x033\x073\u01F3\n3\f3\x0E3\u01F6" + - "\v3\x053\u01F8\n3\x034\x034\x034\x054\u01FD\n4\x034\x034\x034\x02\x02" + - "\x05\x04\f\x125\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10" + - "\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02" + - "$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02" + - "@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02" + - "\\\x02^\x02`\x02b\x02d\x02f\x02\x02\v\x03\x02<=\x03\x02>@\x04\x02DDII" + - "\x03\x02CD\x04\x02DDkk\x04\x02!!$$\x03\x02\'(\x04\x02&&44\x04\x02557;" + - "\x02\u021A\x02h\x03\x02\x02\x02\x04k\x03\x02\x02\x02\x06z\x03\x02\x02" + - "\x02\b\x89\x03\x02\x02\x02\n\x8B\x03\x02\x02\x02\f\xAA\x03\x02\x02\x02" + - "\x0E\xC5\x03\x02\x02\x02\x10\xCC\x03\x02\x02\x02\x12\xD2\x03\x02\x02\x02" + - "\x14\xE6\x03\x02\x02\x02\x16\xE8\x03\x02\x02\x02\x18\xF7\x03\x02\x02\x02" + - "\x1A\xFA\x03\x02\x02\x02\x1C\u0107\x03\x02\x02\x02\x1E\u0109\x03\x02\x02" + - "\x02 \u0117\x03\x02\x02\x02\"\u0119\x03\x02\x02\x02$\u0122\x03\x02\x02" + - "\x02&\u0126\x03\x02\x02\x02(\u0129\x03\x02\x02\x02*\u0131\x03\x02\x02" + - "\x02,\u0137\x03\x02\x02\x02.\u0139\x03\x02\x02\x020\u0141\x03\x02\x02" + - "\x022\u0149\x03\x02\x02\x024\u014B\x03\x02\x02\x026\u014D\x03\x02\x02" + - "\x028\u0179\x03\x02\x02\x02:\u017B\x03\x02\x02\x02<\u017E\x03\x02\x02" + - "\x02>\u0187\x03\x02\x02\x02@\u018F\x03\x02\x02\x02B\u0198\x03\x02\x02" + - "\x02D\u01A1\x03\x02\x02\x02F\u01AA\x03\x02\x02\x02H\u01AE\x03\x02\x02" + - "\x02J\u01B4\x03\x02\x02\x02L\u01B8\x03\x02\x02\x02N\u01BB\x03\x02\x02" + - "\x02P\u01C3\x03\x02\x02\x02R\u01C7\x03\x02\x02\x02T\u01CB\x03\x02\x02" + - "\x02V\u01CE\x03\x02\x02\x02X\u01D3\x03\x02\x02\x02Z\u01D7\x03\x02\x02" + - "\x02\\\u01D9\x03\x02\x02\x02^\u01DB\x03\x02\x02\x02`\u01DE\x03\x02\x02" + - "\x02b\u01E6\x03\x02\x02\x02d\u01E8\x03\x02\x02\x02f\u01FC\x03\x02\x02" + - "\x02hi\x05\x04\x03\x02ij\x07\x02\x02\x03j\x03\x03\x02\x02\x02kl\b\x03" + - "\x01\x02lm\x05\x06\x04\x02ms\x03\x02\x02\x02no\f\x03\x02\x02op\x07\x1B" + - "\x02\x02pr\x05\b\x05\x02qn\x03\x02\x02\x02ru\x03\x02\x02\x02sq\x03\x02" + - "\x02\x02st\x03\x02\x02\x02t\x05\x03\x02\x02\x02us\x03\x02\x02\x02v{\x05" + - "^0\x02w{\x05\x1E\x10\x02x{\x05\x18\r\x02y{\x05b2\x02zv\x03\x02\x02\x02" + - "zw\x03\x02\x02\x02zx\x03\x02\x02\x02zy\x03\x02\x02\x02{\x07\x03\x02\x02" + - "\x02|\x8A\x05&\x14\x02}\x8A\x05*\x16\x02~\x8A\x05:\x1E\x02\x7F\x8A\x05" + - "@!\x02\x80\x8A\x05<\x1F\x02\x81\x8A\x05(\x15\x02\x82\x8A\x05\n\x06\x02" + - "\x83\x8A\x05B\"\x02\x84\x8A\x05D#\x02\x85\x8A\x05H%\x02\x86\x8A\x05J&" + - "\x02\x87\x8A\x05d3\x02\x88\x8A\x05L\'\x02\x89|\x03\x02\x02\x02\x89}\x03" + - "\x02\x02\x02\x89~\x03\x02\x02\x02\x89\x7F\x03\x02\x02\x02\x89\x80\x03" + - "\x02\x02\x02\x89\x81\x03\x02\x02\x02\x89\x82\x03\x02\x02\x02\x89\x83\x03" + - "\x02\x02\x02\x89\x84\x03\x02\x02\x02\x89\x85\x03\x02\x02\x02\x89\x86\x03" + - "\x02\x02\x02\x89\x87\x03\x02\x02\x02\x89\x88\x03\x02\x02\x02\x8A\t\x03" + - "\x02\x02\x02\x8B\x8C\x07\x13\x02\x02\x8C\x8D\x05\f\x07\x02\x8D\v\x03\x02" + - "\x02\x02\x8E\x8F\b\x07\x01\x02\x8F\x90\x07-\x02\x02\x90\xAB\x05\f\x07" + - "\t\x91\xAB\x05\x10\t\x02\x92\xAB\x05\x0E\b\x02\x93\x95\x05\x10\t\x02\x94" + - "\x96\x07-\x02\x02\x95\x94\x03\x02\x02\x02\x95\x96\x03\x02\x02\x02\x96" + - "\x97\x03\x02\x02\x02\x97\x98\x07*\x02\x02\x98\x99\x07)\x02\x02\x99\x9E" + - "\x05\x10\t\x02\x9A\x9B\x07#\x02\x02\x9B\x9D\x05\x10\t\x02\x9C\x9A\x03" + - "\x02\x02\x02\x9D\xA0\x03\x02\x02\x02\x9E\x9C\x03\x02\x02\x02\x9E\x9F\x03" + - "\x02\x02\x02\x9F\xA1\x03\x02\x02\x02\xA0\x9E\x03\x02\x02\x02\xA1\xA2\x07" + - "3\x02\x02\xA2\xAB\x03\x02\x02\x02\xA3\xA4\x05\x10\t\x02\xA4\xA6\x07+\x02" + - "\x02\xA5\xA7\x07-\x02\x02\xA6\xA5\x03\x02\x02\x02\xA6\xA7\x03\x02\x02" + - "\x02\xA7\xA8\x03\x02\x02\x02\xA8\xA9\x07.\x02\x02\xA9\xAB\x03\x02\x02" + - "\x02\xAA\x8E\x03\x02\x02\x02\xAA\x91\x03\x02\x02\x02\xAA\x92\x03\x02\x02" + - "\x02\xAA\x93\x03\x02\x02\x02\xAA\xA3\x03\x02\x02\x02\xAB\xB4\x03\x02\x02" + - "\x02\xAC\xAD\f\x06\x02\x02\xAD\xAE\x07 \x02\x02\xAE\xB3\x05\f\x07\x07" + - "\xAF\xB0\f\x05\x02\x02\xB0\xB1\x070\x02\x02\xB1\xB3\x05\f\x07\x06\xB2" + - "\xAC\x03\x02\x02\x02\xB2\xAF\x03\x02\x02\x02\xB3\xB6\x03\x02\x02\x02\xB4" + - "\xB2\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5\r\x03\x02\x02\x02\xB6" + - "\xB4\x03\x02\x02\x02\xB7\xB9\x05\x10\t\x02\xB8\xBA\x07-\x02\x02\xB9\xB8" + - "\x03\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBB\x03\x02\x02\x02\xBB\xBC" + - "\x07,\x02\x02\xBC\xBD\x05Z.\x02\xBD\xC6\x03\x02\x02\x02\xBE\xC0\x05\x10" + - "\t\x02\xBF\xC1\x07-\x02\x02\xC0\xBF\x03\x02\x02\x02\xC0\xC1\x03\x02\x02" + - "\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC3\x072\x02\x02\xC3\xC4\x05Z.\x02\xC4" + - "\xC6\x03\x02\x02\x02\xC5\xB7\x03\x02\x02\x02\xC5\xBE\x03\x02\x02\x02\xC6" + - "\x0F\x03\x02\x02\x02\xC7\xCD\x05\x12\n\x02\xC8\xC9\x05\x12\n\x02\xC9\xCA" + - "\x05\\/\x02\xCA\xCB\x05\x12\n\x02\xCB\xCD\x03\x02\x02\x02\xCC\xC7\x03" + - "\x02\x02\x02\xCC\xC8\x03\x02\x02\x02\xCD\x11\x03\x02\x02\x02\xCE\xCF\b" + - "\n\x01\x02\xCF\xD3\x05\x14\v\x02\xD0\xD1\t\x02\x02\x02\xD1\xD3\x05\x12" + - "\n\x05\xD2\xCE\x03\x02\x02\x02\xD2\xD0\x03\x02\x02\x02\xD3\xDC\x03\x02" + - "\x02\x02\xD4\xD5\f\x04\x02\x02\xD5\xD6\t\x03\x02\x02\xD6\xDB\x05\x12\n" + - "\x05\xD7\xD8\f\x03\x02\x02\xD8\xD9\t\x02\x02\x02\xD9\xDB\x05\x12\n\x04" + - "\xDA\xD4\x03\x02\x02\x02\xDA\xD7\x03\x02\x02\x02\xDB\xDE\x03\x02\x02\x02" + - "\xDC\xDA\x03\x02\x02\x02\xDC\xDD\x03\x02\x02\x02\xDD\x13\x03\x02\x02\x02" + - "\xDE\xDC\x03\x02\x02\x02\xDF\xE7\x058\x1D\x02\xE0\xE7\x05.\x18\x02\xE1" + - "\xE7\x05\x16\f\x02\xE2\xE3\x07)\x02\x02\xE3\xE4\x05\f\x07\x02\xE4\xE5" + - "\x073\x02\x02\xE5\xE7\x03\x02\x02\x02\xE6\xDF\x03\x02\x02\x02\xE6\xE0" + - "\x03\x02\x02\x02\xE6\xE1\x03\x02\x02\x02\xE6\xE2\x03\x02\x02\x02\xE7\x15" + - "\x03\x02\x02\x02\xE8\xE9\x052\x1A\x02\xE9\xF3\x07)\x02\x02\xEA\xF4\x07" + - ">\x02\x02\xEB\xF0\x05\f\x07\x02\xEC\xED\x07#\x02\x02\xED\xEF\x05\f\x07" + - "\x02\xEE\xEC\x03\x02\x02\x02\xEF\xF2\x03\x02\x02\x02\xF0\xEE\x03\x02\x02" + - "\x02\xF0\xF1\x03\x02\x02\x02\xF1\xF4\x03\x02\x02\x02\xF2\xF0\x03\x02\x02" + - "\x02\xF3\xEA\x03\x02\x02\x02\xF3\xEB\x03\x02\x02\x02\xF3\xF4\x03\x02\x02" + - "\x02\xF4\xF5\x03\x02\x02\x02\xF5\xF6\x073\x02\x02\xF6\x17\x03\x02\x02" + - "\x02\xF7\xF8\x07\x0F\x02\x02\xF8\xF9\x05\x1A\x0E\x02\xF9\x19\x03\x02\x02" + - "\x02\xFA\xFF\x05\x1C\x0F\x02\xFB\xFC\x07#\x02\x02\xFC\xFE\x05\x1C\x0F" + - "\x02\xFD\xFB\x03\x02\x02\x02\xFE\u0101\x03\x02\x02\x02\xFF\xFD\x03\x02" + - "\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\x1B\x03\x02\x02\x02\u0101\xFF" + - "\x03\x02\x02\x02\u0102\u0108\x05\f\x07\x02\u0103\u0104\x05.\x18\x02\u0104" + - "\u0105\x07\"\x02\x02\u0105\u0106\x05\f\x07\x02\u0106\u0108\x03\x02\x02" + - "\x02\u0107\u0102\x03\x02\x02\x02\u0107\u0103\x03\x02\x02\x02\u0108\x1D" + - "\x03\x02\x02\x02\u0109\u010A\x07\b\x02\x02\u010A\u010F\x05,\x17\x02\u010B" + - "\u010C\x07#\x02\x02\u010C\u010E\x05,\x17\x02\u010D\u010B\x03\x02\x02\x02" + - "\u010E\u0111\x03\x02\x02\x02\u010F\u010D\x03\x02\x02\x02\u010F\u0110\x03" + - "\x02\x02\x02\u0110\u0113\x03\x02\x02\x02\u0111\u010F\x03\x02\x02\x02\u0112" + - "\u0114\x05 \x11\x02\u0113\u0112\x03\x02\x02\x02\u0113\u0114\x03\x02\x02" + - "\x02\u0114\x1F\x03\x02\x02\x02\u0115\u0118\x05\"\x12\x02\u0116\u0118\x05" + - "$\x13\x02\u0117\u0115\x03\x02\x02\x02\u0117\u0116\x03\x02\x02\x02\u0118" + - "!\x03\x02\x02\x02\u0119\u011A\x07H\x02\x02\u011A\u011F\x05,\x17\x02\u011B" + - "\u011C\x07#\x02\x02\u011C\u011E\x05,\x17\x02\u011D\u011B\x03\x02\x02\x02" + - "\u011E\u0121\x03\x02\x02\x02\u011F\u011D\x03\x02\x02\x02\u011F\u0120\x03" + - "\x02\x02\x02\u0120#\x03\x02\x02\x02\u0121\u011F\x03\x02\x02\x02\u0122" + - "\u0123\x07A\x02\x02\u0123\u0124\x05\"\x12\x02\u0124\u0125\x07B\x02\x02" + - "\u0125%\x03\x02\x02\x02\u0126\u0127\x07\x06\x02\x02\u0127\u0128\x05\x1A" + - "\x0E\x02\u0128\'\x03\x02\x02\x02\u0129\u012B\x07\x12\x02\x02\u012A\u012C" + - "\x05\x1A\x0E\x02\u012B\u012A\x03\x02\x02\x02\u012B\u012C\x03\x02\x02\x02" + - "\u012C\u012F\x03\x02\x02\x02\u012D\u012E\x07\x1F\x02\x02\u012E\u0130\x05" + - "\x1A\x0E\x02\u012F\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130" + - ")\x03\x02\x02\x02\u0131\u0132\x07\n\x02\x02\u0132\u0135\x05\x1A\x0E\x02" + - "\u0133\u0134\x07\x1F\x02\x02\u0134\u0136\x05\x1A\x0E\x02\u0135\u0133\x03" + - "\x02\x02\x02\u0135\u0136\x03\x02\x02\x02\u0136+\x03\x02\x02\x02\u0137" + - "\u0138\t\x04\x02\x02\u0138-\x03\x02\x02\x02\u0139\u013E\x052\x1A\x02\u013A" + - "\u013B\x07%\x02\x02\u013B\u013D\x052\x1A\x02\u013C\u013A\x03\x02\x02\x02" + - "\u013D\u0140\x03\x02\x02\x02\u013E\u013C\x03\x02\x02\x02\u013E\u013F\x03" + - "\x02\x02\x02\u013F/\x03\x02\x02\x02\u0140\u013E\x03\x02\x02\x02\u0141" + - "\u0146\x054\x1B\x02\u0142\u0143\x07%\x02\x02\u0143\u0145\x054\x1B\x02" + - "\u0144\u0142\x03\x02\x02\x02\u0145\u0148\x03\x02\x02\x02\u0146\u0144\x03" + - "\x02\x02\x02\u0146\u0147\x03\x02\x02\x02\u01471\x03\x02\x02\x02\u0148" + - "\u0146\x03\x02\x02\x02\u0149\u014A\t\x05\x02\x02\u014A3\x03\x02\x02\x02" + - "\u014B\u014C\x07M\x02\x02\u014C5\x03\x02\x02\x02\u014D\u014E\t\x06\x02" + - "\x02\u014E7\x03\x02\x02\x02\u014F\u017A\x07.\x02\x02\u0150\u0151\x05X" + - "-\x02\u0151\u0152\x07C\x02\x02\u0152\u017A\x03\x02\x02\x02\u0153\u017A" + - "\x05V,\x02\u0154\u017A\x05X-\x02\u0155\u017A\x05R*\x02\u0156\u017A\x07" + - "1\x02\x02\u0157\u017A\x05Z.\x02\u0158\u0159\x07A\x02\x02\u0159\u015E\x05" + - "T+\x02\u015A\u015B\x07#\x02\x02\u015B\u015D\x05T+\x02\u015C\u015A\x03" + - "\x02\x02\x02\u015D\u0160\x03\x02\x02\x02\u015E\u015C\x03\x02\x02\x02\u015E" + - "\u015F\x03\x02\x02\x02\u015F\u0161\x03\x02\x02\x02\u0160\u015E\x03\x02" + - "\x02\x02\u0161\u0162\x07B\x02\x02\u0162\u017A\x03\x02\x02\x02\u0163\u0164" + - "\x07A\x02\x02\u0164\u0169\x05R*\x02\u0165\u0166\x07#\x02\x02\u0166\u0168" + - "\x05R*\x02\u0167\u0165\x03\x02\x02\x02\u0168\u016B\x03\x02\x02\x02\u0169" + - "\u0167\x03\x02\x02\x02\u0169\u016A\x03\x02\x02\x02\u016A\u016C\x03\x02" + - "\x02\x02\u016B\u0169\x03\x02\x02\x02\u016C\u016D\x07B\x02\x02\u016D\u017A" + - "\x03\x02\x02\x02\u016E\u016F\x07A\x02\x02\u016F\u0174\x05Z.\x02\u0170" + - "\u0171\x07#\x02\x02\u0171\u0173\x05Z.\x02\u0172\u0170\x03\x02\x02\x02" + - "\u0173\u0176\x03\x02\x02\x02\u0174\u0172\x03\x02\x02\x02\u0174\u0175\x03" + - "\x02\x02\x02\u0175\u0177\x03\x02\x02\x02\u0176\u0174\x03\x02\x02\x02\u0177" + - "\u0178\x07B\x02\x02\u0178\u017A\x03\x02\x02\x02\u0179\u014F\x03\x02\x02" + - "\x02\u0179\u0150\x03\x02\x02\x02\u0179\u0153\x03\x02\x02\x02\u0179\u0154" + - "\x03\x02\x02\x02\u0179\u0155\x03\x02\x02\x02\u0179\u0156\x03\x02\x02\x02" + - "\u0179\u0157\x03\x02\x02\x02\u0179\u0158\x03\x02\x02\x02\u0179\u0163\x03" + - "\x02\x02\x02\u0179\u016E\x03\x02\x02\x02\u017A9\x03\x02\x02\x02\u017B" + - "\u017C\x07\f\x02\x02\u017C\u017D\x07\x1D\x02\x02\u017D;\x03\x02\x02\x02" + - "\u017E\u017F\x07\x11\x02\x02\u017F\u0184\x05> \x02\u0180\u0181\x07#\x02" + - "\x02\u0181\u0183\x05> \x02\u0182\u0180\x03\x02\x02\x02\u0183\u0186\x03" + - "\x02\x02\x02\u0184\u0182\x03\x02\x02\x02\u0184\u0185\x03\x02\x02\x02\u0185" + - "=\x03\x02\x02\x02\u0186\u0184\x03\x02\x02\x02\u0187\u0189\x05\f\x07\x02" + - "\u0188\u018A\t\x07\x02\x02\u0189\u0188\x03\x02\x02\x02\u0189\u018A\x03" + - "\x02\x02\x02\u018A\u018D\x03\x02\x02\x02\u018B\u018C\x07/\x02\x02\u018C" + - "\u018E\t\b\x02\x02\u018D\u018B\x03\x02\x02\x02\u018D\u018E\x03\x02\x02" + - "\x02\u018E?\x03\x02\x02\x02\u018F\u0190\x07\v\x02\x02\u0190\u0195\x05" + - "0\x19\x02\u0191\u0192\x07#\x02\x02\u0192\u0194\x050\x19\x02\u0193\u0191" + - "\x03\x02\x02\x02\u0194\u0197\x03\x02\x02\x02\u0195\u0193\x03\x02\x02\x02" + - "\u0195\u0196\x03\x02\x02\x02\u0196A\x03\x02\x02\x02\u0197\u0195\x03\x02" + - "\x02\x02\u0198\u0199\x07\x04\x02\x02\u0199\u019E\x050\x19\x02\u019A\u019B" + - "\x07#\x02\x02\u019B\u019D\x050\x19\x02\u019C\u019A\x03\x02\x02\x02\u019D" + - "\u01A0\x03\x02\x02\x02\u019E\u019C\x03\x02\x02\x02\u019E\u019F\x03\x02" + - "\x02\x02\u019FC\x03\x02\x02\x02\u01A0\u019E\x03\x02\x02\x02\u01A1\u01A2" + - "\x07\x0E\x02\x02\u01A2\u01A7\x05F$\x02\u01A3\u01A4\x07#\x02\x02\u01A4" + - "\u01A6\x05F$\x02\u01A5\u01A3\x03\x02\x02\x02\u01A6\u01A9\x03\x02\x02\x02" + - "\u01A7\u01A5\x03\x02\x02\x02\u01A7\u01A8\x03\x02\x02\x02\u01A8E\x03\x02" + - "\x02\x02\u01A9\u01A7\x03\x02\x02\x02\u01AA\u01AB\x050\x19\x02\u01AB\u01AC" + - "\x07Q\x02\x02\u01AC\u01AD\x050\x19\x02\u01ADG\x03\x02\x02\x02\u01AE\u01AF" + - "\x07\x03\x02\x02\u01AF\u01B0\x05\x14\v\x02\u01B0\u01B2\x05Z.\x02\u01B1" + - "\u01B3\x05N(\x02\u01B2\u01B1\x03\x02\x02\x02\u01B2\u01B3\x03\x02\x02\x02" + - "\u01B3I\x03\x02\x02\x02\u01B4\u01B5\x07\t\x02\x02\u01B5\u01B6\x05\x14" + - "\v\x02\u01B6\u01B7\x05Z.\x02\u01B7K\x03\x02\x02\x02\u01B8\u01B9\x07\r" + - "\x02\x02\u01B9\u01BA\x05.\x18\x02\u01BAM\x03\x02\x02\x02\u01BB\u01C0\x05" + - "P)\x02\u01BC\u01BD\x07#\x02\x02\u01BD\u01BF\x05P)\x02\u01BE\u01BC\x03" + - "\x02\x02\x02\u01BF\u01C2\x03\x02\x02\x02\u01C0\u01BE\x03\x02\x02\x02\u01C0" + - "\u01C1\x03\x02\x02\x02\u01C1O\x03\x02\x02\x02\u01C2\u01C0\x03\x02\x02" + - "\x02\u01C3\u01C4\x052\x1A\x02\u01C4\u01C5\x07\"\x02\x02\u01C5\u01C6\x05" + - "8\x1D\x02\u01C6Q\x03\x02\x02\x02\u01C7\u01C8\t\t\x02\x02\u01C8S\x03\x02" + - "\x02\x02\u01C9\u01CC\x05V,\x02\u01CA\u01CC\x05X-\x02\u01CB\u01C9\x03\x02" + - "\x02\x02\u01CB\u01CA\x03\x02\x02\x02\u01CCU\x03\x02\x02\x02\u01CD\u01CF" + - "\t\x02\x02\x02\u01CE\u01CD\x03\x02\x02\x02\u01CE\u01CF\x03\x02\x02\x02" + - "\u01CF\u01D0\x03\x02\x02\x02\u01D0\u01D1\x07\x1E\x02\x02\u01D1W\x03\x02" + - "\x02\x02\u01D2\u01D4\t\x02\x02\x02\u01D3\u01D2\x03\x02\x02\x02\u01D3\u01D4" + - "\x03\x02\x02\x02\u01D4\u01D5\x03\x02\x02\x02\u01D5\u01D6\x07\x1D\x02\x02" + - "\u01D6Y\x03\x02\x02\x02\u01D7\u01D8\x07\x1C\x02\x02\u01D8[\x03\x02\x02" + - "\x02\u01D9\u01DA\t\n\x02\x02\u01DA]\x03\x02\x02\x02\u01DB\u01DC\x07\x07" + - "\x02\x02\u01DC\u01DD\x05`1\x02\u01DD_\x03\x02\x02\x02\u01DE\u01DF\x07" + - "A\x02\x02\u01DF\u01E0\x05\x04\x03\x02\u01E0\u01E1\x07B\x02\x02\u01E1a" + - "\x03\x02\x02\x02\u01E2\u01E3\x07\x10\x02\x02\u01E3\u01E7\x07a\x02\x02" + - "\u01E4\u01E5\x07\x10\x02\x02\u01E5\u01E7\x07b\x02\x02\u01E6\u01E2\x03" + - "\x02\x02\x02\u01E6\u01E4\x03\x02\x02\x02\u01E7c\x03\x02\x02\x02\u01E8" + - "\u01E9\x07\x05\x02\x02\u01E9\u01EC\x07W\x02\x02\u01EA\u01EB\x07U\x02\x02" + - "\u01EB\u01ED\x050\x19\x02\u01EC\u01EA\x03\x02\x02\x02\u01EC\u01ED\x03" + - "\x02\x02\x02\u01ED\u01F7\x03\x02\x02\x02\u01EE\u01EF\x07V\x02\x02\u01EF" + - "\u01F4\x05f4\x02\u01F0\u01F1\x07#\x02\x02\u01F1\u01F3\x05f4\x02\u01F2" + - "\u01F0\x03\x02\x02\x02\u01F3\u01F6\x03\x02\x02\x02\u01F4\u01F2\x03\x02" + - "\x02\x02\u01F4\u01F5\x03\x02\x02\x02\u01F5\u01F8\x03\x02\x02\x02\u01F6" + - "\u01F4\x03\x02\x02\x02\u01F7\u01EE\x03\x02\x02\x02\u01F7\u01F8\x03\x02" + - "\x02\x02\u01F8e\x03\x02\x02\x02\u01F9\u01FA\x050\x19\x02\u01FA\u01FB\x07" + - "\"\x02\x02\u01FB\u01FD\x03\x02\x02\x02\u01FC\u01F9\x03\x02\x02\x02\u01FC" + - "\u01FD\x03\x02\x02\x02\u01FD\u01FE\x03\x02\x02\x02\u01FE\u01FF\x050\x19" + - "\x02\u01FFg\x03\x02\x02\x024sz\x89\x95\x9E\xA6\xAA\xB2\xB4\xB9\xC0\xC5" + - "\xCC\xD2\xDA\xDC\xE6\xF0\xF3\xFF\u0107\u010F\u0113\u0117\u011F\u012B\u012F" + - "\u0135\u013E\u0146\u015E\u0169\u0174\u0179\u0184\u0189\u018D\u0195\u019E" + - "\u01A7\u01B2\u01C0\u01CB\u01CE\u01D3\u01E6\u01EC\u01F4\u01F7\u01FC"; - public static __ATN: ATN; - public static get _ATN(): ATN { - if (!esql_parser.__ATN) { - esql_parser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(esql_parser._serializedATN)); - } - - return esql_parser.__ATN; - } - -} - -export class SingleStatementContext extends ParserRuleContext { - public query(): QueryContext { - return this.getRuleContext(0, QueryContext); - } - public EOF(): TerminalNode { return this.getToken(esql_parser.EOF, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_singleStatement; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterSingleStatement) { - listener.enterSingleStatement(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitSingleStatement) { - listener.exitSingleStatement(this); - } - } -} - - -export class QueryContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_query; } - public copyFrom(ctx: QueryContext): void { - super.copyFrom(ctx); - } -} -export class SingleCommandQueryContext extends QueryContext { - public sourceCommand(): SourceCommandContext { - return this.getRuleContext(0, SourceCommandContext); - } - constructor(ctx: QueryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterSingleCommandQuery) { - listener.enterSingleCommandQuery(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitSingleCommandQuery) { - listener.exitSingleCommandQuery(this); - } - } -} -export class CompositeQueryContext extends QueryContext { - public query(): QueryContext { - return this.getRuleContext(0, QueryContext); - } - public PIPE(): TerminalNode { return this.getToken(esql_parser.PIPE, 0); } - public processingCommand(): ProcessingCommandContext { - return this.getRuleContext(0, ProcessingCommandContext); - } - constructor(ctx: QueryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterCompositeQuery) { - listener.enterCompositeQuery(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitCompositeQuery) { - listener.exitCompositeQuery(this); - } - } -} - - -export class SourceCommandContext extends ParserRuleContext { - public explainCommand(): ExplainCommandContext | undefined { - return this.tryGetRuleContext(0, ExplainCommandContext); - } - public fromCommand(): FromCommandContext | undefined { - return this.tryGetRuleContext(0, FromCommandContext); - } - public rowCommand(): RowCommandContext | undefined { - return this.tryGetRuleContext(0, RowCommandContext); - } - public showCommand(): ShowCommandContext | undefined { - return this.tryGetRuleContext(0, ShowCommandContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_sourceCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterSourceCommand) { - listener.enterSourceCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitSourceCommand) { - listener.exitSourceCommand(this); - } - } -} - - -export class ProcessingCommandContext extends ParserRuleContext { - public evalCommand(): EvalCommandContext | undefined { - return this.tryGetRuleContext(0, EvalCommandContext); - } - public inlinestatsCommand(): InlinestatsCommandContext | undefined { - return this.tryGetRuleContext(0, InlinestatsCommandContext); - } - public limitCommand(): LimitCommandContext | undefined { - return this.tryGetRuleContext(0, LimitCommandContext); - } - public keepCommand(): KeepCommandContext | undefined { - return this.tryGetRuleContext(0, KeepCommandContext); - } - public sortCommand(): SortCommandContext | undefined { - return this.tryGetRuleContext(0, SortCommandContext); - } - public statsCommand(): StatsCommandContext | undefined { - return this.tryGetRuleContext(0, StatsCommandContext); - } - public whereCommand(): WhereCommandContext | undefined { - return this.tryGetRuleContext(0, WhereCommandContext); - } - public dropCommand(): DropCommandContext | undefined { - return this.tryGetRuleContext(0, DropCommandContext); - } - public renameCommand(): RenameCommandContext | undefined { - return this.tryGetRuleContext(0, RenameCommandContext); - } - public dissectCommand(): DissectCommandContext | undefined { - return this.tryGetRuleContext(0, DissectCommandContext); - } - public grokCommand(): GrokCommandContext | undefined { - return this.tryGetRuleContext(0, GrokCommandContext); - } - public enrichCommand(): EnrichCommandContext | undefined { - return this.tryGetRuleContext(0, EnrichCommandContext); - } - public mvExpandCommand(): MvExpandCommandContext | undefined { - return this.tryGetRuleContext(0, MvExpandCommandContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_processingCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterProcessingCommand) { - listener.enterProcessingCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitProcessingCommand) { - listener.exitProcessingCommand(this); - } - } -} - - -export class WhereCommandContext extends ParserRuleContext { - public WHERE(): TerminalNode { return this.getToken(esql_parser.WHERE, 0); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_whereCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterWhereCommand) { - listener.enterWhereCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitWhereCommand) { - listener.exitWhereCommand(this); - } - } -} - - -export class BooleanExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_booleanExpression; } - public copyFrom(ctx: BooleanExpressionContext): void { - super.copyFrom(ctx); - } -} -export class LogicalNotContext extends BooleanExpressionContext { - public NOT(): TerminalNode { return this.getToken(esql_parser.NOT, 0); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext); - } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterLogicalNot) { - listener.enterLogicalNot(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitLogicalNot) { - listener.exitLogicalNot(this); - } - } -} -export class BooleanDefaultContext extends BooleanExpressionContext { - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext); - } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterBooleanDefault) { - listener.enterBooleanDefault(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitBooleanDefault) { - listener.exitBooleanDefault(this); - } - } -} -export class RegexExpressionContext extends BooleanExpressionContext { - public regexBooleanExpression(): RegexBooleanExpressionContext { - return this.getRuleContext(0, RegexBooleanExpressionContext); - } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterRegexExpression) { - listener.enterRegexExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitRegexExpression) { - listener.exitRegexExpression(this); - } - } -} -export class LogicalBinaryContext extends BooleanExpressionContext { - public _left: BooleanExpressionContext; - public _operator: Token; - public _right: BooleanExpressionContext; - public booleanExpression(): BooleanExpressionContext[]; - public booleanExpression(i: number): BooleanExpressionContext; - public booleanExpression(i?: number): BooleanExpressionContext | BooleanExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(BooleanExpressionContext); - } else { - return this.getRuleContext(i, BooleanExpressionContext); - } - } - public AND(): TerminalNode | undefined { return this.tryGetToken(esql_parser.AND, 0); } - public OR(): TerminalNode | undefined { return this.tryGetToken(esql_parser.OR, 0); } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterLogicalBinary) { - listener.enterLogicalBinary(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitLogicalBinary) { - listener.exitLogicalBinary(this); - } - } -} -export class LogicalInContext extends BooleanExpressionContext { - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext; - public valueExpression(i?: number): ValueExpressionContext | ValueExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); - } else { - return this.getRuleContext(i, ValueExpressionContext); - } - } - public IN(): TerminalNode { return this.getToken(esql_parser.IN, 0); } - public LP(): TerminalNode { return this.getToken(esql_parser.LP, 0); } - public RP(): TerminalNode { return this.getToken(esql_parser.RP, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NOT, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterLogicalIn) { - listener.enterLogicalIn(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitLogicalIn) { - listener.exitLogicalIn(this); - } - } -} -export class IsNullContext extends BooleanExpressionContext { - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext); - } - public IS(): TerminalNode { return this.getToken(esql_parser.IS, 0); } - public NULL(): TerminalNode { return this.getToken(esql_parser.NULL, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NOT, 0); } - constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIsNull) { - listener.enterIsNull(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIsNull) { - listener.exitIsNull(this); - } - } -} - - -export class RegexBooleanExpressionContext extends ParserRuleContext { - public _kind: Token; - public _pattern: StringContext; - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext); - } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LIKE, 0); } - public string(): StringContext { - return this.getRuleContext(0, StringContext); - } - public NOT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NOT, 0); } - public RLIKE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.RLIKE, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_regexBooleanExpression; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterRegexBooleanExpression) { - listener.enterRegexBooleanExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitRegexBooleanExpression) { - listener.exitRegexBooleanExpression(this); - } - } -} - - -export class ValueExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_valueExpression; } - public copyFrom(ctx: ValueExpressionContext): void { - super.copyFrom(ctx); - } -} -export class ValueExpressionDefaultContext extends ValueExpressionContext { - public operatorExpression(): OperatorExpressionContext { - return this.getRuleContext(0, OperatorExpressionContext); - } - constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterValueExpressionDefault) { - listener.enterValueExpressionDefault(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitValueExpressionDefault) { - listener.exitValueExpressionDefault(this); - } - } -} -export class ComparisonContext extends ValueExpressionContext { - public _left: OperatorExpressionContext; - public _right: OperatorExpressionContext; - public comparisonOperator(): ComparisonOperatorContext { - return this.getRuleContext(0, ComparisonOperatorContext); - } - public operatorExpression(): OperatorExpressionContext[]; - public operatorExpression(i: number): OperatorExpressionContext; - public operatorExpression(i?: number): OperatorExpressionContext | OperatorExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(OperatorExpressionContext); - } else { - return this.getRuleContext(i, OperatorExpressionContext); - } - } - constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterComparison) { - listener.enterComparison(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitComparison) { - listener.exitComparison(this); - } - } -} - - -export class OperatorExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_operatorExpression; } - public copyFrom(ctx: OperatorExpressionContext): void { - super.copyFrom(ctx); - } -} -export class OperatorExpressionDefaultContext extends OperatorExpressionContext { - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext); - } - constructor(ctx: OperatorExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterOperatorExpressionDefault) { - listener.enterOperatorExpressionDefault(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitOperatorExpressionDefault) { - listener.exitOperatorExpressionDefault(this); - } - } -} -export class ArithmeticUnaryContext extends OperatorExpressionContext { - public _operator: Token; - public operatorExpression(): OperatorExpressionContext { - return this.getRuleContext(0, OperatorExpressionContext); - } - public MINUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.MINUS, 0); } - public PLUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.PLUS, 0); } - constructor(ctx: OperatorExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterArithmeticUnary) { - listener.enterArithmeticUnary(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitArithmeticUnary) { - listener.exitArithmeticUnary(this); - } - } -} -export class ArithmeticBinaryContext extends OperatorExpressionContext { - public _left: OperatorExpressionContext; - public _operator: Token; - public _right: OperatorExpressionContext; - public operatorExpression(): OperatorExpressionContext[]; - public operatorExpression(i: number): OperatorExpressionContext; - public operatorExpression(i?: number): OperatorExpressionContext | OperatorExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(OperatorExpressionContext); - } else { - return this.getRuleContext(i, OperatorExpressionContext); - } - } - public ASTERISK(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASTERISK, 0); } - public SLASH(): TerminalNode | undefined { return this.tryGetToken(esql_parser.SLASH, 0); } - public PERCENT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.PERCENT, 0); } - public PLUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.PLUS, 0); } - public MINUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.MINUS, 0); } - constructor(ctx: OperatorExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterArithmeticBinary) { - listener.enterArithmeticBinary(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitArithmeticBinary) { - listener.exitArithmeticBinary(this); - } - } -} - - -export class PrimaryExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_primaryExpression; } - public copyFrom(ctx: PrimaryExpressionContext): void { - super.copyFrom(ctx); - } -} -export class ConstantDefaultContext extends PrimaryExpressionContext { - public constant(): ConstantContext { - return this.getRuleContext(0, ConstantContext); - } - constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterConstantDefault) { - listener.enterConstantDefault(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitConstantDefault) { - listener.exitConstantDefault(this); - } - } -} -export class DereferenceContext extends PrimaryExpressionContext { - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } - constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDereference) { - listener.enterDereference(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDereference) { - listener.exitDereference(this); - } - } -} -export class FunctionContext extends PrimaryExpressionContext { - public functionExpression(): FunctionExpressionContext { - return this.getRuleContext(0, FunctionExpressionContext); - } - constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterFunction) { - listener.enterFunction(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitFunction) { - listener.exitFunction(this); - } - } -} -export class ParenthesizedExpressionContext extends PrimaryExpressionContext { - public LP(): TerminalNode { return this.getToken(esql_parser.LP, 0); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext); - } - public RP(): TerminalNode { return this.getToken(esql_parser.RP, 0); } - constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterParenthesizedExpression) { - listener.enterParenthesizedExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitParenthesizedExpression) { - listener.exitParenthesizedExpression(this); - } - } -} - - -export class FunctionExpressionContext extends ParserRuleContext { - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); - } - public LP(): TerminalNode { return this.getToken(esql_parser.LP, 0); } - public RP(): TerminalNode { return this.getToken(esql_parser.RP, 0); } - public ASTERISK(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASTERISK, 0); } - public booleanExpression(): BooleanExpressionContext[]; - public booleanExpression(i: number): BooleanExpressionContext; - public booleanExpression(i?: number): BooleanExpressionContext | BooleanExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(BooleanExpressionContext); - } else { - return this.getRuleContext(i, BooleanExpressionContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_functionExpression; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterFunctionExpression) { - listener.enterFunctionExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitFunctionExpression) { - listener.exitFunctionExpression(this); - } - } -} - - -export class RowCommandContext extends ParserRuleContext { - public ROW(): TerminalNode { return this.getToken(esql_parser.ROW, 0); } - public fields(): FieldsContext { - return this.getRuleContext(0, FieldsContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_rowCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterRowCommand) { - listener.enterRowCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitRowCommand) { - listener.exitRowCommand(this); - } - } -} - - -export class FieldsContext extends ParserRuleContext { - public field(): FieldContext[]; - public field(i: number): FieldContext; - public field(i?: number): FieldContext | FieldContext[] { - if (i === undefined) { - return this.getRuleContexts(FieldContext); - } else { - return this.getRuleContext(i, FieldContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_fields; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterFields) { - listener.enterFields(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitFields) { - listener.exitFields(this); - } - } -} - - -export class FieldContext extends ParserRuleContext { - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext); - } - public qualifiedName(): QualifiedNameContext | undefined { - return this.tryGetRuleContext(0, QualifiedNameContext); - } - public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASSIGN, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_field; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterField) { - listener.enterField(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitField) { - listener.exitField(this); - } - } -} - - -export class FromCommandContext extends ParserRuleContext { - public FROM(): TerminalNode { return this.getToken(esql_parser.FROM, 0); } - public fromIdentifier(): FromIdentifierContext[]; - public fromIdentifier(i: number): FromIdentifierContext; - public fromIdentifier(i?: number): FromIdentifierContext | FromIdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(FromIdentifierContext); - } else { - return this.getRuleContext(i, FromIdentifierContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - public metadata(): MetadataContext | undefined { - return this.tryGetRuleContext(0, MetadataContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_fromCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterFromCommand) { - listener.enterFromCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitFromCommand) { - listener.exitFromCommand(this); - } - } -} - - -export class MetadataContext extends ParserRuleContext { - public metadataOption(): MetadataOptionContext | undefined { - return this.tryGetRuleContext(0, MetadataOptionContext); - } - public deprecated_metadata(): Deprecated_metadataContext | undefined { - return this.tryGetRuleContext(0, Deprecated_metadataContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_metadata; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterMetadata) { - listener.enterMetadata(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitMetadata) { - listener.exitMetadata(this); - } - } -} - - -export class MetadataOptionContext extends ParserRuleContext { - public METADATA(): TerminalNode { return this.getToken(esql_parser.METADATA, 0); } - public fromIdentifier(): FromIdentifierContext[]; - public fromIdentifier(i: number): FromIdentifierContext; - public fromIdentifier(i?: number): FromIdentifierContext | FromIdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(FromIdentifierContext); - } else { - return this.getRuleContext(i, FromIdentifierContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_metadataOption; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterMetadataOption) { - listener.enterMetadataOption(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitMetadataOption) { - listener.exitMetadataOption(this); - } - } -} - - -export class Deprecated_metadataContext extends ParserRuleContext { - public OPENING_BRACKET(): TerminalNode { return this.getToken(esql_parser.OPENING_BRACKET, 0); } - public metadataOption(): MetadataOptionContext { - return this.getRuleContext(0, MetadataOptionContext); - } - public CLOSING_BRACKET(): TerminalNode { return this.getToken(esql_parser.CLOSING_BRACKET, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_deprecated_metadata; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDeprecated_metadata) { - listener.enterDeprecated_metadata(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDeprecated_metadata) { - listener.exitDeprecated_metadata(this); - } - } -} - - -export class EvalCommandContext extends ParserRuleContext { - public EVAL(): TerminalNode { return this.getToken(esql_parser.EVAL, 0); } - public fields(): FieldsContext { - return this.getRuleContext(0, FieldsContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_evalCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterEvalCommand) { - listener.enterEvalCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitEvalCommand) { - listener.exitEvalCommand(this); - } - } -} - - -export class StatsCommandContext extends ParserRuleContext { - public _stats: FieldsContext; - public _grouping: FieldsContext; - public STATS(): TerminalNode { return this.getToken(esql_parser.STATS, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(esql_parser.BY, 0); } - public fields(): FieldsContext[]; - public fields(i: number): FieldsContext; - public fields(i?: number): FieldsContext | FieldsContext[] { - if (i === undefined) { - return this.getRuleContexts(FieldsContext); - } else { - return this.getRuleContext(i, FieldsContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_statsCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterStatsCommand) { - listener.enterStatsCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitStatsCommand) { - listener.exitStatsCommand(this); - } - } -} - - -export class InlinestatsCommandContext extends ParserRuleContext { - public _stats: FieldsContext; - public _grouping: FieldsContext; - public INLINESTATS(): TerminalNode { return this.getToken(esql_parser.INLINESTATS, 0); } - public fields(): FieldsContext[]; - public fields(i: number): FieldsContext; - public fields(i?: number): FieldsContext | FieldsContext[] { - if (i === undefined) { - return this.getRuleContexts(FieldsContext); - } else { - return this.getRuleContext(i, FieldsContext); - } - } - public BY(): TerminalNode | undefined { return this.tryGetToken(esql_parser.BY, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_inlinestatsCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterInlinestatsCommand) { - listener.enterInlinestatsCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitInlinestatsCommand) { - listener.exitInlinestatsCommand(this); - } - } -} - - -export class FromIdentifierContext extends ParserRuleContext { - public FROM_UNQUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.FROM_UNQUOTED_IDENTIFIER, 0); } - public QUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.QUOTED_IDENTIFIER, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_fromIdentifier; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterFromIdentifier) { - listener.enterFromIdentifier(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitFromIdentifier) { - listener.exitFromIdentifier(this); - } - } -} - - -export class QualifiedNameContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - public DOT(): TerminalNode[]; - public DOT(i: number): TerminalNode; - public DOT(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.DOT); - } else { - return this.getToken(esql_parser.DOT, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_qualifiedName; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterQualifiedName) { - listener.enterQualifiedName(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitQualifiedName) { - listener.exitQualifiedName(this); - } - } -} - - -export class QualifiedNamePatternContext extends ParserRuleContext { - public identifierPattern(): IdentifierPatternContext[]; - public identifierPattern(i: number): IdentifierPatternContext; - public identifierPattern(i?: number): IdentifierPatternContext | IdentifierPatternContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierPatternContext); - } else { - return this.getRuleContext(i, IdentifierPatternContext); - } - } - public DOT(): TerminalNode[]; - public DOT(i: number): TerminalNode; - public DOT(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.DOT); - } else { - return this.getToken(esql_parser.DOT, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_qualifiedNamePattern; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterQualifiedNamePattern) { - listener.enterQualifiedNamePattern(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitQualifiedNamePattern) { - listener.exitQualifiedNamePattern(this); - } - } -} - - -export class IdentifierContext extends ParserRuleContext { - public UNQUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.UNQUOTED_IDENTIFIER, 0); } - public QUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.QUOTED_IDENTIFIER, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_identifier; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIdentifier) { - listener.enterIdentifier(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIdentifier) { - listener.exitIdentifier(this); - } - } -} - - -export class IdentifierPatternContext extends ParserRuleContext { - public ID_PATTERN(): TerminalNode { return this.getToken(esql_parser.ID_PATTERN, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_identifierPattern; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIdentifierPattern) { - listener.enterIdentifierPattern(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIdentifierPattern) { - listener.exitIdentifierPattern(this); - } - } -} - - -export class IdPatternContext extends ParserRuleContext { - public UNQUOTED_ID_PATTERN(): TerminalNode | undefined { return this.tryGetToken(esql_parser.UNQUOTED_ID_PATTERN, 0); } - public QUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.QUOTED_IDENTIFIER, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_idPattern; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIdPattern) { - listener.enterIdPattern(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIdPattern) { - listener.exitIdPattern(this); - } - } -} - - -export class ConstantContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_constant; } - public copyFrom(ctx: ConstantContext): void { - super.copyFrom(ctx); - } -} -export class NullLiteralContext extends ConstantContext { - public NULL(): TerminalNode { return this.getToken(esql_parser.NULL, 0); } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterNullLiteral) { - listener.enterNullLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitNullLiteral) { - listener.exitNullLiteral(this); - } - } -} -export class QualifiedIntegerLiteralContext extends ConstantContext { - public integerValue(): IntegerValueContext { - return this.getRuleContext(0, IntegerValueContext); - } - public UNQUOTED_IDENTIFIER(): TerminalNode { return this.getToken(esql_parser.UNQUOTED_IDENTIFIER, 0); } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterQualifiedIntegerLiteral) { - listener.enterQualifiedIntegerLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitQualifiedIntegerLiteral) { - listener.exitQualifiedIntegerLiteral(this); - } - } -} -export class DecimalLiteralContext extends ConstantContext { - public decimalValue(): DecimalValueContext { - return this.getRuleContext(0, DecimalValueContext); - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDecimalLiteral) { - listener.enterDecimalLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDecimalLiteral) { - listener.exitDecimalLiteral(this); - } - } -} -export class IntegerLiteralContext extends ConstantContext { - public integerValue(): IntegerValueContext { - return this.getRuleContext(0, IntegerValueContext); - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIntegerLiteral) { - listener.enterIntegerLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIntegerLiteral) { - listener.exitIntegerLiteral(this); - } - } -} -export class BooleanLiteralContext extends ConstantContext { - public booleanValue(): BooleanValueContext { - return this.getRuleContext(0, BooleanValueContext); - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterBooleanLiteral) { - listener.enterBooleanLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitBooleanLiteral) { - listener.exitBooleanLiteral(this); - } - } -} -export class InputParamContext extends ConstantContext { - public PARAM(): TerminalNode { return this.getToken(esql_parser.PARAM, 0); } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterInputParam) { - listener.enterInputParam(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitInputParam) { - listener.exitInputParam(this); - } - } -} -export class StringLiteralContext extends ConstantContext { - public string(): StringContext { - return this.getRuleContext(0, StringContext); - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterStringLiteral) { - listener.enterStringLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitStringLiteral) { - listener.exitStringLiteral(this); - } - } -} -export class NumericArrayLiteralContext extends ConstantContext { - public OPENING_BRACKET(): TerminalNode { return this.getToken(esql_parser.OPENING_BRACKET, 0); } - public numericValue(): NumericValueContext[]; - public numericValue(i: number): NumericValueContext; - public numericValue(i?: number): NumericValueContext | NumericValueContext[] { - if (i === undefined) { - return this.getRuleContexts(NumericValueContext); - } else { - return this.getRuleContext(i, NumericValueContext); - } - } - public CLOSING_BRACKET(): TerminalNode { return this.getToken(esql_parser.CLOSING_BRACKET, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterNumericArrayLiteral) { - listener.enterNumericArrayLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitNumericArrayLiteral) { - listener.exitNumericArrayLiteral(this); - } - } -} -export class BooleanArrayLiteralContext extends ConstantContext { - public OPENING_BRACKET(): TerminalNode { return this.getToken(esql_parser.OPENING_BRACKET, 0); } - public booleanValue(): BooleanValueContext[]; - public booleanValue(i: number): BooleanValueContext; - public booleanValue(i?: number): BooleanValueContext | BooleanValueContext[] { - if (i === undefined) { - return this.getRuleContexts(BooleanValueContext); - } else { - return this.getRuleContext(i, BooleanValueContext); - } - } - public CLOSING_BRACKET(): TerminalNode { return this.getToken(esql_parser.CLOSING_BRACKET, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterBooleanArrayLiteral) { - listener.enterBooleanArrayLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitBooleanArrayLiteral) { - listener.exitBooleanArrayLiteral(this); - } - } -} -export class StringArrayLiteralContext extends ConstantContext { - public OPENING_BRACKET(): TerminalNode { return this.getToken(esql_parser.OPENING_BRACKET, 0); } - public string(): StringContext[]; - public string(i: number): StringContext; - public string(i?: number): StringContext | StringContext[] { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } else { - return this.getRuleContext(i, StringContext); - } - } - public CLOSING_BRACKET(): TerminalNode { return this.getToken(esql_parser.CLOSING_BRACKET, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(ctx: ConstantContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterStringArrayLiteral) { - listener.enterStringArrayLiteral(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitStringArrayLiteral) { - listener.exitStringArrayLiteral(this); - } - } -} - - -export class LimitCommandContext extends ParserRuleContext { - public LIMIT(): TerminalNode { return this.getToken(esql_parser.LIMIT, 0); } - public INTEGER_LITERAL(): TerminalNode { return this.getToken(esql_parser.INTEGER_LITERAL, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_limitCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterLimitCommand) { - listener.enterLimitCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitLimitCommand) { - listener.exitLimitCommand(this); - } - } -} - - -export class SortCommandContext extends ParserRuleContext { - public SORT(): TerminalNode { return this.getToken(esql_parser.SORT, 0); } - public orderExpression(): OrderExpressionContext[]; - public orderExpression(i: number): OrderExpressionContext; - public orderExpression(i?: number): OrderExpressionContext | OrderExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(OrderExpressionContext); - } else { - return this.getRuleContext(i, OrderExpressionContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_sortCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterSortCommand) { - listener.enterSortCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitSortCommand) { - listener.exitSortCommand(this); - } - } -} - - -export class OrderExpressionContext extends ParserRuleContext { - public _ordering: Token; - public _nullOrdering: Token; - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext); - } - public NULLS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NULLS, 0); } - public ASC(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASC, 0); } - public DESC(): TerminalNode | undefined { return this.tryGetToken(esql_parser.DESC, 0); } - public FIRST(): TerminalNode | undefined { return this.tryGetToken(esql_parser.FIRST, 0); } - public LAST(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LAST, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_orderExpression; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterOrderExpression) { - listener.enterOrderExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitOrderExpression) { - listener.exitOrderExpression(this); - } - } -} - - -export class KeepCommandContext extends ParserRuleContext { - public KEEP(): TerminalNode { return this.getToken(esql_parser.KEEP, 0); } - public qualifiedNamePattern(): QualifiedNamePatternContext[]; - public qualifiedNamePattern(i: number): QualifiedNamePatternContext; - public qualifiedNamePattern(i?: number): QualifiedNamePatternContext | QualifiedNamePatternContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNamePatternContext); - } else { - return this.getRuleContext(i, QualifiedNamePatternContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_keepCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterKeepCommand) { - listener.enterKeepCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitKeepCommand) { - listener.exitKeepCommand(this); - } - } -} - - -export class DropCommandContext extends ParserRuleContext { - public DROP(): TerminalNode { return this.getToken(esql_parser.DROP, 0); } - public qualifiedNamePattern(): QualifiedNamePatternContext[]; - public qualifiedNamePattern(i: number): QualifiedNamePatternContext; - public qualifiedNamePattern(i?: number): QualifiedNamePatternContext | QualifiedNamePatternContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNamePatternContext); - } else { - return this.getRuleContext(i, QualifiedNamePatternContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_dropCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDropCommand) { - listener.enterDropCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDropCommand) { - listener.exitDropCommand(this); - } - } -} - - -export class RenameCommandContext extends ParserRuleContext { - public RENAME(): TerminalNode { return this.getToken(esql_parser.RENAME, 0); } - public renameClause(): RenameClauseContext[]; - public renameClause(i: number): RenameClauseContext; - public renameClause(i?: number): RenameClauseContext | RenameClauseContext[] { - if (i === undefined) { - return this.getRuleContexts(RenameClauseContext); - } else { - return this.getRuleContext(i, RenameClauseContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_renameCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterRenameCommand) { - listener.enterRenameCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitRenameCommand) { - listener.exitRenameCommand(this); - } - } -} - - -export class RenameClauseContext extends ParserRuleContext { - public _oldName: QualifiedNamePatternContext; - public _newName: QualifiedNamePatternContext; - public AS(): TerminalNode { return this.getToken(esql_parser.AS, 0); } - public qualifiedNamePattern(): QualifiedNamePatternContext[]; - public qualifiedNamePattern(i: number): QualifiedNamePatternContext; - public qualifiedNamePattern(i?: number): QualifiedNamePatternContext | QualifiedNamePatternContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNamePatternContext); - } else { - return this.getRuleContext(i, QualifiedNamePatternContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_renameClause; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterRenameClause) { - listener.enterRenameClause(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitRenameClause) { - listener.exitRenameClause(this); - } - } -} - - -export class DissectCommandContext extends ParserRuleContext { - public DISSECT(): TerminalNode { return this.getToken(esql_parser.DISSECT, 0); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext); - } - public string(): StringContext { - return this.getRuleContext(0, StringContext); - } - public commandOptions(): CommandOptionsContext | undefined { - return this.tryGetRuleContext(0, CommandOptionsContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_dissectCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDissectCommand) { - listener.enterDissectCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDissectCommand) { - listener.exitDissectCommand(this); - } - } -} - - -export class GrokCommandContext extends ParserRuleContext { - public GROK(): TerminalNode { return this.getToken(esql_parser.GROK, 0); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext); - } - public string(): StringContext { - return this.getRuleContext(0, StringContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_grokCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterGrokCommand) { - listener.enterGrokCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitGrokCommand) { - listener.exitGrokCommand(this); - } - } -} - - -export class MvExpandCommandContext extends ParserRuleContext { - public MV_EXPAND(): TerminalNode { return this.getToken(esql_parser.MV_EXPAND, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_mvExpandCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterMvExpandCommand) { - listener.enterMvExpandCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitMvExpandCommand) { - listener.exitMvExpandCommand(this); - } - } -} - - -export class CommandOptionsContext extends ParserRuleContext { - public commandOption(): CommandOptionContext[]; - public commandOption(i: number): CommandOptionContext; - public commandOption(i?: number): CommandOptionContext | CommandOptionContext[] { - if (i === undefined) { - return this.getRuleContexts(CommandOptionContext); - } else { - return this.getRuleContext(i, CommandOptionContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_commandOptions; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterCommandOptions) { - listener.enterCommandOptions(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitCommandOptions) { - listener.exitCommandOptions(this); - } - } -} - - -export class CommandOptionContext extends ParserRuleContext { - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); - } - public ASSIGN(): TerminalNode { return this.getToken(esql_parser.ASSIGN, 0); } - public constant(): ConstantContext { - return this.getRuleContext(0, ConstantContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_commandOption; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterCommandOption) { - listener.enterCommandOption(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitCommandOption) { - listener.exitCommandOption(this); - } - } -} - - -export class BooleanValueContext extends ParserRuleContext { - public TRUE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.TRUE, 0); } - public FALSE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.FALSE, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_booleanValue; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterBooleanValue) { - listener.enterBooleanValue(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitBooleanValue) { - listener.exitBooleanValue(this); - } - } -} - - -export class NumericValueContext extends ParserRuleContext { - public decimalValue(): DecimalValueContext | undefined { - return this.tryGetRuleContext(0, DecimalValueContext); - } - public integerValue(): IntegerValueContext | undefined { - return this.tryGetRuleContext(0, IntegerValueContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_numericValue; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterNumericValue) { - listener.enterNumericValue(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitNumericValue) { - listener.exitNumericValue(this); - } - } -} - - -export class DecimalValueContext extends ParserRuleContext { - public DECIMAL_LITERAL(): TerminalNode { return this.getToken(esql_parser.DECIMAL_LITERAL, 0); } - public PLUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.PLUS, 0); } - public MINUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.MINUS, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_decimalValue; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterDecimalValue) { - listener.enterDecimalValue(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitDecimalValue) { - listener.exitDecimalValue(this); - } - } -} - - -export class IntegerValueContext extends ParserRuleContext { - public INTEGER_LITERAL(): TerminalNode { return this.getToken(esql_parser.INTEGER_LITERAL, 0); } - public PLUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.PLUS, 0); } - public MINUS(): TerminalNode | undefined { return this.tryGetToken(esql_parser.MINUS, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_integerValue; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterIntegerValue) { - listener.enterIntegerValue(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitIntegerValue) { - listener.exitIntegerValue(this); - } - } -} - - -export class StringContext extends ParserRuleContext { - public STRING(): TerminalNode { return this.getToken(esql_parser.STRING, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_string; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterString) { - listener.enterString(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitString) { - listener.exitString(this); - } - } -} - - -export class ComparisonOperatorContext extends ParserRuleContext { - public EQ(): TerminalNode | undefined { return this.tryGetToken(esql_parser.EQ, 0); } - public NEQ(): TerminalNode | undefined { return this.tryGetToken(esql_parser.NEQ, 0); } - public LT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LT, 0); } - public LTE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.LTE, 0); } - public GT(): TerminalNode | undefined { return this.tryGetToken(esql_parser.GT, 0); } - public GTE(): TerminalNode | undefined { return this.tryGetToken(esql_parser.GTE, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_comparisonOperator; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterComparisonOperator) { - listener.enterComparisonOperator(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitComparisonOperator) { - listener.exitComparisonOperator(this); - } - } -} - - -export class ExplainCommandContext extends ParserRuleContext { - public EXPLAIN(): TerminalNode { return this.getToken(esql_parser.EXPLAIN, 0); } - public subqueryExpression(): SubqueryExpressionContext { - return this.getRuleContext(0, SubqueryExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_explainCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterExplainCommand) { - listener.enterExplainCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitExplainCommand) { - listener.exitExplainCommand(this); - } - } -} - - -export class SubqueryExpressionContext extends ParserRuleContext { - public OPENING_BRACKET(): TerminalNode { return this.getToken(esql_parser.OPENING_BRACKET, 0); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext); - } - public CLOSING_BRACKET(): TerminalNode { return this.getToken(esql_parser.CLOSING_BRACKET, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_subqueryExpression; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterSubqueryExpression) { - listener.enterSubqueryExpression(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitSubqueryExpression) { - listener.exitSubqueryExpression(this); - } - } -} - - -export class ShowCommandContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_showCommand; } - public copyFrom(ctx: ShowCommandContext): void { - super.copyFrom(ctx); - } -} -export class ShowInfoContext extends ShowCommandContext { - public SHOW(): TerminalNode { return this.getToken(esql_parser.SHOW, 0); } - public INFO(): TerminalNode { return this.getToken(esql_parser.INFO, 0); } - constructor(ctx: ShowCommandContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterShowInfo) { - listener.enterShowInfo(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitShowInfo) { - listener.exitShowInfo(this); - } - } -} -export class ShowFunctionsContext extends ShowCommandContext { - public SHOW(): TerminalNode { return this.getToken(esql_parser.SHOW, 0); } - public FUNCTIONS(): TerminalNode { return this.getToken(esql_parser.FUNCTIONS, 0); } - constructor(ctx: ShowCommandContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterShowFunctions) { - listener.enterShowFunctions(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitShowFunctions) { - listener.exitShowFunctions(this); - } - } -} - - -export class EnrichCommandContext extends ParserRuleContext { - public _policyName: Token; - public _matchField: QualifiedNamePatternContext; - public ENRICH(): TerminalNode { return this.getToken(esql_parser.ENRICH, 0); } - public ENRICH_POLICY_NAME(): TerminalNode { return this.getToken(esql_parser.ENRICH_POLICY_NAME, 0); } - public ON(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ON, 0); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(esql_parser.WITH, 0); } - public enrichWithClause(): EnrichWithClauseContext[]; - public enrichWithClause(i: number): EnrichWithClauseContext; - public enrichWithClause(i?: number): EnrichWithClauseContext | EnrichWithClauseContext[] { - if (i === undefined) { - return this.getRuleContexts(EnrichWithClauseContext); - } else { - return this.getRuleContext(i, EnrichWithClauseContext); - } - } - public qualifiedNamePattern(): QualifiedNamePatternContext | undefined { - return this.tryGetRuleContext(0, QualifiedNamePatternContext); - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(esql_parser.COMMA); - } else { - return this.getToken(esql_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_enrichCommand; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterEnrichCommand) { - listener.enterEnrichCommand(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitEnrichCommand) { - listener.exitEnrichCommand(this); - } - } -} - - -export class EnrichWithClauseContext extends ParserRuleContext { - public _newName: QualifiedNamePatternContext; - public _enrichField: QualifiedNamePatternContext; - public qualifiedNamePattern(): QualifiedNamePatternContext[]; - public qualifiedNamePattern(i: number): QualifiedNamePatternContext; - public qualifiedNamePattern(i?: number): QualifiedNamePatternContext | QualifiedNamePatternContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNamePatternContext); - } else { - return this.getRuleContext(i, QualifiedNamePatternContext); - } - } - public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(esql_parser.ASSIGN, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return esql_parser.RULE_enrichWithClause; } - // @Override - public enterRule(listener: esql_parserListener): void { - if (listener.enterEnrichWithClause) { - listener.enterEnrichWithClause(this); - } - } - // @Override - public exitRule(listener: esql_parserListener): void { - if (listener.exitEnrichWithClause) { - listener.exitEnrichWithClause(this); - } - } -} - - diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts deleted file mode 100644 index 60e6b32cce3ac..0000000000000 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts +++ /dev/null @@ -1,1032 +0,0 @@ -// @ts-nocheck -// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; - -import { NullLiteralContext } from "./esql_parser"; -import { QualifiedIntegerLiteralContext } from "./esql_parser"; -import { DecimalLiteralContext } from "./esql_parser"; -import { IntegerLiteralContext } from "./esql_parser"; -import { BooleanLiteralContext } from "./esql_parser"; -import { InputParamContext } from "./esql_parser"; -import { StringLiteralContext } from "./esql_parser"; -import { NumericArrayLiteralContext } from "./esql_parser"; -import { BooleanArrayLiteralContext } from "./esql_parser"; -import { StringArrayLiteralContext } from "./esql_parser"; -import { SingleCommandQueryContext } from "./esql_parser"; -import { CompositeQueryContext } from "./esql_parser"; -import { OperatorExpressionDefaultContext } from "./esql_parser"; -import { ArithmeticUnaryContext } from "./esql_parser"; -import { ArithmeticBinaryContext } from "./esql_parser"; -import { ValueExpressionDefaultContext } from "./esql_parser"; -import { ComparisonContext } from "./esql_parser"; -import { ShowInfoContext } from "./esql_parser"; -import { ShowFunctionsContext } from "./esql_parser"; -import { ConstantDefaultContext } from "./esql_parser"; -import { DereferenceContext } from "./esql_parser"; -import { FunctionContext } from "./esql_parser"; -import { ParenthesizedExpressionContext } from "./esql_parser"; -import { LogicalNotContext } from "./esql_parser"; -import { BooleanDefaultContext } from "./esql_parser"; -import { RegexExpressionContext } from "./esql_parser"; -import { LogicalBinaryContext } from "./esql_parser"; -import { LogicalInContext } from "./esql_parser"; -import { IsNullContext } from "./esql_parser"; -import { SingleStatementContext } from "./esql_parser"; -import { QueryContext } from "./esql_parser"; -import { SourceCommandContext } from "./esql_parser"; -import { ProcessingCommandContext } from "./esql_parser"; -import { WhereCommandContext } from "./esql_parser"; -import { BooleanExpressionContext } from "./esql_parser"; -import { RegexBooleanExpressionContext } from "./esql_parser"; -import { ValueExpressionContext } from "./esql_parser"; -import { OperatorExpressionContext } from "./esql_parser"; -import { PrimaryExpressionContext } from "./esql_parser"; -import { FunctionExpressionContext } from "./esql_parser"; -import { RowCommandContext } from "./esql_parser"; -import { FieldsContext } from "./esql_parser"; -import { FieldContext } from "./esql_parser"; -import { FromCommandContext } from "./esql_parser"; -import { MetadataContext } from "./esql_parser"; -import { MetadataOptionContext } from "./esql_parser"; -import { Deprecated_metadataContext } from "./esql_parser"; -import { EvalCommandContext } from "./esql_parser"; -import { StatsCommandContext } from "./esql_parser"; -import { InlinestatsCommandContext } from "./esql_parser"; -import { FromIdentifierContext } from "./esql_parser"; -import { QualifiedNameContext } from "./esql_parser"; -import { QualifiedNamePatternContext } from "./esql_parser"; -import { IdentifierContext } from "./esql_parser"; -import { IdentifierPatternContext } from "./esql_parser"; -import { IdPatternContext } from "./esql_parser"; -import { ConstantContext } from "./esql_parser"; -import { LimitCommandContext } from "./esql_parser"; -import { SortCommandContext } from "./esql_parser"; -import { OrderExpressionContext } from "./esql_parser"; -import { KeepCommandContext } from "./esql_parser"; -import { DropCommandContext } from "./esql_parser"; -import { RenameCommandContext } from "./esql_parser"; -import { RenameClauseContext } from "./esql_parser"; -import { DissectCommandContext } from "./esql_parser"; -import { GrokCommandContext } from "./esql_parser"; -import { MvExpandCommandContext } from "./esql_parser"; -import { CommandOptionsContext } from "./esql_parser"; -import { CommandOptionContext } from "./esql_parser"; -import { BooleanValueContext } from "./esql_parser"; -import { NumericValueContext } from "./esql_parser"; -import { DecimalValueContext } from "./esql_parser"; -import { IntegerValueContext } from "./esql_parser"; -import { StringContext } from "./esql_parser"; -import { ComparisonOperatorContext } from "./esql_parser"; -import { ExplainCommandContext } from "./esql_parser"; -import { SubqueryExpressionContext } from "./esql_parser"; -import { ShowCommandContext } from "./esql_parser"; -import { EnrichCommandContext } from "./esql_parser"; -import { EnrichWithClauseContext } from "./esql_parser"; - - -/** - * This interface defines a complete listener for a parse tree produced by - * `esql_parser`. - */ -export interface esql_parserListener extends ParseTreeListener { - /** - * Enter a parse tree produced by the `nullLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterNullLiteral?: (ctx: NullLiteralContext) => void; - /** - * Exit a parse tree produced by the `nullLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitNullLiteral?: (ctx: NullLiteralContext) => void; - - /** - * Enter a parse tree produced by the `qualifiedIntegerLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; - /** - * Exit a parse tree produced by the `qualifiedIntegerLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; - - /** - * Enter a parse tree produced by the `decimalLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterDecimalLiteral?: (ctx: DecimalLiteralContext) => void; - /** - * Exit a parse tree produced by the `decimalLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitDecimalLiteral?: (ctx: DecimalLiteralContext) => void; - - /** - * Enter a parse tree produced by the `integerLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterIntegerLiteral?: (ctx: IntegerLiteralContext) => void; - /** - * Exit a parse tree produced by the `integerLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitIntegerLiteral?: (ctx: IntegerLiteralContext) => void; - - /** - * Enter a parse tree produced by the `booleanLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterBooleanLiteral?: (ctx: BooleanLiteralContext) => void; - /** - * Exit a parse tree produced by the `booleanLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; - - /** - * Enter a parse tree produced by the `inputParam` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterInputParam?: (ctx: InputParamContext) => void; - /** - * Exit a parse tree produced by the `inputParam` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitInputParam?: (ctx: InputParamContext) => void; - - /** - * Enter a parse tree produced by the `stringLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterStringLiteral?: (ctx: StringLiteralContext) => void; - /** - * Exit a parse tree produced by the `stringLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitStringLiteral?: (ctx: StringLiteralContext) => void; - - /** - * Enter a parse tree produced by the `numericArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; - /** - * Exit a parse tree produced by the `numericArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; - - /** - * Enter a parse tree produced by the `booleanArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; - /** - * Exit a parse tree produced by the `booleanArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; - - /** - * Enter a parse tree produced by the `stringArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - enterStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; - /** - * Exit a parse tree produced by the `stringArrayLiteral` - * labeled alternative in `esql_parser.constant`. - * @param ctx the parse tree - */ - exitStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; - - /** - * Enter a parse tree produced by the `singleCommandQuery` - * labeled alternative in `esql_parser.query`. - * @param ctx the parse tree - */ - enterSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; - /** - * Exit a parse tree produced by the `singleCommandQuery` - * labeled alternative in `esql_parser.query`. - * @param ctx the parse tree - */ - exitSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; - - /** - * Enter a parse tree produced by the `compositeQuery` - * labeled alternative in `esql_parser.query`. - * @param ctx the parse tree - */ - enterCompositeQuery?: (ctx: CompositeQueryContext) => void; - /** - * Exit a parse tree produced by the `compositeQuery` - * labeled alternative in `esql_parser.query`. - * @param ctx the parse tree - */ - exitCompositeQuery?: (ctx: CompositeQueryContext) => void; - - /** - * Enter a parse tree produced by the `operatorExpressionDefault` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - enterOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; - /** - * Exit a parse tree produced by the `operatorExpressionDefault` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - exitOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; - - /** - * Enter a parse tree produced by the `arithmeticUnary` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - enterArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; - /** - * Exit a parse tree produced by the `arithmeticUnary` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - exitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; - - /** - * Enter a parse tree produced by the `arithmeticBinary` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - enterArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; - /** - * Exit a parse tree produced by the `arithmeticBinary` - * labeled alternative in `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - exitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; - - /** - * Enter a parse tree produced by the `valueExpressionDefault` - * labeled alternative in `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - enterValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; - /** - * Exit a parse tree produced by the `valueExpressionDefault` - * labeled alternative in `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - exitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; - - /** - * Enter a parse tree produced by the `comparison` - * labeled alternative in `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - enterComparison?: (ctx: ComparisonContext) => void; - /** - * Exit a parse tree produced by the `comparison` - * labeled alternative in `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - exitComparison?: (ctx: ComparisonContext) => void; - - /** - * Enter a parse tree produced by the `showInfo` - * labeled alternative in `esql_parser.showCommand`. - * @param ctx the parse tree - */ - enterShowInfo?: (ctx: ShowInfoContext) => void; - /** - * Exit a parse tree produced by the `showInfo` - * labeled alternative in `esql_parser.showCommand`. - * @param ctx the parse tree - */ - exitShowInfo?: (ctx: ShowInfoContext) => void; - - /** - * Enter a parse tree produced by the `showFunctions` - * labeled alternative in `esql_parser.showCommand`. - * @param ctx the parse tree - */ - enterShowFunctions?: (ctx: ShowFunctionsContext) => void; - /** - * Exit a parse tree produced by the `showFunctions` - * labeled alternative in `esql_parser.showCommand`. - * @param ctx the parse tree - */ - exitShowFunctions?: (ctx: ShowFunctionsContext) => void; - - /** - * Enter a parse tree produced by the `constantDefault` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - enterConstantDefault?: (ctx: ConstantDefaultContext) => void; - /** - * Exit a parse tree produced by the `constantDefault` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - exitConstantDefault?: (ctx: ConstantDefaultContext) => void; - - /** - * Enter a parse tree produced by the `dereference` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - enterDereference?: (ctx: DereferenceContext) => void; - /** - * Exit a parse tree produced by the `dereference` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - exitDereference?: (ctx: DereferenceContext) => void; - - /** - * Enter a parse tree produced by the `function` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - enterFunction?: (ctx: FunctionContext) => void; - /** - * Exit a parse tree produced by the `function` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - exitFunction?: (ctx: FunctionContext) => void; - - /** - * Enter a parse tree produced by the `parenthesizedExpression` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; - /** - * Exit a parse tree produced by the `parenthesizedExpression` - * labeled alternative in `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; - - /** - * Enter a parse tree produced by the `logicalNot` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterLogicalNot?: (ctx: LogicalNotContext) => void; - /** - * Exit a parse tree produced by the `logicalNot` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitLogicalNot?: (ctx: LogicalNotContext) => void; - - /** - * Enter a parse tree produced by the `booleanDefault` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterBooleanDefault?: (ctx: BooleanDefaultContext) => void; - /** - * Exit a parse tree produced by the `booleanDefault` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitBooleanDefault?: (ctx: BooleanDefaultContext) => void; - - /** - * Enter a parse tree produced by the `regexExpression` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterRegexExpression?: (ctx: RegexExpressionContext) => void; - /** - * Exit a parse tree produced by the `regexExpression` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitRegexExpression?: (ctx: RegexExpressionContext) => void; - - /** - * Enter a parse tree produced by the `logicalBinary` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; - /** - * Exit a parse tree produced by the `logicalBinary` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; - - /** - * Enter a parse tree produced by the `logicalIn` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterLogicalIn?: (ctx: LogicalInContext) => void; - /** - * Exit a parse tree produced by the `logicalIn` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitLogicalIn?: (ctx: LogicalInContext) => void; - - /** - * Enter a parse tree produced by the `isNull` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterIsNull?: (ctx: IsNullContext) => void; - /** - * Exit a parse tree produced by the `isNull` - * labeled alternative in `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitIsNull?: (ctx: IsNullContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.singleStatement`. - * @param ctx the parse tree - */ - enterSingleStatement?: (ctx: SingleStatementContext) => void; - /** - * Exit a parse tree produced by `esql_parser.singleStatement`. - * @param ctx the parse tree - */ - exitSingleStatement?: (ctx: SingleStatementContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.query`. - * @param ctx the parse tree - */ - enterQuery?: (ctx: QueryContext) => void; - /** - * Exit a parse tree produced by `esql_parser.query`. - * @param ctx the parse tree - */ - exitQuery?: (ctx: QueryContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.sourceCommand`. - * @param ctx the parse tree - */ - enterSourceCommand?: (ctx: SourceCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.sourceCommand`. - * @param ctx the parse tree - */ - exitSourceCommand?: (ctx: SourceCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.processingCommand`. - * @param ctx the parse tree - */ - enterProcessingCommand?: (ctx: ProcessingCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.processingCommand`. - * @param ctx the parse tree - */ - exitProcessingCommand?: (ctx: ProcessingCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.whereCommand`. - * @param ctx the parse tree - */ - enterWhereCommand?: (ctx: WhereCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.whereCommand`. - * @param ctx the parse tree - */ - exitWhereCommand?: (ctx: WhereCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - enterBooleanExpression?: (ctx: BooleanExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.booleanExpression`. - * @param ctx the parse tree - */ - exitBooleanExpression?: (ctx: BooleanExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.regexBooleanExpression`. - * @param ctx the parse tree - */ - enterRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.regexBooleanExpression`. - * @param ctx the parse tree - */ - exitRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - enterValueExpression?: (ctx: ValueExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.valueExpression`. - * @param ctx the parse tree - */ - exitValueExpression?: (ctx: ValueExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - enterOperatorExpression?: (ctx: OperatorExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.operatorExpression`. - * @param ctx the parse tree - */ - exitOperatorExpression?: (ctx: OperatorExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - enterPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.primaryExpression`. - * @param ctx the parse tree - */ - exitPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.functionExpression`. - * @param ctx the parse tree - */ - enterFunctionExpression?: (ctx: FunctionExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.functionExpression`. - * @param ctx the parse tree - */ - exitFunctionExpression?: (ctx: FunctionExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.rowCommand`. - * @param ctx the parse tree - */ - enterRowCommand?: (ctx: RowCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.rowCommand`. - * @param ctx the parse tree - */ - exitRowCommand?: (ctx: RowCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.fields`. - * @param ctx the parse tree - */ - enterFields?: (ctx: FieldsContext) => void; - /** - * Exit a parse tree produced by `esql_parser.fields`. - * @param ctx the parse tree - */ - exitFields?: (ctx: FieldsContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.field`. - * @param ctx the parse tree - */ - enterField?: (ctx: FieldContext) => void; - /** - * Exit a parse tree produced by `esql_parser.field`. - * @param ctx the parse tree - */ - exitField?: (ctx: FieldContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.fromCommand`. - * @param ctx the parse tree - */ - enterFromCommand?: (ctx: FromCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.fromCommand`. - * @param ctx the parse tree - */ - exitFromCommand?: (ctx: FromCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.metadata`. - * @param ctx the parse tree - */ - enterMetadata?: (ctx: MetadataContext) => void; - /** - * Exit a parse tree produced by `esql_parser.metadata`. - * @param ctx the parse tree - */ - exitMetadata?: (ctx: MetadataContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.metadataOption`. - * @param ctx the parse tree - */ - enterMetadataOption?: (ctx: MetadataOptionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.metadataOption`. - * @param ctx the parse tree - */ - exitMetadataOption?: (ctx: MetadataOptionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.deprecated_metadata`. - * @param ctx the parse tree - */ - enterDeprecated_metadata?: (ctx: Deprecated_metadataContext) => void; - /** - * Exit a parse tree produced by `esql_parser.deprecated_metadata`. - * @param ctx the parse tree - */ - exitDeprecated_metadata?: (ctx: Deprecated_metadataContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.evalCommand`. - * @param ctx the parse tree - */ - enterEvalCommand?: (ctx: EvalCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.evalCommand`. - * @param ctx the parse tree - */ - exitEvalCommand?: (ctx: EvalCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.statsCommand`. - * @param ctx the parse tree - */ - enterStatsCommand?: (ctx: StatsCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.statsCommand`. - * @param ctx the parse tree - */ - exitStatsCommand?: (ctx: StatsCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.inlinestatsCommand`. - * @param ctx the parse tree - */ - enterInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.inlinestatsCommand`. - * @param ctx the parse tree - */ - exitInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.fromIdentifier`. - * @param ctx the parse tree - */ - enterFromIdentifier?: (ctx: FromIdentifierContext) => void; - /** - * Exit a parse tree produced by `esql_parser.fromIdentifier`. - * @param ctx the parse tree - */ - exitFromIdentifier?: (ctx: FromIdentifierContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.qualifiedName`. - * @param ctx the parse tree - */ - enterQualifiedName?: (ctx: QualifiedNameContext) => void; - /** - * Exit a parse tree produced by `esql_parser.qualifiedName`. - * @param ctx the parse tree - */ - exitQualifiedName?: (ctx: QualifiedNameContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.qualifiedNamePattern`. - * @param ctx the parse tree - */ - enterQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; - /** - * Exit a parse tree produced by `esql_parser.qualifiedNamePattern`. - * @param ctx the parse tree - */ - exitQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.identifier`. - * @param ctx the parse tree - */ - enterIdentifier?: (ctx: IdentifierContext) => void; - /** - * Exit a parse tree produced by `esql_parser.identifier`. - * @param ctx the parse tree - */ - exitIdentifier?: (ctx: IdentifierContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.identifierPattern`. - * @param ctx the parse tree - */ - enterIdentifierPattern?: (ctx: IdentifierPatternContext) => void; - /** - * Exit a parse tree produced by `esql_parser.identifierPattern`. - * @param ctx the parse tree - */ - exitIdentifierPattern?: (ctx: IdentifierPatternContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.idPattern`. - * @param ctx the parse tree - */ - enterIdPattern?: (ctx: IdPatternContext) => void; - /** - * Exit a parse tree produced by `esql_parser.idPattern`. - * @param ctx the parse tree - */ - exitIdPattern?: (ctx: IdPatternContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.constant`. - * @param ctx the parse tree - */ - enterConstant?: (ctx: ConstantContext) => void; - /** - * Exit a parse tree produced by `esql_parser.constant`. - * @param ctx the parse tree - */ - exitConstant?: (ctx: ConstantContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.limitCommand`. - * @param ctx the parse tree - */ - enterLimitCommand?: (ctx: LimitCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.limitCommand`. - * @param ctx the parse tree - */ - exitLimitCommand?: (ctx: LimitCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.sortCommand`. - * @param ctx the parse tree - */ - enterSortCommand?: (ctx: SortCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.sortCommand`. - * @param ctx the parse tree - */ - exitSortCommand?: (ctx: SortCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.orderExpression`. - * @param ctx the parse tree - */ - enterOrderExpression?: (ctx: OrderExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.orderExpression`. - * @param ctx the parse tree - */ - exitOrderExpression?: (ctx: OrderExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.keepCommand`. - * @param ctx the parse tree - */ - enterKeepCommand?: (ctx: KeepCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.keepCommand`. - * @param ctx the parse tree - */ - exitKeepCommand?: (ctx: KeepCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.dropCommand`. - * @param ctx the parse tree - */ - enterDropCommand?: (ctx: DropCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.dropCommand`. - * @param ctx the parse tree - */ - exitDropCommand?: (ctx: DropCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.renameCommand`. - * @param ctx the parse tree - */ - enterRenameCommand?: (ctx: RenameCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.renameCommand`. - * @param ctx the parse tree - */ - exitRenameCommand?: (ctx: RenameCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.renameClause`. - * @param ctx the parse tree - */ - enterRenameClause?: (ctx: RenameClauseContext) => void; - /** - * Exit a parse tree produced by `esql_parser.renameClause`. - * @param ctx the parse tree - */ - exitRenameClause?: (ctx: RenameClauseContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.dissectCommand`. - * @param ctx the parse tree - */ - enterDissectCommand?: (ctx: DissectCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.dissectCommand`. - * @param ctx the parse tree - */ - exitDissectCommand?: (ctx: DissectCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.grokCommand`. - * @param ctx the parse tree - */ - enterGrokCommand?: (ctx: GrokCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.grokCommand`. - * @param ctx the parse tree - */ - exitGrokCommand?: (ctx: GrokCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.mvExpandCommand`. - * @param ctx the parse tree - */ - enterMvExpandCommand?: (ctx: MvExpandCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.mvExpandCommand`. - * @param ctx the parse tree - */ - exitMvExpandCommand?: (ctx: MvExpandCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.commandOptions`. - * @param ctx the parse tree - */ - enterCommandOptions?: (ctx: CommandOptionsContext) => void; - /** - * Exit a parse tree produced by `esql_parser.commandOptions`. - * @param ctx the parse tree - */ - exitCommandOptions?: (ctx: CommandOptionsContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.commandOption`. - * @param ctx the parse tree - */ - enterCommandOption?: (ctx: CommandOptionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.commandOption`. - * @param ctx the parse tree - */ - exitCommandOption?: (ctx: CommandOptionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.booleanValue`. - * @param ctx the parse tree - */ - enterBooleanValue?: (ctx: BooleanValueContext) => void; - /** - * Exit a parse tree produced by `esql_parser.booleanValue`. - * @param ctx the parse tree - */ - exitBooleanValue?: (ctx: BooleanValueContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.numericValue`. - * @param ctx the parse tree - */ - enterNumericValue?: (ctx: NumericValueContext) => void; - /** - * Exit a parse tree produced by `esql_parser.numericValue`. - * @param ctx the parse tree - */ - exitNumericValue?: (ctx: NumericValueContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.decimalValue`. - * @param ctx the parse tree - */ - enterDecimalValue?: (ctx: DecimalValueContext) => void; - /** - * Exit a parse tree produced by `esql_parser.decimalValue`. - * @param ctx the parse tree - */ - exitDecimalValue?: (ctx: DecimalValueContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.integerValue`. - * @param ctx the parse tree - */ - enterIntegerValue?: (ctx: IntegerValueContext) => void; - /** - * Exit a parse tree produced by `esql_parser.integerValue`. - * @param ctx the parse tree - */ - exitIntegerValue?: (ctx: IntegerValueContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.string`. - * @param ctx the parse tree - */ - enterString?: (ctx: StringContext) => void; - /** - * Exit a parse tree produced by `esql_parser.string`. - * @param ctx the parse tree - */ - exitString?: (ctx: StringContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.comparisonOperator`. - * @param ctx the parse tree - */ - enterComparisonOperator?: (ctx: ComparisonOperatorContext) => void; - /** - * Exit a parse tree produced by `esql_parser.comparisonOperator`. - * @param ctx the parse tree - */ - exitComparisonOperator?: (ctx: ComparisonOperatorContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.explainCommand`. - * @param ctx the parse tree - */ - enterExplainCommand?: (ctx: ExplainCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.explainCommand`. - * @param ctx the parse tree - */ - exitExplainCommand?: (ctx: ExplainCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.subqueryExpression`. - * @param ctx the parse tree - */ - enterSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; - /** - * Exit a parse tree produced by `esql_parser.subqueryExpression`. - * @param ctx the parse tree - */ - exitSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.showCommand`. - * @param ctx the parse tree - */ - enterShowCommand?: (ctx: ShowCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.showCommand`. - * @param ctx the parse tree - */ - exitShowCommand?: (ctx: ShowCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.enrichCommand`. - * @param ctx the parse tree - */ - enterEnrichCommand?: (ctx: EnrichCommandContext) => void; - /** - * Exit a parse tree produced by `esql_parser.enrichCommand`. - * @param ctx the parse tree - */ - exitEnrichCommand?: (ctx: EnrichCommandContext) => void; - - /** - * Enter a parse tree produced by `esql_parser.enrichWithClause`. - * @param ctx the parse tree - */ - enterEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; - /** - * Exit a parse tree produced by `esql_parser.enrichWithClause`. - * @param ctx the parse tree - */ - exitEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; -} - diff --git a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts b/packages/kbn-monaco/src/esql/lib/antlr_facade.ts index ffa69ba2a8f4c..2cc5e52321c06 100644 --- a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts +++ b/packages/kbn-monaco/src/esql/lib/antlr_facade.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CommonTokenStream, type CodePointCharStream, type ANTLRErrorListener } from 'antlr4ts'; +import { CommonTokenStream, type CodePointCharStream, type ANTLRErrorListener } from 'antlr4'; import { esql_lexer as ESQLLexer } from '../antlr/esql_lexer'; import { esql_parser as ESQLParser } from '../antlr/esql_parser'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts index 01d16a46b2502..fe5b095daa1b0 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { RecognitionException } from 'antlr4ts'; +import type { RecognitionException } from 'antlr4'; import { esql_parser } from '../../antlr/esql_parser'; import { getPosition } from './ast_position_utils'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index 7b6256db8c96b..cb688d7847c6d 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -10,10 +10,10 @@ * In case of changes in the grammar, this script should be updated: esql_update_ast_script.js */ -import { Token } from 'antlr4ts'; -import type { ParserRuleContext } from 'antlr4ts/ParserRuleContext'; -import { ErrorNode } from 'antlr4ts/tree/ErrorNode'; -import type { TerminalNode } from 'antlr4ts/tree/TerminalNode'; +import { Token } from 'antlr4'; +import type { ParserRuleContext } from 'antlr4/ParserRuleContext'; +import { ErrorNode } from 'antlr4/tree/ErrorNode'; +import type { TerminalNode } from 'antlr4/tree/TerminalNode'; import type { ArithmeticUnaryContext, DecimalValueContext, diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts index 24d3a806ace01..885ee63e03df2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { Token } from 'antlr4ts'; +import type { Token } from 'antlr4'; export function getPosition( token: Pick | undefined, diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 0b05cd6452873..778b570d56705 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ParserRuleContext } from 'antlr4ts/ParserRuleContext'; +import type { ParserRuleContext } from 'antlr4/ParserRuleContext'; import { ArithmeticBinaryContext, ArithmeticUnaryContext, diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts index 960eaaeedd813..8c24c7186cc01 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts @@ -7,7 +7,7 @@ */ import { monaco } from '../../../../monaco_imports'; -import { CharStreams } from 'antlr4ts'; +import { CharStreams } from 'antlr4'; import { suggest } from './autocomplete'; import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; import { ESQLErrorListener } from '../../monaco/esql_error_listener'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts index 4e82def27cb55..c3e21a4c43bed 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts @@ -7,7 +7,7 @@ */ import { EditorError } from '../../../../types'; -import { CharStreams } from 'antlr4ts'; +import { CharStreams } from 'antlr4'; import { getActions } from './actions'; import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; import { ESQLErrorListener } from '../../monaco/esql_error_listener'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts index 960adfeba0a25..c2a28f28ba3d6 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts @@ -7,7 +7,7 @@ */ import { monaco } from '../../../../monaco_imports'; -import { CharStreams } from 'antlr4ts'; +import { CharStreams } from 'antlr4'; import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; import { ESQLErrorListener } from '../../monaco/esql_error_listener'; import { AstListener } from '../ast_factory'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts index 199911fb2fc0a..d7d669483f213 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CharStreams } from 'antlr4ts'; +import { CharStreams } from 'antlr4'; import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; import { join } from 'path'; import { writeFile } from 'fs/promises'; diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts index 8881c9b458cc0..ab3b6b54f7a05 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ANTLRErrorListener, Recognizer, RecognitionException } from 'antlr4ts'; +import type { ANTLRErrorListener, Recognizer, RecognitionException } from 'antlr4'; import type { EditorError } from '../../../types'; import { createError } from '../ast/ast_errors'; diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts index ce521d1c9dfac..d696a78e1a199 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CharStreams, type Token } from 'antlr4ts'; +import { CharStreams, type Token } from 'antlr4'; import { monaco } from '../../../monaco_imports'; import { ANTLREErrorListener } from '../../../common/error_listener'; diff --git a/packages/kbn-monaco/src/esql/worker/esql_worker.ts b/packages/kbn-monaco/src/esql/worker/esql_worker.ts index db3e01ae220e5..537b08d9702aa 100644 --- a/packages/kbn-monaco/src/esql/worker/esql_worker.ts +++ b/packages/kbn-monaco/src/esql/worker/esql_worker.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CharStreams } from 'antlr4ts'; +import { CharStreams } from 'antlr4'; import type { monaco } from '../../monaco_imports'; import type { BaseWorkerDefinition } from '../../types'; import { getParser, ROOT_STATEMENT } from '../lib/antlr_facade'; diff --git a/packages/kbn-monaco/src/painless/README.md b/packages/kbn-monaco/src/painless/README.md index 6357243347f6b..8fcb1023049b3 100644 --- a/packages/kbn-monaco/src/painless/README.md +++ b/packages/kbn-monaco/src/painless/README.md @@ -116,7 +116,7 @@ Elasticsearch has defined [lexer and parser grammar](https://github.com/elastic/ To regenerate the lexer and parser, run the following script: ``` -npm run build:antlr4ts +npm run build:antlr4 ``` *Note:* This script should only need to be run if a change has been made to `painless_lexer.g4` or `painless_parser.g4`. diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts b/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts deleted file mode 100644 index 6e13dec86c908..0000000000000 --- a/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts +++ /dev/null @@ -1,537 +0,0 @@ -// @ts-nocheck -// Generated from ./src/painless/antlr/painless_lexer.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { CharStream } from "antlr4ts/CharStream"; -import { Lexer } from "antlr4ts/Lexer"; -import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator"; -import { NotNull } from "antlr4ts/Decorators"; -import { Override } from "antlr4ts/Decorators"; -import { RuleContext } from "antlr4ts/RuleContext"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - - -export class painless_lexer extends Lexer { - public static readonly WS = 1; - public static readonly COMMENT = 2; - public static readonly LBRACK = 3; - public static readonly RBRACK = 4; - public static readonly LBRACE = 5; - public static readonly RBRACE = 6; - public static readonly LP = 7; - public static readonly RP = 8; - public static readonly DOLLAR = 9; - public static readonly DOT = 10; - public static readonly NSDOT = 11; - public static readonly COMMA = 12; - public static readonly SEMICOLON = 13; - public static readonly IF = 14; - public static readonly IN = 15; - public static readonly ELSE = 16; - public static readonly WHILE = 17; - public static readonly DO = 18; - public static readonly FOR = 19; - public static readonly CONTINUE = 20; - public static readonly BREAK = 21; - public static readonly RETURN = 22; - public static readonly NEW = 23; - public static readonly TRY = 24; - public static readonly CATCH = 25; - public static readonly THROW = 26; - public static readonly THIS = 27; - public static readonly INSTANCEOF = 28; - public static readonly BOOLNOT = 29; - public static readonly BWNOT = 30; - public static readonly MUL = 31; - public static readonly DIV = 32; - public static readonly REM = 33; - public static readonly ADD = 34; - public static readonly SUB = 35; - public static readonly LSH = 36; - public static readonly RSH = 37; - public static readonly USH = 38; - public static readonly LT = 39; - public static readonly LTE = 40; - public static readonly GT = 41; - public static readonly GTE = 42; - public static readonly EQ = 43; - public static readonly EQR = 44; - public static readonly NE = 45; - public static readonly NER = 46; - public static readonly BWAND = 47; - public static readonly XOR = 48; - public static readonly BWOR = 49; - public static readonly BOOLAND = 50; - public static readonly BOOLOR = 51; - public static readonly COND = 52; - public static readonly COLON = 53; - public static readonly ELVIS = 54; - public static readonly REF = 55; - public static readonly ARROW = 56; - public static readonly FIND = 57; - public static readonly MATCH = 58; - public static readonly INCR = 59; - public static readonly DECR = 60; - public static readonly ASSIGN = 61; - public static readonly AADD = 62; - public static readonly ASUB = 63; - public static readonly AMUL = 64; - public static readonly ADIV = 65; - public static readonly AREM = 66; - public static readonly AAND = 67; - public static readonly AXOR = 68; - public static readonly AOR = 69; - public static readonly ALSH = 70; - public static readonly ARSH = 71; - public static readonly AUSH = 72; - public static readonly OCTAL = 73; - public static readonly HEX = 74; - public static readonly INTEGER = 75; - public static readonly DECIMAL = 76; - public static readonly STRING = 77; - public static readonly REGEX = 78; - public static readonly TRUE = 79; - public static readonly FALSE = 80; - public static readonly NULL = 81; - public static readonly PRIMITIVE = 82; - public static readonly DEF = 83; - public static readonly ID = 84; - public static readonly DOTINTEGER = 85; - public static readonly DOTID = 86; - public static readonly AFTER_DOT = 1; - - // tslint:disable:no-trailing-whitespace - public static readonly channelNames: string[] = [ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - ]; - - // tslint:disable:no-trailing-whitespace - public static readonly modeNames: string[] = [ - "DEFAULT_MODE", "AFTER_DOT", - ]; - - public static readonly ruleNames: string[] = [ - "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", "RP", "DOLLAR", - "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", "DO", - "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", - "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", - "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", - "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", - "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", - "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", - "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", - "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", - ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, undefined, undefined, "'{'", "'}'", "'['", "']'", "'('", "')'", - "'$'", "'.'", "'?.'", "','", "';'", "'if'", "'in'", "'else'", "'while'", - "'do'", "'for'", "'continue'", "'break'", "'return'", "'new'", "'try'", - "'catch'", "'throw'", "'this'", "'instanceof'", "'!'", "'~'", "'*'", "'/'", - "'%'", "'+'", "'-'", "'<<'", "'>>'", "'>>>'", "'<'", "'<='", "'>'", "'>='", - "'=='", "'==='", "'!='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", - "'?'", "':'", "'?:'", "'::'", "'->'", "'=~'", "'==~'", "'++'", "'--'", - "'='", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", - "'<<='", "'>>='", "'>>>='", undefined, undefined, undefined, undefined, - undefined, undefined, "'true'", "'false'", "'null'", undefined, "'def'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", - "RP", "DOLLAR", "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", - "WHILE", "DO", "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", - "THROW", "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", - "ADD", "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", - "NE", "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", - "ELVIS", "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", - "ASUB", "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", - "AUSH", "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", - "FALSE", "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(painless_lexer._LITERAL_NAMES, painless_lexer._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return painless_lexer.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - - constructor(input: CharStream) { - super(input); - this._interp = new LexerATNSimulator(painless_lexer._ATN, this); - } - - // @Override - public get grammarFileName(): string { return "painless_lexer.g4"; } - - // @Override - public get ruleNames(): string[] { return painless_lexer.ruleNames; } - - // @Override - public get serializedATN(): string { return painless_lexer._serializedATN; } - - // @Override - public get channelNames(): string[] { return painless_lexer.channelNames; } - - // @Override - public get modeNames(): string[] { return painless_lexer.modeNames; } - - // @Override - public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 31: - return this.DIV_sempred(_localctx, predIndex); - - case 77: - return this.REGEX_sempred(_localctx, predIndex); - } - return true; - } - private DIV_sempred(_localctx: RuleContext, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.isSlashRegex() == false ; - } - return true; - } - private REGEX_sempred(_localctx: RuleContext, predIndex: number): boolean { - switch (predIndex) { - case 1: - return this.isSlashRegex() ; - } - return true; - } - - private static readonly _serializedATNSegments: number = 2; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02X\u027E\b\x01" + - "\b\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06" + - "\t\x06\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\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04" + - "\x12\t\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04" + - "\x17\t\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04" + - "\x1C\t\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04" + - "\"\t\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*" + - "\t*\x04+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x04" + - "3\t3\x044\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04" + - "<\t<\x04=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04" + - "E\tE\x04F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04" + - "N\tN\x04O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04" + - "W\tW\x03\x02\x06\x02\xB2\n\x02\r\x02\x0E\x02\xB3\x03\x02\x03\x02\x03\x03" + - "\x03\x03\x03\x03\x03\x03\x07\x03\xBC\n\x03\f\x03\x0E\x03\xBF\v\x03\x03" + - "\x03\x03\x03\x03\x03\x03\x03\x03\x03\x07\x03\xC6\n\x03\f\x03\x0E\x03\xC9" + - "\v\x03\x03\x03\x03\x03\x05\x03\xCD\n\x03\x03\x03\x03\x03\x03\x04\x03\x04" + - "\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03" + - "\t\x03\n\x03\n\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03" + - "\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10" + - "\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12" + - "\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14" + - "\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" + - "\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x17" + - "\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x19" + - "\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A" + - "\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C" + - "\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + - "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 " + - "\x03 \x03!\x03!\x03!\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03%\x03" + - "&\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03)\x03)\x03)\x03*\x03" + - "*\x03+\x03+\x03+\x03,\x03,\x03,\x03-\x03-\x03-\x03-\x03.\x03.\x03.\x03" + - "/\x03/\x03/\x03/\x030\x030\x031\x031\x032\x032\x033\x033\x033\x034\x03" + - "4\x034\x035\x035\x036\x036\x037\x037\x037\x038\x038\x038\x039\x039\x03" + - "9\x03:\x03:\x03:\x03;\x03;\x03;\x03;\x03<\x03<\x03<\x03=\x03=\x03=\x03" + - ">\x03>\x03?\x03?\x03?\x03@\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03" + - "C\x03C\x03C\x03D\x03D\x03D\x03E\x03E\x03E\x03F\x03F\x03F\x03G\x03G\x03" + - "G\x03G\x03H\x03H\x03H\x03H\x03I\x03I\x03I\x03I\x03I\x03J\x03J\x06J\u01BE" + - "\nJ\rJ\x0EJ\u01BF\x03J\x05J\u01C3\nJ\x03K\x03K\x03K\x06K\u01C8\nK\rK\x0E" + - "K\u01C9\x03K\x05K\u01CD\nK\x03L\x03L\x03L\x07L\u01D2\nL\fL\x0EL\u01D5" + - "\vL\x05L\u01D7\nL\x03L\x05L\u01DA\nL\x03M\x03M\x03M\x07M\u01DF\nM\fM\x0E" + - "M\u01E2\vM\x05M\u01E4\nM\x03M\x03M\x06M\u01E8\nM\rM\x0EM\u01E9\x05M\u01EC" + - "\nM\x03M\x03M\x05M\u01F0\nM\x03M\x06M\u01F3\nM\rM\x0EM\u01F4\x05M\u01F7" + - "\nM\x03M\x05M\u01FA\nM\x03N\x03N\x03N\x03N\x03N\x03N\x07N\u0202\nN\fN" + - "\x0EN\u0205\vN\x03N\x03N\x03N\x03N\x03N\x03N\x03N\x07N\u020E\nN\fN\x0E" + - "N\u0211\vN\x03N\x05N\u0214\nN\x03O\x03O\x03O\x03O\x06O\u021A\nO\rO\x0E" + - "O\u021B\x03O\x03O\x07O\u0220\nO\fO\x0EO\u0223\vO\x03O\x03O\x03P\x03P\x03" + - "P\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x03Q\x03Q\x03R\x03R\x03R\x03R\x03R\x03" + - "S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03" + - "S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03" + - "S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x03S\x05S\u025D\nS\x03T\x03" + - "T\x03T\x03T\x03U\x03U\x07U\u0265\nU\fU\x0EU\u0268\vU\x03V\x03V\x03V\x07" + - "V\u026D\nV\fV\x0EV\u0270\vV\x05V\u0272\nV\x03V\x03V\x03W\x03W\x07W\u0278" + - "\nW\fW\x0EW\u027B\vW\x03W\x03W\x07\xBD\xC7\u0203\u020F\u021B\x02\x02X" + - "\x04\x02\x03\x06\x02\x04\b\x02\x05\n\x02\x06\f\x02\x07\x0E\x02\b\x10\x02" + - "\t\x12\x02\n\x14\x02\v\x16\x02\f\x18\x02\r\x1A\x02\x0E\x1C\x02\x0F\x1E" + - "\x02\x10 \x02\x11\"\x02\x12$\x02\x13&\x02\x14(\x02\x15*\x02\x16,\x02\x17" + - ".\x02\x180\x02\x192\x02\x1A4\x02\x1B6\x02\x1C8\x02\x1D:\x02\x1E<\x02\x1F" + - ">\x02 @\x02!B\x02\"D\x02#F\x02$H\x02%J\x02&L\x02\'N\x02(P\x02)R\x02*T" + - "\x02+V\x02,X\x02-Z\x02.\\\x02/^\x020`\x021b\x022d\x023f\x024h\x025j\x02" + - "6l\x027n\x028p\x029r\x02:t\x02;v\x02|\x02?~\x02@\x80\x02" + - "A\x82\x02B\x84\x02C\x86\x02D\x88\x02E\x8A\x02F\x8C\x02G\x8E\x02H\x90\x02" + - "I\x92\x02J\x94\x02K\x96\x02L\x98\x02M\x9A\x02N\x9C\x02O\x9E\x02P\xA0\x02" + - "Q\xA2\x02R\xA4\x02S\xA6\x02T\xA8\x02U\xAA\x02V\xAC\x02W\xAE\x02X\x04\x02" + - "\x03\x15\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f\f\x0F\x0F\x03\x0229\x04\x02" + - "NNnn\x04\x02ZZzz\x05\x022;CHch\x03\x023;\x03\x022;\b\x02FFHHNNffhhnn\x04" + - "\x02GGgg\x04\x02--//\x06\x02FFHHffhh\x04\x02$$^^\x04\x02))^^\x03\x02\f" + - "\f\x04\x02\f\f11\t\x02WWeekknouuwwzz\x05\x02C\\aac|\x06\x022;C\\aac|\x02" + - "\u02A4\x02\x04\x03\x02\x02\x02\x02\x06\x03\x02\x02\x02\x02\b\x03\x02\x02" + - "\x02\x02\n\x03\x02\x02\x02\x02\f\x03\x02\x02\x02\x02\x0E\x03\x02\x02\x02" + - "\x02\x10\x03\x02\x02\x02\x02\x12\x03\x02\x02\x02\x02\x14\x03\x02\x02\x02" + - "\x02\x16\x03\x02\x02\x02\x02\x18\x03\x02\x02\x02\x02\x1A\x03\x02\x02\x02" + - "\x02\x1C\x03\x02\x02\x02\x02\x1E\x03\x02\x02\x02\x02 \x03\x02\x02\x02" + - "\x02\"\x03\x02\x02\x02\x02$\x03\x02\x02\x02\x02&\x03\x02\x02\x02\x02(" + - "\x03\x02\x02\x02\x02*\x03\x02\x02\x02\x02,\x03\x02\x02\x02\x02.\x03\x02" + - "\x02\x02\x020\x03\x02\x02\x02\x022\x03\x02\x02\x02\x024\x03\x02\x02\x02" + - "\x026\x03\x02\x02\x02\x028\x03\x02\x02\x02\x02:\x03\x02\x02\x02\x02<\x03" + - "\x02\x02\x02\x02>\x03\x02\x02\x02\x02@\x03\x02\x02\x02\x02B\x03\x02\x02" + - "\x02\x02D\x03\x02\x02\x02\x02F\x03\x02\x02\x02\x02H\x03\x02\x02\x02\x02" + - "J\x03\x02\x02\x02\x02L\x03\x02\x02\x02\x02N\x03\x02\x02\x02\x02P\x03\x02" + - "\x02\x02\x02R\x03\x02\x02\x02\x02T\x03\x02\x02\x02\x02V\x03\x02\x02\x02" + - "\x02X\x03\x02\x02\x02\x02Z\x03\x02\x02\x02\x02\\\x03\x02\x02\x02\x02^" + - "\x03\x02\x02\x02\x02`\x03\x02\x02\x02\x02b\x03\x02\x02\x02\x02d\x03\x02" + - "\x02\x02\x02f\x03\x02\x02\x02\x02h\x03\x02\x02\x02\x02j\x03\x02\x02\x02" + - "\x02l\x03\x02\x02\x02\x02n\x03\x02\x02\x02\x02p\x03\x02\x02\x02\x02r\x03" + - "\x02\x02\x02\x02t\x03\x02\x02\x02\x02v\x03\x02\x02\x02\x02x\x03\x02\x02" + - "\x02\x02z\x03\x02\x02\x02\x02|\x03\x02\x02\x02\x02~\x03\x02\x02\x02\x02" + - "\x80\x03\x02\x02\x02\x02\x82\x03\x02\x02\x02\x02\x84\x03\x02\x02\x02\x02" + - "\x86\x03\x02\x02\x02\x02\x88\x03\x02\x02\x02\x02\x8A\x03\x02\x02\x02\x02" + - "\x8C\x03\x02\x02\x02\x02\x8E\x03\x02\x02\x02\x02\x90\x03\x02\x02\x02\x02" + - "\x92\x03\x02\x02\x02\x02\x94\x03\x02\x02\x02\x02\x96\x03\x02\x02\x02\x02" + - "\x98\x03\x02\x02\x02\x02\x9A\x03\x02\x02\x02\x02\x9C\x03\x02\x02\x02\x02" + - "\x9E\x03\x02\x02\x02\x02\xA0\x03\x02\x02\x02\x02\xA2\x03\x02\x02\x02\x02" + - "\xA4\x03\x02\x02\x02\x02\xA6\x03\x02\x02\x02\x02\xA8\x03\x02\x02\x02\x02" + - "\xAA\x03\x02\x02\x02\x03\xAC\x03\x02\x02\x02\x03\xAE\x03\x02\x02\x02\x04" + - "\xB1\x03\x02\x02\x02\x06\xCC\x03\x02\x02\x02\b\xD0\x03\x02\x02\x02\n\xD2" + - "\x03\x02\x02\x02\f\xD4\x03\x02\x02\x02\x0E\xD6\x03\x02\x02\x02\x10\xD8" + - "\x03\x02\x02\x02\x12\xDA\x03\x02\x02\x02\x14\xDC\x03\x02\x02\x02\x16\xDE" + - "\x03\x02\x02\x02\x18\xE2\x03\x02\x02\x02\x1A\xE7\x03\x02\x02\x02\x1C\xE9" + - "\x03\x02\x02\x02\x1E\xEB\x03\x02\x02\x02 \xEE\x03\x02\x02\x02\"\xF1\x03" + - "\x02\x02\x02$\xF6\x03\x02\x02\x02&\xFC\x03\x02\x02\x02(\xFF\x03\x02\x02" + - "\x02*\u0103\x03\x02\x02\x02,\u010C\x03\x02\x02\x02.\u0112\x03\x02\x02" + - "\x020\u0119\x03\x02\x02\x022\u011D\x03\x02\x02\x024\u0121\x03\x02\x02" + - "\x026\u0127\x03\x02\x02\x028\u012D\x03\x02\x02\x02:\u0132\x03\x02\x02" + - "\x02<\u013D\x03\x02\x02\x02>\u013F\x03\x02\x02\x02@\u0141\x03\x02\x02" + - "\x02B\u0143\x03\x02\x02\x02D\u0146\x03\x02\x02\x02F\u0148\x03\x02\x02" + - "\x02H\u014A\x03\x02\x02\x02J\u014C\x03\x02\x02\x02L\u014F\x03\x02\x02" + - "\x02N\u0152\x03\x02\x02\x02P\u0156\x03\x02\x02\x02R\u0158\x03\x02\x02" + - "\x02T\u015B\x03\x02\x02\x02V\u015D\x03\x02\x02\x02X\u0160\x03\x02\x02" + - "\x02Z\u0163\x03\x02\x02\x02\\\u0167\x03\x02\x02\x02^\u016A\x03\x02\x02" + - "\x02`\u016E\x03\x02\x02\x02b\u0170\x03\x02\x02\x02d\u0172\x03\x02\x02" + - "\x02f\u0174\x03\x02\x02\x02h\u0177\x03\x02\x02\x02j\u017A\x03\x02\x02" + - "\x02l\u017C\x03\x02\x02\x02n\u017E\x03\x02\x02\x02p\u0181\x03\x02\x02" + - "\x02r\u0184\x03\x02\x02\x02t\u0187\x03\x02\x02\x02v\u018A\x03\x02\x02" + - "\x02x\u018E\x03\x02\x02\x02z\u0191\x03\x02\x02\x02|\u0194\x03\x02\x02" + - "\x02~\u0196\x03\x02\x02\x02\x80\u0199\x03\x02\x02\x02\x82\u019C\x03\x02" + - "\x02\x02\x84\u019F\x03\x02\x02\x02\x86\u01A2\x03\x02\x02\x02\x88\u01A5" + - "\x03\x02\x02\x02\x8A\u01A8\x03\x02\x02\x02\x8C\u01AB\x03\x02\x02\x02\x8E" + - "\u01AE\x03\x02\x02\x02\x90\u01B2\x03\x02\x02\x02\x92\u01B6\x03\x02\x02" + - "\x02\x94\u01BB\x03\x02\x02\x02\x96\u01C4\x03\x02\x02\x02\x98\u01D6\x03" + - "\x02\x02\x02\x9A\u01E3\x03\x02\x02\x02\x9C\u0213\x03\x02\x02\x02\x9E\u0215" + - "\x03\x02\x02\x02\xA0\u0226\x03\x02\x02\x02\xA2\u022B\x03\x02\x02\x02\xA4" + - "\u0231\x03\x02\x02\x02\xA6\u025C\x03\x02\x02\x02\xA8\u025E\x03\x02\x02" + - "\x02\xAA\u0262\x03\x02\x02\x02\xAC\u0271\x03\x02\x02\x02\xAE\u0275\x03" + - "\x02\x02\x02\xB0\xB2\t\x02\x02\x02\xB1\xB0\x03\x02\x02\x02\xB2\xB3\x03" + - "\x02\x02\x02\xB3\xB1\x03\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03" + - "\x02\x02\x02\xB5\xB6\b\x02\x02\x02\xB6\x05\x03\x02\x02\x02\xB7\xB8\x07" + - "1\x02\x02\xB8\xB9\x071\x02\x02\xB9\xBD\x03\x02\x02\x02\xBA\xBC\v\x02\x02" + - "\x02\xBB\xBA\x03\x02\x02\x02\xBC\xBF\x03\x02\x02\x02\xBD\xBE\x03\x02\x02" + - "\x02\xBD\xBB\x03\x02\x02\x02\xBE\xC0\x03\x02\x02\x02\xBF\xBD\x03\x02\x02" + - "\x02\xC0\xCD\t\x03\x02\x02\xC1\xC2\x071\x02\x02\xC2\xC3\x07,\x02\x02\xC3" + - "\xC7\x03\x02\x02\x02\xC4\xC6\v\x02\x02\x02\xC5\xC4\x03\x02\x02\x02\xC6" + - "\xC9\x03\x02\x02\x02\xC7\xC8\x03\x02\x02\x02\xC7\xC5\x03\x02\x02\x02\xC8" + - "\xCA\x03\x02\x02\x02\xC9\xC7\x03\x02\x02\x02\xCA\xCB\x07,\x02\x02\xCB" + - "\xCD\x071\x02\x02\xCC\xB7\x03\x02\x02\x02\xCC\xC1\x03\x02\x02\x02\xCD" + - "\xCE\x03\x02\x02\x02\xCE\xCF\b\x03\x02\x02\xCF\x07\x03\x02\x02\x02\xD0" + - "\xD1\x07}\x02\x02\xD1\t\x03\x02\x02\x02\xD2\xD3\x07\x7F\x02\x02\xD3\v" + - "\x03\x02\x02\x02\xD4\xD5\x07]\x02\x02\xD5\r\x03\x02\x02\x02\xD6\xD7\x07" + - "_\x02\x02\xD7\x0F\x03\x02\x02\x02\xD8\xD9\x07*\x02\x02\xD9\x11\x03\x02" + - "\x02\x02\xDA\xDB\x07+\x02\x02\xDB\x13\x03\x02\x02\x02\xDC\xDD\x07&\x02" + - "\x02\xDD\x15\x03\x02\x02\x02\xDE\xDF\x070\x02\x02\xDF\xE0\x03\x02\x02" + - "\x02\xE0\xE1\b\v\x03\x02\xE1\x17\x03\x02\x02\x02\xE2\xE3\x07A\x02\x02" + - "\xE3\xE4\x070\x02\x02\xE4\xE5\x03\x02\x02\x02\xE5\xE6\b\f\x03\x02\xE6" + - "\x19\x03\x02\x02\x02\xE7\xE8\x07.\x02\x02\xE8\x1B\x03\x02\x02\x02\xE9" + - "\xEA\x07=\x02\x02\xEA\x1D\x03\x02\x02\x02\xEB\xEC\x07k\x02\x02\xEC\xED" + - "\x07h\x02\x02\xED\x1F\x03\x02\x02\x02\xEE\xEF\x07k\x02\x02\xEF\xF0\x07" + - "p\x02\x02\xF0!\x03\x02\x02\x02\xF1\xF2\x07g\x02\x02\xF2\xF3\x07n\x02\x02" + - "\xF3\xF4\x07u\x02\x02\xF4\xF5\x07g\x02\x02\xF5#\x03\x02\x02\x02\xF6\xF7" + - "\x07y\x02\x02\xF7\xF8\x07j\x02\x02\xF8\xF9\x07k\x02\x02\xF9\xFA\x07n\x02" + - "\x02\xFA\xFB\x07g\x02\x02\xFB%\x03\x02\x02\x02\xFC\xFD\x07f\x02\x02\xFD" + - "\xFE\x07q\x02\x02\xFE\'\x03\x02\x02\x02\xFF\u0100\x07h\x02\x02\u0100\u0101" + - "\x07q\x02\x02\u0101\u0102\x07t\x02\x02\u0102)\x03\x02\x02\x02\u0103\u0104" + - "\x07e\x02\x02\u0104\u0105\x07q\x02\x02\u0105\u0106\x07p\x02\x02\u0106" + - "\u0107\x07v\x02\x02\u0107\u0108\x07k\x02\x02\u0108\u0109\x07p\x02\x02" + - "\u0109\u010A\x07w\x02\x02\u010A\u010B\x07g\x02\x02\u010B+\x03\x02\x02" + - "\x02\u010C\u010D\x07d\x02\x02\u010D\u010E\x07t\x02\x02\u010E\u010F\x07" + - "g\x02\x02\u010F\u0110\x07c\x02\x02\u0110\u0111\x07m\x02\x02\u0111-\x03" + - "\x02\x02\x02\u0112\u0113\x07t\x02\x02\u0113\u0114\x07g\x02\x02\u0114\u0115" + - "\x07v\x02\x02\u0115\u0116\x07w\x02\x02\u0116\u0117\x07t\x02\x02\u0117" + - "\u0118\x07p\x02\x02\u0118/\x03\x02\x02\x02\u0119\u011A\x07p\x02\x02\u011A" + - "\u011B\x07g\x02\x02\u011B\u011C\x07y\x02\x02\u011C1\x03\x02\x02\x02\u011D" + - "\u011E\x07v\x02\x02\u011E\u011F\x07t\x02\x02\u011F\u0120\x07{\x02\x02" + - "\u01203\x03\x02\x02\x02\u0121\u0122\x07e\x02\x02\u0122\u0123\x07c\x02" + - "\x02\u0123\u0124\x07v\x02\x02\u0124\u0125\x07e\x02\x02\u0125\u0126\x07" + - "j\x02\x02\u01265\x03\x02\x02\x02\u0127\u0128\x07v\x02\x02\u0128\u0129" + - "\x07j\x02\x02\u0129\u012A\x07t\x02\x02\u012A\u012B\x07q\x02\x02\u012B" + - "\u012C\x07y\x02\x02\u012C7\x03\x02\x02\x02\u012D\u012E\x07v\x02\x02\u012E" + - "\u012F\x07j\x02\x02\u012F\u0130\x07k\x02\x02\u0130\u0131\x07u\x02\x02" + - "\u01319\x03\x02\x02\x02\u0132\u0133\x07k\x02\x02\u0133\u0134\x07p\x02" + - "\x02\u0134\u0135\x07u\x02\x02\u0135\u0136\x07v\x02\x02\u0136\u0137\x07" + - "c\x02\x02\u0137\u0138\x07p\x02\x02\u0138\u0139\x07e\x02\x02\u0139\u013A" + - "\x07g\x02\x02\u013A\u013B\x07q\x02\x02\u013B\u013C\x07h\x02\x02\u013C" + - ";\x03\x02\x02\x02\u013D\u013E\x07#\x02\x02\u013E=\x03\x02\x02\x02\u013F" + - "\u0140\x07\x80\x02\x02\u0140?\x03\x02\x02\x02\u0141\u0142\x07,\x02\x02" + - "\u0142A\x03\x02\x02\x02\u0143\u0144\x071\x02\x02\u0144\u0145\x06!\x02" + - "\x02\u0145C\x03\x02\x02\x02\u0146\u0147\x07\'\x02\x02\u0147E\x03\x02\x02" + - "\x02\u0148\u0149\x07-\x02\x02\u0149G\x03\x02\x02\x02\u014A\u014B\x07/" + - "\x02\x02\u014BI\x03\x02\x02\x02\u014C\u014D\x07>\x02\x02\u014D\u014E\x07" + - ">\x02\x02\u014EK\x03\x02\x02\x02\u014F\u0150\x07@\x02\x02\u0150\u0151" + - "\x07@\x02\x02\u0151M\x03\x02\x02\x02\u0152\u0153\x07@\x02\x02\u0153\u0154" + - "\x07@\x02\x02\u0154\u0155\x07@\x02\x02\u0155O\x03\x02\x02\x02\u0156\u0157" + - "\x07>\x02\x02\u0157Q\x03\x02\x02\x02\u0158\u0159\x07>\x02\x02\u0159\u015A" + - "\x07?\x02\x02\u015AS\x03\x02\x02\x02\u015B\u015C\x07@\x02\x02\u015CU\x03" + - "\x02\x02\x02\u015D\u015E\x07@\x02\x02\u015E\u015F\x07?\x02\x02\u015FW" + - "\x03\x02\x02\x02\u0160\u0161\x07?\x02\x02\u0161\u0162\x07?\x02\x02\u0162" + - "Y\x03\x02\x02\x02\u0163\u0164\x07?\x02\x02\u0164\u0165\x07?\x02\x02\u0165" + - "\u0166\x07?\x02\x02\u0166[\x03\x02\x02\x02\u0167\u0168\x07#\x02\x02\u0168" + - "\u0169\x07?\x02\x02\u0169]\x03\x02\x02\x02\u016A\u016B\x07#\x02\x02\u016B" + - "\u016C\x07?\x02\x02\u016C\u016D\x07?\x02\x02\u016D_\x03\x02\x02\x02\u016E" + - "\u016F\x07(\x02\x02\u016Fa\x03\x02\x02\x02\u0170\u0171\x07`\x02\x02\u0171" + - "c\x03\x02\x02\x02\u0172\u0173\x07~\x02\x02\u0173e\x03\x02\x02\x02\u0174" + - "\u0175\x07(\x02\x02\u0175\u0176\x07(\x02\x02\u0176g\x03\x02\x02\x02\u0177" + - "\u0178\x07~\x02\x02\u0178\u0179\x07~\x02\x02\u0179i\x03\x02\x02\x02\u017A" + - "\u017B\x07A\x02\x02\u017Bk\x03\x02\x02\x02\u017C\u017D\x07<\x02\x02\u017D" + - "m\x03\x02\x02\x02\u017E\u017F\x07A\x02\x02\u017F\u0180\x07<\x02\x02\u0180" + - "o\x03\x02\x02\x02\u0181\u0182\x07<\x02\x02\u0182\u0183\x07<\x02\x02\u0183" + - "q\x03\x02\x02\x02\u0184\u0185\x07/\x02\x02\u0185\u0186\x07@\x02\x02\u0186" + - "s\x03\x02\x02\x02\u0187\u0188\x07?\x02\x02\u0188\u0189\x07\x80\x02\x02" + - "\u0189u\x03\x02\x02\x02\u018A\u018B\x07?\x02\x02\u018B\u018C\x07?\x02" + - "\x02\u018C\u018D\x07\x80\x02\x02\u018Dw\x03\x02\x02\x02\u018E\u018F\x07" + - "-\x02\x02\u018F\u0190\x07-\x02\x02\u0190y\x03\x02\x02\x02\u0191\u0192" + - "\x07/\x02\x02\u0192\u0193\x07/\x02\x02\u0193{\x03\x02\x02\x02\u0194\u0195" + - "\x07?\x02\x02\u0195}\x03\x02\x02\x02\u0196\u0197\x07-\x02\x02\u0197\u0198" + - "\x07?\x02\x02\u0198\x7F\x03\x02\x02\x02\u0199\u019A\x07/\x02\x02\u019A" + - "\u019B\x07?\x02\x02\u019B\x81\x03\x02\x02\x02\u019C\u019D\x07,\x02\x02" + - "\u019D\u019E\x07?\x02\x02\u019E\x83\x03\x02\x02\x02\u019F\u01A0\x071\x02" + - "\x02\u01A0\u01A1\x07?\x02\x02\u01A1\x85\x03\x02\x02\x02\u01A2\u01A3\x07" + - "\'\x02\x02\u01A3\u01A4\x07?\x02\x02\u01A4\x87\x03\x02\x02\x02\u01A5\u01A6" + - "\x07(\x02\x02\u01A6\u01A7\x07?\x02\x02\u01A7\x89\x03\x02\x02\x02\u01A8" + - "\u01A9\x07`\x02\x02\u01A9\u01AA\x07?\x02\x02\u01AA\x8B\x03\x02\x02\x02" + - "\u01AB\u01AC\x07~\x02\x02\u01AC\u01AD\x07?\x02\x02\u01AD\x8D\x03\x02\x02" + - "\x02\u01AE\u01AF\x07>\x02\x02\u01AF\u01B0\x07>\x02\x02\u01B0\u01B1\x07" + - "?\x02\x02\u01B1\x8F\x03\x02\x02\x02\u01B2\u01B3\x07@\x02\x02\u01B3\u01B4" + - "\x07@\x02\x02\u01B4\u01B5\x07?\x02\x02\u01B5\x91\x03\x02\x02\x02\u01B6" + - "\u01B7\x07@\x02\x02\u01B7\u01B8\x07@\x02\x02\u01B8\u01B9\x07@\x02\x02" + - "\u01B9\u01BA\x07?\x02\x02\u01BA\x93\x03\x02\x02\x02\u01BB\u01BD\x072\x02" + - "\x02\u01BC\u01BE\t\x04\x02\x02\u01BD\u01BC\x03\x02\x02\x02\u01BE\u01BF" + - "\x03\x02\x02\x02\u01BF\u01BD\x03\x02\x02\x02\u01BF\u01C0\x03\x02\x02\x02" + - "\u01C0\u01C2\x03\x02\x02\x02\u01C1\u01C3\t\x05\x02\x02\u01C2\u01C1\x03" + - "\x02\x02\x02\u01C2\u01C3\x03\x02\x02\x02\u01C3\x95\x03\x02\x02\x02\u01C4" + - "\u01C5\x072\x02\x02\u01C5\u01C7\t\x06\x02\x02\u01C6\u01C8\t\x07\x02\x02" + - "\u01C7\u01C6\x03\x02\x02\x02\u01C8\u01C9\x03\x02\x02\x02\u01C9\u01C7\x03" + - "\x02\x02\x02\u01C9\u01CA\x03\x02\x02\x02\u01CA\u01CC\x03\x02\x02\x02\u01CB" + - "\u01CD\t\x05\x02\x02\u01CC\u01CB\x03\x02\x02\x02\u01CC\u01CD\x03\x02\x02" + - "\x02\u01CD\x97\x03\x02\x02\x02\u01CE\u01D7\x072\x02\x02\u01CF\u01D3\t" + - "\b\x02\x02\u01D0\u01D2\t\t\x02\x02\u01D1\u01D0\x03\x02\x02\x02\u01D2\u01D5" + - "\x03\x02\x02\x02\u01D3\u01D1\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02" + - "\u01D4\u01D7\x03\x02\x02\x02\u01D5\u01D3\x03\x02\x02\x02\u01D6\u01CE\x03" + - "\x02\x02\x02\u01D6\u01CF\x03\x02\x02\x02\u01D7\u01D9\x03\x02\x02\x02\u01D8" + - "\u01DA\t\n\x02\x02\u01D9\u01D8\x03\x02\x02\x02\u01D9\u01DA\x03\x02\x02" + - "\x02\u01DA\x99\x03\x02\x02\x02\u01DB\u01E4\x072\x02\x02\u01DC\u01E0\t" + - "\b\x02\x02\u01DD\u01DF\t\t\x02\x02\u01DE\u01DD\x03\x02\x02\x02\u01DF\u01E2" + - "\x03\x02\x02\x02\u01E0\u01DE\x03\x02\x02\x02\u01E0\u01E1\x03\x02\x02\x02" + - "\u01E1\u01E4\x03\x02\x02\x02\u01E2\u01E0\x03\x02\x02\x02\u01E3\u01DB\x03" + - "\x02\x02\x02\u01E3\u01DC\x03\x02\x02\x02\u01E4\u01EB\x03\x02\x02\x02\u01E5" + - "\u01E7\x05\x16\v\x02\u01E6\u01E8\t\t\x02\x02\u01E7\u01E6\x03\x02\x02\x02" + - "\u01E8\u01E9\x03\x02\x02\x02\u01E9\u01E7\x03\x02\x02\x02\u01E9\u01EA\x03" + - "\x02\x02\x02\u01EA\u01EC\x03\x02\x02\x02\u01EB\u01E5\x03\x02\x02\x02\u01EB" + - "\u01EC\x03\x02\x02\x02\u01EC\u01F6\x03\x02\x02\x02\u01ED\u01EF\t\v\x02" + - "\x02\u01EE\u01F0\t\f\x02\x02\u01EF\u01EE\x03\x02\x02\x02\u01EF\u01F0\x03" + - "\x02\x02\x02\u01F0\u01F2\x03\x02\x02\x02\u01F1\u01F3\t\t\x02\x02\u01F2" + - "\u01F1\x03\x02\x02\x02\u01F3\u01F4\x03\x02\x02\x02\u01F4\u01F2\x03\x02" + - "\x02\x02\u01F4\u01F5\x03\x02\x02\x02\u01F5\u01F7\x03\x02\x02\x02\u01F6" + - "\u01ED\x03\x02\x02\x02\u01F6\u01F7\x03\x02\x02\x02\u01F7\u01F9\x03\x02" + - "\x02\x02\u01F8\u01FA\t\r\x02\x02\u01F9\u01F8\x03\x02\x02\x02\u01F9\u01FA" + - "\x03\x02\x02\x02\u01FA\x9B\x03\x02\x02\x02\u01FB\u0203\x07$\x02\x02\u01FC" + - "\u01FD\x07^\x02\x02\u01FD\u0202\x07$\x02\x02\u01FE\u01FF\x07^\x02\x02" + - "\u01FF\u0202\x07^\x02\x02\u0200\u0202\n\x0E\x02\x02\u0201\u01FC\x03\x02" + - "\x02\x02\u0201\u01FE\x03\x02\x02\x02\u0201\u0200\x03\x02\x02\x02\u0202" + - "\u0205\x03\x02\x02\x02\u0203\u0204\x03\x02\x02\x02\u0203\u0201\x03\x02" + - "\x02\x02\u0204\u0206\x03\x02\x02\x02\u0205\u0203\x03\x02\x02\x02\u0206" + - "\u0214\x07$\x02\x02\u0207\u020F\x07)\x02\x02\u0208\u0209\x07^\x02\x02" + - "\u0209\u020E\x07)\x02\x02\u020A\u020B\x07^\x02\x02\u020B\u020E\x07^\x02" + - "\x02\u020C\u020E\n\x0F\x02\x02\u020D\u0208"; - private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u020D\u020A\x03\x02\x02\x02\u020D\u020C\x03\x02\x02\x02" + - "\u020E\u0211\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02\u020F\u020D\x03" + - "\x02\x02\x02\u0210\u0212\x03\x02\x02\x02\u0211\u020F\x03\x02\x02\x02\u0212" + - "\u0214\x07)\x02\x02\u0213\u01FB\x03\x02\x02\x02\u0213\u0207\x03\x02\x02" + - "\x02\u0214\x9D\x03\x02\x02\x02\u0215\u0219\x071\x02\x02\u0216\u0217\x07" + - "^\x02\x02\u0217\u021A\n\x10\x02\x02\u0218\u021A\n\x11\x02\x02\u0219\u0216" + - "\x03\x02\x02\x02\u0219\u0218\x03\x02\x02\x02\u021A\u021B\x03\x02\x02\x02" + - "\u021B\u021C\x03\x02\x02\x02\u021B\u0219\x03\x02\x02\x02\u021C\u021D\x03" + - "\x02\x02\x02\u021D\u0221\x071\x02\x02\u021E\u0220\t\x12\x02\x02\u021F" + - "\u021E\x03\x02\x02\x02\u0220\u0223\x03\x02\x02\x02\u0221\u021F\x03\x02" + - "\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0224\x03\x02\x02\x02\u0223" + - "\u0221\x03\x02\x02\x02\u0224\u0225\x06O\x03\x02\u0225\x9F\x03\x02\x02" + - "\x02\u0226\u0227\x07v\x02\x02\u0227\u0228\x07t\x02\x02\u0228\u0229\x07" + - "w\x02\x02\u0229\u022A\x07g\x02\x02\u022A\xA1\x03\x02\x02\x02\u022B\u022C" + - "\x07h\x02\x02\u022C\u022D\x07c\x02\x02\u022D\u022E\x07n\x02\x02\u022E" + - "\u022F\x07u\x02\x02\u022F\u0230\x07g\x02\x02\u0230\xA3\x03\x02\x02\x02" + - "\u0231\u0232\x07p\x02\x02\u0232\u0233\x07w\x02\x02\u0233\u0234\x07n\x02" + - "\x02\u0234\u0235\x07n\x02\x02\u0235\xA5\x03\x02\x02\x02\u0236\u0237\x07" + - "d\x02\x02\u0237\u0238\x07q\x02\x02\u0238\u0239\x07q\x02\x02\u0239\u023A" + - "\x07n\x02\x02\u023A\u023B\x07g\x02\x02\u023B\u023C\x07c\x02\x02\u023C" + - "\u025D\x07p\x02\x02\u023D\u023E\x07d\x02\x02\u023E\u023F\x07{\x02\x02" + - "\u023F\u0240\x07v\x02\x02\u0240\u025D\x07g\x02\x02\u0241\u0242\x07u\x02" + - "\x02\u0242\u0243\x07j\x02\x02\u0243\u0244\x07q\x02\x02\u0244\u0245\x07" + - "t\x02\x02\u0245\u025D\x07v\x02\x02\u0246\u0247\x07e\x02\x02\u0247\u0248" + - "\x07j\x02\x02\u0248\u0249\x07c\x02\x02\u0249\u025D\x07t\x02\x02\u024A" + - "\u024B\x07k\x02\x02\u024B\u024C\x07p\x02\x02\u024C\u025D\x07v\x02\x02" + - "\u024D\u024E\x07n\x02\x02\u024E\u024F\x07q\x02\x02\u024F\u0250\x07p\x02" + - "\x02\u0250\u025D\x07i\x02\x02\u0251\u0252\x07h\x02\x02\u0252\u0253\x07" + - "n\x02\x02\u0253\u0254\x07q\x02\x02\u0254\u0255\x07c\x02\x02\u0255\u025D" + - "\x07v\x02\x02\u0256\u0257\x07f\x02\x02\u0257\u0258\x07q\x02\x02\u0258" + - "\u0259\x07w\x02\x02\u0259\u025A\x07d\x02\x02\u025A\u025B\x07n\x02\x02" + - "\u025B\u025D\x07g\x02\x02\u025C\u0236\x03\x02\x02\x02\u025C\u023D\x03" + - "\x02\x02\x02\u025C\u0241\x03\x02\x02\x02\u025C\u0246\x03\x02\x02\x02\u025C" + - "\u024A\x03\x02\x02\x02\u025C\u024D\x03\x02\x02\x02\u025C\u0251\x03\x02" + - "\x02\x02\u025C\u0256\x03\x02\x02\x02\u025D\xA7\x03\x02\x02\x02\u025E\u025F" + - "\x07f\x02\x02\u025F\u0260\x07g\x02\x02\u0260\u0261\x07h\x02\x02\u0261" + - "\xA9\x03\x02\x02\x02\u0262\u0266\t\x13\x02\x02\u0263\u0265\t\x14\x02\x02" + - "\u0264\u0263\x03\x02\x02\x02\u0265\u0268\x03\x02\x02\x02\u0266\u0264\x03" + - "\x02\x02\x02\u0266\u0267\x03\x02\x02\x02\u0267\xAB\x03\x02\x02\x02\u0268" + - "\u0266\x03\x02\x02\x02\u0269\u0272\x072\x02\x02\u026A\u026E\t\b\x02\x02" + - "\u026B\u026D\t\t\x02\x02\u026C\u026B\x03\x02\x02\x02\u026D\u0270\x03\x02" + - "\x02\x02\u026E\u026C\x03\x02\x02\x02\u026E\u026F\x03\x02\x02\x02\u026F" + - "\u0272\x03\x02\x02\x02\u0270\u026E\x03\x02\x02\x02\u0271\u0269\x03\x02" + - "\x02\x02\u0271\u026A\x03\x02\x02\x02\u0272\u0273\x03\x02\x02\x02\u0273" + - "\u0274\bV\x04\x02\u0274\xAD\x03\x02\x02\x02\u0275\u0279\t\x13\x02\x02" + - "\u0276\u0278\t\x14\x02\x02\u0277\u0276\x03\x02\x02\x02\u0278\u027B\x03" + - "\x02\x02\x02\u0279\u0277\x03\x02\x02\x02\u0279\u027A\x03\x02\x02\x02\u027A" + - "\u027C\x03\x02\x02\x02\u027B\u0279\x03\x02\x02\x02\u027C\u027D\bW\x04" + - "\x02\u027D\xAF\x03\x02\x02\x02$\x02\x03\xB3\xBD\xC7\xCC\u01BF\u01C2\u01C9" + - "\u01CC\u01D3\u01D6\u01D9\u01E0\u01E3\u01E9\u01EB\u01EF\u01F4\u01F6\u01F9" + - "\u0201\u0203\u020D\u020F\u0213\u0219\u021B\u0221\u025C\u0266\u026E\u0271" + - "\u0279\x05\b\x02\x02\x04\x03\x02\x04\x02\x02"; - public static readonly _serializedATN: string = Utils.join( - [ - painless_lexer._serializedATNSegment0, - painless_lexer._serializedATNSegment1, - ], - "", - ); - public static __ATN: ATN; - public static get _ATN(): ATN { - if (!painless_lexer.__ATN) { - painless_lexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(painless_lexer._serializedATN)); - } - - return painless_lexer.__ATN; - } - -} - diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser.ts deleted file mode 100644 index 7eb6eaeb04bb1..0000000000000 --- a/packages/kbn-monaco/src/painless/antlr/painless_parser.ts +++ /dev/null @@ -1,5850 +0,0 @@ -// @ts-nocheck -// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; -import { NotNull } from "antlr4ts/Decorators"; -import { NoViableAltException } from "antlr4ts/NoViableAltException"; -import { Override } from "antlr4ts/Decorators"; -import { Parser } from "antlr4ts/Parser"; -import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; -import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; -import { RecognitionException } from "antlr4ts/RecognitionException"; -import { RuleContext } from "antlr4ts/RuleContext"; -//import { RuleVersion } from "antlr4ts/RuleVersion"; -import { TerminalNode } from "antlr4ts/tree/TerminalNode"; -import { Token } from "antlr4ts/Token"; -import { TokenStream } from "antlr4ts/TokenStream"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - -import { painless_parserListener } from "./painless_parser_listener"; - -export class painless_parser extends Parser { - public static readonly WS = 1; - public static readonly COMMENT = 2; - public static readonly LBRACK = 3; - public static readonly RBRACK = 4; - public static readonly LBRACE = 5; - public static readonly RBRACE = 6; - public static readonly LP = 7; - public static readonly RP = 8; - public static readonly DOLLAR = 9; - public static readonly DOT = 10; - public static readonly NSDOT = 11; - public static readonly COMMA = 12; - public static readonly SEMICOLON = 13; - public static readonly IF = 14; - public static readonly IN = 15; - public static readonly ELSE = 16; - public static readonly WHILE = 17; - public static readonly DO = 18; - public static readonly FOR = 19; - public static readonly CONTINUE = 20; - public static readonly BREAK = 21; - public static readonly RETURN = 22; - public static readonly NEW = 23; - public static readonly TRY = 24; - public static readonly CATCH = 25; - public static readonly THROW = 26; - public static readonly THIS = 27; - public static readonly INSTANCEOF = 28; - public static readonly BOOLNOT = 29; - public static readonly BWNOT = 30; - public static readonly MUL = 31; - public static readonly DIV = 32; - public static readonly REM = 33; - public static readonly ADD = 34; - public static readonly SUB = 35; - public static readonly LSH = 36; - public static readonly RSH = 37; - public static readonly USH = 38; - public static readonly LT = 39; - public static readonly LTE = 40; - public static readonly GT = 41; - public static readonly GTE = 42; - public static readonly EQ = 43; - public static readonly EQR = 44; - public static readonly NE = 45; - public static readonly NER = 46; - public static readonly BWAND = 47; - public static readonly XOR = 48; - public static readonly BWOR = 49; - public static readonly BOOLAND = 50; - public static readonly BOOLOR = 51; - public static readonly COND = 52; - public static readonly COLON = 53; - public static readonly ELVIS = 54; - public static readonly REF = 55; - public static readonly ARROW = 56; - public static readonly FIND = 57; - public static readonly MATCH = 58; - public static readonly INCR = 59; - public static readonly DECR = 60; - public static readonly ASSIGN = 61; - public static readonly AADD = 62; - public static readonly ASUB = 63; - public static readonly AMUL = 64; - public static readonly ADIV = 65; - public static readonly AREM = 66; - public static readonly AAND = 67; - public static readonly AXOR = 68; - public static readonly AOR = 69; - public static readonly ALSH = 70; - public static readonly ARSH = 71; - public static readonly AUSH = 72; - public static readonly OCTAL = 73; - public static readonly HEX = 74; - public static readonly INTEGER = 75; - public static readonly DECIMAL = 76; - public static readonly STRING = 77; - public static readonly REGEX = 78; - public static readonly TRUE = 79; - public static readonly FALSE = 80; - public static readonly NULL = 81; - public static readonly PRIMITIVE = 82; - public static readonly DEF = 83; - public static readonly ID = 84; - public static readonly DOTINTEGER = 85; - public static readonly DOTID = 86; - public static readonly RULE_source = 0; - public static readonly RULE_function = 1; - public static readonly RULE_parameters = 2; - public static readonly RULE_statement = 3; - public static readonly RULE_rstatement = 4; - public static readonly RULE_dstatement = 5; - public static readonly RULE_trailer = 6; - public static readonly RULE_block = 7; - public static readonly RULE_empty = 8; - public static readonly RULE_initializer = 9; - public static readonly RULE_afterthought = 10; - public static readonly RULE_declaration = 11; - public static readonly RULE_decltype = 12; - public static readonly RULE_type = 13; - public static readonly RULE_declvar = 14; - public static readonly RULE_trap = 15; - public static readonly RULE_noncondexpression = 16; - public static readonly RULE_expression = 17; - public static readonly RULE_unary = 18; - public static readonly RULE_unarynotaddsub = 19; - public static readonly RULE_castexpression = 20; - public static readonly RULE_primordefcasttype = 21; - public static readonly RULE_refcasttype = 22; - public static readonly RULE_chain = 23; - public static readonly RULE_primary = 24; - public static readonly RULE_postfix = 25; - public static readonly RULE_postdot = 26; - public static readonly RULE_callinvoke = 27; - public static readonly RULE_fieldaccess = 28; - public static readonly RULE_braceaccess = 29; - public static readonly RULE_arrayinitializer = 30; - public static readonly RULE_listinitializer = 31; - public static readonly RULE_mapinitializer = 32; - public static readonly RULE_maptoken = 33; - public static readonly RULE_arguments = 34; - public static readonly RULE_argument = 35; - public static readonly RULE_lambda = 36; - public static readonly RULE_lamtype = 37; - public static readonly RULE_funcref = 38; - // tslint:disable:no-trailing-whitespace - public static readonly ruleNames: string[] = [ - "source", "function", "parameters", "statement", "rstatement", "dstatement", - "trailer", "block", "empty", "initializer", "afterthought", "declaration", - "decltype", "type", "declvar", "trap", "noncondexpression", "expression", - "unary", "unarynotaddsub", "castexpression", "primordefcasttype", "refcasttype", - "chain", "primary", "postfix", "postdot", "callinvoke", "fieldaccess", - "braceaccess", "arrayinitializer", "listinitializer", "mapinitializer", - "maptoken", "arguments", "argument", "lambda", "lamtype", "funcref", - ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, undefined, undefined, "'{'", "'}'", "'['", "']'", "'('", "')'", - "'$'", "'.'", "'?.'", "','", "';'", "'if'", "'in'", "'else'", "'while'", - "'do'", "'for'", "'continue'", "'break'", "'return'", "'new'", "'try'", - "'catch'", "'throw'", "'this'", "'instanceof'", "'!'", "'~'", "'*'", "'/'", - "'%'", "'+'", "'-'", "'<<'", "'>>'", "'>>>'", "'<'", "'<='", "'>'", "'>='", - "'=='", "'==='", "'!='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", - "'?'", "':'", "'?:'", "'::'", "'->'", "'=~'", "'==~'", "'++'", "'--'", - "'='", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", - "'<<='", "'>>='", "'>>>='", undefined, undefined, undefined, undefined, - undefined, undefined, "'true'", "'false'", "'null'", undefined, "'def'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", - "RP", "DOLLAR", "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", - "WHILE", "DO", "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", - "THROW", "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", - "ADD", "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", - "NE", "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", - "ELVIS", "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", - "ASUB", "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", - "AUSH", "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", - "FALSE", "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(painless_parser._LITERAL_NAMES, painless_parser._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return painless_parser.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - // @Override - public get grammarFileName(): string { return "painless_parser.g4"; } - - // @Override - public get ruleNames(): string[] { return painless_parser.ruleNames; } - - // @Override - public get serializedATN(): string { return painless_parser._serializedATN; } - - constructor(input: TokenStream) { - super(input); - this._interp = new ParserATNSimulator(painless_parser._ATN, this); - } - // @RuleVersion(0) - public source(): SourceContext { - let _localctx: SourceContext = new SourceContext(this._ctx, this.state); - this.enterRule(_localctx, 0, painless_parser.RULE_source); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 81; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 78; - this.function(); - } - } - } - this.state = 83; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); - } - this.state = 87; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.IF - 5)) | (1 << (painless_parser.WHILE - 5)) | (1 << (painless_parser.DO - 5)) | (1 << (painless_parser.FOR - 5)) | (1 << (painless_parser.CONTINUE - 5)) | (1 << (painless_parser.BREAK - 5)) | (1 << (painless_parser.RETURN - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.TRY - 5)) | (1 << (painless_parser.THROW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.PRIMITIVE - 59)) | (1 << (painless_parser.DEF - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - { - this.state = 84; - this.statement(); - } - } - this.state = 89; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 90; - this.match(painless_parser.EOF); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public function(): FunctionContext { - let _localctx: FunctionContext = new FunctionContext(this._ctx, this.state); - this.enterRule(_localctx, 2, painless_parser.RULE_function); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 92; - this.decltype(); - this.state = 93; - this.match(painless_parser.ID); - this.state = 94; - this.parameters(); - this.state = 95; - this.block(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public parameters(): ParametersContext { - let _localctx: ParametersContext = new ParametersContext(this._ctx, this.state); - this.enterRule(_localctx, 4, painless_parser.RULE_parameters); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 97; - this.match(painless_parser.LP); - this.state = 109; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & ((1 << (painless_parser.PRIMITIVE - 82)) | (1 << (painless_parser.DEF - 82)) | (1 << (painless_parser.ID - 82)))) !== 0)) { - { - this.state = 98; - this.decltype(); - this.state = 99; - this.match(painless_parser.ID); - this.state = 106; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 100; - this.match(painless_parser.COMMA); - this.state = 101; - this.decltype(); - this.state = 102; - this.match(painless_parser.ID); - } - } - this.state = 108; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 111; - this.match(painless_parser.RP); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public statement(): StatementContext { - let _localctx: StatementContext = new StatementContext(this._ctx, this.state); - this.enterRule(_localctx, 6, painless_parser.RULE_statement); - let _la: number; - try { - this.state = 117; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.IF: - case painless_parser.WHILE: - case painless_parser.FOR: - case painless_parser.TRY: - this.enterOuterAlt(_localctx, 1); - { - this.state = 113; - this.rstatement(); - } - break; - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.DO: - case painless_parser.CONTINUE: - case painless_parser.BREAK: - case painless_parser.RETURN: - case painless_parser.NEW: - case painless_parser.THROW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.ADD: - case painless_parser.SUB: - case painless_parser.INCR: - case painless_parser.DECR: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.PRIMITIVE: - case painless_parser.DEF: - case painless_parser.ID: - this.enterOuterAlt(_localctx, 2); - { - this.state = 114; - this.dstatement(); - this.state = 115; - _la = this._input.LA(1); - if (!(_la === painless_parser.EOF || _la === painless_parser.SEMICOLON)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public rstatement(): RstatementContext { - let _localctx: RstatementContext = new RstatementContext(this._ctx, this.state); - this.enterRule(_localctx, 8, painless_parser.RULE_rstatement); - let _la: number; - try { - let _alt: number; - this.state = 179; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { - case 1: - _localctx = new IfContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 119; - this.match(painless_parser.IF); - this.state = 120; - this.match(painless_parser.LP); - this.state = 121; - this.expression(); - this.state = 122; - this.match(painless_parser.RP); - this.state = 123; - this.trailer(); - this.state = 127; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 5, this._ctx) ) { - case 1: - { - this.state = 124; - this.match(painless_parser.ELSE); - this.state = 125; - this.trailer(); - } - break; - - case 2: - { - this.state = 126; - if (!( this._input.LA(1) != painless_parser.ELSE )) { - throw new FailedPredicateException(this, " this._input.LA(1) != painless_parser.ELSE "); - } - } - break; - } - } - break; - - case 2: - _localctx = new WhileContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 129; - this.match(painless_parser.WHILE); - this.state = 130; - this.match(painless_parser.LP); - this.state = 131; - this.expression(); - this.state = 132; - this.match(painless_parser.RP); - this.state = 135; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.LBRACK: - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.IF: - case painless_parser.WHILE: - case painless_parser.DO: - case painless_parser.FOR: - case painless_parser.CONTINUE: - case painless_parser.BREAK: - case painless_parser.RETURN: - case painless_parser.NEW: - case painless_parser.TRY: - case painless_parser.THROW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.ADD: - case painless_parser.SUB: - case painless_parser.INCR: - case painless_parser.DECR: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.PRIMITIVE: - case painless_parser.DEF: - case painless_parser.ID: - { - this.state = 133; - this.trailer(); - } - break; - case painless_parser.SEMICOLON: - { - this.state = 134; - this.empty(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - - case 3: - _localctx = new ForContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 137; - this.match(painless_parser.FOR); - this.state = 138; - this.match(painless_parser.LP); - this.state = 140; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.PRIMITIVE - 59)) | (1 << (painless_parser.DEF - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 139; - this.initializer(); - } - } - - this.state = 142; - this.match(painless_parser.SEMICOLON); - this.state = 144; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 143; - this.expression(); - } - } - - this.state = 146; - this.match(painless_parser.SEMICOLON); - this.state = 148; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 147; - this.afterthought(); - } - } - - this.state = 150; - this.match(painless_parser.RP); - this.state = 153; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.LBRACK: - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.IF: - case painless_parser.WHILE: - case painless_parser.DO: - case painless_parser.FOR: - case painless_parser.CONTINUE: - case painless_parser.BREAK: - case painless_parser.RETURN: - case painless_parser.NEW: - case painless_parser.TRY: - case painless_parser.THROW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.ADD: - case painless_parser.SUB: - case painless_parser.INCR: - case painless_parser.DECR: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.PRIMITIVE: - case painless_parser.DEF: - case painless_parser.ID: - { - this.state = 151; - this.trailer(); - } - break; - case painless_parser.SEMICOLON: - { - this.state = 152; - this.empty(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - - case 4: - _localctx = new EachContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 155; - this.match(painless_parser.FOR); - this.state = 156; - this.match(painless_parser.LP); - this.state = 157; - this.decltype(); - this.state = 158; - this.match(painless_parser.ID); - this.state = 159; - this.match(painless_parser.COLON); - this.state = 160; - this.expression(); - this.state = 161; - this.match(painless_parser.RP); - this.state = 162; - this.trailer(); - } - break; - - case 5: - _localctx = new IneachContext(_localctx); - this.enterOuterAlt(_localctx, 5); - { - this.state = 164; - this.match(painless_parser.FOR); - this.state = 165; - this.match(painless_parser.LP); - this.state = 166; - this.match(painless_parser.ID); - this.state = 167; - this.match(painless_parser.IN); - this.state = 168; - this.expression(); - this.state = 169; - this.match(painless_parser.RP); - this.state = 170; - this.trailer(); - } - break; - - case 6: - _localctx = new TryContext(_localctx); - this.enterOuterAlt(_localctx, 6); - { - this.state = 172; - this.match(painless_parser.TRY); - this.state = 173; - this.block(); - this.state = 175; - this._errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - this.state = 174; - this.trap(); - } - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 177; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 11, this._ctx); - } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public dstatement(): DstatementContext { - let _localctx: DstatementContext = new DstatementContext(this._ctx, this.state); - this.enterRule(_localctx, 10, painless_parser.RULE_dstatement); - let _la: number; - try { - this.state = 198; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { - case 1: - _localctx = new DoContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 181; - this.match(painless_parser.DO); - this.state = 182; - this.block(); - this.state = 183; - this.match(painless_parser.WHILE); - this.state = 184; - this.match(painless_parser.LP); - this.state = 185; - this.expression(); - this.state = 186; - this.match(painless_parser.RP); - } - break; - - case 2: - _localctx = new DeclContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 188; - this.declaration(); - } - break; - - case 3: - _localctx = new ContinueContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 189; - this.match(painless_parser.CONTINUE); - } - break; - - case 4: - _localctx = new BreakContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 190; - this.match(painless_parser.BREAK); - } - break; - - case 5: - _localctx = new ReturnContext(_localctx); - this.enterOuterAlt(_localctx, 5); - { - this.state = 191; - this.match(painless_parser.RETURN); - this.state = 193; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 192; - this.expression(); - } - } - - } - break; - - case 6: - _localctx = new ThrowContext(_localctx); - this.enterOuterAlt(_localctx, 6); - { - this.state = 195; - this.match(painless_parser.THROW); - this.state = 196; - this.expression(); - } - break; - - case 7: - _localctx = new ExprContext(_localctx); - this.enterOuterAlt(_localctx, 7); - { - this.state = 197; - this.expression(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public trailer(): TrailerContext { - let _localctx: TrailerContext = new TrailerContext(this._ctx, this.state); - this.enterRule(_localctx, 12, painless_parser.RULE_trailer); - try { - this.state = 202; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.LBRACK: - this.enterOuterAlt(_localctx, 1); - { - this.state = 200; - this.block(); - } - break; - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.IF: - case painless_parser.WHILE: - case painless_parser.DO: - case painless_parser.FOR: - case painless_parser.CONTINUE: - case painless_parser.BREAK: - case painless_parser.RETURN: - case painless_parser.NEW: - case painless_parser.TRY: - case painless_parser.THROW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.ADD: - case painless_parser.SUB: - case painless_parser.INCR: - case painless_parser.DECR: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.PRIMITIVE: - case painless_parser.DEF: - case painless_parser.ID: - this.enterOuterAlt(_localctx, 2); - { - this.state = 201; - this.statement(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public block(): BlockContext { - let _localctx: BlockContext = new BlockContext(this._ctx, this.state); - this.enterRule(_localctx, 14, painless_parser.RULE_block); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 204; - this.match(painless_parser.LBRACK); - this.state = 208; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 16, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 205; - this.statement(); - } - } - } - this.state = 210; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 16, this._ctx); - } - this.state = 212; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.DO - 5)) | (1 << (painless_parser.CONTINUE - 5)) | (1 << (painless_parser.BREAK - 5)) | (1 << (painless_parser.RETURN - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.THROW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.PRIMITIVE - 59)) | (1 << (painless_parser.DEF - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 211; - this.dstatement(); - } - } - - this.state = 214; - this.match(painless_parser.RBRACK); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public empty(): EmptyContext { - let _localctx: EmptyContext = new EmptyContext(this._ctx, this.state); - this.enterRule(_localctx, 16, painless_parser.RULE_empty); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 216; - this.match(painless_parser.SEMICOLON); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public initializer(): InitializerContext { - let _localctx: InitializerContext = new InitializerContext(this._ctx, this.state); - this.enterRule(_localctx, 18, painless_parser.RULE_initializer); - try { - this.state = 220; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 18, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 218; - this.declaration(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 219; - this.expression(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public afterthought(): AfterthoughtContext { - let _localctx: AfterthoughtContext = new AfterthoughtContext(this._ctx, this.state); - this.enterRule(_localctx, 20, painless_parser.RULE_afterthought); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 222; - this.expression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public declaration(): DeclarationContext { - let _localctx: DeclarationContext = new DeclarationContext(this._ctx, this.state); - this.enterRule(_localctx, 22, painless_parser.RULE_declaration); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 224; - this.decltype(); - this.state = 225; - this.declvar(); - this.state = 230; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 226; - this.match(painless_parser.COMMA); - this.state = 227; - this.declvar(); - } - } - this.state = 232; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public decltype(): DecltypeContext { - let _localctx: DecltypeContext = new DecltypeContext(this._ctx, this.state); - this.enterRule(_localctx, 24, painless_parser.RULE_decltype); - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - this.state = 233; - this.type(); - this.state = 238; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 20, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 234; - this.match(painless_parser.LBRACE); - this.state = 235; - this.match(painless_parser.RBRACE); - } - } - } - this.state = 240; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 20, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public type(): TypeContext { - let _localctx: TypeContext = new TypeContext(this._ctx, this.state); - this.enterRule(_localctx, 26, painless_parser.RULE_type); - try { - let _alt: number; - this.state = 251; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.DEF: - this.enterOuterAlt(_localctx, 1); - { - this.state = 241; - this.match(painless_parser.DEF); - } - break; - case painless_parser.PRIMITIVE: - this.enterOuterAlt(_localctx, 2); - { - this.state = 242; - this.match(painless_parser.PRIMITIVE); - } - break; - case painless_parser.ID: - this.enterOuterAlt(_localctx, 3); - { - this.state = 243; - this.match(painless_parser.ID); - this.state = 248; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 244; - this.match(painless_parser.DOT); - this.state = 245; - this.match(painless_parser.DOTID); - } - } - } - this.state = 250; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public declvar(): DeclvarContext { - let _localctx: DeclvarContext = new DeclvarContext(this._ctx, this.state); - this.enterRule(_localctx, 28, painless_parser.RULE_declvar); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 253; - this.match(painless_parser.ID); - this.state = 256; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === painless_parser.ASSIGN) { - { - this.state = 254; - this.match(painless_parser.ASSIGN); - this.state = 255; - this.expression(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public trap(): TrapContext { - let _localctx: TrapContext = new TrapContext(this._ctx, this.state); - this.enterRule(_localctx, 30, painless_parser.RULE_trap); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 258; - this.match(painless_parser.CATCH); - this.state = 259; - this.match(painless_parser.LP); - this.state = 260; - this.type(); - this.state = 261; - this.match(painless_parser.ID); - this.state = 262; - this.match(painless_parser.RP); - this.state = 263; - this.block(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public noncondexpression(): NoncondexpressionContext; - public noncondexpression(_p: number): NoncondexpressionContext; - // @RuleVersion(0) - public noncondexpression(_p?: number): NoncondexpressionContext { - if (_p === undefined) { - _p = 0; - } - - let _parentctx: ParserRuleContext = this._ctx; - let _parentState: number = this.state; - let _localctx: NoncondexpressionContext = new NoncondexpressionContext(this._ctx, _parentState); - let _prevctx: NoncondexpressionContext = _localctx; - let _startState: number = 32; - this.enterRecursionRule(_localctx, 32, painless_parser.RULE_noncondexpression, _p); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(_localctx, 1); - { - { - _localctx = new SingleContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; - - this.state = 266; - this.unary(); - } - this._ctx._stop = this._input.tryLT(-1); - this.state = 309; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 25, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - _prevctx = _localctx; - { - this.state = 307; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 24, this._ctx) ) { - case 1: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 268; - if (!(this.precpred(this._ctx, 13))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 13)"); - } - this.state = 269; - _la = this._input.LA(1); - if (!(((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (painless_parser.MUL - 31)) | (1 << (painless_parser.DIV - 31)) | (1 << (painless_parser.REM - 31)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 270; - this.noncondexpression(14); - } - break; - - case 2: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 271; - if (!(this.precpred(this._ctx, 12))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 12)"); - } - this.state = 272; - _la = this._input.LA(1); - if (!(_la === painless_parser.ADD || _la === painless_parser.SUB)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 273; - this.noncondexpression(13); - } - break; - - case 3: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 274; - if (!(this.precpred(this._ctx, 11))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 11)"); - } - this.state = 275; - _la = this._input.LA(1); - if (!(_la === painless_parser.FIND || _la === painless_parser.MATCH)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 276; - this.noncondexpression(12); - } - break; - - case 4: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 277; - if (!(this.precpred(this._ctx, 10))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 10)"); - } - this.state = 278; - _la = this._input.LA(1); - if (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (painless_parser.LSH - 36)) | (1 << (painless_parser.RSH - 36)) | (1 << (painless_parser.USH - 36)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 279; - this.noncondexpression(11); - } - break; - - case 5: - { - _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 280; - if (!(this.precpred(this._ctx, 9))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 9)"); - } - this.state = 281; - _la = this._input.LA(1); - if (!(((((_la - 39)) & ~0x1F) === 0 && ((1 << (_la - 39)) & ((1 << (painless_parser.LT - 39)) | (1 << (painless_parser.LTE - 39)) | (1 << (painless_parser.GT - 39)) | (1 << (painless_parser.GTE - 39)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 282; - this.noncondexpression(10); - } - break; - - case 6: - { - _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 283; - if (!(this.precpred(this._ctx, 7))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 7)"); - } - this.state = 284; - _la = this._input.LA(1); - if (!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & ((1 << (painless_parser.EQ - 43)) | (1 << (painless_parser.EQR - 43)) | (1 << (painless_parser.NE - 43)) | (1 << (painless_parser.NER - 43)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 285; - this.noncondexpression(8); - } - break; - - case 7: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 286; - if (!(this.precpred(this._ctx, 6))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 6)"); - } - this.state = 287; - this.match(painless_parser.BWAND); - this.state = 288; - this.noncondexpression(7); - } - break; - - case 8: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 289; - if (!(this.precpred(this._ctx, 5))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 5)"); - } - this.state = 290; - this.match(painless_parser.XOR); - this.state = 291; - this.noncondexpression(6); - } - break; - - case 9: - { - _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 292; - if (!(this.precpred(this._ctx, 4))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 4)"); - } - this.state = 293; - this.match(painless_parser.BWOR); - this.state = 294; - this.noncondexpression(5); - } - break; - - case 10: - { - _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 295; - if (!(this.precpred(this._ctx, 3))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 3)"); - } - this.state = 296; - this.match(painless_parser.BOOLAND); - this.state = 297; - this.noncondexpression(4); - } - break; - - case 11: - { - _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 298; - if (!(this.precpred(this._ctx, 2))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 2)"); - } - this.state = 299; - this.match(painless_parser.BOOLOR); - this.state = 300; - this.noncondexpression(3); - } - break; - - case 12: - { - _localctx = new ElvisContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 301; - if (!(this.precpred(this._ctx, 1))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); - } - this.state = 302; - this.match(painless_parser.ELVIS); - this.state = 303; - this.noncondexpression(1); - } - break; - - case 13: - { - _localctx = new InstanceofContext(new NoncondexpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); - this.state = 304; - if (!(this.precpred(this._ctx, 8))) { - throw new FailedPredicateException(this, "this.precpred(this._ctx, 8)"); - } - this.state = 305; - this.match(painless_parser.INSTANCEOF); - this.state = 306; - this.decltype(); - } - break; - } - } - } - this.state = 311; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 25, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(_parentctx); - } - return _localctx; - } - // @RuleVersion(0) - public expression(): ExpressionContext { - let _localctx: ExpressionContext = new ExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 34, painless_parser.RULE_expression); - let _la: number; - try { - this.state = 323; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { - case 1: - _localctx = new NonconditionalContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 312; - this.noncondexpression(0); - } - break; - - case 2: - _localctx = new ConditionalContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 313; - this.noncondexpression(0); - this.state = 314; - this.match(painless_parser.COND); - this.state = 315; - this.expression(); - this.state = 316; - this.match(painless_parser.COLON); - this.state = 317; - this.expression(); - } - break; - - case 3: - _localctx = new AssignmentContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 319; - this.noncondexpression(0); - this.state = 320; - _la = this._input.LA(1); - if (!(((((_la - 61)) & ~0x1F) === 0 && ((1 << (_la - 61)) & ((1 << (painless_parser.ASSIGN - 61)) | (1 << (painless_parser.AADD - 61)) | (1 << (painless_parser.ASUB - 61)) | (1 << (painless_parser.AMUL - 61)) | (1 << (painless_parser.ADIV - 61)) | (1 << (painless_parser.AREM - 61)) | (1 << (painless_parser.AAND - 61)) | (1 << (painless_parser.AXOR - 61)) | (1 << (painless_parser.AOR - 61)) | (1 << (painless_parser.ALSH - 61)) | (1 << (painless_parser.ARSH - 61)) | (1 << (painless_parser.AUSH - 61)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 321; - this.expression(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public unary(): UnaryContext { - let _localctx: UnaryContext = new UnaryContext(this._ctx, this.state); - this.enterRule(_localctx, 36, painless_parser.RULE_unary); - let _la: number; - try { - this.state = 330; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.INCR: - case painless_parser.DECR: - _localctx = new PreContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 325; - _la = this._input.LA(1); - if (!(_la === painless_parser.INCR || _la === painless_parser.DECR)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 326; - this.chain(); - } - break; - case painless_parser.ADD: - case painless_parser.SUB: - _localctx = new AddsubContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 327; - _la = this._input.LA(1); - if (!(_la === painless_parser.ADD || _la === painless_parser.SUB)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 328; - this.unary(); - } - break; - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.NEW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.ID: - _localctx = new NotaddsubContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 329; - this.unarynotaddsub(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public unarynotaddsub(): UnarynotaddsubContext { - let _localctx: UnarynotaddsubContext = new UnarynotaddsubContext(this._ctx, this.state); - this.enterRule(_localctx, 38, painless_parser.RULE_unarynotaddsub); - let _la: number; - try { - this.state = 339; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 28, this._ctx) ) { - case 1: - _localctx = new ReadContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 332; - this.chain(); - } - break; - - case 2: - _localctx = new PostContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 333; - this.chain(); - this.state = 334; - _la = this._input.LA(1); - if (!(_la === painless_parser.INCR || _la === painless_parser.DECR)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - - case 3: - _localctx = new NotContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 336; - _la = this._input.LA(1); - if (!(_la === painless_parser.BOOLNOT || _la === painless_parser.BWNOT)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 337; - this.unary(); - } - break; - - case 4: - _localctx = new CastContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 338; - this.castexpression(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public castexpression(): CastexpressionContext { - let _localctx: CastexpressionContext = new CastexpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 40, painless_parser.RULE_castexpression); - try { - this.state = 351; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 29, this._ctx) ) { - case 1: - _localctx = new PrimordefcastContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 341; - this.match(painless_parser.LP); - this.state = 342; - this.primordefcasttype(); - this.state = 343; - this.match(painless_parser.RP); - this.state = 344; - this.unary(); - } - break; - - case 2: - _localctx = new RefcastContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 346; - this.match(painless_parser.LP); - this.state = 347; - this.refcasttype(); - this.state = 348; - this.match(painless_parser.RP); - this.state = 349; - this.unarynotaddsub(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public primordefcasttype(): PrimordefcasttypeContext { - let _localctx: PrimordefcasttypeContext = new PrimordefcasttypeContext(this._ctx, this.state); - this.enterRule(_localctx, 42, painless_parser.RULE_primordefcasttype); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 353; - _la = this._input.LA(1); - if (!(_la === painless_parser.PRIMITIVE || _la === painless_parser.DEF)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public refcasttype(): RefcasttypeContext { - let _localctx: RefcasttypeContext = new RefcasttypeContext(this._ctx, this.state); - this.enterRule(_localctx, 44, painless_parser.RULE_refcasttype); - let _la: number; - try { - this.state = 384; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.DEF: - this.enterOuterAlt(_localctx, 1); - { - this.state = 355; - this.match(painless_parser.DEF); - this.state = 358; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 356; - this.match(painless_parser.LBRACE); - this.state = 357; - this.match(painless_parser.RBRACE); - } - } - this.state = 360; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la === painless_parser.LBRACE); - } - break; - case painless_parser.PRIMITIVE: - this.enterOuterAlt(_localctx, 2); - { - this.state = 362; - this.match(painless_parser.PRIMITIVE); - this.state = 365; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 363; - this.match(painless_parser.LBRACE); - this.state = 364; - this.match(painless_parser.RBRACE); - } - } - this.state = 367; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la === painless_parser.LBRACE); - } - break; - case painless_parser.ID: - this.enterOuterAlt(_localctx, 3); - { - this.state = 369; - this.match(painless_parser.ID); - this.state = 374; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.DOT) { - { - { - this.state = 370; - this.match(painless_parser.DOT); - this.state = 371; - this.match(painless_parser.DOTID); - } - } - this.state = 376; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 381; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.LBRACE) { - { - { - this.state = 377; - this.match(painless_parser.LBRACE); - this.state = 378; - this.match(painless_parser.RBRACE); - } - } - this.state = 383; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public chain(): ChainContext { - let _localctx: ChainContext = new ChainContext(this._ctx, this.state); - this.enterRule(_localctx, 46, painless_parser.RULE_chain); - try { - let _alt: number; - this.state = 394; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) { - case 1: - _localctx = new DynamicContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 386; - this.primary(); - this.state = 390; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 387; - this.postfix(); - } - } - } - this.state = 392; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); - } - } - break; - - case 2: - _localctx = new NewarrayContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 393; - this.arrayinitializer(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public primary(): PrimaryContext { - let _localctx: PrimaryContext = new PrimaryContext(this._ctx, this.state); - this.enterRule(_localctx, 48, painless_parser.RULE_primary); - let _la: number; - try { - this.state = 415; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 37, this._ctx) ) { - case 1: - _localctx = new PrecedenceContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 396; - this.match(painless_parser.LP); - this.state = 397; - this.expression(); - this.state = 398; - this.match(painless_parser.RP); - } - break; - - case 2: - _localctx = new NumericContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 400; - _la = this._input.LA(1); - if (!(((((_la - 73)) & ~0x1F) === 0 && ((1 << (_la - 73)) & ((1 << (painless_parser.OCTAL - 73)) | (1 << (painless_parser.HEX - 73)) | (1 << (painless_parser.INTEGER - 73)) | (1 << (painless_parser.DECIMAL - 73)))) !== 0))) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - - case 3: - _localctx = new TrueContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 401; - this.match(painless_parser.TRUE); - } - break; - - case 4: - _localctx = new FalseContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 402; - this.match(painless_parser.FALSE); - } - break; - - case 5: - _localctx = new NullContext(_localctx); - this.enterOuterAlt(_localctx, 5); - { - this.state = 403; - this.match(painless_parser.NULL); - } - break; - - case 6: - _localctx = new StringContext(_localctx); - this.enterOuterAlt(_localctx, 6); - { - this.state = 404; - this.match(painless_parser.STRING); - } - break; - - case 7: - _localctx = new RegexContext(_localctx); - this.enterOuterAlt(_localctx, 7); - { - this.state = 405; - this.match(painless_parser.REGEX); - } - break; - - case 8: - _localctx = new ListinitContext(_localctx); - this.enterOuterAlt(_localctx, 8); - { - this.state = 406; - this.listinitializer(); - } - break; - - case 9: - _localctx = new MapinitContext(_localctx); - this.enterOuterAlt(_localctx, 9); - { - this.state = 407; - this.mapinitializer(); - } - break; - - case 10: - _localctx = new VariableContext(_localctx); - this.enterOuterAlt(_localctx, 10); - { - this.state = 408; - this.match(painless_parser.ID); - } - break; - - case 11: - _localctx = new CalllocalContext(_localctx); - this.enterOuterAlt(_localctx, 11); - { - this.state = 409; - _la = this._input.LA(1); - if (!(_la === painless_parser.DOLLAR || _la === painless_parser.ID)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 410; - this.arguments(); - } - break; - - case 12: - _localctx = new NewobjectContext(_localctx); - this.enterOuterAlt(_localctx, 12); - { - this.state = 411; - this.match(painless_parser.NEW); - this.state = 412; - this.type(); - this.state = 413; - this.arguments(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public postfix(): PostfixContext { - let _localctx: PostfixContext = new PostfixContext(this._ctx, this.state); - this.enterRule(_localctx, 50, painless_parser.RULE_postfix); - try { - this.state = 420; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 417; - this.callinvoke(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 418; - this.fieldaccess(); - } - break; - - case 3: - this.enterOuterAlt(_localctx, 3); - { - this.state = 419; - this.braceaccess(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public postdot(): PostdotContext { - let _localctx: PostdotContext = new PostdotContext(this._ctx, this.state); - this.enterRule(_localctx, 52, painless_parser.RULE_postdot); - try { - this.state = 424; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 39, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 422; - this.callinvoke(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 423; - this.fieldaccess(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public callinvoke(): CallinvokeContext { - let _localctx: CallinvokeContext = new CallinvokeContext(this._ctx, this.state); - this.enterRule(_localctx, 54, painless_parser.RULE_callinvoke); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 426; - _la = this._input.LA(1); - if (!(_la === painless_parser.DOT || _la === painless_parser.NSDOT)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 427; - this.match(painless_parser.DOTID); - this.state = 428; - this.arguments(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public fieldaccess(): FieldaccessContext { - let _localctx: FieldaccessContext = new FieldaccessContext(this._ctx, this.state); - this.enterRule(_localctx, 56, painless_parser.RULE_fieldaccess); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 430; - _la = this._input.LA(1); - if (!(_la === painless_parser.DOT || _la === painless_parser.NSDOT)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 431; - _la = this._input.LA(1); - if (!(_la === painless_parser.DOTINTEGER || _la === painless_parser.DOTID)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public braceaccess(): BraceaccessContext { - let _localctx: BraceaccessContext = new BraceaccessContext(this._ctx, this.state); - this.enterRule(_localctx, 58, painless_parser.RULE_braceaccess); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 433; - this.match(painless_parser.LBRACE); - this.state = 434; - this.expression(); - this.state = 435; - this.match(painless_parser.RBRACE); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public arrayinitializer(): ArrayinitializerContext { - let _localctx: ArrayinitializerContext = new ArrayinitializerContext(this._ctx, this.state); - this.enterRule(_localctx, 60, painless_parser.RULE_arrayinitializer); - let _la: number; - try { - let _alt: number; - this.state = 478; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { - case 1: - _localctx = new NewstandardarrayContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 437; - this.match(painless_parser.NEW); - this.state = 438; - this.type(); - this.state = 443; - this._errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - this.state = 439; - this.match(painless_parser.LBRACE); - this.state = 440; - this.expression(); - this.state = 441; - this.match(painless_parser.RBRACE); - } - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 445; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 40, this._ctx); - } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); - this.state = 454; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { - case 1: - { - this.state = 447; - this.postdot(); - this.state = 451; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 448; - this.postfix(); - } - } - } - this.state = 453; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); - } - } - break; - } - } - break; - - case 2: - _localctx = new NewinitializedarrayContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 456; - this.match(painless_parser.NEW); - this.state = 457; - this.type(); - this.state = 458; - this.match(painless_parser.LBRACE); - this.state = 459; - this.match(painless_parser.RBRACE); - this.state = 460; - this.match(painless_parser.LBRACK); - this.state = 469; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 461; - this.expression(); - this.state = 466; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 462; - this.match(painless_parser.COMMA); - this.state = 463; - this.expression(); - } - } - this.state = 468; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 471; - this.match(painless_parser.RBRACK); - this.state = 475; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 472; - this.postfix(); - } - } - } - this.state = 477; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); - } - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public listinitializer(): ListinitializerContext { - let _localctx: ListinitializerContext = new ListinitializerContext(this._ctx, this.state); - this.enterRule(_localctx, 62, painless_parser.RULE_listinitializer); - let _la: number; - try { - this.state = 493; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 480; - this.match(painless_parser.LBRACE); - this.state = 481; - this.expression(); - this.state = 486; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 482; - this.match(painless_parser.COMMA); - this.state = 483; - this.expression(); - } - } - this.state = 488; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 489; - this.match(painless_parser.RBRACE); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 491; - this.match(painless_parser.LBRACE); - this.state = 492; - this.match(painless_parser.RBRACE); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public mapinitializer(): MapinitializerContext { - let _localctx: MapinitializerContext = new MapinitializerContext(this._ctx, this.state); - this.enterRule(_localctx, 64, painless_parser.RULE_mapinitializer); - let _la: number; - try { - this.state = 509; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 50, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 495; - this.match(painless_parser.LBRACE); - this.state = 496; - this.maptoken(); - this.state = 501; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 497; - this.match(painless_parser.COMMA); - this.state = 498; - this.maptoken(); - } - } - this.state = 503; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 504; - this.match(painless_parser.RBRACE); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 506; - this.match(painless_parser.LBRACE); - this.state = 507; - this.match(painless_parser.COLON); - this.state = 508; - this.match(painless_parser.RBRACE); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public maptoken(): MaptokenContext { - let _localctx: MaptokenContext = new MaptokenContext(this._ctx, this.state); - this.enterRule(_localctx, 66, painless_parser.RULE_maptoken); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 511; - this.expression(); - this.state = 512; - this.match(painless_parser.COLON); - this.state = 513; - this.expression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public arguments(): ArgumentsContext { - let _localctx: ArgumentsContext = new ArgumentsContext(this._ctx, this.state); - this.enterRule(_localctx, 68, painless_parser.RULE_arguments); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - { - this.state = 515; - this.match(painless_parser.LP); - this.state = 524; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DOLLAR - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.THIS - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & ((1 << (painless_parser.INCR - 59)) | (1 << (painless_parser.DECR - 59)) | (1 << (painless_parser.OCTAL - 59)) | (1 << (painless_parser.HEX - 59)) | (1 << (painless_parser.INTEGER - 59)) | (1 << (painless_parser.DECIMAL - 59)) | (1 << (painless_parser.STRING - 59)) | (1 << (painless_parser.REGEX - 59)) | (1 << (painless_parser.TRUE - 59)) | (1 << (painless_parser.FALSE - 59)) | (1 << (painless_parser.NULL - 59)) | (1 << (painless_parser.PRIMITIVE - 59)) | (1 << (painless_parser.DEF - 59)) | (1 << (painless_parser.ID - 59)))) !== 0)) { - { - this.state = 516; - this.argument(); - this.state = 521; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 517; - this.match(painless_parser.COMMA); - this.state = 518; - this.argument(); - } - } - this.state = 523; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 526; - this.match(painless_parser.RP); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public argument(): ArgumentContext { - let _localctx: ArgumentContext = new ArgumentContext(this._ctx, this.state); - this.enterRule(_localctx, 70, painless_parser.RULE_argument); - try { - this.state = 531; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 53, this._ctx) ) { - case 1: - this.enterOuterAlt(_localctx, 1); - { - this.state = 528; - this.expression(); - } - break; - - case 2: - this.enterOuterAlt(_localctx, 2); - { - this.state = 529; - this.lambda(); - } - break; - - case 3: - this.enterOuterAlt(_localctx, 3); - { - this.state = 530; - this.funcref(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public lambda(): LambdaContext { - let _localctx: LambdaContext = new LambdaContext(this._ctx, this.state); - this.enterRule(_localctx, 72, painless_parser.RULE_lambda); - let _la: number; - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 546; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.PRIMITIVE: - case painless_parser.DEF: - case painless_parser.ID: - { - this.state = 533; - this.lamtype(); - } - break; - case painless_parser.LP: - { - this.state = 534; - this.match(painless_parser.LP); - this.state = 543; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & ((1 << (painless_parser.PRIMITIVE - 82)) | (1 << (painless_parser.DEF - 82)) | (1 << (painless_parser.ID - 82)))) !== 0)) { - { - this.state = 535; - this.lamtype(); - this.state = 540; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === painless_parser.COMMA) { - { - { - this.state = 536; - this.match(painless_parser.COMMA); - this.state = 537; - this.lamtype(); - } - } - this.state = 542; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 545; - this.match(painless_parser.RP); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 548; - this.match(painless_parser.ARROW); - this.state = 551; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case painless_parser.LBRACK: - { - this.state = 549; - this.block(); - } - break; - case painless_parser.LBRACE: - case painless_parser.LP: - case painless_parser.DOLLAR: - case painless_parser.NEW: - case painless_parser.BOOLNOT: - case painless_parser.BWNOT: - case painless_parser.ADD: - case painless_parser.SUB: - case painless_parser.INCR: - case painless_parser.DECR: - case painless_parser.OCTAL: - case painless_parser.HEX: - case painless_parser.INTEGER: - case painless_parser.DECIMAL: - case painless_parser.STRING: - case painless_parser.REGEX: - case painless_parser.TRUE: - case painless_parser.FALSE: - case painless_parser.NULL: - case painless_parser.ID: - { - this.state = 550; - this.expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public lamtype(): LamtypeContext { - let _localctx: LamtypeContext = new LamtypeContext(this._ctx, this.state); - this.enterRule(_localctx, 74, painless_parser.RULE_lamtype); - try { - this.enterOuterAlt(_localctx, 1); - { - this.state = 554; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) { - case 1: - { - this.state = 553; - this.decltype(); - } - break; - } - this.state = 556; - this.match(painless_parser.ID); - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - // @RuleVersion(0) - public funcref(): FuncrefContext { - let _localctx: FuncrefContext = new FuncrefContext(this._ctx, this.state); - this.enterRule(_localctx, 76, painless_parser.RULE_funcref); - try { - this.state = 569; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 59, this._ctx) ) { - case 1: - _localctx = new ClassfuncrefContext(_localctx); - this.enterOuterAlt(_localctx, 1); - { - this.state = 558; - this.decltype(); - this.state = 559; - this.match(painless_parser.REF); - this.state = 560; - this.match(painless_parser.ID); - } - break; - - case 2: - _localctx = new ConstructorfuncrefContext(_localctx); - this.enterOuterAlt(_localctx, 2); - { - this.state = 562; - this.decltype(); - this.state = 563; - this.match(painless_parser.REF); - this.state = 564; - this.match(painless_parser.NEW); - } - break; - - case 3: - _localctx = new LocalfuncrefContext(_localctx); - this.enterOuterAlt(_localctx, 3); - { - this.state = 566; - this.match(painless_parser.THIS); - this.state = 567; - this.match(painless_parser.REF); - this.state = 568; - this.match(painless_parser.ID); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - _localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return _localctx; - } - - public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 4: - return this.rstatement_sempred(_localctx as RstatementContext, predIndex); - - case 16: - return this.noncondexpression_sempred(_localctx as NoncondexpressionContext, predIndex); - } - return true; - } - private rstatement_sempred(_localctx: RstatementContext, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this._input.LA(1) != painless_parser.ELSE ; - } - return true; - } - private noncondexpression_sempred(_localctx: NoncondexpressionContext, predIndex: number): boolean { - switch (predIndex) { - case 1: - return this.precpred(this._ctx, 13); - - case 2: - return this.precpred(this._ctx, 12); - - case 3: - return this.precpred(this._ctx, 11); - - case 4: - return this.precpred(this._ctx, 10); - - case 5: - return this.precpred(this._ctx, 9); - - case 6: - return this.precpred(this._ctx, 7); - - case 7: - return this.precpred(this._ctx, 6); - - case 8: - return this.precpred(this._ctx, 5); - - case 9: - return this.precpred(this._ctx, 4); - - case 10: - return this.precpred(this._ctx, 3); - - case 11: - return this.precpred(this._ctx, 2); - - case 12: - return this.precpred(this._ctx, 1); - - case 13: - return this.precpred(this._ctx, 8); - } - return true; - } - - private static readonly _serializedATNSegments: number = 2; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03X\u023E\x04\x02" + - "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\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\t\r\x04" + - "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + - "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + - "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + - "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + - "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x03\x02\x07\x02R\n\x02\f" + - "\x02\x0E\x02U\v\x02\x03\x02\x07\x02X\n\x02\f\x02\x0E\x02[\v\x02\x03\x02" + - "\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04" + - "\x03\x04\x03\x04\x03\x04\x03\x04\x07\x04k\n\x04\f\x04\x0E\x04n\v\x04\x05" + - "\x04p\n\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05x\n" + - "\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x05" + - "\x06\x82\n\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x05\x06" + - "\x8A\n\x06\x03\x06\x03\x06\x03\x06\x05\x06\x8F\n\x06\x03\x06\x03\x06\x05" + - "\x06\x93\n\x06\x03\x06\x03\x06\x05\x06\x97\n\x06\x03\x06\x03\x06\x03\x06" + - "\x05\x06\x9C\n\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" + - "\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" + - "\x06\x03\x06\x03\x06\x03\x06\x03\x06\x06\x06\xB2\n\x06\r\x06\x0E\x06\xB3" + - "\x05\x06\xB6\n\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + - "\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07\xC4\n\x07\x03\x07" + - "\x03\x07\x03\x07\x05\x07\xC9\n\x07\x03\b\x03\b\x05\b\xCD\n\b\x03\t\x03" + - "\t\x07\t\xD1\n\t\f\t\x0E\t\xD4\v\t\x03\t\x05\t\xD7\n\t\x03\t\x03\t\x03" + - "\n\x03\n\x03\v\x03\v\x05\v\xDF\n\v\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r" + - "\x07\r\xE7\n\r\f\r\x0E\r\xEA\v\r\x03\x0E\x03\x0E\x03\x0E\x07\x0E\xEF\n" + - "\x0E\f\x0E\x0E\x0E\xF2\v\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x07" + - "\x0F\xF9\n\x0F\f\x0F\x0E\x0F\xFC\v\x0F\x05\x0F\xFE\n\x0F\x03\x10\x03\x10" + - "\x03\x10\x05\x10\u0103\n\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" + - "\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + - "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + - "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + - "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + - "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x07\x12\u0136" + - "\n\x12\f\x12\x0E\x12\u0139\v\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + - "\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u0146\n\x13\x03" + - "\x14\x03\x14\x03\x14\x03\x14\x03\x14\x05\x14\u014D\n\x14\x03\x15\x03\x15" + - "\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u0156\n\x15\x03\x16\x03" + - "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05" + - "\x16\u0162\n\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x06\x18\u0169" + - "\n\x18\r\x18\x0E\x18\u016A\x03\x18\x03\x18\x03\x18\x06\x18\u0170\n\x18" + - "\r\x18\x0E\x18\u0171\x03\x18\x03\x18\x03\x18\x07\x18\u0177\n\x18\f\x18" + - "\x0E\x18\u017A\v\x18\x03\x18\x03\x18\x07\x18\u017E\n\x18\f\x18\x0E\x18" + - "\u0181\v\x18\x05\x18\u0183\n\x18\x03\x19\x03\x19\x07\x19\u0187\n\x19\f" + - "\x19\x0E\x19\u018A\v\x19\x03\x19\x05\x19\u018D\n\x19\x03\x1A\x03\x1A\x03" + - "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03" + - "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x05\x1A\u01A2" + - "\n\x1A\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u01A7\n\x1B\x03\x1C\x03\x1C\x05" + - "\x1C\u01AB\n\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E" + - "\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x06 \u01BE" + - "\n \r \x0E \u01BF\x03 \x03 \x07 \u01C4\n \f \x0E \u01C7\v \x05 \u01C9" + - "\n \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x07 \u01D3\n \f \x0E \u01D6" + - "\v \x05 \u01D8\n \x03 \x03 \x07 \u01DC\n \f \x0E \u01DF\v \x05 \u01E1" + - "\n \x03!\x03!\x03!\x03!\x07!\u01E7\n!\f!\x0E!\u01EA\v!\x03!\x03!\x03!" + - "\x03!\x05!\u01F0\n!\x03\"\x03\"\x03\"\x03\"\x07\"\u01F6\n\"\f\"\x0E\"" + - "\u01F9\v\"\x03\"\x03\"\x03\"\x03\"\x03\"\x05\"\u0200\n\"\x03#\x03#\x03" + - "#\x03#\x03$\x03$\x03$\x03$\x07$\u020A\n$\f$\x0E$\u020D\v$\x05$\u020F\n" + - "$\x03$\x03$\x03%\x03%\x03%\x05%\u0216\n%\x03&\x03&\x03&\x03&\x03&\x07" + - "&\u021D\n&\f&\x0E&\u0220\v&\x05&\u0222\n&\x03&\x05&\u0225\n&\x03&\x03" + - "&\x03&\x05&\u022A\n&\x03\'\x05\'\u022D\n\'\x03\'\x03\'\x03(\x03(\x03(" + - "\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x05(\u023C\n(\x03(\x02\x02\x03" + - "\")\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02" + - "\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02" + - "(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02" + - "D\x02F\x02H\x02J\x02L\x02N\x02\x02\x11\x03\x03\x0F\x0F\x03\x02!#\x03\x02" + - "$%\x03\x02;<\x03\x02&(\x03\x02),\x03\x02-0\x03\x02?J\x03\x02=>\x03\x02" + - "\x1F \x03\x02TU\x03\x02KN\x04\x02\v\vVV\x03\x02\f\r\x03\x02WX\x02\u0279" + - "\x02S\x03\x02\x02\x02\x04^\x03\x02\x02\x02\x06c\x03\x02\x02\x02\bw\x03" + - "\x02\x02\x02\n\xB5\x03\x02\x02\x02\f\xC8\x03\x02\x02\x02\x0E\xCC\x03\x02" + - "\x02\x02\x10\xCE\x03\x02\x02\x02\x12\xDA\x03\x02\x02\x02\x14\xDE\x03\x02" + - "\x02\x02\x16\xE0\x03\x02\x02\x02\x18\xE2\x03\x02\x02\x02\x1A\xEB\x03\x02" + - "\x02\x02\x1C\xFD\x03\x02\x02\x02\x1E\xFF\x03\x02\x02\x02 \u0104\x03\x02" + - "\x02\x02\"\u010B\x03\x02\x02\x02$\u0145\x03\x02\x02\x02&\u014C\x03\x02" + - "\x02\x02(\u0155\x03\x02\x02\x02*\u0161\x03\x02\x02\x02,\u0163\x03\x02" + - "\x02\x02.\u0182\x03\x02\x02\x020\u018C\x03\x02\x02\x022\u01A1\x03\x02" + - "\x02\x024\u01A6\x03\x02\x02\x026\u01AA\x03\x02\x02\x028\u01AC\x03\x02" + - "\x02\x02:\u01B0\x03\x02\x02\x02<\u01B3\x03\x02\x02\x02>\u01E0\x03\x02" + - "\x02\x02@\u01EF\x03\x02\x02\x02B\u01FF\x03\x02\x02\x02D\u0201\x03\x02" + - "\x02\x02F\u0205\x03\x02\x02\x02H\u0215\x03\x02\x02\x02J\u0224\x03\x02" + - "\x02\x02L\u022C\x03\x02\x02\x02N\u023B\x03\x02\x02\x02PR\x05\x04\x03\x02" + - "QP\x03\x02\x02\x02RU\x03\x02\x02\x02SQ\x03\x02\x02\x02ST\x03\x02\x02\x02" + - "TY\x03\x02\x02\x02US\x03\x02\x02\x02VX\x05\b\x05\x02WV\x03\x02\x02\x02" + - "X[\x03\x02\x02\x02YW\x03\x02\x02\x02YZ\x03\x02\x02\x02Z\\\x03\x02\x02" + - "\x02[Y\x03\x02\x02\x02\\]\x07\x02\x02\x03]\x03\x03\x02\x02\x02^_\x05\x1A" + - "\x0E\x02_`\x07V\x02\x02`a\x05\x06\x04\x02ab\x05\x10\t\x02b\x05\x03\x02" + - "\x02\x02co\x07\t\x02\x02de\x05\x1A\x0E\x02el\x07V\x02\x02fg\x07\x0E\x02" + - "\x02gh\x05\x1A\x0E\x02hi\x07V\x02\x02ik\x03\x02\x02\x02jf\x03\x02\x02" + - "\x02kn\x03\x02\x02\x02lj\x03\x02\x02\x02lm\x03\x02\x02\x02mp\x03\x02\x02" + - "\x02nl\x03\x02\x02\x02od\x03\x02\x02\x02op\x03\x02\x02\x02pq\x03\x02\x02" + - "\x02qr\x07\n\x02\x02r\x07\x03\x02\x02\x02sx\x05\n\x06\x02tu\x05\f\x07" + - "\x02uv\t\x02\x02\x02vx\x03\x02\x02\x02ws\x03\x02\x02\x02wt\x03\x02\x02" + - "\x02x\t\x03\x02\x02\x02yz\x07\x10\x02\x02z{\x07\t\x02\x02{|\x05$\x13\x02" + - "|}\x07\n\x02\x02}\x81\x05\x0E\b\x02~\x7F\x07\x12\x02\x02\x7F\x82\x05\x0E" + - "\b\x02\x80\x82\x06\x06\x02\x02\x81~\x03\x02\x02\x02\x81\x80\x03\x02\x02" + - "\x02\x82\xB6\x03\x02\x02\x02\x83\x84\x07\x13\x02\x02\x84\x85\x07\t\x02" + - "\x02\x85\x86\x05$\x13\x02\x86\x89\x07\n\x02\x02\x87\x8A\x05\x0E\b\x02" + - "\x88\x8A\x05\x12\n\x02\x89\x87\x03\x02\x02\x02\x89\x88\x03\x02\x02\x02" + - "\x8A\xB6\x03\x02\x02\x02\x8B\x8C\x07\x15\x02\x02\x8C\x8E\x07\t\x02\x02" + - "\x8D\x8F\x05\x14\v\x02\x8E\x8D\x03\x02\x02\x02\x8E\x8F\x03\x02\x02\x02" + - "\x8F\x90\x03\x02\x02\x02\x90\x92\x07\x0F\x02\x02\x91\x93\x05$\x13\x02" + - "\x92\x91\x03\x02\x02\x02\x92\x93\x03\x02\x02\x02\x93\x94\x03\x02\x02\x02" + - "\x94\x96\x07\x0F\x02\x02\x95\x97\x05\x16\f\x02\x96\x95\x03\x02\x02\x02" + - "\x96\x97\x03\x02\x02\x02\x97\x98\x03\x02\x02\x02\x98\x9B\x07\n\x02\x02" + - "\x99\x9C\x05\x0E\b\x02\x9A\x9C\x05\x12\n\x02\x9B\x99\x03\x02\x02\x02\x9B" + - "\x9A\x03\x02\x02\x02\x9C\xB6\x03\x02\x02\x02\x9D\x9E\x07\x15\x02\x02\x9E" + - "\x9F\x07\t\x02\x02\x9F\xA0\x05\x1A\x0E\x02\xA0\xA1\x07V\x02\x02\xA1\xA2" + - "\x077\x02\x02\xA2\xA3\x05$\x13\x02\xA3\xA4\x07\n\x02\x02\xA4\xA5\x05\x0E" + - "\b\x02\xA5\xB6\x03\x02\x02\x02\xA6\xA7\x07\x15\x02\x02\xA7\xA8\x07\t\x02" + - "\x02\xA8\xA9\x07V\x02\x02\xA9\xAA\x07\x11\x02\x02\xAA\xAB\x05$\x13\x02" + - "\xAB\xAC\x07\n\x02\x02\xAC\xAD\x05\x0E\b\x02\xAD\xB6\x03\x02\x02\x02\xAE" + - "\xAF\x07\x1A\x02\x02\xAF\xB1\x05\x10\t\x02\xB0\xB2\x05 \x11\x02\xB1\xB0" + - "\x03\x02\x02\x02\xB2\xB3\x03\x02\x02\x02\xB3\xB1\x03\x02\x02\x02\xB3\xB4" + - "\x03\x02\x02\x02\xB4\xB6\x03\x02\x02\x02\xB5y\x03\x02\x02\x02\xB5\x83" + - "\x03\x02\x02\x02\xB5\x8B\x03\x02\x02\x02\xB5\x9D\x03\x02\x02\x02\xB5\xA6" + - "\x03\x02\x02\x02\xB5\xAE\x03\x02\x02\x02\xB6\v\x03\x02\x02\x02\xB7\xB8" + - "\x07\x14\x02\x02\xB8\xB9\x05\x10\t\x02\xB9\xBA\x07\x13\x02\x02\xBA\xBB" + - "\x07\t\x02\x02\xBB\xBC\x05$\x13\x02\xBC\xBD\x07\n\x02\x02\xBD\xC9\x03" + - "\x02\x02\x02\xBE\xC9\x05\x18\r\x02\xBF\xC9\x07\x16\x02\x02\xC0\xC9\x07" + - "\x17\x02\x02\xC1\xC3\x07\x18\x02\x02\xC2\xC4\x05$\x13\x02\xC3\xC2\x03" + - "\x02\x02\x02\xC3\xC4\x03\x02\x02\x02\xC4\xC9\x03\x02\x02\x02\xC5\xC6\x07" + - "\x1C\x02\x02\xC6\xC9\x05$\x13\x02\xC7\xC9\x05$\x13\x02\xC8\xB7\x03\x02" + - "\x02\x02\xC8\xBE\x03\x02\x02\x02\xC8\xBF\x03\x02\x02\x02\xC8\xC0\x03\x02" + - "\x02\x02\xC8\xC1\x03\x02\x02\x02\xC8\xC5\x03\x02\x02\x02\xC8\xC7\x03\x02" + - "\x02\x02\xC9\r\x03\x02\x02\x02\xCA\xCD\x05\x10\t\x02\xCB\xCD\x05\b\x05" + - "\x02\xCC\xCA\x03\x02\x02\x02\xCC\xCB\x03\x02\x02\x02\xCD\x0F\x03\x02\x02" + - "\x02\xCE\xD2\x07\x05\x02\x02\xCF\xD1\x05\b\x05\x02\xD0\xCF\x03\x02\x02" + - "\x02\xD1\xD4\x03\x02\x02\x02\xD2\xD0\x03\x02\x02\x02\xD2\xD3\x03\x02\x02" + - "\x02\xD3\xD6\x03\x02\x02\x02\xD4\xD2\x03\x02\x02\x02\xD5\xD7\x05\f\x07" + - "\x02\xD6\xD5\x03\x02\x02\x02\xD6\xD7\x03\x02\x02\x02\xD7\xD8\x03\x02\x02" + - "\x02\xD8\xD9\x07\x06\x02\x02\xD9\x11\x03\x02\x02\x02\xDA\xDB\x07\x0F\x02" + - "\x02\xDB\x13\x03\x02\x02\x02\xDC\xDF\x05\x18\r\x02\xDD\xDF\x05$\x13\x02" + - "\xDE\xDC\x03\x02\x02\x02\xDE\xDD\x03\x02\x02\x02\xDF\x15\x03\x02\x02\x02" + - "\xE0\xE1\x05$\x13\x02\xE1\x17\x03\x02\x02\x02\xE2\xE3\x05\x1A\x0E\x02" + - "\xE3\xE8\x05\x1E\x10\x02\xE4\xE5\x07\x0E\x02\x02\xE5\xE7\x05\x1E\x10\x02" + - "\xE6\xE4\x03\x02\x02\x02\xE7\xEA\x03\x02\x02\x02\xE8\xE6\x03\x02\x02\x02" + - "\xE8\xE9\x03\x02\x02\x02\xE9\x19\x03\x02\x02\x02\xEA\xE8\x03\x02\x02\x02" + - "\xEB\xF0\x05\x1C\x0F\x02\xEC\xED\x07\x07\x02\x02\xED\xEF\x07\b\x02\x02" + - "\xEE\xEC\x03\x02\x02\x02\xEF\xF2\x03\x02\x02\x02\xF0\xEE\x03\x02\x02\x02" + - "\xF0\xF1\x03\x02\x02\x02\xF1\x1B\x03\x02\x02\x02\xF2\xF0\x03\x02\x02\x02" + - "\xF3\xFE\x07U\x02\x02\xF4\xFE\x07T\x02\x02\xF5\xFA\x07V\x02\x02\xF6\xF7" + - "\x07\f\x02\x02\xF7\xF9\x07X\x02\x02\xF8\xF6\x03\x02\x02\x02\xF9\xFC\x03" + - "\x02\x02\x02\xFA\xF8\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\xFE\x03" + - "\x02\x02\x02\xFC\xFA\x03\x02\x02\x02\xFD\xF3\x03\x02\x02\x02\xFD\xF4\x03" + - "\x02\x02\x02\xFD\xF5\x03\x02\x02\x02\xFE\x1D\x03\x02\x02\x02\xFF\u0102" + - "\x07V\x02\x02\u0100\u0101\x07?\x02\x02\u0101\u0103\x05$\x13\x02\u0102" + - "\u0100\x03\x02\x02\x02\u0102\u0103\x03\x02\x02\x02\u0103\x1F\x03\x02\x02" + - "\x02\u0104\u0105\x07\x1B\x02\x02\u0105\u0106\x07\t\x02\x02\u0106\u0107" + - "\x05\x1C\x0F\x02\u0107\u0108\x07V\x02\x02\u0108\u0109\x07\n\x02\x02\u0109" + - "\u010A\x05\x10\t\x02\u010A!\x03\x02\x02\x02\u010B\u010C\b\x12\x01\x02" + - "\u010C\u010D\x05&\x14\x02\u010D\u0137\x03\x02\x02\x02\u010E\u010F\f\x0F" + - "\x02\x02\u010F\u0110\t\x03\x02\x02\u0110\u0136\x05\"\x12\x10\u0111\u0112" + - "\f\x0E\x02\x02\u0112\u0113\t\x04\x02\x02\u0113\u0136\x05\"\x12\x0F\u0114" + - "\u0115\f\r\x02\x02\u0115\u0116\t\x05\x02\x02\u0116\u0136\x05\"\x12\x0E" + - "\u0117\u0118\f\f\x02\x02\u0118\u0119\t\x06\x02\x02\u0119\u0136\x05\"\x12" + - "\r\u011A\u011B\f\v\x02\x02\u011B\u011C\t\x07\x02\x02\u011C\u0136\x05\"" + - "\x12\f\u011D\u011E\f\t\x02\x02\u011E\u011F\t\b\x02\x02\u011F\u0136\x05" + - "\"\x12\n\u0120\u0121\f\b\x02\x02\u0121\u0122\x071\x02\x02\u0122\u0136" + - "\x05\"\x12\t\u0123\u0124\f\x07\x02\x02\u0124\u0125\x072\x02\x02\u0125" + - "\u0136\x05\"\x12\b\u0126\u0127\f\x06\x02\x02\u0127\u0128\x073\x02\x02" + - "\u0128\u0136\x05\"\x12\x07\u0129\u012A\f\x05\x02\x02\u012A\u012B\x074" + - "\x02\x02\u012B\u0136\x05\"\x12\x06\u012C\u012D\f\x04\x02\x02\u012D\u012E" + - "\x075\x02\x02\u012E\u0136\x05\"\x12\x05\u012F\u0130\f\x03\x02\x02\u0130" + - "\u0131\x078\x02\x02\u0131\u0136\x05\"\x12\x03\u0132\u0133\f\n\x02\x02" + - "\u0133\u0134\x07\x1E\x02\x02\u0134\u0136\x05\x1A\x0E\x02\u0135\u010E\x03" + - "\x02\x02\x02\u0135\u0111\x03\x02\x02\x02\u0135\u0114\x03\x02\x02\x02\u0135" + - "\u0117\x03\x02\x02\x02\u0135\u011A\x03\x02\x02\x02\u0135\u011D\x03\x02" + - "\x02\x02\u0135\u0120\x03\x02\x02\x02\u0135\u0123\x03\x02\x02\x02\u0135" + - "\u0126\x03\x02\x02\x02\u0135\u0129\x03\x02\x02\x02\u0135\u012C\x03\x02" + - "\x02\x02\u0135\u012F\x03\x02\x02\x02\u0135\u0132\x03\x02\x02\x02\u0136" + - "\u0139\x03\x02\x02\x02\u0137\u0135\x03\x02\x02\x02\u0137\u0138\x03\x02" + - "\x02\x02\u0138#\x03\x02\x02\x02\u0139\u0137\x03\x02\x02\x02\u013A\u0146" + - "\x05\"\x12\x02\u013B\u013C\x05\"\x12\x02\u013C\u013D\x076\x02\x02\u013D" + - "\u013E\x05$\x13\x02\u013E\u013F\x077\x02\x02\u013F\u0140\x05$\x13\x02" + - "\u0140\u0146\x03\x02\x02\x02\u0141\u0142\x05\"\x12\x02\u0142\u0143\t\t" + - "\x02\x02\u0143\u0144\x05$\x13\x02\u0144\u0146\x03\x02\x02\x02\u0145\u013A" + - "\x03\x02\x02\x02\u0145\u013B\x03\x02\x02\x02\u0145\u0141\x03\x02\x02\x02" + - "\u0146%\x03\x02\x02\x02\u0147\u0148\t\n\x02\x02\u0148\u014D\x050\x19\x02" + - "\u0149\u014A\t\x04\x02\x02\u014A\u014D\x05&\x14\x02\u014B\u014D\x05(\x15" + - "\x02\u014C\u0147\x03\x02\x02\x02\u014C\u0149\x03\x02\x02\x02\u014C\u014B" + - "\x03\x02\x02\x02\u014D\'\x03\x02\x02\x02\u014E\u0156\x050\x19\x02\u014F" + - "\u0150\x050\x19\x02\u0150\u0151\t\n\x02\x02\u0151\u0156\x03\x02\x02\x02" + - "\u0152\u0153\t\v\x02\x02\u0153\u0156\x05&\x14\x02\u0154\u0156\x05*\x16" + - "\x02\u0155\u014E\x03\x02\x02\x02\u0155\u014F\x03\x02\x02\x02\u0155\u0152" + - "\x03\x02\x02\x02\u0155\u0154\x03\x02\x02\x02\u0156)\x03\x02\x02\x02\u0157" + - "\u0158\x07\t\x02\x02\u0158\u0159\x05,\x17\x02\u0159\u015A\x07\n\x02\x02" + - "\u015A\u015B\x05&\x14\x02\u015B\u0162\x03\x02\x02\x02\u015C\u015D\x07" + - "\t\x02\x02\u015D\u015E\x05.\x18\x02\u015E\u015F\x07\n\x02\x02\u015F\u0160" + - "\x05(\x15\x02\u0160\u0162\x03\x02\x02\x02\u0161\u0157\x03\x02\x02\x02" + - "\u0161\u015C\x03\x02\x02\x02\u0162+\x03\x02\x02\x02\u0163\u0164\t\f\x02" + - "\x02\u0164-\x03\x02\x02\x02\u0165\u0168\x07U\x02\x02\u0166\u0167\x07\x07" + - "\x02\x02\u0167\u0169\x07\b\x02\x02\u0168\u0166\x03\x02\x02\x02\u0169\u016A" + - "\x03\x02\x02\x02\u016A\u0168\x03\x02\x02\x02\u016A\u016B\x03\x02\x02\x02" + - "\u016B\u0183\x03\x02\x02\x02\u016C\u016F\x07T\x02\x02\u016D\u016E\x07" + - "\x07\x02\x02\u016E\u0170\x07\b\x02\x02\u016F\u016D\x03\x02\x02\x02\u0170" + - "\u0171\x03\x02\x02\x02\u0171\u016F\x03\x02\x02\x02\u0171\u0172\x03\x02" + - "\x02\x02\u0172\u0183\x03\x02\x02\x02\u0173\u0178\x07V\x02\x02\u0174\u0175" + - "\x07\f\x02\x02\u0175\u0177\x07X\x02\x02\u0176\u0174\x03\x02\x02\x02\u0177" + - "\u017A\x03\x02\x02\x02\u0178\u0176\x03\x02\x02\x02\u0178\u0179\x03\x02" + - "\x02\x02\u0179\u017F\x03\x02\x02\x02\u017A\u0178\x03\x02\x02\x02\u017B" + - "\u017C\x07\x07\x02\x02\u017C\u017E\x07\b\x02\x02\u017D\u017B\x03\x02\x02" + - "\x02\u017E\u0181\x03\x02\x02\x02\u017F\u017D\x03\x02\x02\x02\u017F\u0180" + - "\x03\x02\x02\x02\u0180\u0183\x03\x02\x02\x02\u0181\u017F\x03\x02\x02\x02" + - "\u0182\u0165\x03\x02\x02\x02\u0182\u016C\x03\x02\x02\x02\u0182\u0173\x03" + - "\x02\x02\x02\u0183/\x03\x02\x02\x02\u0184\u0188\x052\x1A\x02\u0185\u0187" + - "\x054\x1B\x02\u0186\u0185\x03\x02\x02\x02\u0187\u018A\x03\x02\x02\x02" + - "\u0188\u0186\x03\x02\x02\x02\u0188\u0189\x03\x02\x02\x02\u0189\u018D\x03" + - "\x02\x02\x02\u018A\u0188\x03\x02\x02\x02\u018B\u018D\x05> \x02\u018C\u0184" + - "\x03\x02\x02\x02\u018C\u018B\x03\x02\x02\x02\u018D1\x03\x02\x02\x02\u018E" + - "\u018F\x07\t\x02\x02\u018F\u0190\x05$\x13\x02\u0190\u0191\x07\n\x02\x02" + - "\u0191\u01A2\x03\x02\x02\x02\u0192\u01A2\t\r\x02\x02\u0193\u01A2\x07Q" + - "\x02\x02\u0194\u01A2\x07R\x02\x02\u0195\u01A2\x07S\x02\x02\u0196\u01A2" + - "\x07O\x02\x02\u0197\u01A2\x07P\x02\x02\u0198\u01A2\x05@!\x02\u0199\u01A2" + - "\x05B\"\x02\u019A\u01A2\x07V\x02\x02\u019B\u019C\t\x0E\x02\x02\u019C\u01A2" + - "\x05F$\x02\u019D\u019E\x07\x19\x02\x02\u019E\u019F\x05\x1C\x0F\x02\u019F" + - "\u01A0\x05F$\x02\u01A0\u01A2\x03\x02\x02\x02\u01A1\u018E\x03\x02\x02\x02" + - "\u01A1\u0192\x03\x02\x02\x02\u01A1\u0193\x03\x02\x02\x02\u01A1\u0194\x03" + - "\x02\x02\x02\u01A1\u0195\x03\x02\x02\x02\u01A1\u0196\x03\x02\x02\x02\u01A1" + - "\u0197\x03\x02\x02\x02\u01A1\u0198\x03\x02\x02\x02\u01A1\u0199\x03\x02" + - "\x02\x02\u01A1\u019A\x03\x02\x02\x02\u01A1\u019B\x03\x02\x02\x02\u01A1" + - "\u019D\x03\x02\x02\x02\u01A23\x03\x02\x02\x02\u01A3\u01A7\x058\x1D\x02" + - "\u01A4\u01A7\x05:\x1E\x02\u01A5\u01A7\x05<\x1F\x02\u01A6\u01A3\x03\x02" + - "\x02\x02\u01A6\u01A4\x03\x02\x02\x02\u01A6\u01A5\x03\x02\x02\x02\u01A7" + - "5\x03\x02\x02\x02\u01A8\u01AB\x058\x1D\x02\u01A9\u01AB\x05:\x1E\x02\u01AA" + - "\u01A8\x03\x02\x02\x02\u01AA\u01A9\x03\x02\x02\x02\u01AB7\x03\x02\x02" + - "\x02\u01AC\u01AD\t\x0F\x02\x02\u01AD\u01AE\x07X\x02\x02\u01AE\u01AF\x05" + - "F$\x02\u01AF9\x03\x02\x02\x02\u01B0\u01B1\t\x0F\x02\x02\u01B1\u01B2\t" + - "\x10\x02\x02\u01B2;\x03\x02\x02\x02\u01B3\u01B4\x07\x07\x02\x02\u01B4" + - "\u01B5\x05$\x13\x02\u01B5\u01B6\x07\b\x02\x02\u01B6=\x03\x02\x02\x02\u01B7" + - "\u01B8\x07\x19\x02\x02\u01B8\u01BD\x05\x1C\x0F\x02\u01B9\u01BA\x07\x07" + - "\x02\x02\u01BA\u01BB\x05$\x13\x02\u01BB\u01BC\x07\b\x02\x02\u01BC\u01BE" + - "\x03\x02\x02\x02\u01BD\u01B9\x03\x02\x02\x02\u01BE\u01BF\x03\x02\x02\x02" + - "\u01BF\u01BD\x03\x02\x02\x02\u01BF\u01C0\x03\x02\x02\x02\u01C0\u01C8\x03" + - "\x02\x02\x02\u01C1\u01C5\x056\x1C\x02\u01C2\u01C4\x054\x1B\x02\u01C3\u01C2" + - "\x03\x02\x02\x02\u01C4\u01C7\x03\x02\x02\x02\u01C5\u01C3\x03\x02\x02\x02" + - "\u01C5\u01C6\x03\x02\x02\x02\u01C6\u01C9\x03\x02\x02\x02\u01C7\u01C5\x03" + - "\x02\x02\x02\u01C8\u01C1\x03\x02\x02\x02\u01C8\u01C9\x03\x02\x02\x02\u01C9" + - "\u01E1\x03\x02\x02\x02\u01CA\u01CB\x07\x19\x02\x02\u01CB\u01CC\x05\x1C" + - "\x0F\x02\u01CC\u01CD\x07\x07\x02\x02\u01CD\u01CE\x07\b\x02\x02\u01CE\u01D7" + - "\x07\x05\x02\x02\u01CF\u01D4\x05$\x13\x02\u01D0\u01D1\x07\x0E\x02\x02" + - "\u01D1\u01D3\x05$\x13\x02\u01D2\u01D0\x03\x02\x02\x02\u01D3\u01D6\x03" + - "\x02\x02\x02\u01D4\u01D2\x03\x02\x02\x02\u01D4\u01D5\x03\x02\x02\x02\u01D5" + - "\u01D8\x03\x02\x02\x02\u01D6\u01D4\x03\x02\x02\x02\u01D7\u01CF\x03\x02" + - "\x02\x02\u01D7\u01D8\x03\x02\x02\x02\u01D8\u01D9\x03\x02\x02\x02\u01D9" + - "\u01DD\x07\x06\x02\x02\u01DA\u01DC\x054\x1B\x02\u01DB\u01DA\x03\x02\x02" + - "\x02\u01DC\u01DF\x03\x02\x02\x02\u01DD\u01DB\x03\x02\x02\x02\u01DD\u01DE" + - "\x03\x02\x02\x02\u01DE\u01E1\x03\x02\x02\x02\u01DF\u01DD\x03\x02\x02\x02" + - "\u01E0\u01B7\x03\x02\x02\x02\u01E0\u01CA\x03\x02\x02\x02\u01E1?\x03\x02" + - "\x02\x02\u01E2\u01E3\x07\x07\x02\x02\u01E3\u01E8\x05$\x13\x02\u01E4\u01E5" + - "\x07\x0E\x02\x02\u01E5\u01E7\x05$\x13\x02\u01E6\u01E4\x03\x02\x02\x02" + - "\u01E7\u01EA\x03\x02\x02\x02\u01E8\u01E6\x03\x02\x02\x02\u01E8\u01E9\x03" + - "\x02\x02\x02\u01E9\u01EB\x03\x02\x02\x02\u01EA\u01E8\x03\x02\x02\x02\u01EB" + - "\u01EC\x07\b\x02\x02\u01EC\u01F0\x03\x02\x02\x02\u01ED\u01EE\x07\x07\x02" + - "\x02\u01EE\u01F0\x07\b\x02\x02\u01EF\u01E2\x03\x02\x02\x02\u01EF\u01ED" + - "\x03\x02\x02\x02\u01F0A\x03\x02\x02\x02\u01F1\u01F2\x07\x07\x02\x02\u01F2" + - "\u01F7\x05D#\x02\u01F3\u01F4\x07\x0E\x02\x02\u01F4\u01F6\x05D#\x02\u01F5" + - "\u01F3\x03\x02\x02\x02\u01F6\u01F9\x03\x02\x02\x02\u01F7\u01F5\x03\x02" + - "\x02\x02\u01F7\u01F8\x03\x02\x02\x02\u01F8\u01FA\x03\x02\x02\x02\u01F9" + - "\u01F7\x03\x02\x02\x02\u01FA\u01FB\x07\b\x02\x02\u01FB\u0200\x03\x02\x02" + - "\x02\u01FC\u01FD\x07\x07\x02\x02\u01FD\u01FE\x077\x02\x02\u01FE\u0200" + - "\x07\b\x02\x02\u01FF\u01F1\x03\x02\x02\x02\u01FF\u01FC\x03\x02\x02\x02" + - "\u0200C\x03\x02\x02\x02\u0201\u0202\x05$\x13\x02\u0202\u0203\x077\x02" + - "\x02\u0203\u0204\x05$\x13\x02\u0204E\x03\x02\x02\x02\u0205\u020E\x07\t" + - "\x02\x02\u0206\u020B\x05H%\x02\u0207\u0208\x07\x0E\x02\x02\u0208\u020A" + - "\x05H%\x02\u0209\u0207\x03\x02\x02\x02\u020A\u020D\x03\x02\x02\x02\u020B" + - "\u0209\x03\x02\x02\x02\u020B\u020C\x03\x02\x02\x02\u020C\u020F\x03\x02" + - "\x02\x02\u020D\u020B\x03\x02\x02\x02\u020E\u0206\x03\x02\x02\x02\u020E" + - "\u020F\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02\u0210\u0211\x07\n\x02" + - "\x02\u0211G\x03\x02\x02\x02\u0212\u0216\x05$\x13\x02\u0213\u0216\x05J" + - "&\x02\u0214\u0216\x05N(\x02\u0215\u0212\x03\x02\x02\x02\u0215\u0213\x03" + - "\x02\x02\x02\u0215\u0214\x03\x02\x02\x02\u0216I\x03\x02\x02\x02\u0217" + - "\u0225\x05L\'\x02\u0218\u0221\x07\t\x02\x02\u0219\u021E\x05L\'\x02\u021A" + - "\u021B\x07\x0E\x02\x02\u021B\u021D\x05L\'\x02\u021C\u021A\x03\x02\x02" + - "\x02\u021D\u0220\x03\x02\x02\x02\u021E\u021C\x03\x02\x02\x02\u021E\u021F" + - "\x03\x02\x02\x02\u021F\u0222\x03\x02\x02\x02\u0220\u021E\x03\x02\x02\x02" + - "\u0221\u0219\x03\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0223\x03" + - "\x02\x02\x02\u0223\u0225\x07\n\x02\x02\u0224\u0217\x03\x02\x02\x02\u0224" + - "\u0218"; - private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u0229\x07:\x02\x02" + - "\u0227\u022A\x05\x10\t\x02\u0228\u022A\x05$\x13\x02\u0229\u0227\x03\x02" + - "\x02\x02\u0229\u0228\x03\x02\x02\x02\u022AK\x03\x02\x02\x02\u022B\u022D" + - "\x05\x1A\x0E\x02\u022C\u022B\x03\x02\x02\x02\u022C\u022D\x03\x02\x02\x02" + - "\u022D\u022E\x03\x02\x02\x02\u022E\u022F\x07V\x02\x02\u022FM\x03\x02\x02" + - "\x02\u0230\u0231\x05\x1A\x0E\x02\u0231\u0232\x079\x02\x02\u0232\u0233" + - "\x07V\x02\x02\u0233\u023C\x03\x02\x02\x02\u0234\u0235\x05\x1A\x0E\x02" + - "\u0235\u0236\x079\x02\x02\u0236\u0237\x07\x19\x02\x02\u0237\u023C\x03" + - "\x02\x02\x02\u0238\u0239\x07\x1D\x02\x02\u0239\u023A\x079\x02\x02\u023A" + - "\u023C\x07V\x02\x02\u023B\u0230\x03\x02\x02\x02\u023B\u0234\x03\x02\x02" + - "\x02\u023B\u0238\x03\x02\x02\x02\u023CO\x03\x02\x02\x02>SYlow\x81\x89" + - "\x8E\x92\x96\x9B\xB3\xB5\xC3\xC8\xCC\xD2\xD6\xDE\xE8\xF0\xFA\xFD\u0102" + - "\u0135\u0137\u0145\u014C\u0155\u0161\u016A\u0171\u0178\u017F\u0182\u0188" + - "\u018C\u01A1\u01A6\u01AA\u01BF\u01C5\u01C8\u01D4\u01D7\u01DD\u01E0\u01E8" + - "\u01EF\u01F7\u01FF\u020B\u020E\u0215\u021E\u0221\u0224\u0229\u022C\u023B"; - public static readonly _serializedATN: string = Utils.join( - [ - painless_parser._serializedATNSegment0, - painless_parser._serializedATNSegment1, - ], - "", - ); - public static __ATN: ATN; - public static get _ATN(): ATN { - if (!painless_parser.__ATN) { - painless_parser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(painless_parser._serializedATN)); - } - - return painless_parser.__ATN; - } - -} - -export class SourceContext extends ParserRuleContext { - public EOF(): TerminalNode { return this.getToken(painless_parser.EOF, 0); } - public function(): FunctionContext[]; - public function(i: number): FunctionContext; - public function(i?: number): FunctionContext | FunctionContext[] { - if (i === undefined) { - return this.getRuleContexts(FunctionContext); - } else { - return this.getRuleContext(i, FunctionContext); - } - } - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_source; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterSource) { - listener.enterSource(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitSource) { - listener.exitSource(this); - } - } -} - - -export class FunctionContext extends ParserRuleContext { - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public parameters(): ParametersContext { - return this.getRuleContext(0, ParametersContext); - } - public block(): BlockContext { - return this.getRuleContext(0, BlockContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_function; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterFunction) { - listener.enterFunction(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitFunction) { - listener.exitFunction(this); - } - } -} - - -export class ParametersContext extends ParserRuleContext { - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public decltype(): DecltypeContext[]; - public decltype(i: number): DecltypeContext; - public decltype(i?: number): DecltypeContext | DecltypeContext[] { - if (i === undefined) { - return this.getRuleContexts(DecltypeContext); - } else { - return this.getRuleContext(i, DecltypeContext); - } - } - public ID(): TerminalNode[]; - public ID(i: number): TerminalNode; - public ID(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.ID); - } else { - return this.getToken(painless_parser.ID, i); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_parameters; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterParameters) { - listener.enterParameters(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitParameters) { - listener.exitParameters(this); - } - } -} - - -export class StatementContext extends ParserRuleContext { - public rstatement(): RstatementContext | undefined { - return this.tryGetRuleContext(0, RstatementContext); - } - public dstatement(): DstatementContext | undefined { - return this.tryGetRuleContext(0, DstatementContext); - } - public SEMICOLON(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SEMICOLON, 0); } - public EOF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EOF, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_statement; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterStatement) { - listener.enterStatement(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitStatement) { - listener.exitStatement(this); - } - } -} - - -export class RstatementContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_rstatement; } - public copyFrom(ctx: RstatementContext): void { - super.copyFrom(ctx); - } -} -export class IfContext extends RstatementContext { - public IF(): TerminalNode { return this.getToken(painless_parser.IF, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public trailer(): TrailerContext[]; - public trailer(i: number): TrailerContext; - public trailer(i?: number): TrailerContext | TrailerContext[] { - if (i === undefined) { - return this.getRuleContexts(TrailerContext); - } else { - return this.getRuleContext(i, TrailerContext); - } - } - public ELSE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ELSE, 0); } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterIf) { - listener.enterIf(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitIf) { - listener.exitIf(this); - } - } -} -export class WhileContext extends RstatementContext { - public WHILE(): TerminalNode { return this.getToken(painless_parser.WHILE, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public trailer(): TrailerContext | undefined { - return this.tryGetRuleContext(0, TrailerContext); - } - public empty(): EmptyContext | undefined { - return this.tryGetRuleContext(0, EmptyContext); - } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterWhile) { - listener.enterWhile(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitWhile) { - listener.exitWhile(this); - } - } -} -export class ForContext extends RstatementContext { - public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public SEMICOLON(): TerminalNode[]; - public SEMICOLON(i: number): TerminalNode; - public SEMICOLON(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.SEMICOLON); - } else { - return this.getToken(painless_parser.SEMICOLON, i); - } - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public trailer(): TrailerContext | undefined { - return this.tryGetRuleContext(0, TrailerContext); - } - public empty(): EmptyContext | undefined { - return this.tryGetRuleContext(0, EmptyContext); - } - public initializer(): InitializerContext | undefined { - return this.tryGetRuleContext(0, InitializerContext); - } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - public afterthought(): AfterthoughtContext | undefined { - return this.tryGetRuleContext(0, AfterthoughtContext); - } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterFor) { - listener.enterFor(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitFor) { - listener.exitFor(this); - } - } -} -export class EachContext extends RstatementContext { - public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public trailer(): TrailerContext { - return this.getRuleContext(0, TrailerContext); - } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterEach) { - listener.enterEach(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitEach) { - listener.exitEach(this); - } - } -} -export class IneachContext extends RstatementContext { - public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public IN(): TerminalNode { return this.getToken(painless_parser.IN, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public trailer(): TrailerContext { - return this.getRuleContext(0, TrailerContext); - } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterIneach) { - listener.enterIneach(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitIneach) { - listener.exitIneach(this); - } - } -} -export class TryContext extends RstatementContext { - public TRY(): TerminalNode { return this.getToken(painless_parser.TRY, 0); } - public block(): BlockContext { - return this.getRuleContext(0, BlockContext); - } - public trap(): TrapContext[]; - public trap(i: number): TrapContext; - public trap(i?: number): TrapContext | TrapContext[] { - if (i === undefined) { - return this.getRuleContexts(TrapContext); - } else { - return this.getRuleContext(i, TrapContext); - } - } - constructor(ctx: RstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterTry) { - listener.enterTry(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitTry) { - listener.exitTry(this); - } - } -} - - -export class DstatementContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_dstatement; } - public copyFrom(ctx: DstatementContext): void { - super.copyFrom(ctx); - } -} -export class DoContext extends DstatementContext { - public DO(): TerminalNode { return this.getToken(painless_parser.DO, 0); } - public block(): BlockContext { - return this.getRuleContext(0, BlockContext); - } - public WHILE(): TerminalNode { return this.getToken(painless_parser.WHILE, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDo) { - listener.enterDo(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDo) { - listener.exitDo(this); - } - } -} -export class DeclContext extends DstatementContext { - public declaration(): DeclarationContext { - return this.getRuleContext(0, DeclarationContext); - } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDecl) { - listener.enterDecl(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDecl) { - listener.exitDecl(this); - } - } -} -export class ContinueContext extends DstatementContext { - public CONTINUE(): TerminalNode { return this.getToken(painless_parser.CONTINUE, 0); } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterContinue) { - listener.enterContinue(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitContinue) { - listener.exitContinue(this); - } - } -} -export class BreakContext extends DstatementContext { - public BREAK(): TerminalNode { return this.getToken(painless_parser.BREAK, 0); } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterBreak) { - listener.enterBreak(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitBreak) { - listener.exitBreak(this); - } - } -} -export class ReturnContext extends DstatementContext { - public RETURN(): TerminalNode { return this.getToken(painless_parser.RETURN, 0); } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterReturn) { - listener.enterReturn(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitReturn) { - listener.exitReturn(this); - } - } -} -export class ThrowContext extends DstatementContext { - public THROW(): TerminalNode { return this.getToken(painless_parser.THROW, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterThrow) { - listener.enterThrow(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitThrow) { - listener.exitThrow(this); - } - } -} -export class ExprContext extends DstatementContext { - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - constructor(ctx: DstatementContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterExpr) { - listener.enterExpr(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitExpr) { - listener.exitExpr(this); - } - } -} - - -export class TrailerContext extends ParserRuleContext { - public block(): BlockContext | undefined { - return this.tryGetRuleContext(0, BlockContext); - } - public statement(): StatementContext | undefined { - return this.tryGetRuleContext(0, StatementContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_trailer; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterTrailer) { - listener.enterTrailer(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitTrailer) { - listener.exitTrailer(this); - } - } -} - - -export class BlockContext extends ParserRuleContext { - public LBRACK(): TerminalNode { return this.getToken(painless_parser.LBRACK, 0); } - public RBRACK(): TerminalNode { return this.getToken(painless_parser.RBRACK, 0); } - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } - } - public dstatement(): DstatementContext | undefined { - return this.tryGetRuleContext(0, DstatementContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_block; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterBlock) { - listener.enterBlock(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitBlock) { - listener.exitBlock(this); - } - } -} - - -export class EmptyContext extends ParserRuleContext { - public SEMICOLON(): TerminalNode { return this.getToken(painless_parser.SEMICOLON, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_empty; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterEmpty) { - listener.enterEmpty(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitEmpty) { - listener.exitEmpty(this); - } - } -} - - -export class InitializerContext extends ParserRuleContext { - public declaration(): DeclarationContext | undefined { - return this.tryGetRuleContext(0, DeclarationContext); - } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_initializer; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterInitializer) { - listener.enterInitializer(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitInitializer) { - listener.exitInitializer(this); - } - } -} - - -export class AfterthoughtContext extends ParserRuleContext { - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_afterthought; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterAfterthought) { - listener.enterAfterthought(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitAfterthought) { - listener.exitAfterthought(this); - } - } -} - - -export class DeclarationContext extends ParserRuleContext { - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - public declvar(): DeclvarContext[]; - public declvar(i: number): DeclvarContext; - public declvar(i?: number): DeclvarContext | DeclvarContext[] { - if (i === undefined) { - return this.getRuleContexts(DeclvarContext); - } else { - return this.getRuleContext(i, DeclvarContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_declaration; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDeclaration) { - listener.enterDeclaration(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDeclaration) { - listener.exitDeclaration(this); - } - } -} - - -export class DecltypeContext extends ParserRuleContext { - public type(): TypeContext { - return this.getRuleContext(0, TypeContext); - } - public LBRACE(): TerminalNode[]; - public LBRACE(i: number): TerminalNode; - public LBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.LBRACE); - } else { - return this.getToken(painless_parser.LBRACE, i); - } - } - public RBRACE(): TerminalNode[]; - public RBRACE(i: number): TerminalNode; - public RBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.RBRACE); - } else { - return this.getToken(painless_parser.RBRACE, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_decltype; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDecltype) { - listener.enterDecltype(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDecltype) { - listener.exitDecltype(this); - } - } -} - - -export class TypeContext extends ParserRuleContext { - public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } - public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } - public ID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ID, 0); } - public DOT(): TerminalNode[]; - public DOT(i: number): TerminalNode; - public DOT(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.DOT); - } else { - return this.getToken(painless_parser.DOT, i); - } - } - public DOTID(): TerminalNode[]; - public DOTID(i: number): TerminalNode; - public DOTID(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.DOTID); - } else { - return this.getToken(painless_parser.DOTID, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_type; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterType) { - listener.enterType(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitType) { - listener.exitType(this); - } - } -} - - -export class DeclvarContext extends ParserRuleContext { - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASSIGN, 0); } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_declvar; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDeclvar) { - listener.enterDeclvar(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDeclvar) { - listener.exitDeclvar(this); - } - } -} - - -export class TrapContext extends ParserRuleContext { - public CATCH(): TerminalNode { return this.getToken(painless_parser.CATCH, 0); } - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext); - } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public block(): BlockContext { - return this.getRuleContext(0, BlockContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_trap; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterTrap) { - listener.enterTrap(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitTrap) { - listener.exitTrap(this); - } - } -} - - -export class NoncondexpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_noncondexpression; } - public copyFrom(ctx: NoncondexpressionContext): void { - super.copyFrom(ctx); - } -} -export class SingleContext extends NoncondexpressionContext { - public unary(): UnaryContext { - return this.getRuleContext(0, UnaryContext); - } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterSingle) { - listener.enterSingle(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitSingle) { - listener.exitSingle(this); - } - } -} -export class BinaryContext extends NoncondexpressionContext { - public noncondexpression(): NoncondexpressionContext[]; - public noncondexpression(i: number): NoncondexpressionContext; - public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(NoncondexpressionContext); - } else { - return this.getRuleContext(i, NoncondexpressionContext); - } - } - public MUL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.MUL, 0); } - public DIV(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DIV, 0); } - public REM(): TerminalNode | undefined { return this.tryGetToken(painless_parser.REM, 0); } - public ADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADD, 0); } - public SUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SUB, 0); } - public FIND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.FIND, 0); } - public MATCH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.MATCH, 0); } - public LSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LSH, 0); } - public RSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RSH, 0); } - public USH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.USH, 0); } - public BWAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWAND, 0); } - public XOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.XOR, 0); } - public BWOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWOR, 0); } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterBinary) { - listener.enterBinary(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitBinary) { - listener.exitBinary(this); - } - } -} -export class CompContext extends NoncondexpressionContext { - public noncondexpression(): NoncondexpressionContext[]; - public noncondexpression(i: number): NoncondexpressionContext; - public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(NoncondexpressionContext); - } else { - return this.getRuleContext(i, NoncondexpressionContext); - } - } - public LT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LT, 0); } - public LTE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LTE, 0); } - public GT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.GT, 0); } - public GTE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.GTE, 0); } - public EQ(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EQ, 0); } - public EQR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EQR, 0); } - public NE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NE, 0); } - public NER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NER, 0); } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterComp) { - listener.enterComp(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitComp) { - listener.exitComp(this); - } - } -} -export class InstanceofContext extends NoncondexpressionContext { - public noncondexpression(): NoncondexpressionContext { - return this.getRuleContext(0, NoncondexpressionContext); - } - public INSTANCEOF(): TerminalNode { return this.getToken(painless_parser.INSTANCEOF, 0); } - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterInstanceof) { - listener.enterInstanceof(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitInstanceof) { - listener.exitInstanceof(this); - } - } -} -export class BoolContext extends NoncondexpressionContext { - public noncondexpression(): NoncondexpressionContext[]; - public noncondexpression(i: number): NoncondexpressionContext; - public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(NoncondexpressionContext); - } else { - return this.getRuleContext(i, NoncondexpressionContext); - } - } - public BOOLAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLAND, 0); } - public BOOLOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLOR, 0); } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterBool) { - listener.enterBool(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitBool) { - listener.exitBool(this); - } - } -} -export class ElvisContext extends NoncondexpressionContext { - public noncondexpression(): NoncondexpressionContext[]; - public noncondexpression(i: number): NoncondexpressionContext; - public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(NoncondexpressionContext); - } else { - return this.getRuleContext(i, NoncondexpressionContext); - } - } - public ELVIS(): TerminalNode { return this.getToken(painless_parser.ELVIS, 0); } - constructor(ctx: NoncondexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterElvis) { - listener.enterElvis(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitElvis) { - listener.exitElvis(this); - } - } -} - - -export class ExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_expression; } - public copyFrom(ctx: ExpressionContext): void { - super.copyFrom(ctx); - } -} -export class NonconditionalContext extends ExpressionContext { - public noncondexpression(): NoncondexpressionContext { - return this.getRuleContext(0, NoncondexpressionContext); - } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNonconditional) { - listener.enterNonconditional(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNonconditional) { - listener.exitNonconditional(this); - } - } -} -export class ConditionalContext extends ExpressionContext { - public noncondexpression(): NoncondexpressionContext { - return this.getRuleContext(0, NoncondexpressionContext); - } - public COND(): TerminalNode { return this.getToken(painless_parser.COND, 0); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterConditional) { - listener.enterConditional(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitConditional) { - listener.exitConditional(this); - } - } -} -export class AssignmentContext extends ExpressionContext { - public noncondexpression(): NoncondexpressionContext { - return this.getRuleContext(0, NoncondexpressionContext); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASSIGN, 0); } - public AADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AADD, 0); } - public ASUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASUB, 0); } - public AMUL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AMUL, 0); } - public ADIV(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADIV, 0); } - public AREM(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AREM, 0); } - public AAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AAND, 0); } - public AXOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AXOR, 0); } - public AOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AOR, 0); } - public ALSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ALSH, 0); } - public ARSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ARSH, 0); } - public AUSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AUSH, 0); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterAssignment) { - listener.enterAssignment(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitAssignment) { - listener.exitAssignment(this); - } - } -} - - -export class UnaryContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_unary; } - public copyFrom(ctx: UnaryContext): void { - super.copyFrom(ctx); - } -} -export class PreContext extends UnaryContext { - public chain(): ChainContext { - return this.getRuleContext(0, ChainContext); - } - public INCR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INCR, 0); } - public DECR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECR, 0); } - constructor(ctx: UnaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPre) { - listener.enterPre(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPre) { - listener.exitPre(this); - } - } -} -export class AddsubContext extends UnaryContext { - public unary(): UnaryContext { - return this.getRuleContext(0, UnaryContext); - } - public ADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADD, 0); } - public SUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SUB, 0); } - constructor(ctx: UnaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterAddsub) { - listener.enterAddsub(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitAddsub) { - listener.exitAddsub(this); - } - } -} -export class NotaddsubContext extends UnaryContext { - public unarynotaddsub(): UnarynotaddsubContext { - return this.getRuleContext(0, UnarynotaddsubContext); - } - constructor(ctx: UnaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNotaddsub) { - listener.enterNotaddsub(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNotaddsub) { - listener.exitNotaddsub(this); - } - } -} - - -export class UnarynotaddsubContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_unarynotaddsub; } - public copyFrom(ctx: UnarynotaddsubContext): void { - super.copyFrom(ctx); - } -} -export class ReadContext extends UnarynotaddsubContext { - public chain(): ChainContext { - return this.getRuleContext(0, ChainContext); - } - constructor(ctx: UnarynotaddsubContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterRead) { - listener.enterRead(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitRead) { - listener.exitRead(this); - } - } -} -export class PostContext extends UnarynotaddsubContext { - public chain(): ChainContext { - return this.getRuleContext(0, ChainContext); - } - public INCR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INCR, 0); } - public DECR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECR, 0); } - constructor(ctx: UnarynotaddsubContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPost) { - listener.enterPost(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPost) { - listener.exitPost(this); - } - } -} -export class NotContext extends UnarynotaddsubContext { - public unary(): UnaryContext { - return this.getRuleContext(0, UnaryContext); - } - public BOOLNOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLNOT, 0); } - public BWNOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWNOT, 0); } - constructor(ctx: UnarynotaddsubContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNot) { - listener.enterNot(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNot) { - listener.exitNot(this); - } - } -} -export class CastContext extends UnarynotaddsubContext { - public castexpression(): CastexpressionContext { - return this.getRuleContext(0, CastexpressionContext); - } - constructor(ctx: UnarynotaddsubContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterCast) { - listener.enterCast(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitCast) { - listener.exitCast(this); - } - } -} - - -export class CastexpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_castexpression; } - public copyFrom(ctx: CastexpressionContext): void { - super.copyFrom(ctx); - } -} -export class PrimordefcastContext extends CastexpressionContext { - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public primordefcasttype(): PrimordefcasttypeContext { - return this.getRuleContext(0, PrimordefcasttypeContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public unary(): UnaryContext { - return this.getRuleContext(0, UnaryContext); - } - constructor(ctx: CastexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPrimordefcast) { - listener.enterPrimordefcast(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPrimordefcast) { - listener.exitPrimordefcast(this); - } - } -} -export class RefcastContext extends CastexpressionContext { - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public refcasttype(): RefcasttypeContext { - return this.getRuleContext(0, RefcasttypeContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - public unarynotaddsub(): UnarynotaddsubContext { - return this.getRuleContext(0, UnarynotaddsubContext); - } - constructor(ctx: CastexpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterRefcast) { - listener.enterRefcast(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitRefcast) { - listener.exitRefcast(this); - } - } -} - - -export class PrimordefcasttypeContext extends ParserRuleContext { - public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } - public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_primordefcasttype; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPrimordefcasttype) { - listener.enterPrimordefcasttype(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPrimordefcasttype) { - listener.exitPrimordefcasttype(this); - } - } -} - - -export class RefcasttypeContext extends ParserRuleContext { - public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } - public LBRACE(): TerminalNode[]; - public LBRACE(i: number): TerminalNode; - public LBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.LBRACE); - } else { - return this.getToken(painless_parser.LBRACE, i); - } - } - public RBRACE(): TerminalNode[]; - public RBRACE(i: number): TerminalNode; - public RBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.RBRACE); - } else { - return this.getToken(painless_parser.RBRACE, i); - } - } - public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } - public ID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ID, 0); } - public DOT(): TerminalNode[]; - public DOT(i: number): TerminalNode; - public DOT(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.DOT); - } else { - return this.getToken(painless_parser.DOT, i); - } - } - public DOTID(): TerminalNode[]; - public DOTID(i: number): TerminalNode; - public DOTID(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.DOTID); - } else { - return this.getToken(painless_parser.DOTID, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_refcasttype; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterRefcasttype) { - listener.enterRefcasttype(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitRefcasttype) { - listener.exitRefcasttype(this); - } - } -} - - -export class ChainContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_chain; } - public copyFrom(ctx: ChainContext): void { - super.copyFrom(ctx); - } -} -export class DynamicContext extends ChainContext { - public primary(): PrimaryContext { - return this.getRuleContext(0, PrimaryContext); - } - public postfix(): PostfixContext[]; - public postfix(i: number): PostfixContext; - public postfix(i?: number): PostfixContext | PostfixContext[] { - if (i === undefined) { - return this.getRuleContexts(PostfixContext); - } else { - return this.getRuleContext(i, PostfixContext); - } - } - constructor(ctx: ChainContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterDynamic) { - listener.enterDynamic(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitDynamic) { - listener.exitDynamic(this); - } - } -} -export class NewarrayContext extends ChainContext { - public arrayinitializer(): ArrayinitializerContext { - return this.getRuleContext(0, ArrayinitializerContext); - } - constructor(ctx: ChainContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNewarray) { - listener.enterNewarray(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNewarray) { - listener.exitNewarray(this); - } - } -} - - -export class PrimaryContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_primary; } - public copyFrom(ctx: PrimaryContext): void { - super.copyFrom(ctx); - } -} -export class PrecedenceContext extends PrimaryContext { - public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPrecedence) { - listener.enterPrecedence(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPrecedence) { - listener.exitPrecedence(this); - } - } -} -export class NumericContext extends PrimaryContext { - public OCTAL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.OCTAL, 0); } - public HEX(): TerminalNode | undefined { return this.tryGetToken(painless_parser.HEX, 0); } - public INTEGER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INTEGER, 0); } - public DECIMAL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECIMAL, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNumeric) { - listener.enterNumeric(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNumeric) { - listener.exitNumeric(this); - } - } -} -export class TrueContext extends PrimaryContext { - public TRUE(): TerminalNode { return this.getToken(painless_parser.TRUE, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterTrue) { - listener.enterTrue(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitTrue) { - listener.exitTrue(this); - } - } -} -export class FalseContext extends PrimaryContext { - public FALSE(): TerminalNode { return this.getToken(painless_parser.FALSE, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterFalse) { - listener.enterFalse(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitFalse) { - listener.exitFalse(this); - } - } -} -export class NullContext extends PrimaryContext { - public NULL(): TerminalNode { return this.getToken(painless_parser.NULL, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNull) { - listener.enterNull(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNull) { - listener.exitNull(this); - } - } -} -export class StringContext extends PrimaryContext { - public STRING(): TerminalNode { return this.getToken(painless_parser.STRING, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterString) { - listener.enterString(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitString) { - listener.exitString(this); - } - } -} -export class RegexContext extends PrimaryContext { - public REGEX(): TerminalNode { return this.getToken(painless_parser.REGEX, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterRegex) { - listener.enterRegex(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitRegex) { - listener.exitRegex(this); - } - } -} -export class ListinitContext extends PrimaryContext { - public listinitializer(): ListinitializerContext { - return this.getRuleContext(0, ListinitializerContext); - } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterListinit) { - listener.enterListinit(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitListinit) { - listener.exitListinit(this); - } - } -} -export class MapinitContext extends PrimaryContext { - public mapinitializer(): MapinitializerContext { - return this.getRuleContext(0, MapinitializerContext); - } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterMapinit) { - listener.enterMapinit(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitMapinit) { - listener.exitMapinit(this); - } - } -} -export class VariableContext extends PrimaryContext { - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterVariable) { - listener.enterVariable(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitVariable) { - listener.exitVariable(this); - } - } -} -export class CalllocalContext extends PrimaryContext { - public arguments(): ArgumentsContext { - return this.getRuleContext(0, ArgumentsContext); - } - public ID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ID, 0); } - public DOLLAR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOLLAR, 0); } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterCalllocal) { - listener.enterCalllocal(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitCalllocal) { - listener.exitCalllocal(this); - } - } -} -export class NewobjectContext extends PrimaryContext { - public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext); - } - public arguments(): ArgumentsContext { - return this.getRuleContext(0, ArgumentsContext); - } - constructor(ctx: PrimaryContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNewobject) { - listener.enterNewobject(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNewobject) { - listener.exitNewobject(this); - } - } -} - - -export class PostfixContext extends ParserRuleContext { - public callinvoke(): CallinvokeContext | undefined { - return this.tryGetRuleContext(0, CallinvokeContext); - } - public fieldaccess(): FieldaccessContext | undefined { - return this.tryGetRuleContext(0, FieldaccessContext); - } - public braceaccess(): BraceaccessContext | undefined { - return this.tryGetRuleContext(0, BraceaccessContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_postfix; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPostfix) { - listener.enterPostfix(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPostfix) { - listener.exitPostfix(this); - } - } -} - - -export class PostdotContext extends ParserRuleContext { - public callinvoke(): CallinvokeContext | undefined { - return this.tryGetRuleContext(0, CallinvokeContext); - } - public fieldaccess(): FieldaccessContext | undefined { - return this.tryGetRuleContext(0, FieldaccessContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_postdot; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterPostdot) { - listener.enterPostdot(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitPostdot) { - listener.exitPostdot(this); - } - } -} - - -export class CallinvokeContext extends ParserRuleContext { - public DOTID(): TerminalNode { return this.getToken(painless_parser.DOTID, 0); } - public arguments(): ArgumentsContext { - return this.getRuleContext(0, ArgumentsContext); - } - public DOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOT, 0); } - public NSDOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NSDOT, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_callinvoke; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterCallinvoke) { - listener.enterCallinvoke(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitCallinvoke) { - listener.exitCallinvoke(this); - } - } -} - - -export class FieldaccessContext extends ParserRuleContext { - public DOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOT, 0); } - public NSDOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NSDOT, 0); } - public DOTID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOTID, 0); } - public DOTINTEGER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOTINTEGER, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_fieldaccess; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterFieldaccess) { - listener.enterFieldaccess(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitFieldaccess) { - listener.exitFieldaccess(this); - } - } -} - - -export class BraceaccessContext extends ParserRuleContext { - public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); - } - public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_braceaccess; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterBraceaccess) { - listener.enterBraceaccess(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitBraceaccess) { - listener.exitBraceaccess(this); - } - } -} - - -export class ArrayinitializerContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_arrayinitializer; } - public copyFrom(ctx: ArrayinitializerContext): void { - super.copyFrom(ctx); - } -} -export class NewstandardarrayContext extends ArrayinitializerContext { - public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext); - } - public LBRACE(): TerminalNode[]; - public LBRACE(i: number): TerminalNode; - public LBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.LBRACE); - } else { - return this.getToken(painless_parser.LBRACE, i); - } - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - public RBRACE(): TerminalNode[]; - public RBRACE(i: number): TerminalNode; - public RBRACE(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.RBRACE); - } else { - return this.getToken(painless_parser.RBRACE, i); - } - } - public postdot(): PostdotContext | undefined { - return this.tryGetRuleContext(0, PostdotContext); - } - public postfix(): PostfixContext[]; - public postfix(i: number): PostfixContext; - public postfix(i?: number): PostfixContext | PostfixContext[] { - if (i === undefined) { - return this.getRuleContexts(PostfixContext); - } else { - return this.getRuleContext(i, PostfixContext); - } - } - constructor(ctx: ArrayinitializerContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNewstandardarray) { - listener.enterNewstandardarray(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNewstandardarray) { - listener.exitNewstandardarray(this); - } - } -} -export class NewinitializedarrayContext extends ArrayinitializerContext { - public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext); - } - public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } - public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } - public LBRACK(): TerminalNode { return this.getToken(painless_parser.LBRACK, 0); } - public RBRACK(): TerminalNode { return this.getToken(painless_parser.RBRACK, 0); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - public postfix(): PostfixContext[]; - public postfix(i: number): PostfixContext; - public postfix(i?: number): PostfixContext | PostfixContext[] { - if (i === undefined) { - return this.getRuleContexts(PostfixContext); - } else { - return this.getRuleContext(i, PostfixContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(ctx: ArrayinitializerContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterNewinitializedarray) { - listener.enterNewinitializedarray(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitNewinitializedarray) { - listener.exitNewinitializedarray(this); - } - } -} - - -export class ListinitializerContext extends ParserRuleContext { - public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_listinitializer; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterListinitializer) { - listener.enterListinitializer(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitListinitializer) { - listener.exitListinitializer(this); - } - } -} - - -export class MapinitializerContext extends ParserRuleContext { - public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } - public maptoken(): MaptokenContext[]; - public maptoken(i: number): MaptokenContext; - public maptoken(i?: number): MaptokenContext | MaptokenContext[] { - if (i === undefined) { - return this.getRuleContexts(MaptokenContext); - } else { - return this.getRuleContext(i, MaptokenContext); - } - } - public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - public COLON(): TerminalNode | undefined { return this.tryGetToken(painless_parser.COLON, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_mapinitializer; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterMapinitializer) { - listener.enterMapinitializer(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitMapinitializer) { - listener.exitMapinitializer(this); - } - } -} - - -export class MaptokenContext extends ParserRuleContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_maptoken; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterMaptoken) { - listener.enterMaptoken(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitMaptoken) { - listener.exitMaptoken(this); - } - } -} - - -export class ArgumentsContext extends ParserRuleContext { - public LP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LP, 0); } - public RP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RP, 0); } - public argument(): ArgumentContext[]; - public argument(i: number): ArgumentContext; - public argument(i?: number): ArgumentContext | ArgumentContext[] { - if (i === undefined) { - return this.getRuleContexts(ArgumentContext); - } else { - return this.getRuleContext(i, ArgumentContext); - } - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_arguments; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterArguments) { - listener.enterArguments(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitArguments) { - listener.exitArguments(this); - } - } -} - - -export class ArgumentContext extends ParserRuleContext { - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - public lambda(): LambdaContext | undefined { - return this.tryGetRuleContext(0, LambdaContext); - } - public funcref(): FuncrefContext | undefined { - return this.tryGetRuleContext(0, FuncrefContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_argument; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterArgument) { - listener.enterArgument(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitArgument) { - listener.exitArgument(this); - } - } -} - - -export class LambdaContext extends ParserRuleContext { - public ARROW(): TerminalNode { return this.getToken(painless_parser.ARROW, 0); } - public lamtype(): LamtypeContext[]; - public lamtype(i: number): LamtypeContext; - public lamtype(i?: number): LamtypeContext | LamtypeContext[] { - if (i === undefined) { - return this.getRuleContexts(LamtypeContext); - } else { - return this.getRuleContext(i, LamtypeContext); - } - } - public LP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LP, 0); } - public RP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RP, 0); } - public block(): BlockContext | undefined { - return this.tryGetRuleContext(0, BlockContext); - } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - public COMMA(): TerminalNode[]; - public COMMA(i: number): TerminalNode; - public COMMA(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(painless_parser.COMMA); - } else { - return this.getToken(painless_parser.COMMA, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_lambda; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterLambda) { - listener.enterLambda(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitLambda) { - listener.exitLambda(this); - } - } -} - - -export class LamtypeContext extends ParserRuleContext { - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - public decltype(): DecltypeContext | undefined { - return this.tryGetRuleContext(0, DecltypeContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_lamtype; } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterLamtype) { - listener.enterLamtype(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitLamtype) { - listener.exitLamtype(this); - } - } -} - - -export class FuncrefContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); - } - // @Override - public get ruleIndex(): number { return painless_parser.RULE_funcref; } - public copyFrom(ctx: FuncrefContext): void { - super.copyFrom(ctx); - } -} -export class ClassfuncrefContext extends FuncrefContext { - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - constructor(ctx: FuncrefContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterClassfuncref) { - listener.enterClassfuncref(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitClassfuncref) { - listener.exitClassfuncref(this); - } - } -} -export class ConstructorfuncrefContext extends FuncrefContext { - public decltype(): DecltypeContext { - return this.getRuleContext(0, DecltypeContext); - } - public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } - public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } - constructor(ctx: FuncrefContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterConstructorfuncref) { - listener.enterConstructorfuncref(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitConstructorfuncref) { - listener.exitConstructorfuncref(this); - } - } -} -export class LocalfuncrefContext extends FuncrefContext { - public THIS(): TerminalNode { return this.getToken(painless_parser.THIS, 0); } - public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } - public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } - constructor(ctx: FuncrefContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); - } - // @Override - public enterRule(listener: painless_parserListener): void { - if (listener.enterLocalfuncref) { - listener.enterLocalfuncref(this); - } - } - // @Override - public exitRule(listener: painless_parserListener): void { - if (listener.exitLocalfuncref) { - listener.exitLocalfuncref(this); - } - } -} - - diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts deleted file mode 100644 index bc2637d1f75d0..0000000000000 --- a/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts +++ /dev/null @@ -1,1182 +0,0 @@ -// @ts-nocheck -// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.7.3-SNAPSHOT - - -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; - -import { NewstandardarrayContext } from "./painless_parser"; -import { NewinitializedarrayContext } from "./painless_parser"; -import { PrimordefcastContext } from "./painless_parser"; -import { RefcastContext } from "./painless_parser"; -import { PreContext } from "./painless_parser"; -import { AddsubContext } from "./painless_parser"; -import { NotaddsubContext } from "./painless_parser"; -import { ClassfuncrefContext } from "./painless_parser"; -import { ConstructorfuncrefContext } from "./painless_parser"; -import { LocalfuncrefContext } from "./painless_parser"; -import { IfContext } from "./painless_parser"; -import { WhileContext } from "./painless_parser"; -import { ForContext } from "./painless_parser"; -import { EachContext } from "./painless_parser"; -import { IneachContext } from "./painless_parser"; -import { TryContext } from "./painless_parser"; -import { ReadContext } from "./painless_parser"; -import { PostContext } from "./painless_parser"; -import { NotContext } from "./painless_parser"; -import { CastContext } from "./painless_parser"; -import { DynamicContext } from "./painless_parser"; -import { NewarrayContext } from "./painless_parser"; -import { NonconditionalContext } from "./painless_parser"; -import { ConditionalContext } from "./painless_parser"; -import { AssignmentContext } from "./painless_parser"; -import { DoContext } from "./painless_parser"; -import { DeclContext } from "./painless_parser"; -import { ContinueContext } from "./painless_parser"; -import { BreakContext } from "./painless_parser"; -import { ReturnContext } from "./painless_parser"; -import { ThrowContext } from "./painless_parser"; -import { ExprContext } from "./painless_parser"; -import { SingleContext } from "./painless_parser"; -import { BinaryContext } from "./painless_parser"; -import { CompContext } from "./painless_parser"; -import { InstanceofContext } from "./painless_parser"; -import { BoolContext } from "./painless_parser"; -import { ElvisContext } from "./painless_parser"; -import { PrecedenceContext } from "./painless_parser"; -import { NumericContext } from "./painless_parser"; -import { TrueContext } from "./painless_parser"; -import { FalseContext } from "./painless_parser"; -import { NullContext } from "./painless_parser"; -import { StringContext } from "./painless_parser"; -import { RegexContext } from "./painless_parser"; -import { ListinitContext } from "./painless_parser"; -import { MapinitContext } from "./painless_parser"; -import { VariableContext } from "./painless_parser"; -import { CalllocalContext } from "./painless_parser"; -import { NewobjectContext } from "./painless_parser"; -import { SourceContext } from "./painless_parser"; -import { FunctionContext } from "./painless_parser"; -import { ParametersContext } from "./painless_parser"; -import { StatementContext } from "./painless_parser"; -import { RstatementContext } from "./painless_parser"; -import { DstatementContext } from "./painless_parser"; -import { TrailerContext } from "./painless_parser"; -import { BlockContext } from "./painless_parser"; -import { EmptyContext } from "./painless_parser"; -import { InitializerContext } from "./painless_parser"; -import { AfterthoughtContext } from "./painless_parser"; -import { DeclarationContext } from "./painless_parser"; -import { DecltypeContext } from "./painless_parser"; -import { TypeContext } from "./painless_parser"; -import { DeclvarContext } from "./painless_parser"; -import { TrapContext } from "./painless_parser"; -import { NoncondexpressionContext } from "./painless_parser"; -import { ExpressionContext } from "./painless_parser"; -import { UnaryContext } from "./painless_parser"; -import { UnarynotaddsubContext } from "./painless_parser"; -import { CastexpressionContext } from "./painless_parser"; -import { PrimordefcasttypeContext } from "./painless_parser"; -import { RefcasttypeContext } from "./painless_parser"; -import { ChainContext } from "./painless_parser"; -import { PrimaryContext } from "./painless_parser"; -import { PostfixContext } from "./painless_parser"; -import { PostdotContext } from "./painless_parser"; -import { CallinvokeContext } from "./painless_parser"; -import { FieldaccessContext } from "./painless_parser"; -import { BraceaccessContext } from "./painless_parser"; -import { ArrayinitializerContext } from "./painless_parser"; -import { ListinitializerContext } from "./painless_parser"; -import { MapinitializerContext } from "./painless_parser"; -import { MaptokenContext } from "./painless_parser"; -import { ArgumentsContext } from "./painless_parser"; -import { ArgumentContext } from "./painless_parser"; -import { LambdaContext } from "./painless_parser"; -import { LamtypeContext } from "./painless_parser"; -import { FuncrefContext } from "./painless_parser"; - - -/** - * This interface defines a complete listener for a parse tree produced by - * `painless_parser`. - */ -export interface painless_parserListener extends ParseTreeListener { - /** - * Enter a parse tree produced by the `newstandardarray` - * labeled alternative in `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - enterNewstandardarray?: (ctx: NewstandardarrayContext) => void; - /** - * Exit a parse tree produced by the `newstandardarray` - * labeled alternative in `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - exitNewstandardarray?: (ctx: NewstandardarrayContext) => void; - - /** - * Enter a parse tree produced by the `newinitializedarray` - * labeled alternative in `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - enterNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; - /** - * Exit a parse tree produced by the `newinitializedarray` - * labeled alternative in `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - exitNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; - - /** - * Enter a parse tree produced by the `primordefcast` - * labeled alternative in `painless_parser.castexpression`. - * @param ctx the parse tree - */ - enterPrimordefcast?: (ctx: PrimordefcastContext) => void; - /** - * Exit a parse tree produced by the `primordefcast` - * labeled alternative in `painless_parser.castexpression`. - * @param ctx the parse tree - */ - exitPrimordefcast?: (ctx: PrimordefcastContext) => void; - - /** - * Enter a parse tree produced by the `refcast` - * labeled alternative in `painless_parser.castexpression`. - * @param ctx the parse tree - */ - enterRefcast?: (ctx: RefcastContext) => void; - /** - * Exit a parse tree produced by the `refcast` - * labeled alternative in `painless_parser.castexpression`. - * @param ctx the parse tree - */ - exitRefcast?: (ctx: RefcastContext) => void; - - /** - * Enter a parse tree produced by the `pre` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - enterPre?: (ctx: PreContext) => void; - /** - * Exit a parse tree produced by the `pre` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - exitPre?: (ctx: PreContext) => void; - - /** - * Enter a parse tree produced by the `addsub` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - enterAddsub?: (ctx: AddsubContext) => void; - /** - * Exit a parse tree produced by the `addsub` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - exitAddsub?: (ctx: AddsubContext) => void; - - /** - * Enter a parse tree produced by the `notaddsub` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - enterNotaddsub?: (ctx: NotaddsubContext) => void; - /** - * Exit a parse tree produced by the `notaddsub` - * labeled alternative in `painless_parser.unary`. - * @param ctx the parse tree - */ - exitNotaddsub?: (ctx: NotaddsubContext) => void; - - /** - * Enter a parse tree produced by the `classfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - enterClassfuncref?: (ctx: ClassfuncrefContext) => void; - /** - * Exit a parse tree produced by the `classfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - exitClassfuncref?: (ctx: ClassfuncrefContext) => void; - - /** - * Enter a parse tree produced by the `constructorfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - enterConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; - /** - * Exit a parse tree produced by the `constructorfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - exitConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; - - /** - * Enter a parse tree produced by the `localfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - enterLocalfuncref?: (ctx: LocalfuncrefContext) => void; - /** - * Exit a parse tree produced by the `localfuncref` - * labeled alternative in `painless_parser.funcref`. - * @param ctx the parse tree - */ - exitLocalfuncref?: (ctx: LocalfuncrefContext) => void; - - /** - * Enter a parse tree produced by the `if` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterIf?: (ctx: IfContext) => void; - /** - * Exit a parse tree produced by the `if` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitIf?: (ctx: IfContext) => void; - - /** - * Enter a parse tree produced by the `while` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterWhile?: (ctx: WhileContext) => void; - /** - * Exit a parse tree produced by the `while` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitWhile?: (ctx: WhileContext) => void; - - /** - * Enter a parse tree produced by the `for` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterFor?: (ctx: ForContext) => void; - /** - * Exit a parse tree produced by the `for` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitFor?: (ctx: ForContext) => void; - - /** - * Enter a parse tree produced by the `each` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterEach?: (ctx: EachContext) => void; - /** - * Exit a parse tree produced by the `each` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitEach?: (ctx: EachContext) => void; - - /** - * Enter a parse tree produced by the `ineach` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterIneach?: (ctx: IneachContext) => void; - /** - * Exit a parse tree produced by the `ineach` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitIneach?: (ctx: IneachContext) => void; - - /** - * Enter a parse tree produced by the `try` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterTry?: (ctx: TryContext) => void; - /** - * Exit a parse tree produced by the `try` - * labeled alternative in `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitTry?: (ctx: TryContext) => void; - - /** - * Enter a parse tree produced by the `read` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - enterRead?: (ctx: ReadContext) => void; - /** - * Exit a parse tree produced by the `read` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - exitRead?: (ctx: ReadContext) => void; - - /** - * Enter a parse tree produced by the `post` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - enterPost?: (ctx: PostContext) => void; - /** - * Exit a parse tree produced by the `post` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - exitPost?: (ctx: PostContext) => void; - - /** - * Enter a parse tree produced by the `not` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - enterNot?: (ctx: NotContext) => void; - /** - * Exit a parse tree produced by the `not` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - exitNot?: (ctx: NotContext) => void; - - /** - * Enter a parse tree produced by the `cast` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - enterCast?: (ctx: CastContext) => void; - /** - * Exit a parse tree produced by the `cast` - * labeled alternative in `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - exitCast?: (ctx: CastContext) => void; - - /** - * Enter a parse tree produced by the `dynamic` - * labeled alternative in `painless_parser.chain`. - * @param ctx the parse tree - */ - enterDynamic?: (ctx: DynamicContext) => void; - /** - * Exit a parse tree produced by the `dynamic` - * labeled alternative in `painless_parser.chain`. - * @param ctx the parse tree - */ - exitDynamic?: (ctx: DynamicContext) => void; - - /** - * Enter a parse tree produced by the `newarray` - * labeled alternative in `painless_parser.chain`. - * @param ctx the parse tree - */ - enterNewarray?: (ctx: NewarrayContext) => void; - /** - * Exit a parse tree produced by the `newarray` - * labeled alternative in `painless_parser.chain`. - * @param ctx the parse tree - */ - exitNewarray?: (ctx: NewarrayContext) => void; - - /** - * Enter a parse tree produced by the `nonconditional` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - enterNonconditional?: (ctx: NonconditionalContext) => void; - /** - * Exit a parse tree produced by the `nonconditional` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - exitNonconditional?: (ctx: NonconditionalContext) => void; - - /** - * Enter a parse tree produced by the `conditional` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - enterConditional?: (ctx: ConditionalContext) => void; - /** - * Exit a parse tree produced by the `conditional` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - exitConditional?: (ctx: ConditionalContext) => void; - - /** - * Enter a parse tree produced by the `assignment` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - enterAssignment?: (ctx: AssignmentContext) => void; - /** - * Exit a parse tree produced by the `assignment` - * labeled alternative in `painless_parser.expression`. - * @param ctx the parse tree - */ - exitAssignment?: (ctx: AssignmentContext) => void; - - /** - * Enter a parse tree produced by the `do` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterDo?: (ctx: DoContext) => void; - /** - * Exit a parse tree produced by the `do` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitDo?: (ctx: DoContext) => void; - - /** - * Enter a parse tree produced by the `decl` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterDecl?: (ctx: DeclContext) => void; - /** - * Exit a parse tree produced by the `decl` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitDecl?: (ctx: DeclContext) => void; - - /** - * Enter a parse tree produced by the `continue` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterContinue?: (ctx: ContinueContext) => void; - /** - * Exit a parse tree produced by the `continue` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitContinue?: (ctx: ContinueContext) => void; - - /** - * Enter a parse tree produced by the `break` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterBreak?: (ctx: BreakContext) => void; - /** - * Exit a parse tree produced by the `break` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitBreak?: (ctx: BreakContext) => void; - - /** - * Enter a parse tree produced by the `return` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterReturn?: (ctx: ReturnContext) => void; - /** - * Exit a parse tree produced by the `return` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitReturn?: (ctx: ReturnContext) => void; - - /** - * Enter a parse tree produced by the `throw` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterThrow?: (ctx: ThrowContext) => void; - /** - * Exit a parse tree produced by the `throw` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitThrow?: (ctx: ThrowContext) => void; - - /** - * Enter a parse tree produced by the `expr` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterExpr?: (ctx: ExprContext) => void; - /** - * Exit a parse tree produced by the `expr` - * labeled alternative in `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitExpr?: (ctx: ExprContext) => void; - - /** - * Enter a parse tree produced by the `single` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterSingle?: (ctx: SingleContext) => void; - /** - * Exit a parse tree produced by the `single` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitSingle?: (ctx: SingleContext) => void; - - /** - * Enter a parse tree produced by the `binary` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterBinary?: (ctx: BinaryContext) => void; - /** - * Exit a parse tree produced by the `binary` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitBinary?: (ctx: BinaryContext) => void; - - /** - * Enter a parse tree produced by the `comp` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterComp?: (ctx: CompContext) => void; - /** - * Exit a parse tree produced by the `comp` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitComp?: (ctx: CompContext) => void; - - /** - * Enter a parse tree produced by the `instanceof` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterInstanceof?: (ctx: InstanceofContext) => void; - /** - * Exit a parse tree produced by the `instanceof` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitInstanceof?: (ctx: InstanceofContext) => void; - - /** - * Enter a parse tree produced by the `bool` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterBool?: (ctx: BoolContext) => void; - /** - * Exit a parse tree produced by the `bool` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitBool?: (ctx: BoolContext) => void; - - /** - * Enter a parse tree produced by the `elvis` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterElvis?: (ctx: ElvisContext) => void; - /** - * Exit a parse tree produced by the `elvis` - * labeled alternative in `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitElvis?: (ctx: ElvisContext) => void; - - /** - * Enter a parse tree produced by the `precedence` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterPrecedence?: (ctx: PrecedenceContext) => void; - /** - * Exit a parse tree produced by the `precedence` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitPrecedence?: (ctx: PrecedenceContext) => void; - - /** - * Enter a parse tree produced by the `numeric` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterNumeric?: (ctx: NumericContext) => void; - /** - * Exit a parse tree produced by the `numeric` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitNumeric?: (ctx: NumericContext) => void; - - /** - * Enter a parse tree produced by the `true` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterTrue?: (ctx: TrueContext) => void; - /** - * Exit a parse tree produced by the `true` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitTrue?: (ctx: TrueContext) => void; - - /** - * Enter a parse tree produced by the `false` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterFalse?: (ctx: FalseContext) => void; - /** - * Exit a parse tree produced by the `false` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitFalse?: (ctx: FalseContext) => void; - - /** - * Enter a parse tree produced by the `null` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterNull?: (ctx: NullContext) => void; - /** - * Exit a parse tree produced by the `null` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitNull?: (ctx: NullContext) => void; - - /** - * Enter a parse tree produced by the `string` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterString?: (ctx: StringContext) => void; - /** - * Exit a parse tree produced by the `string` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitString?: (ctx: StringContext) => void; - - /** - * Enter a parse tree produced by the `regex` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterRegex?: (ctx: RegexContext) => void; - /** - * Exit a parse tree produced by the `regex` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitRegex?: (ctx: RegexContext) => void; - - /** - * Enter a parse tree produced by the `listinit` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterListinit?: (ctx: ListinitContext) => void; - /** - * Exit a parse tree produced by the `listinit` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitListinit?: (ctx: ListinitContext) => void; - - /** - * Enter a parse tree produced by the `mapinit` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterMapinit?: (ctx: MapinitContext) => void; - /** - * Exit a parse tree produced by the `mapinit` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitMapinit?: (ctx: MapinitContext) => void; - - /** - * Enter a parse tree produced by the `variable` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterVariable?: (ctx: VariableContext) => void; - /** - * Exit a parse tree produced by the `variable` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitVariable?: (ctx: VariableContext) => void; - - /** - * Enter a parse tree produced by the `calllocal` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterCalllocal?: (ctx: CalllocalContext) => void; - /** - * Exit a parse tree produced by the `calllocal` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitCalllocal?: (ctx: CalllocalContext) => void; - - /** - * Enter a parse tree produced by the `newobject` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - enterNewobject?: (ctx: NewobjectContext) => void; - /** - * Exit a parse tree produced by the `newobject` - * labeled alternative in `painless_parser.primary`. - * @param ctx the parse tree - */ - exitNewobject?: (ctx: NewobjectContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.source`. - * @param ctx the parse tree - */ - enterSource?: (ctx: SourceContext) => void; - /** - * Exit a parse tree produced by `painless_parser.source`. - * @param ctx the parse tree - */ - exitSource?: (ctx: SourceContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.function`. - * @param ctx the parse tree - */ - enterFunction?: (ctx: FunctionContext) => void; - /** - * Exit a parse tree produced by `painless_parser.function`. - * @param ctx the parse tree - */ - exitFunction?: (ctx: FunctionContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.parameters`. - * @param ctx the parse tree - */ - enterParameters?: (ctx: ParametersContext) => void; - /** - * Exit a parse tree produced by `painless_parser.parameters`. - * @param ctx the parse tree - */ - exitParameters?: (ctx: ParametersContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.statement`. - * @param ctx the parse tree - */ - enterStatement?: (ctx: StatementContext) => void; - /** - * Exit a parse tree produced by `painless_parser.statement`. - * @param ctx the parse tree - */ - exitStatement?: (ctx: StatementContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.rstatement`. - * @param ctx the parse tree - */ - enterRstatement?: (ctx: RstatementContext) => void; - /** - * Exit a parse tree produced by `painless_parser.rstatement`. - * @param ctx the parse tree - */ - exitRstatement?: (ctx: RstatementContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.dstatement`. - * @param ctx the parse tree - */ - enterDstatement?: (ctx: DstatementContext) => void; - /** - * Exit a parse tree produced by `painless_parser.dstatement`. - * @param ctx the parse tree - */ - exitDstatement?: (ctx: DstatementContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.trailer`. - * @param ctx the parse tree - */ - enterTrailer?: (ctx: TrailerContext) => void; - /** - * Exit a parse tree produced by `painless_parser.trailer`. - * @param ctx the parse tree - */ - exitTrailer?: (ctx: TrailerContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.block`. - * @param ctx the parse tree - */ - enterBlock?: (ctx: BlockContext) => void; - /** - * Exit a parse tree produced by `painless_parser.block`. - * @param ctx the parse tree - */ - exitBlock?: (ctx: BlockContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.empty`. - * @param ctx the parse tree - */ - enterEmpty?: (ctx: EmptyContext) => void; - /** - * Exit a parse tree produced by `painless_parser.empty`. - * @param ctx the parse tree - */ - exitEmpty?: (ctx: EmptyContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.initializer`. - * @param ctx the parse tree - */ - enterInitializer?: (ctx: InitializerContext) => void; - /** - * Exit a parse tree produced by `painless_parser.initializer`. - * @param ctx the parse tree - */ - exitInitializer?: (ctx: InitializerContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.afterthought`. - * @param ctx the parse tree - */ - enterAfterthought?: (ctx: AfterthoughtContext) => void; - /** - * Exit a parse tree produced by `painless_parser.afterthought`. - * @param ctx the parse tree - */ - exitAfterthought?: (ctx: AfterthoughtContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.declaration`. - * @param ctx the parse tree - */ - enterDeclaration?: (ctx: DeclarationContext) => void; - /** - * Exit a parse tree produced by `painless_parser.declaration`. - * @param ctx the parse tree - */ - exitDeclaration?: (ctx: DeclarationContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.decltype`. - * @param ctx the parse tree - */ - enterDecltype?: (ctx: DecltypeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.decltype`. - * @param ctx the parse tree - */ - exitDecltype?: (ctx: DecltypeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.type`. - * @param ctx the parse tree - */ - enterType?: (ctx: TypeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.type`. - * @param ctx the parse tree - */ - exitType?: (ctx: TypeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.declvar`. - * @param ctx the parse tree - */ - enterDeclvar?: (ctx: DeclvarContext) => void; - /** - * Exit a parse tree produced by `painless_parser.declvar`. - * @param ctx the parse tree - */ - exitDeclvar?: (ctx: DeclvarContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.trap`. - * @param ctx the parse tree - */ - enterTrap?: (ctx: TrapContext) => void; - /** - * Exit a parse tree produced by `painless_parser.trap`. - * @param ctx the parse tree - */ - exitTrap?: (ctx: TrapContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - enterNoncondexpression?: (ctx: NoncondexpressionContext) => void; - /** - * Exit a parse tree produced by `painless_parser.noncondexpression`. - * @param ctx the parse tree - */ - exitNoncondexpression?: (ctx: NoncondexpressionContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.expression`. - * @param ctx the parse tree - */ - enterExpression?: (ctx: ExpressionContext) => void; - /** - * Exit a parse tree produced by `painless_parser.expression`. - * @param ctx the parse tree - */ - exitExpression?: (ctx: ExpressionContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.unary`. - * @param ctx the parse tree - */ - enterUnary?: (ctx: UnaryContext) => void; - /** - * Exit a parse tree produced by `painless_parser.unary`. - * @param ctx the parse tree - */ - exitUnary?: (ctx: UnaryContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - enterUnarynotaddsub?: (ctx: UnarynotaddsubContext) => void; - /** - * Exit a parse tree produced by `painless_parser.unarynotaddsub`. - * @param ctx the parse tree - */ - exitUnarynotaddsub?: (ctx: UnarynotaddsubContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.castexpression`. - * @param ctx the parse tree - */ - enterCastexpression?: (ctx: CastexpressionContext) => void; - /** - * Exit a parse tree produced by `painless_parser.castexpression`. - * @param ctx the parse tree - */ - exitCastexpression?: (ctx: CastexpressionContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.primordefcasttype`. - * @param ctx the parse tree - */ - enterPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.primordefcasttype`. - * @param ctx the parse tree - */ - exitPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.refcasttype`. - * @param ctx the parse tree - */ - enterRefcasttype?: (ctx: RefcasttypeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.refcasttype`. - * @param ctx the parse tree - */ - exitRefcasttype?: (ctx: RefcasttypeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.chain`. - * @param ctx the parse tree - */ - enterChain?: (ctx: ChainContext) => void; - /** - * Exit a parse tree produced by `painless_parser.chain`. - * @param ctx the parse tree - */ - exitChain?: (ctx: ChainContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.primary`. - * @param ctx the parse tree - */ - enterPrimary?: (ctx: PrimaryContext) => void; - /** - * Exit a parse tree produced by `painless_parser.primary`. - * @param ctx the parse tree - */ - exitPrimary?: (ctx: PrimaryContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.postfix`. - * @param ctx the parse tree - */ - enterPostfix?: (ctx: PostfixContext) => void; - /** - * Exit a parse tree produced by `painless_parser.postfix`. - * @param ctx the parse tree - */ - exitPostfix?: (ctx: PostfixContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.postdot`. - * @param ctx the parse tree - */ - enterPostdot?: (ctx: PostdotContext) => void; - /** - * Exit a parse tree produced by `painless_parser.postdot`. - * @param ctx the parse tree - */ - exitPostdot?: (ctx: PostdotContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.callinvoke`. - * @param ctx the parse tree - */ - enterCallinvoke?: (ctx: CallinvokeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.callinvoke`. - * @param ctx the parse tree - */ - exitCallinvoke?: (ctx: CallinvokeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.fieldaccess`. - * @param ctx the parse tree - */ - enterFieldaccess?: (ctx: FieldaccessContext) => void; - /** - * Exit a parse tree produced by `painless_parser.fieldaccess`. - * @param ctx the parse tree - */ - exitFieldaccess?: (ctx: FieldaccessContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.braceaccess`. - * @param ctx the parse tree - */ - enterBraceaccess?: (ctx: BraceaccessContext) => void; - /** - * Exit a parse tree produced by `painless_parser.braceaccess`. - * @param ctx the parse tree - */ - exitBraceaccess?: (ctx: BraceaccessContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - enterArrayinitializer?: (ctx: ArrayinitializerContext) => void; - /** - * Exit a parse tree produced by `painless_parser.arrayinitializer`. - * @param ctx the parse tree - */ - exitArrayinitializer?: (ctx: ArrayinitializerContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.listinitializer`. - * @param ctx the parse tree - */ - enterListinitializer?: (ctx: ListinitializerContext) => void; - /** - * Exit a parse tree produced by `painless_parser.listinitializer`. - * @param ctx the parse tree - */ - exitListinitializer?: (ctx: ListinitializerContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.mapinitializer`. - * @param ctx the parse tree - */ - enterMapinitializer?: (ctx: MapinitializerContext) => void; - /** - * Exit a parse tree produced by `painless_parser.mapinitializer`. - * @param ctx the parse tree - */ - exitMapinitializer?: (ctx: MapinitializerContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.maptoken`. - * @param ctx the parse tree - */ - enterMaptoken?: (ctx: MaptokenContext) => void; - /** - * Exit a parse tree produced by `painless_parser.maptoken`. - * @param ctx the parse tree - */ - exitMaptoken?: (ctx: MaptokenContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.arguments`. - * @param ctx the parse tree - */ - enterArguments?: (ctx: ArgumentsContext) => void; - /** - * Exit a parse tree produced by `painless_parser.arguments`. - * @param ctx the parse tree - */ - exitArguments?: (ctx: ArgumentsContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.argument`. - * @param ctx the parse tree - */ - enterArgument?: (ctx: ArgumentContext) => void; - /** - * Exit a parse tree produced by `painless_parser.argument`. - * @param ctx the parse tree - */ - exitArgument?: (ctx: ArgumentContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.lambda`. - * @param ctx the parse tree - */ - enterLambda?: (ctx: LambdaContext) => void; - /** - * Exit a parse tree produced by `painless_parser.lambda`. - * @param ctx the parse tree - */ - exitLambda?: (ctx: LambdaContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.lamtype`. - * @param ctx the parse tree - */ - enterLamtype?: (ctx: LamtypeContext) => void; - /** - * Exit a parse tree produced by `painless_parser.lamtype`. - * @param ctx the parse tree - */ - exitLamtype?: (ctx: LamtypeContext) => void; - - /** - * Enter a parse tree produced by `painless_parser.funcref`. - * @param ctx the parse tree - */ - enterFuncref?: (ctx: FuncrefContext) => void; - /** - * Exit a parse tree produced by `painless_parser.funcref`. - * @param ctx the parse tree - */ - exitFuncref?: (ctx: FuncrefContext) => void; -} - diff --git a/packages/kbn-monaco/src/painless/worker/lib/lexer.ts b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts index 95895211bfae9..d2d80e91d6c5c 100644 --- a/packages/kbn-monaco/src/painless/worker/lib/lexer.ts +++ b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { Token } from 'antlr4ts'; +import type { Token } from 'antlr4'; import { painless_lexer as PainlessLexer } from '../../antlr/painless_lexer'; /* diff --git a/packages/kbn-monaco/src/painless/worker/lib/parser.ts b/packages/kbn-monaco/src/painless/worker/lib/parser.ts index 3adf758e49084..7fd58e302103a 100644 --- a/packages/kbn-monaco/src/painless/worker/lib/parser.ts +++ b/packages/kbn-monaco/src/painless/worker/lib/parser.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CommonTokenStream, CharStreams } from 'antlr4ts'; +import { CommonTokenStream, CharStreams } from 'antlr4'; import { painless_parser as PainlessParser, SourceContext } from '../../antlr/painless_parser'; import { PainlessLexerEnhanced } from './lexer'; import { EditorError } from '../../../types'; From f76b4cedb5a49e6afff57353314616fa7e2ac439 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 15:16:04 +0000 Subject: [PATCH 04/16] create package to handle installing the antlr java executable using brew --- packages/kbn-antlr4-tools/Brewfile.lock.json | 72 ++++++++++++++++++++ packages/kbn-antlr4-tools/README.md | 3 + packages/kbn-antlr4-tools/brewfile | 1 + packages/kbn-antlr4-tools/package.json | 6 ++ 4 files changed, 82 insertions(+) create mode 100644 packages/kbn-antlr4-tools/Brewfile.lock.json create mode 100644 packages/kbn-antlr4-tools/README.md create mode 100644 packages/kbn-antlr4-tools/brewfile create mode 100644 packages/kbn-antlr4-tools/package.json diff --git a/packages/kbn-antlr4-tools/Brewfile.lock.json b/packages/kbn-antlr4-tools/Brewfile.lock.json new file mode 100644 index 0000000000000..2a9aa527e5efa --- /dev/null +++ b/packages/kbn-antlr4-tools/Brewfile.lock.json @@ -0,0 +1,72 @@ +{ + "entries": { + "brew": { + "antlr": { + "version": "4.13.1", + "bottle": { + "rebuild": 0, + "root_url": "https://ghcr.io/v2/homebrew/core", + "files": { + "arm64_sonoma": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b", + "sha256": "77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b" + }, + "arm64_ventura": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "arm64_monterey": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "arm64_big_sur": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "sonoma": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b", + "sha256": "77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b" + }, + "ventura": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "monterey": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "big_sur": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", + "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" + }, + "x86_64_linux": { + "cellar": ":any_skip_relocation", + "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:27ef7591dae5ec3510ce90298ae0909292406d245780c470d6c3cdab168728a6", + "sha256": "27ef7591dae5ec3510ce90298ae0909292406d245780c470d6c3cdab168728a6" + } + } + } + } + } + }, + "system": { + "macos": { + "sonoma": { + "HOMEBREW_VERSION": "4.2.9", + "HOMEBREW_PREFIX": "/opt/homebrew", + "Homebrew/homebrew-core": "api", + "CLT": "15.1.0.0.1.1700200546", + "Xcode": "15.1", + "macOS": "14.3.1" + } + } + } +} diff --git a/packages/kbn-antlr4-tools/README.md b/packages/kbn-antlr4-tools/README.md new file mode 100644 index 0000000000000..56e2e68584a6a --- /dev/null +++ b/packages/kbn-antlr4-tools/README.md @@ -0,0 +1,3 @@ +# @kbn/antlr-tool + +fairly quick way to get [antlr](https://github.com/antlr/antlr4) setup on any machine with brew support, simply run `brew bundle` within this directory. On running the aforementioned command `antlr` should be become available in your path as a valid executable. diff --git a/packages/kbn-antlr4-tools/brewfile b/packages/kbn-antlr4-tools/brewfile new file mode 100644 index 0000000000000..53c6a4068f479 --- /dev/null +++ b/packages/kbn-antlr4-tools/brewfile @@ -0,0 +1 @@ +brew "antlr" \ No newline at end of file diff --git a/packages/kbn-antlr4-tools/package.json b/packages/kbn-antlr4-tools/package.json new file mode 100644 index 0000000000000..ed5caa828a4b7 --- /dev/null +++ b/packages/kbn-antlr4-tools/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/antlr-tool", + "version": "1.0.0", + "private": true, + "license": "SSPL-1.0 OR Elastic License 2.0" +} From e25ebf464e4881155c073c4e1bdd5ae23a49f756 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 15:19:55 +0000 Subject: [PATCH 05/16] new lexer and parser for esql and painless generated from antlr --- package.json | 2 +- packages/kbn-monaco/package.json | 4 +- .../src/esql/antlr/esql_lexer.interp | 2 +- .../kbn-monaco/src/esql/antlr/esql_lexer.ts | 756 +++ .../src/esql/antlr/esql_parser.interp | 6 +- .../kbn-monaco/src/esql/antlr/esql_parser.ts | 5324 +++++++++++++++ .../src/esql/antlr/esql_parser_listener.ts | 876 +++ .../src/esql/lib/ast/ast_helpers.ts | 5 +- .../src/painless/antlr/painless_lexer.interp | 2 +- .../src/painless/antlr/painless_lexer.ts | 480 ++ .../src/painless/antlr/painless_parser.interp | 2 +- .../src/painless/antlr/painless_parser.ts | 5778 +++++++++++++++++ .../antlr/painless_parser_listener.ts | 973 +++ 13 files changed, 14199 insertions(+), 11 deletions(-) create mode 100644 packages/kbn-monaco/src/esql/antlr/esql_lexer.ts create mode 100644 packages/kbn-monaco/src/esql/antlr/esql_parser.ts create mode 100644 packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts create mode 100644 packages/kbn-monaco/src/painless/antlr/painless_lexer.ts create mode 100644 packages/kbn-monaco/src/painless/antlr/painless_parser.ts create mode 100644 packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts diff --git a/package.json b/package.json index c66d6dd0f3914..7892acb575498 100644 --- a/package.json +++ b/package.json @@ -1695,4 +1695,4 @@ "zod-to-json-schema": "^3.22.3" }, "packageManager": "yarn@1.22.21" -} +} \ No newline at end of file diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index 7c1149c4d2ed7..1a99851e0ed67 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -4,8 +4,8 @@ "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", "scripts": { - "build:antlr4:painless": "../../node_modules/antlr4/dist/antlr4.node.cjs -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", - "build:antlr4:esql": "../../node_modules/antlr4/dist/antlr4.node.cjs -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", + "build:antlr4:painless": "antlr -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", + "build:antlr4:esql": "antlr -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", "build:antlr4": "yarn run build:antlr4:painless && npm run build:antlr4:esql" } } diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp b/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp index 6c2e53ac67cdc..65cd96a218a88 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp @@ -410,4 +410,4 @@ SHOW_MODE SETTING_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 106, 1253, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 6, 19, 514, 10, 19, 13, 19, 14, 19, 515, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 524, 10, 20, 12, 20, 14, 20, 527, 11, 20, 3, 20, 5, 20, 530, 10, 20, 3, 20, 5, 20, 533, 10, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 542, 10, 21, 12, 21, 14, 21, 545, 11, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 6, 22, 553, 10, 22, 13, 22, 14, 22, 554, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 5, 33, 596, 10, 33, 3, 33, 6, 33, 599, 10, 33, 13, 33, 14, 33, 600, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 5, 36, 610, 10, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 5, 38, 617, 10, 38, 3, 39, 3, 39, 3, 39, 7, 39, 622, 10, 39, 12, 39, 14, 39, 625, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 633, 10, 39, 12, 39, 14, 39, 636, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 643, 10, 39, 3, 39, 5, 39, 646, 10, 39, 5, 39, 648, 10, 39, 3, 40, 6, 40, 651, 10, 40, 13, 40, 14, 40, 652, 3, 41, 6, 41, 656, 10, 41, 13, 41, 14, 41, 657, 3, 41, 3, 41, 7, 41, 662, 10, 41, 12, 41, 14, 41, 665, 11, 41, 3, 41, 3, 41, 6, 41, 669, 10, 41, 13, 41, 14, 41, 670, 3, 41, 6, 41, 674, 10, 41, 13, 41, 14, 41, 675, 3, 41, 3, 41, 7, 41, 680, 10, 41, 12, 41, 14, 41, 683, 11, 41, 5, 41, 685, 10, 41, 3, 41, 3, 41, 3, 41, 3, 41, 6, 41, 691, 10, 41, 13, 41, 14, 41, 692, 3, 41, 3, 41, 5, 41, 697, 10, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 7, 78, 825, 10, 78, 12, 78, 14, 78, 828, 11, 78, 3, 78, 3, 78, 5, 78, 832, 10, 78, 3, 78, 6, 78, 835, 10, 78, 13, 78, 14, 78, 836, 5, 78, 839, 10, 78, 3, 79, 3, 79, 6, 79, 843, 10, 79, 13, 79, 14, 79, 844, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 5, 90, 896, 10, 90, 3, 91, 6, 91, 899, 10, 91, 13, 91, 14, 91, 900, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 936, 10, 99, 3, 100, 3, 100, 5, 100, 940, 10, 100, 3, 100, 7, 100, 943, 10, 100, 12, 100, 14, 100, 946, 11, 100, 3, 100, 3, 100, 5, 100, 950, 10, 100, 3, 100, 6, 100, 953, 10, 100, 13, 100, 14, 100, 954, 5, 100, 957, 10, 100, 3, 101, 3, 101, 6, 101, 961, 10, 101, 13, 101, 14, 101, 962, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 119, 6, 119, 1038, 10, 119, 13, 119, 14, 119, 1039, 3, 119, 3, 119, 5, 119, 1044, 10, 119, 3, 119, 6, 119, 1047, 10, 119, 13, 119, 14, 119, 1048, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 6, 150, 1186, 10, 150, 13, 150, 14, 150, 1187, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 155, 3, 155, 3, 156, 3, 156, 3, 157, 3, 157, 3, 158, 3, 158, 3, 159, 3, 159, 3, 160, 3, 160, 3, 161, 3, 161, 3, 162, 3, 162, 3, 163, 3, 163, 3, 164, 3, 164, 3, 165, 3, 165, 3, 166, 3, 166, 3, 167, 3, 167, 3, 168, 3, 168, 3, 169, 3, 169, 3, 170, 3, 170, 3, 171, 3, 171, 3, 172, 3, 172, 3, 173, 3, 173, 3, 174, 3, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 177, 3, 177, 3, 178, 3, 178, 3, 179, 3, 179, 4, 543, 634, 2, 2, 180, 13, 2, 3, 15, 2, 4, 17, 2, 5, 19, 2, 6, 21, 2, 7, 23, 2, 8, 25, 2, 9, 27, 2, 10, 29, 2, 11, 31, 2, 12, 33, 2, 13, 35, 2, 14, 37, 2, 15, 39, 2, 16, 41, 2, 17, 43, 2, 18, 45, 2, 19, 47, 2, 20, 49, 2, 21, 51, 2, 22, 53, 2, 23, 55, 2, 2, 57, 2, 2, 59, 2, 24, 61, 2, 25, 63, 2, 26, 65, 2, 27, 67, 2, 2, 69, 2, 2, 71, 2, 2, 73, 2, 2, 75, 2, 2, 77, 2, 2, 79, 2, 2, 81, 2, 2, 83, 2, 2, 85, 2, 2, 87, 2, 28, 89, 2, 29, 91, 2, 30, 93, 2, 31, 95, 2, 32, 97, 2, 33, 99, 2, 34, 101, 2, 35, 103, 2, 36, 105, 2, 37, 107, 2, 38, 109, 2, 39, 111, 2, 40, 113, 2, 41, 115, 2, 42, 117, 2, 43, 119, 2, 44, 121, 2, 45, 123, 2, 46, 125, 2, 47, 127, 2, 48, 129, 2, 49, 131, 2, 50, 133, 2, 51, 135, 2, 52, 137, 2, 53, 139, 2, 54, 141, 2, 55, 143, 2, 56, 145, 2, 57, 147, 2, 58, 149, 2, 59, 151, 2, 60, 153, 2, 61, 155, 2, 62, 157, 2, 63, 159, 2, 64, 161, 2, 65, 163, 2, 66, 165, 2, 67, 167, 2, 2, 169, 2, 68, 171, 2, 69, 173, 2, 70, 175, 2, 71, 177, 2, 2, 179, 2, 2, 181, 2, 2, 183, 2, 2, 185, 2, 2, 187, 2, 72, 189, 2, 2, 191, 2, 73, 193, 2, 2, 195, 2, 74, 197, 2, 75, 199, 2, 76, 201, 2, 2, 203, 2, 2, 205, 2, 2, 207, 2, 2, 209, 2, 2, 211, 2, 77, 213, 2, 78, 215, 2, 79, 217, 2, 80, 219, 2, 2, 221, 2, 2, 223, 2, 2, 225, 2, 2, 227, 2, 81, 229, 2, 2, 231, 2, 82, 233, 2, 83, 235, 2, 84, 237, 2, 2, 239, 2, 2, 241, 2, 85, 243, 2, 86, 245, 2, 2, 247, 2, 87, 249, 2, 2, 251, 2, 2, 253, 2, 88, 255, 2, 89, 257, 2, 90, 259, 2, 2, 261, 2, 2, 263, 2, 2, 265, 2, 2, 267, 2, 2, 269, 2, 2, 271, 2, 2, 273, 2, 91, 275, 2, 92, 277, 2, 93, 279, 2, 2, 281, 2, 2, 283, 2, 2, 285, 2, 2, 287, 2, 94, 289, 2, 95, 291, 2, 96, 293, 2, 2, 295, 2, 97, 297, 2, 98, 299, 2, 99, 301, 2, 100, 303, 2, 101, 305, 2, 2, 307, 2, 102, 309, 2, 103, 311, 2, 104, 313, 2, 105, 315, 2, 106, 317, 2, 2, 319, 2, 2, 321, 2, 2, 323, 2, 2, 325, 2, 2, 327, 2, 2, 329, 2, 2, 331, 2, 2, 333, 2, 2, 335, 2, 2, 337, 2, 2, 339, 2, 2, 341, 2, 2, 343, 2, 2, 345, 2, 2, 347, 2, 2, 349, 2, 2, 351, 2, 2, 353, 2, 2, 355, 2, 2, 357, 2, 2, 359, 2, 2, 361, 2, 2, 363, 2, 2, 365, 2, 2, 367, 2, 2, 13, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 40, 8, 2, 11, 12, 15, 15, 34, 34, 49, 49, 93, 93, 95, 95, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 7, 2, 36, 36, 94, 94, 112, 112, 116, 116, 118, 118, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 12, 2, 11, 12, 15, 15, 34, 34, 46, 46, 49, 49, 63, 63, 93, 93, 95, 95, 98, 98, 126, 126, 4, 2, 44, 44, 49, 49, 13, 2, 11, 12, 15, 15, 34, 34, 36, 37, 46, 46, 49, 49, 60, 60, 62, 62, 64, 65, 94, 94, 126, 126, 4, 2, 67, 67, 99, 99, 4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102, 4, 2, 72, 72, 104, 104, 4, 2, 73, 73, 105, 105, 4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108, 4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111, 4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114, 4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117, 4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120, 4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 2, 1255, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 3, 55, 3, 2, 2, 2, 3, 57, 3, 2, 2, 2, 3, 59, 3, 2, 2, 2, 3, 61, 3, 2, 2, 2, 3, 63, 3, 2, 2, 2, 4, 65, 3, 2, 2, 2, 4, 87, 3, 2, 2, 2, 4, 89, 3, 2, 2, 2, 4, 91, 3, 2, 2, 2, 4, 93, 3, 2, 2, 2, 4, 95, 3, 2, 2, 2, 4, 97, 3, 2, 2, 2, 4, 99, 3, 2, 2, 2, 4, 101, 3, 2, 2, 2, 4, 103, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 4, 109, 3, 2, 2, 2, 4, 111, 3, 2, 2, 2, 4, 113, 3, 2, 2, 2, 4, 115, 3, 2, 2, 2, 4, 117, 3, 2, 2, 2, 4, 119, 3, 2, 2, 2, 4, 121, 3, 2, 2, 2, 4, 123, 3, 2, 2, 2, 4, 125, 3, 2, 2, 2, 4, 127, 3, 2, 2, 2, 4, 129, 3, 2, 2, 2, 4, 131, 3, 2, 2, 2, 4, 133, 3, 2, 2, 2, 4, 135, 3, 2, 2, 2, 4, 137, 3, 2, 2, 2, 4, 139, 3, 2, 2, 2, 4, 141, 3, 2, 2, 2, 4, 143, 3, 2, 2, 2, 4, 145, 3, 2, 2, 2, 4, 147, 3, 2, 2, 2, 4, 149, 3, 2, 2, 2, 4, 151, 3, 2, 2, 2, 4, 153, 3, 2, 2, 2, 4, 155, 3, 2, 2, 2, 4, 157, 3, 2, 2, 2, 4, 159, 3, 2, 2, 2, 4, 161, 3, 2, 2, 2, 4, 163, 3, 2, 2, 2, 4, 165, 3, 2, 2, 2, 4, 169, 3, 2, 2, 2, 4, 171, 3, 2, 2, 2, 4, 173, 3, 2, 2, 2, 4, 175, 3, 2, 2, 2, 5, 177, 3, 2, 2, 2, 5, 179, 3, 2, 2, 2, 5, 181, 3, 2, 2, 2, 5, 183, 3, 2, 2, 2, 5, 185, 3, 2, 2, 2, 5, 187, 3, 2, 2, 2, 5, 191, 3, 2, 2, 2, 5, 193, 3, 2, 2, 2, 5, 195, 3, 2, 2, 2, 5, 197, 3, 2, 2, 2, 5, 199, 3, 2, 2, 2, 6, 201, 3, 2, 2, 2, 6, 203, 3, 2, 2, 2, 6, 205, 3, 2, 2, 2, 6, 211, 3, 2, 2, 2, 6, 213, 3, 2, 2, 2, 6, 215, 3, 2, 2, 2, 6, 217, 3, 2, 2, 2, 7, 219, 3, 2, 2, 2, 7, 221, 3, 2, 2, 2, 7, 223, 3, 2, 2, 2, 7, 225, 3, 2, 2, 2, 7, 227, 3, 2, 2, 2, 7, 229, 3, 2, 2, 2, 7, 231, 3, 2, 2, 2, 7, 233, 3, 2, 2, 2, 7, 235, 3, 2, 2, 2, 8, 237, 3, 2, 2, 2, 8, 239, 3, 2, 2, 2, 8, 241, 3, 2, 2, 2, 8, 243, 3, 2, 2, 2, 8, 247, 3, 2, 2, 2, 8, 249, 3, 2, 2, 2, 8, 251, 3, 2, 2, 2, 8, 253, 3, 2, 2, 2, 8, 255, 3, 2, 2, 2, 8, 257, 3, 2, 2, 2, 9, 259, 3, 2, 2, 2, 9, 261, 3, 2, 2, 2, 9, 263, 3, 2, 2, 2, 9, 265, 3, 2, 2, 2, 9, 267, 3, 2, 2, 2, 9, 269, 3, 2, 2, 2, 9, 271, 3, 2, 2, 2, 9, 273, 3, 2, 2, 2, 9, 275, 3, 2, 2, 2, 9, 277, 3, 2, 2, 2, 10, 279, 3, 2, 2, 2, 10, 281, 3, 2, 2, 2, 10, 283, 3, 2, 2, 2, 10, 285, 3, 2, 2, 2, 10, 287, 3, 2, 2, 2, 10, 289, 3, 2, 2, 2, 10, 291, 3, 2, 2, 2, 11, 293, 3, 2, 2, 2, 11, 295, 3, 2, 2, 2, 11, 297, 3, 2, 2, 2, 11, 299, 3, 2, 2, 2, 11, 301, 3, 2, 2, 2, 11, 303, 3, 2, 2, 2, 12, 305, 3, 2, 2, 2, 12, 307, 3, 2, 2, 2, 12, 309, 3, 2, 2, 2, 12, 311, 3, 2, 2, 2, 12, 313, 3, 2, 2, 2, 12, 315, 3, 2, 2, 2, 13, 369, 3, 2, 2, 2, 15, 379, 3, 2, 2, 2, 17, 386, 3, 2, 2, 2, 19, 395, 3, 2, 2, 2, 21, 402, 3, 2, 2, 2, 23, 412, 3, 2, 2, 2, 25, 419, 3, 2, 2, 2, 27, 426, 3, 2, 2, 2, 29, 440, 3, 2, 2, 2, 31, 447, 3, 2, 2, 2, 33, 455, 3, 2, 2, 2, 35, 467, 3, 2, 2, 2, 37, 476, 3, 2, 2, 2, 39, 482, 3, 2, 2, 2, 41, 489, 3, 2, 2, 2, 43, 496, 3, 2, 2, 2, 45, 504, 3, 2, 2, 2, 47, 513, 3, 2, 2, 2, 49, 519, 3, 2, 2, 2, 51, 536, 3, 2, 2, 2, 53, 552, 3, 2, 2, 2, 55, 558, 3, 2, 2, 2, 57, 563, 3, 2, 2, 2, 59, 568, 3, 2, 2, 2, 61, 572, 3, 2, 2, 2, 63, 576, 3, 2, 2, 2, 65, 580, 3, 2, 2, 2, 67, 584, 3, 2, 2, 2, 69, 586, 3, 2, 2, 2, 71, 588, 3, 2, 2, 2, 73, 591, 3, 2, 2, 2, 75, 593, 3, 2, 2, 2, 77, 602, 3, 2, 2, 2, 79, 604, 3, 2, 2, 2, 81, 609, 3, 2, 2, 2, 83, 611, 3, 2, 2, 2, 85, 616, 3, 2, 2, 2, 87, 647, 3, 2, 2, 2, 89, 650, 3, 2, 2, 2, 91, 696, 3, 2, 2, 2, 93, 698, 3, 2, 2, 2, 95, 701, 3, 2, 2, 2, 97, 705, 3, 2, 2, 2, 99, 709, 3, 2, 2, 2, 101, 711, 3, 2, 2, 2, 103, 713, 3, 2, 2, 2, 105, 718, 3, 2, 2, 2, 107, 720, 3, 2, 2, 2, 109, 726, 3, 2, 2, 2, 111, 732, 3, 2, 2, 2, 113, 737, 3, 2, 2, 2, 115, 739, 3, 2, 2, 2, 117, 742, 3, 2, 2, 2, 119, 745, 3, 2, 2, 2, 121, 750, 3, 2, 2, 2, 123, 754, 3, 2, 2, 2, 125, 759, 3, 2, 2, 2, 127, 765, 3, 2, 2, 2, 129, 768, 3, 2, 2, 2, 131, 770, 3, 2, 2, 2, 133, 776, 3, 2, 2, 2, 135, 778, 3, 2, 2, 2, 137, 783, 3, 2, 2, 2, 139, 786, 3, 2, 2, 2, 141, 789, 3, 2, 2, 2, 143, 792, 3, 2, 2, 2, 145, 794, 3, 2, 2, 2, 147, 797, 3, 2, 2, 2, 149, 799, 3, 2, 2, 2, 151, 802, 3, 2, 2, 2, 153, 804, 3, 2, 2, 2, 155, 806, 3, 2, 2, 2, 157, 808, 3, 2, 2, 2, 159, 810, 3, 2, 2, 2, 161, 812, 3, 2, 2, 2, 163, 817, 3, 2, 2, 2, 165, 838, 3, 2, 2, 2, 167, 840, 3, 2, 2, 2, 169, 848, 3, 2, 2, 2, 171, 850, 3, 2, 2, 2, 173, 854, 3, 2, 2, 2, 175, 858, 3, 2, 2, 2, 177, 862, 3, 2, 2, 2, 179, 867, 3, 2, 2, 2, 181, 871, 3, 2, 2, 2, 183, 875, 3, 2, 2, 2, 185, 879, 3, 2, 2, 2, 187, 883, 3, 2, 2, 2, 189, 895, 3, 2, 2, 2, 191, 898, 3, 2, 2, 2, 193, 902, 3, 2, 2, 2, 195, 906, 3, 2, 2, 2, 197, 910, 3, 2, 2, 2, 199, 914, 3, 2, 2, 2, 201, 918, 3, 2, 2, 2, 203, 923, 3, 2, 2, 2, 205, 927, 3, 2, 2, 2, 207, 935, 3, 2, 2, 2, 209, 956, 3, 2, 2, 2, 211, 960, 3, 2, 2, 2, 213, 964, 3, 2, 2, 2, 215, 968, 3, 2, 2, 2, 217, 972, 3, 2, 2, 2, 219, 976, 3, 2, 2, 2, 221, 981, 3, 2, 2, 2, 223, 985, 3, 2, 2, 2, 225, 989, 3, 2, 2, 2, 227, 993, 3, 2, 2, 2, 229, 996, 3, 2, 2, 2, 231, 1000, 3, 2, 2, 2, 233, 1004, 3, 2, 2, 2, 235, 1008, 3, 2, 2, 2, 237, 1012, 3, 2, 2, 2, 239, 1017, 3, 2, 2, 2, 241, 1022, 3, 2, 2, 2, 243, 1027, 3, 2, 2, 2, 245, 1034, 3, 2, 2, 2, 247, 1043, 3, 2, 2, 2, 249, 1050, 3, 2, 2, 2, 251, 1054, 3, 2, 2, 2, 253, 1058, 3, 2, 2, 2, 255, 1062, 3, 2, 2, 2, 257, 1066, 3, 2, 2, 2, 259, 1070, 3, 2, 2, 2, 261, 1076, 3, 2, 2, 2, 263, 1080, 3, 2, 2, 2, 265, 1084, 3, 2, 2, 2, 267, 1088, 3, 2, 2, 2, 269, 1092, 3, 2, 2, 2, 271, 1096, 3, 2, 2, 2, 273, 1100, 3, 2, 2, 2, 275, 1104, 3, 2, 2, 2, 277, 1108, 3, 2, 2, 2, 279, 1112, 3, 2, 2, 2, 281, 1117, 3, 2, 2, 2, 283, 1121, 3, 2, 2, 2, 285, 1125, 3, 2, 2, 2, 287, 1129, 3, 2, 2, 2, 289, 1133, 3, 2, 2, 2, 291, 1137, 3, 2, 2, 2, 293, 1141, 3, 2, 2, 2, 295, 1146, 3, 2, 2, 2, 297, 1151, 3, 2, 2, 2, 299, 1161, 3, 2, 2, 2, 301, 1165, 3, 2, 2, 2, 303, 1169, 3, 2, 2, 2, 305, 1173, 3, 2, 2, 2, 307, 1178, 3, 2, 2, 2, 309, 1185, 3, 2, 2, 2, 311, 1189, 3, 2, 2, 2, 313, 1193, 3, 2, 2, 2, 315, 1197, 3, 2, 2, 2, 317, 1201, 3, 2, 2, 2, 319, 1203, 3, 2, 2, 2, 321, 1205, 3, 2, 2, 2, 323, 1207, 3, 2, 2, 2, 325, 1209, 3, 2, 2, 2, 327, 1211, 3, 2, 2, 2, 329, 1213, 3, 2, 2, 2, 331, 1215, 3, 2, 2, 2, 333, 1217, 3, 2, 2, 2, 335, 1219, 3, 2, 2, 2, 337, 1221, 3, 2, 2, 2, 339, 1223, 3, 2, 2, 2, 341, 1225, 3, 2, 2, 2, 343, 1227, 3, 2, 2, 2, 345, 1229, 3, 2, 2, 2, 347, 1231, 3, 2, 2, 2, 349, 1233, 3, 2, 2, 2, 351, 1235, 3, 2, 2, 2, 353, 1237, 3, 2, 2, 2, 355, 1239, 3, 2, 2, 2, 357, 1241, 3, 2, 2, 2, 359, 1243, 3, 2, 2, 2, 361, 1245, 3, 2, 2, 2, 363, 1247, 3, 2, 2, 2, 365, 1249, 3, 2, 2, 2, 367, 1251, 3, 2, 2, 2, 369, 370, 5, 323, 157, 2, 370, 371, 5, 333, 162, 2, 371, 372, 5, 353, 172, 2, 372, 373, 5, 353, 172, 2, 373, 374, 5, 325, 158, 2, 374, 375, 5, 321, 156, 2, 375, 376, 5, 355, 173, 2, 376, 377, 3, 2, 2, 2, 377, 378, 8, 2, 2, 2, 378, 14, 3, 2, 2, 2, 379, 380, 5, 323, 157, 2, 380, 381, 5, 351, 171, 2, 381, 382, 5, 345, 168, 2, 382, 383, 5, 347, 169, 2, 383, 384, 3, 2, 2, 2, 384, 385, 8, 3, 3, 2, 385, 16, 3, 2, 2, 2, 386, 387, 5, 325, 158, 2, 387, 388, 5, 343, 167, 2, 388, 389, 5, 351, 171, 2, 389, 390, 5, 333, 162, 2, 390, 391, 5, 321, 156, 2, 391, 392, 5, 331, 161, 2, 392, 393, 3, 2, 2, 2, 393, 394, 8, 4, 4, 2, 394, 18, 3, 2, 2, 2, 395, 396, 5, 325, 158, 2, 396, 397, 5, 359, 175, 2, 397, 398, 5, 317, 154, 2, 398, 399, 5, 339, 165, 2, 399, 400, 3, 2, 2, 2, 400, 401, 8, 5, 2, 2, 401, 20, 3, 2, 2, 2, 402, 403, 5, 325, 158, 2, 403, 404, 5, 363, 177, 2, 404, 405, 5, 347, 169, 2, 405, 406, 5, 339, 165, 2, 406, 407, 5, 317, 154, 2, 407, 408, 5, 333, 162, 2, 408, 409, 5, 343, 167, 2, 409, 410, 3, 2, 2, 2, 410, 411, 8, 6, 5, 2, 411, 22, 3, 2, 2, 2, 412, 413, 5, 327, 159, 2, 413, 414, 5, 351, 171, 2, 414, 415, 5, 345, 168, 2, 415, 416, 5, 341, 166, 2, 416, 417, 3, 2, 2, 2, 417, 418, 8, 7, 6, 2, 418, 24, 3, 2, 2, 2, 419, 420, 5, 329, 160, 2, 420, 421, 5, 351, 171, 2, 421, 422, 5, 345, 168, 2, 422, 423, 5, 337, 164, 2, 423, 424, 3, 2, 2, 2, 424, 425, 8, 8, 2, 2, 425, 26, 3, 2, 2, 2, 426, 427, 5, 333, 162, 2, 427, 428, 5, 343, 167, 2, 428, 429, 5, 339, 165, 2, 429, 430, 5, 333, 162, 2, 430, 431, 5, 343, 167, 2, 431, 432, 5, 325, 158, 2, 432, 433, 5, 353, 172, 2, 433, 434, 5, 355, 173, 2, 434, 435, 5, 317, 154, 2, 435, 436, 5, 355, 173, 2, 436, 437, 5, 353, 172, 2, 437, 438, 3, 2, 2, 2, 438, 439, 8, 9, 2, 2, 439, 28, 3, 2, 2, 2, 440, 441, 5, 337, 164, 2, 441, 442, 5, 325, 158, 2, 442, 443, 5, 325, 158, 2, 443, 444, 5, 347, 169, 2, 444, 445, 3, 2, 2, 2, 445, 446, 8, 10, 3, 2, 446, 30, 3, 2, 2, 2, 447, 448, 5, 339, 165, 2, 448, 449, 5, 333, 162, 2, 449, 450, 5, 341, 166, 2, 450, 451, 5, 333, 162, 2, 451, 452, 5, 355, 173, 2, 452, 453, 3, 2, 2, 2, 453, 454, 8, 11, 2, 2, 454, 32, 3, 2, 2, 2, 455, 456, 5, 341, 166, 2, 456, 457, 5, 359, 175, 2, 457, 458, 5, 83, 37, 2, 458, 459, 5, 325, 158, 2, 459, 460, 5, 363, 177, 2, 460, 461, 5, 347, 169, 2, 461, 462, 5, 317, 154, 2, 462, 463, 5, 343, 167, 2, 463, 464, 5, 323, 157, 2, 464, 465, 3, 2, 2, 2, 465, 466, 8, 12, 7, 2, 466, 34, 3, 2, 2, 2, 467, 468, 5, 351, 171, 2, 468, 469, 5, 325, 158, 2, 469, 470, 5, 343, 167, 2, 470, 471, 5, 317, 154, 2, 471, 472, 5, 341, 166, 2, 472, 473, 5, 325, 158, 2, 473, 474, 3, 2, 2, 2, 474, 475, 8, 13, 8, 2, 475, 36, 3, 2, 2, 2, 476, 477, 5, 351, 171, 2, 477, 478, 5, 345, 168, 2, 478, 479, 5, 361, 176, 2, 479, 480, 3, 2, 2, 2, 480, 481, 8, 14, 2, 2, 481, 38, 3, 2, 2, 2, 482, 483, 5, 353, 172, 2, 483, 484, 5, 331, 161, 2, 484, 485, 5, 345, 168, 2, 485, 486, 5, 361, 176, 2, 486, 487, 3, 2, 2, 2, 487, 488, 8, 15, 9, 2, 488, 40, 3, 2, 2, 2, 489, 490, 5, 353, 172, 2, 490, 491, 5, 345, 168, 2, 491, 492, 5, 351, 171, 2, 492, 493, 5, 355, 173, 2, 493, 494, 3, 2, 2, 2, 494, 495, 8, 16, 2, 2, 495, 42, 3, 2, 2, 2, 496, 497, 5, 353, 172, 2, 497, 498, 5, 355, 173, 2, 498, 499, 5, 317, 154, 2, 499, 500, 5, 355, 173, 2, 500, 501, 5, 353, 172, 2, 501, 502, 3, 2, 2, 2, 502, 503, 8, 17, 2, 2, 503, 44, 3, 2, 2, 2, 504, 505, 5, 361, 176, 2, 505, 506, 5, 331, 161, 2, 506, 507, 5, 325, 158, 2, 507, 508, 5, 351, 171, 2, 508, 509, 5, 325, 158, 2, 509, 510, 3, 2, 2, 2, 510, 511, 8, 18, 2, 2, 511, 46, 3, 2, 2, 2, 512, 514, 10, 2, 2, 2, 513, 512, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 518, 8, 19, 2, 2, 518, 48, 3, 2, 2, 2, 519, 520, 7, 49, 2, 2, 520, 521, 7, 49, 2, 2, 521, 525, 3, 2, 2, 2, 522, 524, 10, 3, 2, 2, 523, 522, 3, 2, 2, 2, 524, 527, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 528, 530, 7, 15, 2, 2, 529, 528, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 533, 7, 12, 2, 2, 532, 531, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 8, 20, 10, 2, 535, 50, 3, 2, 2, 2, 536, 537, 7, 49, 2, 2, 537, 538, 7, 44, 2, 2, 538, 543, 3, 2, 2, 2, 539, 542, 5, 51, 21, 2, 540, 542, 11, 2, 2, 2, 541, 539, 3, 2, 2, 2, 541, 540, 3, 2, 2, 2, 542, 545, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 544, 546, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 546, 547, 7, 44, 2, 2, 547, 548, 7, 49, 2, 2, 548, 549, 3, 2, 2, 2, 549, 550, 8, 21, 10, 2, 550, 52, 3, 2, 2, 2, 551, 553, 9, 4, 2, 2, 552, 551, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 552, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 556, 3, 2, 2, 2, 556, 557, 8, 22, 10, 2, 557, 54, 3, 2, 2, 2, 558, 559, 5, 161, 76, 2, 559, 560, 3, 2, 2, 2, 560, 561, 8, 23, 11, 2, 561, 562, 8, 23, 12, 2, 562, 56, 3, 2, 2, 2, 563, 564, 5, 65, 28, 2, 564, 565, 3, 2, 2, 2, 565, 566, 8, 24, 13, 2, 566, 567, 8, 24, 14, 2, 567, 58, 3, 2, 2, 2, 568, 569, 5, 53, 22, 2, 569, 570, 3, 2, 2, 2, 570, 571, 8, 25, 10, 2, 571, 60, 3, 2, 2, 2, 572, 573, 5, 49, 20, 2, 573, 574, 3, 2, 2, 2, 574, 575, 8, 26, 10, 2, 575, 62, 3, 2, 2, 2, 576, 577, 5, 51, 21, 2, 577, 578, 3, 2, 2, 2, 578, 579, 8, 27, 10, 2, 579, 64, 3, 2, 2, 2, 580, 581, 7, 126, 2, 2, 581, 582, 3, 2, 2, 2, 582, 583, 8, 28, 14, 2, 583, 66, 3, 2, 2, 2, 584, 585, 9, 5, 2, 2, 585, 68, 3, 2, 2, 2, 586, 587, 9, 6, 2, 2, 587, 70, 3, 2, 2, 2, 588, 589, 7, 94, 2, 2, 589, 590, 9, 7, 2, 2, 590, 72, 3, 2, 2, 2, 591, 592, 10, 8, 2, 2, 592, 74, 3, 2, 2, 2, 593, 595, 9, 9, 2, 2, 594, 596, 9, 10, 2, 2, 595, 594, 3, 2, 2, 2, 595, 596, 3, 2, 2, 2, 596, 598, 3, 2, 2, 2, 597, 599, 5, 67, 29, 2, 598, 597, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 598, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 76, 3, 2, 2, 2, 602, 603, 7, 66, 2, 2, 603, 78, 3, 2, 2, 2, 604, 605, 7, 98, 2, 2, 605, 80, 3, 2, 2, 2, 606, 610, 10, 11, 2, 2, 607, 608, 7, 98, 2, 2, 608, 610, 7, 98, 2, 2, 609, 606, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 610, 82, 3, 2, 2, 2, 611, 612, 7, 97, 2, 2, 612, 84, 3, 2, 2, 2, 613, 617, 5, 69, 30, 2, 614, 617, 5, 67, 29, 2, 615, 617, 5, 83, 37, 2, 616, 613, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 616, 615, 3, 2, 2, 2, 617, 86, 3, 2, 2, 2, 618, 623, 7, 36, 2, 2, 619, 622, 5, 71, 31, 2, 620, 622, 5, 73, 32, 2, 621, 619, 3, 2, 2, 2, 621, 620, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 626, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 648, 7, 36, 2, 2, 627, 628, 7, 36, 2, 2, 628, 629, 7, 36, 2, 2, 629, 630, 7, 36, 2, 2, 630, 634, 3, 2, 2, 2, 631, 633, 10, 3, 2, 2, 632, 631, 3, 2, 2, 2, 633, 636, 3, 2, 2, 2, 634, 635, 3, 2, 2, 2, 634, 632, 3, 2, 2, 2, 635, 637, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 637, 638, 7, 36, 2, 2, 638, 639, 7, 36, 2, 2, 639, 640, 7, 36, 2, 2, 640, 642, 3, 2, 2, 2, 641, 643, 7, 36, 2, 2, 642, 641, 3, 2, 2, 2, 642, 643, 3, 2, 2, 2, 643, 645, 3, 2, 2, 2, 644, 646, 7, 36, 2, 2, 645, 644, 3, 2, 2, 2, 645, 646, 3, 2, 2, 2, 646, 648, 3, 2, 2, 2, 647, 618, 3, 2, 2, 2, 647, 627, 3, 2, 2, 2, 648, 88, 3, 2, 2, 2, 649, 651, 5, 67, 29, 2, 650, 649, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 652, 653, 3, 2, 2, 2, 653, 90, 3, 2, 2, 2, 654, 656, 5, 67, 29, 2, 655, 654, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 663, 5, 105, 48, 2, 660, 662, 5, 67, 29, 2, 661, 660, 3, 2, 2, 2, 662, 665, 3, 2, 2, 2, 663, 661, 3, 2, 2, 2, 663, 664, 3, 2, 2, 2, 664, 697, 3, 2, 2, 2, 665, 663, 3, 2, 2, 2, 666, 668, 5, 105, 48, 2, 667, 669, 5, 67, 29, 2, 668, 667, 3, 2, 2, 2, 669, 670, 3, 2, 2, 2, 670, 668, 3, 2, 2, 2, 670, 671, 3, 2, 2, 2, 671, 697, 3, 2, 2, 2, 672, 674, 5, 67, 29, 2, 673, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 684, 3, 2, 2, 2, 677, 681, 5, 105, 48, 2, 678, 680, 5, 67, 29, 2, 679, 678, 3, 2, 2, 2, 680, 683, 3, 2, 2, 2, 681, 679, 3, 2, 2, 2, 681, 682, 3, 2, 2, 2, 682, 685, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 684, 677, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 685, 686, 3, 2, 2, 2, 686, 687, 5, 75, 33, 2, 687, 697, 3, 2, 2, 2, 688, 690, 5, 105, 48, 2, 689, 691, 5, 67, 29, 2, 690, 689, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 690, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 695, 5, 75, 33, 2, 695, 697, 3, 2, 2, 2, 696, 655, 3, 2, 2, 2, 696, 666, 3, 2, 2, 2, 696, 673, 3, 2, 2, 2, 696, 688, 3, 2, 2, 2, 697, 92, 3, 2, 2, 2, 698, 699, 5, 319, 155, 2, 699, 700, 5, 365, 178, 2, 700, 94, 3, 2, 2, 2, 701, 702, 5, 317, 154, 2, 702, 703, 5, 343, 167, 2, 703, 704, 5, 323, 157, 2, 704, 96, 3, 2, 2, 2, 705, 706, 5, 317, 154, 2, 706, 707, 5, 353, 172, 2, 707, 708, 5, 321, 156, 2, 708, 98, 3, 2, 2, 2, 709, 710, 7, 63, 2, 2, 710, 100, 3, 2, 2, 2, 711, 712, 7, 46, 2, 2, 712, 102, 3, 2, 2, 2, 713, 714, 5, 323, 157, 2, 714, 715, 5, 325, 158, 2, 715, 716, 5, 353, 172, 2, 716, 717, 5, 321, 156, 2, 717, 104, 3, 2, 2, 2, 718, 719, 7, 48, 2, 2, 719, 106, 3, 2, 2, 2, 720, 721, 5, 327, 159, 2, 721, 722, 5, 317, 154, 2, 722, 723, 5, 339, 165, 2, 723, 724, 5, 353, 172, 2, 724, 725, 5, 325, 158, 2, 725, 108, 3, 2, 2, 2, 726, 727, 5, 327, 159, 2, 727, 728, 5, 333, 162, 2, 728, 729, 5, 351, 171, 2, 729, 730, 5, 353, 172, 2, 730, 731, 5, 355, 173, 2, 731, 110, 3, 2, 2, 2, 732, 733, 5, 339, 165, 2, 733, 734, 5, 317, 154, 2, 734, 735, 5, 353, 172, 2, 735, 736, 5, 355, 173, 2, 736, 112, 3, 2, 2, 2, 737, 738, 7, 42, 2, 2, 738, 114, 3, 2, 2, 2, 739, 740, 5, 333, 162, 2, 740, 741, 5, 343, 167, 2, 741, 116, 3, 2, 2, 2, 742, 743, 5, 333, 162, 2, 743, 744, 5, 353, 172, 2, 744, 118, 3, 2, 2, 2, 745, 746, 5, 339, 165, 2, 746, 747, 5, 333, 162, 2, 747, 748, 5, 337, 164, 2, 748, 749, 5, 325, 158, 2, 749, 120, 3, 2, 2, 2, 750, 751, 5, 343, 167, 2, 751, 752, 5, 345, 168, 2, 752, 753, 5, 355, 173, 2, 753, 122, 3, 2, 2, 2, 754, 755, 5, 343, 167, 2, 755, 756, 5, 357, 174, 2, 756, 757, 5, 339, 165, 2, 757, 758, 5, 339, 165, 2, 758, 124, 3, 2, 2, 2, 759, 760, 5, 343, 167, 2, 760, 761, 5, 357, 174, 2, 761, 762, 5, 339, 165, 2, 762, 763, 5, 339, 165, 2, 763, 764, 5, 353, 172, 2, 764, 126, 3, 2, 2, 2, 765, 766, 5, 345, 168, 2, 766, 767, 5, 351, 171, 2, 767, 128, 3, 2, 2, 2, 768, 769, 7, 65, 2, 2, 769, 130, 3, 2, 2, 2, 770, 771, 5, 351, 171, 2, 771, 772, 5, 339, 165, 2, 772, 773, 5, 333, 162, 2, 773, 774, 5, 337, 164, 2, 774, 775, 5, 325, 158, 2, 775, 132, 3, 2, 2, 2, 776, 777, 7, 43, 2, 2, 777, 134, 3, 2, 2, 2, 778, 779, 5, 355, 173, 2, 779, 780, 5, 351, 171, 2, 780, 781, 5, 357, 174, 2, 781, 782, 5, 325, 158, 2, 782, 136, 3, 2, 2, 2, 783, 784, 7, 63, 2, 2, 784, 785, 7, 63, 2, 2, 785, 138, 3, 2, 2, 2, 786, 787, 7, 63, 2, 2, 787, 788, 7, 128, 2, 2, 788, 140, 3, 2, 2, 2, 789, 790, 7, 35, 2, 2, 790, 791, 7, 63, 2, 2, 791, 142, 3, 2, 2, 2, 792, 793, 7, 62, 2, 2, 793, 144, 3, 2, 2, 2, 794, 795, 7, 62, 2, 2, 795, 796, 7, 63, 2, 2, 796, 146, 3, 2, 2, 2, 797, 798, 7, 64, 2, 2, 798, 148, 3, 2, 2, 2, 799, 800, 7, 64, 2, 2, 800, 801, 7, 63, 2, 2, 801, 150, 3, 2, 2, 2, 802, 803, 7, 45, 2, 2, 803, 152, 3, 2, 2, 2, 804, 805, 7, 47, 2, 2, 805, 154, 3, 2, 2, 2, 806, 807, 7, 44, 2, 2, 807, 156, 3, 2, 2, 2, 808, 809, 7, 49, 2, 2, 809, 158, 3, 2, 2, 2, 810, 811, 7, 39, 2, 2, 811, 160, 3, 2, 2, 2, 812, 813, 7, 93, 2, 2, 813, 814, 3, 2, 2, 2, 814, 815, 8, 76, 2, 2, 815, 816, 8, 76, 2, 2, 816, 162, 3, 2, 2, 2, 817, 818, 7, 95, 2, 2, 818, 819, 3, 2, 2, 2, 819, 820, 8, 77, 14, 2, 820, 821, 8, 77, 14, 2, 821, 164, 3, 2, 2, 2, 822, 826, 5, 69, 30, 2, 823, 825, 5, 85, 38, 2, 824, 823, 3, 2, 2, 2, 825, 828, 3, 2, 2, 2, 826, 824, 3, 2, 2, 2, 826, 827, 3, 2, 2, 2, 827, 839, 3, 2, 2, 2, 828, 826, 3, 2, 2, 2, 829, 832, 5, 83, 37, 2, 830, 832, 5, 77, 34, 2, 831, 829, 3, 2, 2, 2, 831, 830, 3, 2, 2, 2, 832, 834, 3, 2, 2, 2, 833, 835, 5, 85, 38, 2, 834, 833, 3, 2, 2, 2, 835, 836, 3, 2, 2, 2, 836, 834, 3, 2, 2, 2, 836, 837, 3, 2, 2, 2, 837, 839, 3, 2, 2, 2, 838, 822, 3, 2, 2, 2, 838, 831, 3, 2, 2, 2, 839, 166, 3, 2, 2, 2, 840, 842, 5, 79, 35, 2, 841, 843, 5, 81, 36, 2, 842, 841, 3, 2, 2, 2, 843, 844, 3, 2, 2, 2, 844, 842, 3, 2, 2, 2, 844, 845, 3, 2, 2, 2, 845, 846, 3, 2, 2, 2, 846, 847, 5, 79, 35, 2, 847, 168, 3, 2, 2, 2, 848, 849, 5, 167, 79, 2, 849, 170, 3, 2, 2, 2, 850, 851, 5, 49, 20, 2, 851, 852, 3, 2, 2, 2, 852, 853, 8, 81, 10, 2, 853, 172, 3, 2, 2, 2, 854, 855, 5, 51, 21, 2, 855, 856, 3, 2, 2, 2, 856, 857, 8, 82, 10, 2, 857, 174, 3, 2, 2, 2, 858, 859, 5, 53, 22, 2, 859, 860, 3, 2, 2, 2, 860, 861, 8, 83, 10, 2, 861, 176, 3, 2, 2, 2, 862, 863, 5, 65, 28, 2, 863, 864, 3, 2, 2, 2, 864, 865, 8, 84, 13, 2, 865, 866, 8, 84, 14, 2, 866, 178, 3, 2, 2, 2, 867, 868, 5, 161, 76, 2, 868, 869, 3, 2, 2, 2, 869, 870, 8, 85, 11, 2, 870, 180, 3, 2, 2, 2, 871, 872, 5, 163, 77, 2, 872, 873, 3, 2, 2, 2, 873, 874, 8, 86, 15, 2, 874, 182, 3, 2, 2, 2, 875, 876, 5, 101, 46, 2, 876, 877, 3, 2, 2, 2, 877, 878, 8, 87, 16, 2, 878, 184, 3, 2, 2, 2, 879, 880, 5, 99, 45, 2, 880, 881, 3, 2, 2, 2, 881, 882, 8, 88, 17, 2, 882, 186, 3, 2, 2, 2, 883, 884, 5, 341, 166, 2, 884, 885, 5, 325, 158, 2, 885, 886, 5, 355, 173, 2, 886, 887, 5, 317, 154, 2, 887, 888, 5, 323, 157, 2, 888, 889, 5, 317, 154, 2, 889, 890, 5, 355, 173, 2, 890, 891, 5, 317, 154, 2, 891, 188, 3, 2, 2, 2, 892, 896, 10, 12, 2, 2, 893, 894, 7, 49, 2, 2, 894, 896, 10, 13, 2, 2, 895, 892, 3, 2, 2, 2, 895, 893, 3, 2, 2, 2, 896, 190, 3, 2, 2, 2, 897, 899, 5, 189, 90, 2, 898, 897, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 898, 3, 2, 2, 2, 900, 901, 3, 2, 2, 2, 901, 192, 3, 2, 2, 2, 902, 903, 5, 169, 80, 2, 903, 904, 3, 2, 2, 2, 904, 905, 8, 92, 18, 2, 905, 194, 3, 2, 2, 2, 906, 907, 5, 49, 20, 2, 907, 908, 3, 2, 2, 2, 908, 909, 8, 93, 10, 2, 909, 196, 3, 2, 2, 2, 910, 911, 5, 51, 21, 2, 911, 912, 3, 2, 2, 2, 912, 913, 8, 94, 10, 2, 913, 198, 3, 2, 2, 2, 914, 915, 5, 53, 22, 2, 915, 916, 3, 2, 2, 2, 916, 917, 8, 95, 10, 2, 917, 200, 3, 2, 2, 2, 918, 919, 5, 65, 28, 2, 919, 920, 3, 2, 2, 2, 920, 921, 8, 96, 13, 2, 921, 922, 8, 96, 14, 2, 922, 202, 3, 2, 2, 2, 923, 924, 5, 105, 48, 2, 924, 925, 3, 2, 2, 2, 925, 926, 8, 97, 19, 2, 926, 204, 3, 2, 2, 2, 927, 928, 5, 101, 46, 2, 928, 929, 3, 2, 2, 2, 929, 930, 8, 98, 16, 2, 930, 206, 3, 2, 2, 2, 931, 936, 5, 69, 30, 2, 932, 936, 5, 67, 29, 2, 933, 936, 5, 83, 37, 2, 934, 936, 5, 155, 73, 2, 935, 931, 3, 2, 2, 2, 935, 932, 3, 2, 2, 2, 935, 933, 3, 2, 2, 2, 935, 934, 3, 2, 2, 2, 936, 208, 3, 2, 2, 2, 937, 940, 5, 69, 30, 2, 938, 940, 5, 155, 73, 2, 939, 937, 3, 2, 2, 2, 939, 938, 3, 2, 2, 2, 940, 944, 3, 2, 2, 2, 941, 943, 5, 207, 99, 2, 942, 941, 3, 2, 2, 2, 943, 946, 3, 2, 2, 2, 944, 942, 3, 2, 2, 2, 944, 945, 3, 2, 2, 2, 945, 957, 3, 2, 2, 2, 946, 944, 3, 2, 2, 2, 947, 950, 5, 83, 37, 2, 948, 950, 5, 77, 34, 2, 949, 947, 3, 2, 2, 2, 949, 948, 3, 2, 2, 2, 950, 952, 3, 2, 2, 2, 951, 953, 5, 207, 99, 2, 952, 951, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 952, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 3, 2, 2, 2, 956, 939, 3, 2, 2, 2, 956, 949, 3, 2, 2, 2, 957, 210, 3, 2, 2, 2, 958, 961, 5, 209, 100, 2, 959, 961, 5, 167, 79, 2, 960, 958, 3, 2, 2, 2, 960, 959, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 960, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963, 212, 3, 2, 2, 2, 964, 965, 5, 49, 20, 2, 965, 966, 3, 2, 2, 2, 966, 967, 8, 102, 10, 2, 967, 214, 3, 2, 2, 2, 968, 969, 5, 51, 21, 2, 969, 970, 3, 2, 2, 2, 970, 971, 8, 103, 10, 2, 971, 216, 3, 2, 2, 2, 972, 973, 5, 53, 22, 2, 973, 974, 3, 2, 2, 2, 974, 975, 8, 104, 10, 2, 975, 218, 3, 2, 2, 2, 976, 977, 5, 65, 28, 2, 977, 978, 3, 2, 2, 2, 978, 979, 8, 105, 13, 2, 979, 980, 8, 105, 14, 2, 980, 220, 3, 2, 2, 2, 981, 982, 5, 99, 45, 2, 982, 983, 3, 2, 2, 2, 983, 984, 8, 106, 17, 2, 984, 222, 3, 2, 2, 2, 985, 986, 5, 101, 46, 2, 986, 987, 3, 2, 2, 2, 987, 988, 8, 107, 16, 2, 988, 224, 3, 2, 2, 2, 989, 990, 5, 105, 48, 2, 990, 991, 3, 2, 2, 2, 991, 992, 8, 108, 19, 2, 992, 226, 3, 2, 2, 2, 993, 994, 5, 317, 154, 2, 994, 995, 5, 353, 172, 2, 995, 228, 3, 2, 2, 2, 996, 997, 5, 211, 101, 2, 997, 998, 3, 2, 2, 2, 998, 999, 8, 110, 20, 2, 999, 230, 3, 2, 2, 2, 1000, 1001, 5, 49, 20, 2, 1001, 1002, 3, 2, 2, 2, 1002, 1003, 8, 111, 10, 2, 1003, 232, 3, 2, 2, 2, 1004, 1005, 5, 51, 21, 2, 1005, 1006, 3, 2, 2, 2, 1006, 1007, 8, 112, 10, 2, 1007, 234, 3, 2, 2, 2, 1008, 1009, 5, 53, 22, 2, 1009, 1010, 3, 2, 2, 2, 1010, 1011, 8, 113, 10, 2, 1011, 236, 3, 2, 2, 2, 1012, 1013, 5, 65, 28, 2, 1013, 1014, 3, 2, 2, 2, 1014, 1015, 8, 114, 13, 2, 1015, 1016, 8, 114, 14, 2, 1016, 238, 3, 2, 2, 2, 1017, 1018, 5, 161, 76, 2, 1018, 1019, 3, 2, 2, 2, 1019, 1020, 8, 115, 11, 2, 1020, 1021, 8, 115, 21, 2, 1021, 240, 3, 2, 2, 2, 1022, 1023, 5, 345, 168, 2, 1023, 1024, 5, 343, 167, 2, 1024, 1025, 3, 2, 2, 2, 1025, 1026, 8, 116, 22, 2, 1026, 242, 3, 2, 2, 2, 1027, 1028, 5, 361, 176, 2, 1028, 1029, 5, 333, 162, 2, 1029, 1030, 5, 355, 173, 2, 1030, 1031, 5, 331, 161, 2, 1031, 1032, 3, 2, 2, 2, 1032, 1033, 8, 117, 22, 2, 1033, 244, 3, 2, 2, 2, 1034, 1035, 10, 14, 2, 2, 1035, 246, 3, 2, 2, 2, 1036, 1038, 5, 245, 118, 2, 1037, 1036, 3, 2, 2, 2, 1038, 1039, 3, 2, 2, 2, 1039, 1037, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1041, 3, 2, 2, 2, 1041, 1042, 5, 307, 149, 2, 1042, 1044, 3, 2, 2, 2, 1043, 1037, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 1046, 3, 2, 2, 2, 1045, 1047, 5, 245, 118, 2, 1046, 1045, 3, 2, 2, 2, 1047, 1048, 3, 2, 2, 2, 1048, 1046, 3, 2, 2, 2, 1048, 1049, 3, 2, 2, 2, 1049, 248, 3, 2, 2, 2, 1050, 1051, 5, 169, 80, 2, 1051, 1052, 3, 2, 2, 2, 1052, 1053, 8, 120, 18, 2, 1053, 250, 3, 2, 2, 2, 1054, 1055, 5, 247, 119, 2, 1055, 1056, 3, 2, 2, 2, 1056, 1057, 8, 121, 23, 2, 1057, 252, 3, 2, 2, 2, 1058, 1059, 5, 49, 20, 2, 1059, 1060, 3, 2, 2, 2, 1060, 1061, 8, 122, 10, 2, 1061, 254, 3, 2, 2, 2, 1062, 1063, 5, 51, 21, 2, 1063, 1064, 3, 2, 2, 2, 1064, 1065, 8, 123, 10, 2, 1065, 256, 3, 2, 2, 2, 1066, 1067, 5, 53, 22, 2, 1067, 1068, 3, 2, 2, 2, 1068, 1069, 8, 124, 10, 2, 1069, 258, 3, 2, 2, 2, 1070, 1071, 5, 65, 28, 2, 1071, 1072, 3, 2, 2, 2, 1072, 1073, 8, 125, 13, 2, 1073, 1074, 8, 125, 14, 2, 1074, 1075, 8, 125, 14, 2, 1075, 260, 3, 2, 2, 2, 1076, 1077, 5, 99, 45, 2, 1077, 1078, 3, 2, 2, 2, 1078, 1079, 8, 126, 17, 2, 1079, 262, 3, 2, 2, 2, 1080, 1081, 5, 101, 46, 2, 1081, 1082, 3, 2, 2, 2, 1082, 1083, 8, 127, 16, 2, 1083, 264, 3, 2, 2, 2, 1084, 1085, 5, 105, 48, 2, 1085, 1086, 3, 2, 2, 2, 1086, 1087, 8, 128, 19, 2, 1087, 266, 3, 2, 2, 2, 1088, 1089, 5, 243, 117, 2, 1089, 1090, 3, 2, 2, 2, 1090, 1091, 8, 129, 24, 2, 1091, 268, 3, 2, 2, 2, 1092, 1093, 5, 211, 101, 2, 1093, 1094, 3, 2, 2, 2, 1094, 1095, 8, 130, 20, 2, 1095, 270, 3, 2, 2, 2, 1096, 1097, 5, 169, 80, 2, 1097, 1098, 3, 2, 2, 2, 1098, 1099, 8, 131, 18, 2, 1099, 272, 3, 2, 2, 2, 1100, 1101, 5, 49, 20, 2, 1101, 1102, 3, 2, 2, 2, 1102, 1103, 8, 132, 10, 2, 1103, 274, 3, 2, 2, 2, 1104, 1105, 5, 51, 21, 2, 1105, 1106, 3, 2, 2, 2, 1106, 1107, 8, 133, 10, 2, 1107, 276, 3, 2, 2, 2, 1108, 1109, 5, 53, 22, 2, 1109, 1110, 3, 2, 2, 2, 1110, 1111, 8, 134, 10, 2, 1111, 278, 3, 2, 2, 2, 1112, 1113, 5, 65, 28, 2, 1113, 1114, 3, 2, 2, 2, 1114, 1115, 8, 135, 13, 2, 1115, 1116, 8, 135, 14, 2, 1116, 280, 3, 2, 2, 2, 1117, 1118, 5, 105, 48, 2, 1118, 1119, 3, 2, 2, 2, 1119, 1120, 8, 136, 19, 2, 1120, 282, 3, 2, 2, 2, 1121, 1122, 5, 169, 80, 2, 1122, 1123, 3, 2, 2, 2, 1123, 1124, 8, 137, 18, 2, 1124, 284, 3, 2, 2, 2, 1125, 1126, 5, 165, 78, 2, 1126, 1127, 3, 2, 2, 2, 1127, 1128, 8, 138, 25, 2, 1128, 286, 3, 2, 2, 2, 1129, 1130, 5, 49, 20, 2, 1130, 1131, 3, 2, 2, 2, 1131, 1132, 8, 139, 10, 2, 1132, 288, 3, 2, 2, 2, 1133, 1134, 5, 51, 21, 2, 1134, 1135, 3, 2, 2, 2, 1135, 1136, 8, 140, 10, 2, 1136, 290, 3, 2, 2, 2, 1137, 1138, 5, 53, 22, 2, 1138, 1139, 3, 2, 2, 2, 1139, 1140, 8, 141, 10, 2, 1140, 292, 3, 2, 2, 2, 1141, 1142, 5, 65, 28, 2, 1142, 1143, 3, 2, 2, 2, 1143, 1144, 8, 142, 13, 2, 1144, 1145, 8, 142, 14, 2, 1145, 294, 3, 2, 2, 2, 1146, 1147, 5, 333, 162, 2, 1147, 1148, 5, 343, 167, 2, 1148, 1149, 5, 327, 159, 2, 1149, 1150, 5, 345, 168, 2, 1150, 296, 3, 2, 2, 2, 1151, 1152, 5, 327, 159, 2, 1152, 1153, 5, 357, 174, 2, 1153, 1154, 5, 343, 167, 2, 1154, 1155, 5, 321, 156, 2, 1155, 1156, 5, 355, 173, 2, 1156, 1157, 5, 333, 162, 2, 1157, 1158, 5, 345, 168, 2, 1158, 1159, 5, 343, 167, 2, 1159, 1160, 5, 353, 172, 2, 1160, 298, 3, 2, 2, 2, 1161, 1162, 5, 49, 20, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 8, 145, 10, 2, 1164, 300, 3, 2, 2, 2, 1165, 1166, 5, 51, 21, 2, 1166, 1167, 3, 2, 2, 2, 1167, 1168, 8, 146, 10, 2, 1168, 302, 3, 2, 2, 2, 1169, 1170, 5, 53, 22, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1172, 8, 147, 10, 2, 1172, 304, 3, 2, 2, 2, 1173, 1174, 5, 163, 77, 2, 1174, 1175, 3, 2, 2, 2, 1175, 1176, 8, 148, 15, 2, 1176, 1177, 8, 148, 14, 2, 1177, 306, 3, 2, 2, 2, 1178, 1179, 7, 60, 2, 2, 1179, 308, 3, 2, 2, 2, 1180, 1186, 5, 77, 34, 2, 1181, 1186, 5, 67, 29, 2, 1182, 1186, 5, 105, 48, 2, 1183, 1186, 5, 69, 30, 2, 1184, 1186, 5, 83, 37, 2, 1185, 1180, 3, 2, 2, 2, 1185, 1181, 3, 2, 2, 2, 1185, 1182, 3, 2, 2, 2, 1185, 1183, 3, 2, 2, 2, 1185, 1184, 3, 2, 2, 2, 1186, 1187, 3, 2, 2, 2, 1187, 1185, 3, 2, 2, 2, 1187, 1188, 3, 2, 2, 2, 1188, 310, 3, 2, 2, 2, 1189, 1190, 5, 49, 20, 2, 1190, 1191, 3, 2, 2, 2, 1191, 1192, 8, 151, 10, 2, 1192, 312, 3, 2, 2, 2, 1193, 1194, 5, 51, 21, 2, 1194, 1195, 3, 2, 2, 2, 1195, 1196, 8, 152, 10, 2, 1196, 314, 3, 2, 2, 2, 1197, 1198, 5, 53, 22, 2, 1198, 1199, 3, 2, 2, 2, 1199, 1200, 8, 153, 10, 2, 1200, 316, 3, 2, 2, 2, 1201, 1202, 9, 15, 2, 2, 1202, 318, 3, 2, 2, 2, 1203, 1204, 9, 16, 2, 2, 1204, 320, 3, 2, 2, 2, 1205, 1206, 9, 17, 2, 2, 1206, 322, 3, 2, 2, 2, 1207, 1208, 9, 18, 2, 2, 1208, 324, 3, 2, 2, 2, 1209, 1210, 9, 9, 2, 2, 1210, 326, 3, 2, 2, 2, 1211, 1212, 9, 19, 2, 2, 1212, 328, 3, 2, 2, 2, 1213, 1214, 9, 20, 2, 2, 1214, 330, 3, 2, 2, 2, 1215, 1216, 9, 21, 2, 2, 1216, 332, 3, 2, 2, 2, 1217, 1218, 9, 22, 2, 2, 1218, 334, 3, 2, 2, 2, 1219, 1220, 9, 23, 2, 2, 1220, 336, 3, 2, 2, 2, 1221, 1222, 9, 24, 2, 2, 1222, 338, 3, 2, 2, 2, 1223, 1224, 9, 25, 2, 2, 1224, 340, 3, 2, 2, 2, 1225, 1226, 9, 26, 2, 2, 1226, 342, 3, 2, 2, 2, 1227, 1228, 9, 27, 2, 2, 1228, 344, 3, 2, 2, 2, 1229, 1230, 9, 28, 2, 2, 1230, 346, 3, 2, 2, 2, 1231, 1232, 9, 29, 2, 2, 1232, 348, 3, 2, 2, 2, 1233, 1234, 9, 30, 2, 2, 1234, 350, 3, 2, 2, 2, 1235, 1236, 9, 31, 2, 2, 1236, 352, 3, 2, 2, 2, 1237, 1238, 9, 32, 2, 2, 1238, 354, 3, 2, 2, 2, 1239, 1240, 9, 33, 2, 2, 1240, 356, 3, 2, 2, 2, 1241, 1242, 9, 34, 2, 2, 1242, 358, 3, 2, 2, 2, 1243, 1244, 9, 35, 2, 2, 1244, 360, 3, 2, 2, 2, 1245, 1246, 9, 36, 2, 2, 1246, 362, 3, 2, 2, 2, 1247, 1248, 9, 37, 2, 2, 1248, 364, 3, 2, 2, 2, 1249, 1250, 9, 38, 2, 2, 1250, 366, 3, 2, 2, 2, 1251, 1252, 9, 39, 2, 2, 1252, 368, 3, 2, 2, 2, 59, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 515, 525, 529, 532, 541, 543, 554, 595, 600, 609, 616, 621, 623, 634, 642, 645, 647, 652, 657, 663, 670, 675, 681, 684, 692, 696, 826, 831, 836, 838, 844, 895, 900, 935, 939, 944, 949, 954, 956, 960, 962, 1039, 1043, 1048, 1185, 1187, 26, 7, 4, 2, 7, 6, 2, 7, 8, 2, 7, 3, 2, 7, 5, 2, 7, 10, 2, 7, 7, 2, 7, 11, 2, 2, 3, 2, 9, 65, 2, 7, 2, 2, 9, 27, 2, 6, 2, 2, 9, 66, 2, 9, 35, 2, 9, 34, 2, 9, 68, 2, 9, 37, 2, 9, 77, 2, 7, 12, 2, 7, 9, 2, 9, 87, 2, 9, 86, 2, 9, 67, 2] \ No newline at end of file +[4, 0, 104, 1251, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 4, 17, 512, 8, 17, 11, 17, 12, 17, 513, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 522, 8, 18, 10, 18, 12, 18, 525, 9, 18, 1, 18, 3, 18, 528, 8, 18, 1, 18, 3, 18, 531, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 540, 8, 19, 10, 19, 12, 19, 543, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 4, 20, 551, 8, 20, 11, 20, 12, 20, 552, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 594, 8, 31, 1, 31, 4, 31, 597, 8, 31, 11, 31, 12, 31, 598, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 3, 34, 608, 8, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 3, 36, 615, 8, 36, 1, 37, 1, 37, 1, 37, 5, 37, 620, 8, 37, 10, 37, 12, 37, 623, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 631, 8, 37, 10, 37, 12, 37, 634, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 641, 8, 37, 1, 37, 3, 37, 644, 8, 37, 3, 37, 646, 8, 37, 1, 38, 4, 38, 649, 8, 38, 11, 38, 12, 38, 650, 1, 39, 4, 39, 654, 8, 39, 11, 39, 12, 39, 655, 1, 39, 1, 39, 5, 39, 660, 8, 39, 10, 39, 12, 39, 663, 9, 39, 1, 39, 1, 39, 4, 39, 667, 8, 39, 11, 39, 12, 39, 668, 1, 39, 4, 39, 672, 8, 39, 11, 39, 12, 39, 673, 1, 39, 1, 39, 5, 39, 678, 8, 39, 10, 39, 12, 39, 681, 9, 39, 3, 39, 683, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 4, 39, 689, 8, 39, 11, 39, 12, 39, 690, 1, 39, 1, 39, 3, 39, 695, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 5, 76, 823, 8, 76, 10, 76, 12, 76, 826, 9, 76, 1, 76, 1, 76, 3, 76, 830, 8, 76, 1, 76, 4, 76, 833, 8, 76, 11, 76, 12, 76, 834, 3, 76, 837, 8, 76, 1, 77, 1, 77, 4, 77, 841, 8, 77, 11, 77, 12, 77, 842, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 3, 88, 894, 8, 88, 1, 89, 4, 89, 897, 8, 89, 11, 89, 12, 89, 898, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 934, 8, 97, 1, 98, 1, 98, 3, 98, 938, 8, 98, 1, 98, 5, 98, 941, 8, 98, 10, 98, 12, 98, 944, 9, 98, 1, 98, 1, 98, 3, 98, 948, 8, 98, 1, 98, 4, 98, 951, 8, 98, 11, 98, 12, 98, 952, 3, 98, 955, 8, 98, 1, 99, 1, 99, 4, 99, 959, 8, 99, 11, 99, 12, 99, 960, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 4, 117, 1036, 8, 117, 11, 117, 12, 117, 1037, 1, 117, 1, 117, 3, 117, 1042, 8, 117, 1, 117, 4, 117, 1045, 8, 117, 11, 117, 12, 117, 1046, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 4, 148, 1184, 8, 148, 11, 148, 12, 148, 1185, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 2, 541, 632, 0, 178, 11, 1, 13, 2, 15, 3, 17, 4, 19, 5, 21, 6, 23, 7, 25, 8, 27, 9, 29, 10, 31, 11, 33, 12, 35, 13, 37, 14, 39, 15, 41, 16, 43, 17, 45, 18, 47, 19, 49, 20, 51, 21, 53, 0, 55, 0, 57, 22, 59, 23, 61, 24, 63, 25, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 26, 87, 27, 89, 28, 91, 29, 93, 30, 95, 31, 97, 32, 99, 33, 101, 34, 103, 35, 105, 36, 107, 37, 109, 38, 111, 39, 113, 40, 115, 41, 117, 42, 119, 43, 121, 44, 123, 45, 125, 46, 127, 47, 129, 48, 131, 49, 133, 50, 135, 51, 137, 52, 139, 53, 141, 54, 143, 55, 145, 56, 147, 57, 149, 58, 151, 59, 153, 60, 155, 61, 157, 62, 159, 63, 161, 64, 163, 65, 165, 0, 167, 66, 169, 67, 171, 68, 173, 69, 175, 0, 177, 0, 179, 0, 181, 0, 183, 0, 185, 70, 187, 0, 189, 71, 191, 0, 193, 72, 195, 73, 197, 74, 199, 0, 201, 0, 203, 0, 205, 0, 207, 0, 209, 75, 211, 76, 213, 77, 215, 78, 217, 0, 219, 0, 221, 0, 223, 0, 225, 79, 227, 0, 229, 80, 231, 81, 233, 82, 235, 0, 237, 0, 239, 83, 241, 84, 243, 0, 245, 85, 247, 0, 249, 0, 251, 86, 253, 87, 255, 88, 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 89, 273, 90, 275, 91, 277, 0, 279, 0, 281, 0, 283, 0, 285, 92, 287, 93, 289, 94, 291, 0, 293, 95, 295, 96, 297, 97, 299, 98, 301, 99, 303, 0, 305, 100, 307, 101, 309, 102, 311, 103, 313, 104, 315, 0, 317, 0, 319, 0, 321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 38, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 5, 0, 34, 34, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 10, 0, 9, 10, 13, 13, 32, 32, 44, 44, 47, 47, 61, 61, 91, 91, 93, 93, 96, 96, 124, 124, 2, 0, 42, 42, 47, 47, 11, 0, 9, 10, 13, 13, 32, 32, 34, 35, 44, 44, 47, 47, 58, 58, 60, 60, 62, 63, 92, 92, 124, 124, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1253, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 1, 53, 1, 0, 0, 0, 1, 55, 1, 0, 0, 0, 1, 57, 1, 0, 0, 0, 1, 59, 1, 0, 0, 0, 1, 61, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 2, 87, 1, 0, 0, 0, 2, 89, 1, 0, 0, 0, 2, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 2, 97, 1, 0, 0, 0, 2, 99, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 2, 103, 1, 0, 0, 0, 2, 105, 1, 0, 0, 0, 2, 107, 1, 0, 0, 0, 2, 109, 1, 0, 0, 0, 2, 111, 1, 0, 0, 0, 2, 113, 1, 0, 0, 0, 2, 115, 1, 0, 0, 0, 2, 117, 1, 0, 0, 0, 2, 119, 1, 0, 0, 0, 2, 121, 1, 0, 0, 0, 2, 123, 1, 0, 0, 0, 2, 125, 1, 0, 0, 0, 2, 127, 1, 0, 0, 0, 2, 129, 1, 0, 0, 0, 2, 131, 1, 0, 0, 0, 2, 133, 1, 0, 0, 0, 2, 135, 1, 0, 0, 0, 2, 137, 1, 0, 0, 0, 2, 139, 1, 0, 0, 0, 2, 141, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 2, 145, 1, 0, 0, 0, 2, 147, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 2, 151, 1, 0, 0, 0, 2, 153, 1, 0, 0, 0, 2, 155, 1, 0, 0, 0, 2, 157, 1, 0, 0, 0, 2, 159, 1, 0, 0, 0, 2, 161, 1, 0, 0, 0, 2, 163, 1, 0, 0, 0, 2, 167, 1, 0, 0, 0, 2, 169, 1, 0, 0, 0, 2, 171, 1, 0, 0, 0, 2, 173, 1, 0, 0, 0, 3, 175, 1, 0, 0, 0, 3, 177, 1, 0, 0, 0, 3, 179, 1, 0, 0, 0, 3, 181, 1, 0, 0, 0, 3, 183, 1, 0, 0, 0, 3, 185, 1, 0, 0, 0, 3, 189, 1, 0, 0, 0, 3, 191, 1, 0, 0, 0, 3, 193, 1, 0, 0, 0, 3, 195, 1, 0, 0, 0, 3, 197, 1, 0, 0, 0, 4, 199, 1, 0, 0, 0, 4, 201, 1, 0, 0, 0, 4, 203, 1, 0, 0, 0, 4, 209, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 4, 213, 1, 0, 0, 0, 4, 215, 1, 0, 0, 0, 5, 217, 1, 0, 0, 0, 5, 219, 1, 0, 0, 0, 5, 221, 1, 0, 0, 0, 5, 223, 1, 0, 0, 0, 5, 225, 1, 0, 0, 0, 5, 227, 1, 0, 0, 0, 5, 229, 1, 0, 0, 0, 5, 231, 1, 0, 0, 0, 5, 233, 1, 0, 0, 0, 6, 235, 1, 0, 0, 0, 6, 237, 1, 0, 0, 0, 6, 239, 1, 0, 0, 0, 6, 241, 1, 0, 0, 0, 6, 245, 1, 0, 0, 0, 6, 247, 1, 0, 0, 0, 6, 249, 1, 0, 0, 0, 6, 251, 1, 0, 0, 0, 6, 253, 1, 0, 0, 0, 6, 255, 1, 0, 0, 0, 7, 257, 1, 0, 0, 0, 7, 259, 1, 0, 0, 0, 7, 261, 1, 0, 0, 0, 7, 263, 1, 0, 0, 0, 7, 265, 1, 0, 0, 0, 7, 267, 1, 0, 0, 0, 7, 269, 1, 0, 0, 0, 7, 271, 1, 0, 0, 0, 7, 273, 1, 0, 0, 0, 7, 275, 1, 0, 0, 0, 8, 277, 1, 0, 0, 0, 8, 279, 1, 0, 0, 0, 8, 281, 1, 0, 0, 0, 8, 283, 1, 0, 0, 0, 8, 285, 1, 0, 0, 0, 8, 287, 1, 0, 0, 0, 8, 289, 1, 0, 0, 0, 9, 291, 1, 0, 0, 0, 9, 293, 1, 0, 0, 0, 9, 295, 1, 0, 0, 0, 9, 297, 1, 0, 0, 0, 9, 299, 1, 0, 0, 0, 9, 301, 1, 0, 0, 0, 10, 303, 1, 0, 0, 0, 10, 305, 1, 0, 0, 0, 10, 307, 1, 0, 0, 0, 10, 309, 1, 0, 0, 0, 10, 311, 1, 0, 0, 0, 10, 313, 1, 0, 0, 0, 11, 367, 1, 0, 0, 0, 13, 377, 1, 0, 0, 0, 15, 384, 1, 0, 0, 0, 17, 393, 1, 0, 0, 0, 19, 400, 1, 0, 0, 0, 21, 410, 1, 0, 0, 0, 23, 417, 1, 0, 0, 0, 25, 424, 1, 0, 0, 0, 27, 438, 1, 0, 0, 0, 29, 445, 1, 0, 0, 0, 31, 453, 1, 0, 0, 0, 33, 465, 1, 0, 0, 0, 35, 474, 1, 0, 0, 0, 37, 480, 1, 0, 0, 0, 39, 487, 1, 0, 0, 0, 41, 494, 1, 0, 0, 0, 43, 502, 1, 0, 0, 0, 45, 511, 1, 0, 0, 0, 47, 517, 1, 0, 0, 0, 49, 534, 1, 0, 0, 0, 51, 550, 1, 0, 0, 0, 53, 556, 1, 0, 0, 0, 55, 561, 1, 0, 0, 0, 57, 566, 1, 0, 0, 0, 59, 570, 1, 0, 0, 0, 61, 574, 1, 0, 0, 0, 63, 578, 1, 0, 0, 0, 65, 582, 1, 0, 0, 0, 67, 584, 1, 0, 0, 0, 69, 586, 1, 0, 0, 0, 71, 589, 1, 0, 0, 0, 73, 591, 1, 0, 0, 0, 75, 600, 1, 0, 0, 0, 77, 602, 1, 0, 0, 0, 79, 607, 1, 0, 0, 0, 81, 609, 1, 0, 0, 0, 83, 614, 1, 0, 0, 0, 85, 645, 1, 0, 0, 0, 87, 648, 1, 0, 0, 0, 89, 694, 1, 0, 0, 0, 91, 696, 1, 0, 0, 0, 93, 699, 1, 0, 0, 0, 95, 703, 1, 0, 0, 0, 97, 707, 1, 0, 0, 0, 99, 709, 1, 0, 0, 0, 101, 711, 1, 0, 0, 0, 103, 716, 1, 0, 0, 0, 105, 718, 1, 0, 0, 0, 107, 724, 1, 0, 0, 0, 109, 730, 1, 0, 0, 0, 111, 735, 1, 0, 0, 0, 113, 737, 1, 0, 0, 0, 115, 740, 1, 0, 0, 0, 117, 743, 1, 0, 0, 0, 119, 748, 1, 0, 0, 0, 121, 752, 1, 0, 0, 0, 123, 757, 1, 0, 0, 0, 125, 763, 1, 0, 0, 0, 127, 766, 1, 0, 0, 0, 129, 768, 1, 0, 0, 0, 131, 774, 1, 0, 0, 0, 133, 776, 1, 0, 0, 0, 135, 781, 1, 0, 0, 0, 137, 784, 1, 0, 0, 0, 139, 787, 1, 0, 0, 0, 141, 790, 1, 0, 0, 0, 143, 792, 1, 0, 0, 0, 145, 795, 1, 0, 0, 0, 147, 797, 1, 0, 0, 0, 149, 800, 1, 0, 0, 0, 151, 802, 1, 0, 0, 0, 153, 804, 1, 0, 0, 0, 155, 806, 1, 0, 0, 0, 157, 808, 1, 0, 0, 0, 159, 810, 1, 0, 0, 0, 161, 815, 1, 0, 0, 0, 163, 836, 1, 0, 0, 0, 165, 838, 1, 0, 0, 0, 167, 846, 1, 0, 0, 0, 169, 848, 1, 0, 0, 0, 171, 852, 1, 0, 0, 0, 173, 856, 1, 0, 0, 0, 175, 860, 1, 0, 0, 0, 177, 865, 1, 0, 0, 0, 179, 869, 1, 0, 0, 0, 181, 873, 1, 0, 0, 0, 183, 877, 1, 0, 0, 0, 185, 881, 1, 0, 0, 0, 187, 893, 1, 0, 0, 0, 189, 896, 1, 0, 0, 0, 191, 900, 1, 0, 0, 0, 193, 904, 1, 0, 0, 0, 195, 908, 1, 0, 0, 0, 197, 912, 1, 0, 0, 0, 199, 916, 1, 0, 0, 0, 201, 921, 1, 0, 0, 0, 203, 925, 1, 0, 0, 0, 205, 933, 1, 0, 0, 0, 207, 954, 1, 0, 0, 0, 209, 958, 1, 0, 0, 0, 211, 962, 1, 0, 0, 0, 213, 966, 1, 0, 0, 0, 215, 970, 1, 0, 0, 0, 217, 974, 1, 0, 0, 0, 219, 979, 1, 0, 0, 0, 221, 983, 1, 0, 0, 0, 223, 987, 1, 0, 0, 0, 225, 991, 1, 0, 0, 0, 227, 994, 1, 0, 0, 0, 229, 998, 1, 0, 0, 0, 231, 1002, 1, 0, 0, 0, 233, 1006, 1, 0, 0, 0, 235, 1010, 1, 0, 0, 0, 237, 1015, 1, 0, 0, 0, 239, 1020, 1, 0, 0, 0, 241, 1025, 1, 0, 0, 0, 243, 1032, 1, 0, 0, 0, 245, 1041, 1, 0, 0, 0, 247, 1048, 1, 0, 0, 0, 249, 1052, 1, 0, 0, 0, 251, 1056, 1, 0, 0, 0, 253, 1060, 1, 0, 0, 0, 255, 1064, 1, 0, 0, 0, 257, 1068, 1, 0, 0, 0, 259, 1074, 1, 0, 0, 0, 261, 1078, 1, 0, 0, 0, 263, 1082, 1, 0, 0, 0, 265, 1086, 1, 0, 0, 0, 267, 1090, 1, 0, 0, 0, 269, 1094, 1, 0, 0, 0, 271, 1098, 1, 0, 0, 0, 273, 1102, 1, 0, 0, 0, 275, 1106, 1, 0, 0, 0, 277, 1110, 1, 0, 0, 0, 279, 1115, 1, 0, 0, 0, 281, 1119, 1, 0, 0, 0, 283, 1123, 1, 0, 0, 0, 285, 1127, 1, 0, 0, 0, 287, 1131, 1, 0, 0, 0, 289, 1135, 1, 0, 0, 0, 291, 1139, 1, 0, 0, 0, 293, 1144, 1, 0, 0, 0, 295, 1149, 1, 0, 0, 0, 297, 1159, 1, 0, 0, 0, 299, 1163, 1, 0, 0, 0, 301, 1167, 1, 0, 0, 0, 303, 1171, 1, 0, 0, 0, 305, 1176, 1, 0, 0, 0, 307, 1183, 1, 0, 0, 0, 309, 1187, 1, 0, 0, 0, 311, 1191, 1, 0, 0, 0, 313, 1195, 1, 0, 0, 0, 315, 1199, 1, 0, 0, 0, 317, 1201, 1, 0, 0, 0, 319, 1203, 1, 0, 0, 0, 321, 1205, 1, 0, 0, 0, 323, 1207, 1, 0, 0, 0, 325, 1209, 1, 0, 0, 0, 327, 1211, 1, 0, 0, 0, 329, 1213, 1, 0, 0, 0, 331, 1215, 1, 0, 0, 0, 333, 1217, 1, 0, 0, 0, 335, 1219, 1, 0, 0, 0, 337, 1221, 1, 0, 0, 0, 339, 1223, 1, 0, 0, 0, 341, 1225, 1, 0, 0, 0, 343, 1227, 1, 0, 0, 0, 345, 1229, 1, 0, 0, 0, 347, 1231, 1, 0, 0, 0, 349, 1233, 1, 0, 0, 0, 351, 1235, 1, 0, 0, 0, 353, 1237, 1, 0, 0, 0, 355, 1239, 1, 0, 0, 0, 357, 1241, 1, 0, 0, 0, 359, 1243, 1, 0, 0, 0, 361, 1245, 1, 0, 0, 0, 363, 1247, 1, 0, 0, 0, 365, 1249, 1, 0, 0, 0, 367, 368, 3, 321, 155, 0, 368, 369, 3, 331, 160, 0, 369, 370, 3, 351, 170, 0, 370, 371, 3, 351, 170, 0, 371, 372, 3, 323, 156, 0, 372, 373, 3, 319, 154, 0, 373, 374, 3, 353, 171, 0, 374, 375, 1, 0, 0, 0, 375, 376, 6, 0, 0, 0, 376, 12, 1, 0, 0, 0, 377, 378, 3, 321, 155, 0, 378, 379, 3, 349, 169, 0, 379, 380, 3, 343, 166, 0, 380, 381, 3, 345, 167, 0, 381, 382, 1, 0, 0, 0, 382, 383, 6, 1, 1, 0, 383, 14, 1, 0, 0, 0, 384, 385, 3, 323, 156, 0, 385, 386, 3, 341, 165, 0, 386, 387, 3, 349, 169, 0, 387, 388, 3, 331, 160, 0, 388, 389, 3, 319, 154, 0, 389, 390, 3, 329, 159, 0, 390, 391, 1, 0, 0, 0, 391, 392, 6, 2, 2, 0, 392, 16, 1, 0, 0, 0, 393, 394, 3, 323, 156, 0, 394, 395, 3, 357, 173, 0, 395, 396, 3, 315, 152, 0, 396, 397, 3, 337, 163, 0, 397, 398, 1, 0, 0, 0, 398, 399, 6, 3, 0, 0, 399, 18, 1, 0, 0, 0, 400, 401, 3, 323, 156, 0, 401, 402, 3, 361, 175, 0, 402, 403, 3, 345, 167, 0, 403, 404, 3, 337, 163, 0, 404, 405, 3, 315, 152, 0, 405, 406, 3, 331, 160, 0, 406, 407, 3, 341, 165, 0, 407, 408, 1, 0, 0, 0, 408, 409, 6, 4, 3, 0, 409, 20, 1, 0, 0, 0, 410, 411, 3, 325, 157, 0, 411, 412, 3, 349, 169, 0, 412, 413, 3, 343, 166, 0, 413, 414, 3, 339, 164, 0, 414, 415, 1, 0, 0, 0, 415, 416, 6, 5, 4, 0, 416, 22, 1, 0, 0, 0, 417, 418, 3, 327, 158, 0, 418, 419, 3, 349, 169, 0, 419, 420, 3, 343, 166, 0, 420, 421, 3, 335, 162, 0, 421, 422, 1, 0, 0, 0, 422, 423, 6, 6, 0, 0, 423, 24, 1, 0, 0, 0, 424, 425, 3, 331, 160, 0, 425, 426, 3, 341, 165, 0, 426, 427, 3, 337, 163, 0, 427, 428, 3, 331, 160, 0, 428, 429, 3, 341, 165, 0, 429, 430, 3, 323, 156, 0, 430, 431, 3, 351, 170, 0, 431, 432, 3, 353, 171, 0, 432, 433, 3, 315, 152, 0, 433, 434, 3, 353, 171, 0, 434, 435, 3, 351, 170, 0, 435, 436, 1, 0, 0, 0, 436, 437, 6, 7, 0, 0, 437, 26, 1, 0, 0, 0, 438, 439, 3, 335, 162, 0, 439, 440, 3, 323, 156, 0, 440, 441, 3, 323, 156, 0, 441, 442, 3, 345, 167, 0, 442, 443, 1, 0, 0, 0, 443, 444, 6, 8, 1, 0, 444, 28, 1, 0, 0, 0, 445, 446, 3, 337, 163, 0, 446, 447, 3, 331, 160, 0, 447, 448, 3, 339, 164, 0, 448, 449, 3, 331, 160, 0, 449, 450, 3, 353, 171, 0, 450, 451, 1, 0, 0, 0, 451, 452, 6, 9, 0, 0, 452, 30, 1, 0, 0, 0, 453, 454, 3, 339, 164, 0, 454, 455, 3, 357, 173, 0, 455, 456, 3, 81, 35, 0, 456, 457, 3, 323, 156, 0, 457, 458, 3, 361, 175, 0, 458, 459, 3, 345, 167, 0, 459, 460, 3, 315, 152, 0, 460, 461, 3, 341, 165, 0, 461, 462, 3, 321, 155, 0, 462, 463, 1, 0, 0, 0, 463, 464, 6, 10, 5, 0, 464, 32, 1, 0, 0, 0, 465, 466, 3, 349, 169, 0, 466, 467, 3, 323, 156, 0, 467, 468, 3, 341, 165, 0, 468, 469, 3, 315, 152, 0, 469, 470, 3, 339, 164, 0, 470, 471, 3, 323, 156, 0, 471, 472, 1, 0, 0, 0, 472, 473, 6, 11, 6, 0, 473, 34, 1, 0, 0, 0, 474, 475, 3, 349, 169, 0, 475, 476, 3, 343, 166, 0, 476, 477, 3, 359, 174, 0, 477, 478, 1, 0, 0, 0, 478, 479, 6, 12, 0, 0, 479, 36, 1, 0, 0, 0, 480, 481, 3, 351, 170, 0, 481, 482, 3, 329, 159, 0, 482, 483, 3, 343, 166, 0, 483, 484, 3, 359, 174, 0, 484, 485, 1, 0, 0, 0, 485, 486, 6, 13, 7, 0, 486, 38, 1, 0, 0, 0, 487, 488, 3, 351, 170, 0, 488, 489, 3, 343, 166, 0, 489, 490, 3, 349, 169, 0, 490, 491, 3, 353, 171, 0, 491, 492, 1, 0, 0, 0, 492, 493, 6, 14, 0, 0, 493, 40, 1, 0, 0, 0, 494, 495, 3, 351, 170, 0, 495, 496, 3, 353, 171, 0, 496, 497, 3, 315, 152, 0, 497, 498, 3, 353, 171, 0, 498, 499, 3, 351, 170, 0, 499, 500, 1, 0, 0, 0, 500, 501, 6, 15, 0, 0, 501, 42, 1, 0, 0, 0, 502, 503, 3, 359, 174, 0, 503, 504, 3, 329, 159, 0, 504, 505, 3, 323, 156, 0, 505, 506, 3, 349, 169, 0, 506, 507, 3, 323, 156, 0, 507, 508, 1, 0, 0, 0, 508, 509, 6, 16, 0, 0, 509, 44, 1, 0, 0, 0, 510, 512, 8, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 6, 17, 0, 0, 516, 46, 1, 0, 0, 0, 517, 518, 5, 47, 0, 0, 518, 519, 5, 47, 0, 0, 519, 523, 1, 0, 0, 0, 520, 522, 8, 1, 0, 0, 521, 520, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 5, 13, 0, 0, 527, 526, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 530, 1, 0, 0, 0, 529, 531, 5, 10, 0, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 6, 18, 8, 0, 533, 48, 1, 0, 0, 0, 534, 535, 5, 47, 0, 0, 535, 536, 5, 42, 0, 0, 536, 541, 1, 0, 0, 0, 537, 540, 3, 49, 19, 0, 538, 540, 9, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 538, 1, 0, 0, 0, 540, 543, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 544, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 544, 545, 5, 42, 0, 0, 545, 546, 5, 47, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 6, 19, 8, 0, 548, 50, 1, 0, 0, 0, 549, 551, 7, 2, 0, 0, 550, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 6, 20, 8, 0, 555, 52, 1, 0, 0, 0, 556, 557, 3, 159, 74, 0, 557, 558, 1, 0, 0, 0, 558, 559, 6, 21, 9, 0, 559, 560, 6, 21, 10, 0, 560, 54, 1, 0, 0, 0, 561, 562, 3, 63, 26, 0, 562, 563, 1, 0, 0, 0, 563, 564, 6, 22, 11, 0, 564, 565, 6, 22, 12, 0, 565, 56, 1, 0, 0, 0, 566, 567, 3, 51, 20, 0, 567, 568, 1, 0, 0, 0, 568, 569, 6, 23, 8, 0, 569, 58, 1, 0, 0, 0, 570, 571, 3, 47, 18, 0, 571, 572, 1, 0, 0, 0, 572, 573, 6, 24, 8, 0, 573, 60, 1, 0, 0, 0, 574, 575, 3, 49, 19, 0, 575, 576, 1, 0, 0, 0, 576, 577, 6, 25, 8, 0, 577, 62, 1, 0, 0, 0, 578, 579, 5, 124, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 6, 26, 12, 0, 581, 64, 1, 0, 0, 0, 582, 583, 7, 3, 0, 0, 583, 66, 1, 0, 0, 0, 584, 585, 7, 4, 0, 0, 585, 68, 1, 0, 0, 0, 586, 587, 5, 92, 0, 0, 587, 588, 7, 5, 0, 0, 588, 70, 1, 0, 0, 0, 589, 590, 8, 6, 0, 0, 590, 72, 1, 0, 0, 0, 591, 593, 7, 7, 0, 0, 592, 594, 7, 8, 0, 0, 593, 592, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 1, 0, 0, 0, 595, 597, 3, 65, 27, 0, 596, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 74, 1, 0, 0, 0, 600, 601, 5, 64, 0, 0, 601, 76, 1, 0, 0, 0, 602, 603, 5, 96, 0, 0, 603, 78, 1, 0, 0, 0, 604, 608, 8, 9, 0, 0, 605, 606, 5, 96, 0, 0, 606, 608, 5, 96, 0, 0, 607, 604, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 80, 1, 0, 0, 0, 609, 610, 5, 95, 0, 0, 610, 82, 1, 0, 0, 0, 611, 615, 3, 67, 28, 0, 612, 615, 3, 65, 27, 0, 613, 615, 3, 81, 35, 0, 614, 611, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 613, 1, 0, 0, 0, 615, 84, 1, 0, 0, 0, 616, 621, 5, 34, 0, 0, 617, 620, 3, 69, 29, 0, 618, 620, 3, 71, 30, 0, 619, 617, 1, 0, 0, 0, 619, 618, 1, 0, 0, 0, 620, 623, 1, 0, 0, 0, 621, 619, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 624, 1, 0, 0, 0, 623, 621, 1, 0, 0, 0, 624, 646, 5, 34, 0, 0, 625, 626, 5, 34, 0, 0, 626, 627, 5, 34, 0, 0, 627, 628, 5, 34, 0, 0, 628, 632, 1, 0, 0, 0, 629, 631, 8, 1, 0, 0, 630, 629, 1, 0, 0, 0, 631, 634, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 635, 1, 0, 0, 0, 634, 632, 1, 0, 0, 0, 635, 636, 5, 34, 0, 0, 636, 637, 5, 34, 0, 0, 637, 638, 5, 34, 0, 0, 638, 640, 1, 0, 0, 0, 639, 641, 5, 34, 0, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 643, 1, 0, 0, 0, 642, 644, 5, 34, 0, 0, 643, 642, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 646, 1, 0, 0, 0, 645, 616, 1, 0, 0, 0, 645, 625, 1, 0, 0, 0, 646, 86, 1, 0, 0, 0, 647, 649, 3, 65, 27, 0, 648, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 88, 1, 0, 0, 0, 652, 654, 3, 65, 27, 0, 653, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 661, 3, 103, 46, 0, 658, 660, 3, 65, 27, 0, 659, 658, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 695, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 666, 3, 103, 46, 0, 665, 667, 3, 65, 27, 0, 666, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 695, 1, 0, 0, 0, 670, 672, 3, 65, 27, 0, 671, 670, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 671, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 682, 1, 0, 0, 0, 675, 679, 3, 103, 46, 0, 676, 678, 3, 65, 27, 0, 677, 676, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 683, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 675, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 3, 73, 31, 0, 685, 695, 1, 0, 0, 0, 686, 688, 3, 103, 46, 0, 687, 689, 3, 65, 27, 0, 688, 687, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 688, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 3, 73, 31, 0, 693, 695, 1, 0, 0, 0, 694, 653, 1, 0, 0, 0, 694, 664, 1, 0, 0, 0, 694, 671, 1, 0, 0, 0, 694, 686, 1, 0, 0, 0, 695, 90, 1, 0, 0, 0, 696, 697, 3, 317, 153, 0, 697, 698, 3, 363, 176, 0, 698, 92, 1, 0, 0, 0, 699, 700, 3, 315, 152, 0, 700, 701, 3, 341, 165, 0, 701, 702, 3, 321, 155, 0, 702, 94, 1, 0, 0, 0, 703, 704, 3, 315, 152, 0, 704, 705, 3, 351, 170, 0, 705, 706, 3, 319, 154, 0, 706, 96, 1, 0, 0, 0, 707, 708, 5, 61, 0, 0, 708, 98, 1, 0, 0, 0, 709, 710, 5, 44, 0, 0, 710, 100, 1, 0, 0, 0, 711, 712, 3, 321, 155, 0, 712, 713, 3, 323, 156, 0, 713, 714, 3, 351, 170, 0, 714, 715, 3, 319, 154, 0, 715, 102, 1, 0, 0, 0, 716, 717, 5, 46, 0, 0, 717, 104, 1, 0, 0, 0, 718, 719, 3, 325, 157, 0, 719, 720, 3, 315, 152, 0, 720, 721, 3, 337, 163, 0, 721, 722, 3, 351, 170, 0, 722, 723, 3, 323, 156, 0, 723, 106, 1, 0, 0, 0, 724, 725, 3, 325, 157, 0, 725, 726, 3, 331, 160, 0, 726, 727, 3, 349, 169, 0, 727, 728, 3, 351, 170, 0, 728, 729, 3, 353, 171, 0, 729, 108, 1, 0, 0, 0, 730, 731, 3, 337, 163, 0, 731, 732, 3, 315, 152, 0, 732, 733, 3, 351, 170, 0, 733, 734, 3, 353, 171, 0, 734, 110, 1, 0, 0, 0, 735, 736, 5, 40, 0, 0, 736, 112, 1, 0, 0, 0, 737, 738, 3, 331, 160, 0, 738, 739, 3, 341, 165, 0, 739, 114, 1, 0, 0, 0, 740, 741, 3, 331, 160, 0, 741, 742, 3, 351, 170, 0, 742, 116, 1, 0, 0, 0, 743, 744, 3, 337, 163, 0, 744, 745, 3, 331, 160, 0, 745, 746, 3, 335, 162, 0, 746, 747, 3, 323, 156, 0, 747, 118, 1, 0, 0, 0, 748, 749, 3, 341, 165, 0, 749, 750, 3, 343, 166, 0, 750, 751, 3, 353, 171, 0, 751, 120, 1, 0, 0, 0, 752, 753, 3, 341, 165, 0, 753, 754, 3, 355, 172, 0, 754, 755, 3, 337, 163, 0, 755, 756, 3, 337, 163, 0, 756, 122, 1, 0, 0, 0, 757, 758, 3, 341, 165, 0, 758, 759, 3, 355, 172, 0, 759, 760, 3, 337, 163, 0, 760, 761, 3, 337, 163, 0, 761, 762, 3, 351, 170, 0, 762, 124, 1, 0, 0, 0, 763, 764, 3, 343, 166, 0, 764, 765, 3, 349, 169, 0, 765, 126, 1, 0, 0, 0, 766, 767, 5, 63, 0, 0, 767, 128, 1, 0, 0, 0, 768, 769, 3, 349, 169, 0, 769, 770, 3, 337, 163, 0, 770, 771, 3, 331, 160, 0, 771, 772, 3, 335, 162, 0, 772, 773, 3, 323, 156, 0, 773, 130, 1, 0, 0, 0, 774, 775, 5, 41, 0, 0, 775, 132, 1, 0, 0, 0, 776, 777, 3, 353, 171, 0, 777, 778, 3, 349, 169, 0, 778, 779, 3, 355, 172, 0, 779, 780, 3, 323, 156, 0, 780, 134, 1, 0, 0, 0, 781, 782, 5, 61, 0, 0, 782, 783, 5, 61, 0, 0, 783, 136, 1, 0, 0, 0, 784, 785, 5, 61, 0, 0, 785, 786, 5, 126, 0, 0, 786, 138, 1, 0, 0, 0, 787, 788, 5, 33, 0, 0, 788, 789, 5, 61, 0, 0, 789, 140, 1, 0, 0, 0, 790, 791, 5, 60, 0, 0, 791, 142, 1, 0, 0, 0, 792, 793, 5, 60, 0, 0, 793, 794, 5, 61, 0, 0, 794, 144, 1, 0, 0, 0, 795, 796, 5, 62, 0, 0, 796, 146, 1, 0, 0, 0, 797, 798, 5, 62, 0, 0, 798, 799, 5, 61, 0, 0, 799, 148, 1, 0, 0, 0, 800, 801, 5, 43, 0, 0, 801, 150, 1, 0, 0, 0, 802, 803, 5, 45, 0, 0, 803, 152, 1, 0, 0, 0, 804, 805, 5, 42, 0, 0, 805, 154, 1, 0, 0, 0, 806, 807, 5, 47, 0, 0, 807, 156, 1, 0, 0, 0, 808, 809, 5, 37, 0, 0, 809, 158, 1, 0, 0, 0, 810, 811, 5, 91, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 6, 74, 0, 0, 813, 814, 6, 74, 0, 0, 814, 160, 1, 0, 0, 0, 815, 816, 5, 93, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 6, 75, 12, 0, 818, 819, 6, 75, 12, 0, 819, 162, 1, 0, 0, 0, 820, 824, 3, 67, 28, 0, 821, 823, 3, 83, 36, 0, 822, 821, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 837, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 830, 3, 81, 35, 0, 828, 830, 3, 75, 32, 0, 829, 827, 1, 0, 0, 0, 829, 828, 1, 0, 0, 0, 830, 832, 1, 0, 0, 0, 831, 833, 3, 83, 36, 0, 832, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 837, 1, 0, 0, 0, 836, 820, 1, 0, 0, 0, 836, 829, 1, 0, 0, 0, 837, 164, 1, 0, 0, 0, 838, 840, 3, 77, 33, 0, 839, 841, 3, 79, 34, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0, 844, 845, 3, 77, 33, 0, 845, 166, 1, 0, 0, 0, 846, 847, 3, 165, 77, 0, 847, 168, 1, 0, 0, 0, 848, 849, 3, 47, 18, 0, 849, 850, 1, 0, 0, 0, 850, 851, 6, 79, 8, 0, 851, 170, 1, 0, 0, 0, 852, 853, 3, 49, 19, 0, 853, 854, 1, 0, 0, 0, 854, 855, 6, 80, 8, 0, 855, 172, 1, 0, 0, 0, 856, 857, 3, 51, 20, 0, 857, 858, 1, 0, 0, 0, 858, 859, 6, 81, 8, 0, 859, 174, 1, 0, 0, 0, 860, 861, 3, 63, 26, 0, 861, 862, 1, 0, 0, 0, 862, 863, 6, 82, 11, 0, 863, 864, 6, 82, 12, 0, 864, 176, 1, 0, 0, 0, 865, 866, 3, 159, 74, 0, 866, 867, 1, 0, 0, 0, 867, 868, 6, 83, 9, 0, 868, 178, 1, 0, 0, 0, 869, 870, 3, 161, 75, 0, 870, 871, 1, 0, 0, 0, 871, 872, 6, 84, 13, 0, 872, 180, 1, 0, 0, 0, 873, 874, 3, 99, 44, 0, 874, 875, 1, 0, 0, 0, 875, 876, 6, 85, 14, 0, 876, 182, 1, 0, 0, 0, 877, 878, 3, 97, 43, 0, 878, 879, 1, 0, 0, 0, 879, 880, 6, 86, 15, 0, 880, 184, 1, 0, 0, 0, 881, 882, 3, 339, 164, 0, 882, 883, 3, 323, 156, 0, 883, 884, 3, 353, 171, 0, 884, 885, 3, 315, 152, 0, 885, 886, 3, 321, 155, 0, 886, 887, 3, 315, 152, 0, 887, 888, 3, 353, 171, 0, 888, 889, 3, 315, 152, 0, 889, 186, 1, 0, 0, 0, 890, 894, 8, 10, 0, 0, 891, 892, 5, 47, 0, 0, 892, 894, 8, 11, 0, 0, 893, 890, 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, 188, 1, 0, 0, 0, 895, 897, 3, 187, 88, 0, 896, 895, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 190, 1, 0, 0, 0, 900, 901, 3, 167, 78, 0, 901, 902, 1, 0, 0, 0, 902, 903, 6, 90, 16, 0, 903, 192, 1, 0, 0, 0, 904, 905, 3, 47, 18, 0, 905, 906, 1, 0, 0, 0, 906, 907, 6, 91, 8, 0, 907, 194, 1, 0, 0, 0, 908, 909, 3, 49, 19, 0, 909, 910, 1, 0, 0, 0, 910, 911, 6, 92, 8, 0, 911, 196, 1, 0, 0, 0, 912, 913, 3, 51, 20, 0, 913, 914, 1, 0, 0, 0, 914, 915, 6, 93, 8, 0, 915, 198, 1, 0, 0, 0, 916, 917, 3, 63, 26, 0, 917, 918, 1, 0, 0, 0, 918, 919, 6, 94, 11, 0, 919, 920, 6, 94, 12, 0, 920, 200, 1, 0, 0, 0, 921, 922, 3, 103, 46, 0, 922, 923, 1, 0, 0, 0, 923, 924, 6, 95, 17, 0, 924, 202, 1, 0, 0, 0, 925, 926, 3, 99, 44, 0, 926, 927, 1, 0, 0, 0, 927, 928, 6, 96, 14, 0, 928, 204, 1, 0, 0, 0, 929, 934, 3, 67, 28, 0, 930, 934, 3, 65, 27, 0, 931, 934, 3, 81, 35, 0, 932, 934, 3, 153, 71, 0, 933, 929, 1, 0, 0, 0, 933, 930, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 206, 1, 0, 0, 0, 935, 938, 3, 67, 28, 0, 936, 938, 3, 153, 71, 0, 937, 935, 1, 0, 0, 0, 937, 936, 1, 0, 0, 0, 938, 942, 1, 0, 0, 0, 939, 941, 3, 205, 97, 0, 940, 939, 1, 0, 0, 0, 941, 944, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 955, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 945, 948, 3, 81, 35, 0, 946, 948, 3, 75, 32, 0, 947, 945, 1, 0, 0, 0, 947, 946, 1, 0, 0, 0, 948, 950, 1, 0, 0, 0, 949, 951, 3, 205, 97, 0, 950, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 950, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 955, 1, 0, 0, 0, 954, 937, 1, 0, 0, 0, 954, 947, 1, 0, 0, 0, 955, 208, 1, 0, 0, 0, 956, 959, 3, 207, 98, 0, 957, 959, 3, 165, 77, 0, 958, 956, 1, 0, 0, 0, 958, 957, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 210, 1, 0, 0, 0, 962, 963, 3, 47, 18, 0, 963, 964, 1, 0, 0, 0, 964, 965, 6, 100, 8, 0, 965, 212, 1, 0, 0, 0, 966, 967, 3, 49, 19, 0, 967, 968, 1, 0, 0, 0, 968, 969, 6, 101, 8, 0, 969, 214, 1, 0, 0, 0, 970, 971, 3, 51, 20, 0, 971, 972, 1, 0, 0, 0, 972, 973, 6, 102, 8, 0, 973, 216, 1, 0, 0, 0, 974, 975, 3, 63, 26, 0, 975, 976, 1, 0, 0, 0, 976, 977, 6, 103, 11, 0, 977, 978, 6, 103, 12, 0, 978, 218, 1, 0, 0, 0, 979, 980, 3, 97, 43, 0, 980, 981, 1, 0, 0, 0, 981, 982, 6, 104, 15, 0, 982, 220, 1, 0, 0, 0, 983, 984, 3, 99, 44, 0, 984, 985, 1, 0, 0, 0, 985, 986, 6, 105, 14, 0, 986, 222, 1, 0, 0, 0, 987, 988, 3, 103, 46, 0, 988, 989, 1, 0, 0, 0, 989, 990, 6, 106, 17, 0, 990, 224, 1, 0, 0, 0, 991, 992, 3, 315, 152, 0, 992, 993, 3, 351, 170, 0, 993, 226, 1, 0, 0, 0, 994, 995, 3, 209, 99, 0, 995, 996, 1, 0, 0, 0, 996, 997, 6, 108, 18, 0, 997, 228, 1, 0, 0, 0, 998, 999, 3, 47, 18, 0, 999, 1000, 1, 0, 0, 0, 1000, 1001, 6, 109, 8, 0, 1001, 230, 1, 0, 0, 0, 1002, 1003, 3, 49, 19, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1005, 6, 110, 8, 0, 1005, 232, 1, 0, 0, 0, 1006, 1007, 3, 51, 20, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009, 6, 111, 8, 0, 1009, 234, 1, 0, 0, 0, 1010, 1011, 3, 63, 26, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 6, 112, 11, 0, 1013, 1014, 6, 112, 12, 0, 1014, 236, 1, 0, 0, 0, 1015, 1016, 3, 159, 74, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 6, 113, 9, 0, 1018, 1019, 6, 113, 19, 0, 1019, 238, 1, 0, 0, 0, 1020, 1021, 3, 343, 166, 0, 1021, 1022, 3, 341, 165, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 6, 114, 20, 0, 1024, 240, 1, 0, 0, 0, 1025, 1026, 3, 359, 174, 0, 1026, 1027, 3, 331, 160, 0, 1027, 1028, 3, 353, 171, 0, 1028, 1029, 3, 329, 159, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1031, 6, 115, 20, 0, 1031, 242, 1, 0, 0, 0, 1032, 1033, 8, 12, 0, 0, 1033, 244, 1, 0, 0, 0, 1034, 1036, 3, 243, 116, 0, 1035, 1034, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 3, 305, 147, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1035, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1044, 1, 0, 0, 0, 1043, 1045, 3, 243, 116, 0, 1044, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 246, 1, 0, 0, 0, 1048, 1049, 3, 167, 78, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1051, 6, 118, 16, 0, 1051, 248, 1, 0, 0, 0, 1052, 1053, 3, 245, 117, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 6, 119, 21, 0, 1055, 250, 1, 0, 0, 0, 1056, 1057, 3, 47, 18, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 6, 120, 8, 0, 1059, 252, 1, 0, 0, 0, 1060, 1061, 3, 49, 19, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 6, 121, 8, 0, 1063, 254, 1, 0, 0, 0, 1064, 1065, 3, 51, 20, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 6, 122, 8, 0, 1067, 256, 1, 0, 0, 0, 1068, 1069, 3, 63, 26, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1071, 6, 123, 11, 0, 1071, 1072, 6, 123, 12, 0, 1072, 1073, 6, 123, 12, 0, 1073, 258, 1, 0, 0, 0, 1074, 1075, 3, 97, 43, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, 6, 124, 15, 0, 1077, 260, 1, 0, 0, 0, 1078, 1079, 3, 99, 44, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 6, 125, 14, 0, 1081, 262, 1, 0, 0, 0, 1082, 1083, 3, 103, 46, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 6, 126, 17, 0, 1085, 264, 1, 0, 0, 0, 1086, 1087, 3, 241, 115, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 6, 127, 22, 0, 1089, 266, 1, 0, 0, 0, 1090, 1091, 3, 209, 99, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1093, 6, 128, 18, 0, 1093, 268, 1, 0, 0, 0, 1094, 1095, 3, 167, 78, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 6, 129, 16, 0, 1097, 270, 1, 0, 0, 0, 1098, 1099, 3, 47, 18, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1101, 6, 130, 8, 0, 1101, 272, 1, 0, 0, 0, 1102, 1103, 3, 49, 19, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 6, 131, 8, 0, 1105, 274, 1, 0, 0, 0, 1106, 1107, 3, 51, 20, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 6, 132, 8, 0, 1109, 276, 1, 0, 0, 0, 1110, 1111, 3, 63, 26, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 6, 133, 11, 0, 1113, 1114, 6, 133, 12, 0, 1114, 278, 1, 0, 0, 0, 1115, 1116, 3, 103, 46, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 6, 134, 17, 0, 1118, 280, 1, 0, 0, 0, 1119, 1120, 3, 167, 78, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1122, 6, 135, 16, 0, 1122, 282, 1, 0, 0, 0, 1123, 1124, 3, 163, 76, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 6, 136, 23, 0, 1126, 284, 1, 0, 0, 0, 1127, 1128, 3, 47, 18, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 6, 137, 8, 0, 1130, 286, 1, 0, 0, 0, 1131, 1132, 3, 49, 19, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 6, 138, 8, 0, 1134, 288, 1, 0, 0, 0, 1135, 1136, 3, 51, 20, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 6, 139, 8, 0, 1138, 290, 1, 0, 0, 0, 1139, 1140, 3, 63, 26, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 6, 140, 11, 0, 1142, 1143, 6, 140, 12, 0, 1143, 292, 1, 0, 0, 0, 1144, 1145, 3, 331, 160, 0, 1145, 1146, 3, 341, 165, 0, 1146, 1147, 3, 325, 157, 0, 1147, 1148, 3, 343, 166, 0, 1148, 294, 1, 0, 0, 0, 1149, 1150, 3, 325, 157, 0, 1150, 1151, 3, 355, 172, 0, 1151, 1152, 3, 341, 165, 0, 1152, 1153, 3, 319, 154, 0, 1153, 1154, 3, 353, 171, 0, 1154, 1155, 3, 331, 160, 0, 1155, 1156, 3, 343, 166, 0, 1156, 1157, 3, 341, 165, 0, 1157, 1158, 3, 351, 170, 0, 1158, 296, 1, 0, 0, 0, 1159, 1160, 3, 47, 18, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 6, 143, 8, 0, 1162, 298, 1, 0, 0, 0, 1163, 1164, 3, 49, 19, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 6, 144, 8, 0, 1166, 300, 1, 0, 0, 0, 1167, 1168, 3, 51, 20, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1170, 6, 145, 8, 0, 1170, 302, 1, 0, 0, 0, 1171, 1172, 3, 161, 75, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 6, 146, 13, 0, 1174, 1175, 6, 146, 12, 0, 1175, 304, 1, 0, 0, 0, 1176, 1177, 5, 58, 0, 0, 1177, 306, 1, 0, 0, 0, 1178, 1184, 3, 75, 32, 0, 1179, 1184, 3, 65, 27, 0, 1180, 1184, 3, 103, 46, 0, 1181, 1184, 3, 67, 28, 0, 1182, 1184, 3, 81, 35, 0, 1183, 1178, 1, 0, 0, 0, 1183, 1179, 1, 0, 0, 0, 1183, 1180, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1183, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 308, 1, 0, 0, 0, 1187, 1188, 3, 47, 18, 0, 1188, 1189, 1, 0, 0, 0, 1189, 1190, 6, 149, 8, 0, 1190, 310, 1, 0, 0, 0, 1191, 1192, 3, 49, 19, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 6, 150, 8, 0, 1194, 312, 1, 0, 0, 0, 1195, 1196, 3, 51, 20, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 6, 151, 8, 0, 1198, 314, 1, 0, 0, 0, 1199, 1200, 7, 13, 0, 0, 1200, 316, 1, 0, 0, 0, 1201, 1202, 7, 14, 0, 0, 1202, 318, 1, 0, 0, 0, 1203, 1204, 7, 15, 0, 0, 1204, 320, 1, 0, 0, 0, 1205, 1206, 7, 16, 0, 0, 1206, 322, 1, 0, 0, 0, 1207, 1208, 7, 7, 0, 0, 1208, 324, 1, 0, 0, 0, 1209, 1210, 7, 17, 0, 0, 1210, 326, 1, 0, 0, 0, 1211, 1212, 7, 18, 0, 0, 1212, 328, 1, 0, 0, 0, 1213, 1214, 7, 19, 0, 0, 1214, 330, 1, 0, 0, 0, 1215, 1216, 7, 20, 0, 0, 1216, 332, 1, 0, 0, 0, 1217, 1218, 7, 21, 0, 0, 1218, 334, 1, 0, 0, 0, 1219, 1220, 7, 22, 0, 0, 1220, 336, 1, 0, 0, 0, 1221, 1222, 7, 23, 0, 0, 1222, 338, 1, 0, 0, 0, 1223, 1224, 7, 24, 0, 0, 1224, 340, 1, 0, 0, 0, 1225, 1226, 7, 25, 0, 0, 1226, 342, 1, 0, 0, 0, 1227, 1228, 7, 26, 0, 0, 1228, 344, 1, 0, 0, 0, 1229, 1230, 7, 27, 0, 0, 1230, 346, 1, 0, 0, 0, 1231, 1232, 7, 28, 0, 0, 1232, 348, 1, 0, 0, 0, 1233, 1234, 7, 29, 0, 0, 1234, 350, 1, 0, 0, 0, 1235, 1236, 7, 30, 0, 0, 1236, 352, 1, 0, 0, 0, 1237, 1238, 7, 31, 0, 0, 1238, 354, 1, 0, 0, 0, 1239, 1240, 7, 32, 0, 0, 1240, 356, 1, 0, 0, 0, 1241, 1242, 7, 33, 0, 0, 1242, 358, 1, 0, 0, 0, 1243, 1244, 7, 34, 0, 0, 1244, 360, 1, 0, 0, 0, 1245, 1246, 7, 35, 0, 0, 1246, 362, 1, 0, 0, 0, 1247, 1248, 7, 36, 0, 0, 1248, 364, 1, 0, 0, 0, 1249, 1250, 7, 37, 0, 0, 1250, 366, 1, 0, 0, 0, 57, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 513, 523, 527, 530, 539, 541, 552, 593, 598, 607, 614, 619, 621, 632, 640, 643, 645, 650, 655, 661, 668, 673, 679, 682, 690, 694, 824, 829, 834, 836, 842, 893, 898, 933, 937, 942, 947, 952, 954, 958, 960, 1037, 1041, 1046, 1183, 1185, 24, 5, 2, 0, 5, 4, 0, 5, 6, 0, 5, 1, 0, 5, 3, 0, 5, 8, 0, 5, 5, 0, 5, 9, 0, 0, 1, 0, 7, 63, 0, 5, 0, 0, 7, 25, 0, 4, 0, 0, 7, 64, 0, 7, 33, 0, 7, 32, 0, 7, 66, 0, 7, 35, 0, 7, 75, 0, 5, 10, 0, 5, 7, 0, 7, 85, 0, 7, 84, 0, 7, 65, 0] \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts b/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts new file mode 100644 index 0000000000000..f123cf25d7421 --- /dev/null +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts @@ -0,0 +1,756 @@ +// @ts-nocheck +// Generated from src/esql/antlr/esql_lexer.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols +import { + ATN, + ATNDeserializer, + CharStream, + DecisionState, DFA, + Lexer, + LexerATNSimulator, + RuleContext, + PredictionContextCache, + Token +} from "antlr4"; +export default class esql_lexer extends Lexer { + public static readonly DISSECT = 1; + public static readonly DROP = 2; + public static readonly ENRICH = 3; + public static readonly EVAL = 4; + public static readonly EXPLAIN = 5; + public static readonly FROM = 6; + public static readonly GROK = 7; + public static readonly INLINESTATS = 8; + public static readonly KEEP = 9; + public static readonly LIMIT = 10; + public static readonly MV_EXPAND = 11; + public static readonly RENAME = 12; + public static readonly ROW = 13; + public static readonly SHOW = 14; + public static readonly SORT = 15; + public static readonly STATS = 16; + public static readonly WHERE = 17; + public static readonly UNKNOWN_CMD = 18; + public static readonly LINE_COMMENT = 19; + public static readonly MULTILINE_COMMENT = 20; + public static readonly WS = 21; + public static readonly EXPLAIN_WS = 22; + public static readonly EXPLAIN_LINE_COMMENT = 23; + public static readonly EXPLAIN_MULTILINE_COMMENT = 24; + public static readonly PIPE = 25; + public static readonly STRING = 26; + public static readonly INTEGER_LITERAL = 27; + public static readonly DECIMAL_LITERAL = 28; + public static readonly BY = 29; + public static readonly AND = 30; + public static readonly ASC = 31; + public static readonly ASSIGN = 32; + public static readonly COMMA = 33; + public static readonly DESC = 34; + public static readonly DOT = 35; + public static readonly FALSE = 36; + public static readonly FIRST = 37; + public static readonly LAST = 38; + public static readonly LP = 39; + public static readonly IN = 40; + public static readonly IS = 41; + public static readonly LIKE = 42; + public static readonly NOT = 43; + public static readonly NULL = 44; + public static readonly NULLS = 45; + public static readonly OR = 46; + public static readonly PARAM = 47; + public static readonly RLIKE = 48; + public static readonly RP = 49; + public static readonly TRUE = 50; + public static readonly EQ = 51; + public static readonly CIEQ = 52; + public static readonly NEQ = 53; + public static readonly LT = 54; + public static readonly LTE = 55; + public static readonly GT = 56; + public static readonly GTE = 57; + public static readonly PLUS = 58; + public static readonly MINUS = 59; + public static readonly ASTERISK = 60; + public static readonly SLASH = 61; + public static readonly PERCENT = 62; + public static readonly OPENING_BRACKET = 63; + public static readonly CLOSING_BRACKET = 64; + public static readonly UNQUOTED_IDENTIFIER = 65; + public static readonly QUOTED_IDENTIFIER = 66; + public static readonly EXPR_LINE_COMMENT = 67; + public static readonly EXPR_MULTILINE_COMMENT = 68; + public static readonly EXPR_WS = 69; + public static readonly METADATA = 70; + public static readonly FROM_UNQUOTED_IDENTIFIER = 71; + public static readonly FROM_LINE_COMMENT = 72; + public static readonly FROM_MULTILINE_COMMENT = 73; + public static readonly FROM_WS = 74; + public static readonly ID_PATTERN = 75; + public static readonly PROJECT_LINE_COMMENT = 76; + public static readonly PROJECT_MULTILINE_COMMENT = 77; + public static readonly PROJECT_WS = 78; + public static readonly AS = 79; + public static readonly RENAME_LINE_COMMENT = 80; + public static readonly RENAME_MULTILINE_COMMENT = 81; + public static readonly RENAME_WS = 82; + public static readonly ON = 83; + public static readonly WITH = 84; + public static readonly ENRICH_POLICY_NAME = 85; + public static readonly ENRICH_LINE_COMMENT = 86; + public static readonly ENRICH_MULTILINE_COMMENT = 87; + public static readonly ENRICH_WS = 88; + public static readonly ENRICH_FIELD_LINE_COMMENT = 89; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 90; + public static readonly ENRICH_FIELD_WS = 91; + public static readonly MVEXPAND_LINE_COMMENT = 92; + public static readonly MVEXPAND_MULTILINE_COMMENT = 93; + public static readonly MVEXPAND_WS = 94; + public static readonly INFO = 95; + public static readonly FUNCTIONS = 96; + public static readonly SHOW_LINE_COMMENT = 97; + public static readonly SHOW_MULTILINE_COMMENT = 98; + public static readonly SHOW_WS = 99; + public static readonly COLON = 100; + public static readonly SETTING = 101; + public static readonly SETTING_LINE_COMMENT = 102; + public static readonly SETTTING_MULTILINE_COMMENT = 103; + public static readonly SETTING_WS = 104; + public static readonly EOF = Token.EOF; + public static readonly EXPLAIN_MODE = 1; + public static readonly EXPRESSION_MODE = 2; + public static readonly FROM_MODE = 3; + public static readonly PROJECT_MODE = 4; + public static readonly RENAME_MODE = 5; + public static readonly ENRICH_MODE = 6; + public static readonly ENRICH_FIELD_MODE = 7; + public static readonly MVEXPAND_MODE = 8; + public static readonly SHOW_MODE = 9; + public static readonly SETTING_MODE = 10; + + public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; + public static readonly literalNames: (string | null)[] = [ null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, "'|'", + null, null, + null, null, + null, null, + "'='", "','", + null, "'.'", + null, null, + null, "'('", + null, null, + null, null, + null, null, + null, "'?'", + null, "')'", + null, "'=='", + "'=~'", "'!='", + "'<'", "'<='", + "'>'", "'>='", + "'+'", "'-'", + "'*'", "'/'", + "'%'", null, + "']'", null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + "':'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "DISSECT", + "DROP", "ENRICH", + "EVAL", "EXPLAIN", + "FROM", "GROK", + "INLINESTATS", + "KEEP", "LIMIT", + "MV_EXPAND", + "RENAME", "ROW", + "SHOW", "SORT", + "STATS", "WHERE", + "UNKNOWN_CMD", + "LINE_COMMENT", + "MULTILINE_COMMENT", + "WS", "EXPLAIN_WS", + "EXPLAIN_LINE_COMMENT", + "EXPLAIN_MULTILINE_COMMENT", + "PIPE", "STRING", + "INTEGER_LITERAL", + "DECIMAL_LITERAL", + "BY", "AND", + "ASC", "ASSIGN", + "COMMA", "DESC", + "DOT", "FALSE", + "FIRST", "LAST", + "LP", "IN", + "IS", "LIKE", + "NOT", "NULL", + "NULLS", "OR", + "PARAM", "RLIKE", + "RP", "TRUE", + "EQ", "CIEQ", + "NEQ", "LT", + "LTE", "GT", + "GTE", "PLUS", + "MINUS", "ASTERISK", + "SLASH", "PERCENT", + "OPENING_BRACKET", + "CLOSING_BRACKET", + "UNQUOTED_IDENTIFIER", + "QUOTED_IDENTIFIER", + "EXPR_LINE_COMMENT", + "EXPR_MULTILINE_COMMENT", + "EXPR_WS", + "METADATA", + "FROM_UNQUOTED_IDENTIFIER", + "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", + "FROM_WS", + "ID_PATTERN", + "PROJECT_LINE_COMMENT", + "PROJECT_MULTILINE_COMMENT", + "PROJECT_WS", + "AS", "RENAME_LINE_COMMENT", + "RENAME_MULTILINE_COMMENT", + "RENAME_WS", + "ON", "WITH", + "ENRICH_POLICY_NAME", + "ENRICH_LINE_COMMENT", + "ENRICH_MULTILINE_COMMENT", + "ENRICH_WS", + "ENRICH_FIELD_LINE_COMMENT", + "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", + "MVEXPAND_LINE_COMMENT", + "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", + "INFO", "FUNCTIONS", + "SHOW_LINE_COMMENT", + "SHOW_MULTILINE_COMMENT", + "SHOW_WS", + "COLON", "SETTING", + "SETTING_LINE_COMMENT", + "SETTTING_MULTILINE_COMMENT", + "SETTING_WS" ]; + public static readonly modeNames: string[] = [ "DEFAULT_MODE", "EXPLAIN_MODE", + "EXPRESSION_MODE", "FROM_MODE", + "PROJECT_MODE", "RENAME_MODE", + "ENRICH_MODE", "ENRICH_FIELD_MODE", + "MVEXPAND_MODE", "SHOW_MODE", + "SETTING_MODE", ]; + + public static readonly ruleNames: string[] = [ + "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", "INLINESTATS", + "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS", + "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "EXPLAIN_OPENING_BRACKET", + "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", + "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT", + "ASPERAND", "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", "UNQUOTED_ID_BODY", + "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", + "COMMA", "DESC", "DOT", "FALSE", "FIRST", "LAST", "LP", "IN", "IS", "LIKE", + "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "CIEQ", + "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", + "QUOTED_ID", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", + "EXPR_WS", "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", + "FROM_COMMA", "FROM_ASSIGN", "METADATA", "FROM_UNQUOTED_IDENTIFIER_PART", + "FROM_UNQUOTED_IDENTIFIER", "FROM_QUOTED_IDENTIFIER", "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", + "UNQUOTED_ID_BODY_WITH_PATTERN", "UNQUOTED_ID_PATTERN", "ID_PATTERN", + "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "RENAME_PIPE", + "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT", "AS", "RENAME_ID_PATTERN", + "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ENRICH_PIPE", + "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY", "ENRICH_POLICY_NAME", + "ENRICH_QUOTED_IDENTIFIER", "ENRICH_MODE_UNQUOTED_VALUE", "ENRICH_LINE_COMMENT", + "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN", + "ENRICH_FIELD_COMMA", "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_ID_PATTERN", + "ENRICH_FIELD_QUOTED_IDENTIFIER", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", "MVEXPAND_PIPE", "MVEXPAND_DOT", "MVEXPAND_QUOTED_IDENTIFIER", + "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", "SHOW_PIPE", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", + "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING_CLOSING_BRACKET", "COLON", + "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT", "SETTING_WS", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + ]; + + + constructor(input: CharStream) { + super(input); + this._interp = new LexerATNSimulator(this, esql_lexer._ATN, esql_lexer.DecisionsToDFA, new PredictionContextCache()); + } + + public get grammarFileName(): string { return "esql_lexer.g4"; } + + public get literalNames(): (string | null)[] { return esql_lexer.literalNames; } + public get symbolicNames(): (string | null)[] { return esql_lexer.symbolicNames; } + public get ruleNames(): string[] { return esql_lexer.ruleNames; } + + public get serializedATN(): number[] { return esql_lexer._serializedATN; } + + public get channelNames(): string[] { return esql_lexer.channelNames; } + + public get modeNames(): string[] { return esql_lexer.modeNames; } + + public static readonly _serializedATN: number[] = [4,0,104,1251,6,-1,6, + -1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2, + 2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11, + 7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7, + 18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, + 2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, + 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40, + 7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7, + 47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54, + 2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2, + 62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69, + 7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7, + 76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83, + 2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2, + 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98, + 7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7, + 104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7, + 110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7, + 116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7, + 122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7, + 128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7, + 134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7, + 140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7, + 146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7, + 152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7, + 158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7, + 164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7, + 170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7, + 176,2,177,7,177,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3, + 1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1, + 11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1, + 15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17, + 4,17,512,8,17,11,17,12,17,513,1,17,1,17,1,18,1,18,1,18,1,18,5,18,522,8, + 18,10,18,12,18,525,9,18,1,18,3,18,528,8,18,1,18,3,18,531,8,18,1,18,1,18, + 1,19,1,19,1,19,1,19,1,19,5,19,540,8,19,10,19,12,19,543,9,19,1,19,1,19,1, + 19,1,19,1,19,1,20,4,20,551,8,20,11,20,12,20,552,1,20,1,20,1,21,1,21,1,21, + 1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1, + 24,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29, + 1,29,1,30,1,30,1,31,1,31,3,31,594,8,31,1,31,4,31,597,8,31,11,31,12,31,598, + 1,32,1,32,1,33,1,33,1,34,1,34,1,34,3,34,608,8,34,1,35,1,35,1,36,1,36,1, + 36,3,36,615,8,36,1,37,1,37,1,37,5,37,620,8,37,10,37,12,37,623,9,37,1,37, + 1,37,1,37,1,37,1,37,1,37,5,37,631,8,37,10,37,12,37,634,9,37,1,37,1,37,1, + 37,1,37,1,37,3,37,641,8,37,1,37,3,37,644,8,37,3,37,646,8,37,1,38,4,38,649, + 8,38,11,38,12,38,650,1,39,4,39,654,8,39,11,39,12,39,655,1,39,1,39,5,39, + 660,8,39,10,39,12,39,663,9,39,1,39,1,39,4,39,667,8,39,11,39,12,39,668,1, + 39,4,39,672,8,39,11,39,12,39,673,1,39,1,39,5,39,678,8,39,10,39,12,39,681, + 9,39,3,39,683,8,39,1,39,1,39,1,39,1,39,4,39,689,8,39,11,39,12,39,690,1, + 39,1,39,3,39,695,8,39,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,42,1,42,1,42, + 1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1, + 47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49, + 1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,54,1, + 54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57, + 1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,61,1,61,1, + 61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,66, + 1,66,1,66,1,67,1,67,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,71,1,71,1,72,1, + 72,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76, + 5,76,823,8,76,10,76,12,76,826,9,76,1,76,1,76,3,76,830,8,76,1,76,4,76,833, + 8,76,11,76,12,76,834,3,76,837,8,76,1,77,1,77,4,77,841,8,77,11,77,12,77, + 842,1,77,1,77,1,78,1,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1, + 81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,84,1,84,1,84, + 1,84,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1, + 87,1,87,1,87,1,87,1,88,1,88,1,88,3,88,894,8,88,1,89,4,89,897,8,89,11,89, + 12,89,898,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1, + 93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96, + 1,96,1,96,1,97,1,97,1,97,1,97,3,97,934,8,97,1,98,1,98,3,98,938,8,98,1,98, + 5,98,941,8,98,10,98,12,98,944,9,98,1,98,1,98,3,98,948,8,98,1,98,4,98,951, + 8,98,11,98,12,98,952,3,98,955,8,98,1,99,1,99,4,99,959,8,99,11,99,12,99, + 960,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1, + 102,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1, + 105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,1, + 108,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1, + 111,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,114,1, + 114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1, + 116,1,117,4,117,1036,8,117,11,117,12,117,1037,1,117,1,117,3,117,1042,8, + 117,1,117,4,117,1045,8,117,11,117,12,117,1046,1,118,1,118,1,118,1,118,1, + 119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1, + 122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1, + 124,1,124,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127,1, + 127,1,127,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,130,1,130,1, + 130,1,130,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,133,1,133,1, + 133,1,133,1,133,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,136,1, + 136,1,136,1,136,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,139,1, + 139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1, + 141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1, + 143,1,143,1,143,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,146,1, + 146,1,146,1,146,1,146,1,147,1,147,1,148,1,148,1,148,1,148,1,148,4,148,1184, + 8,148,11,148,12,148,1185,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150, + 1,151,1,151,1,151,1,151,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155, + 1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,160,1,160,1,161,1,161, + 1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167, + 1,168,1,168,1,169,1,169,1,170,1,170,1,171,1,171,1,172,1,172,1,173,1,173, + 1,174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,2,541,632,0,178,11,1,13, + 2,15,3,17,4,19,5,21,6,23,7,25,8,27,9,29,10,31,11,33,12,35,13,37,14,39,15, + 41,16,43,17,45,18,47,19,49,20,51,21,53,0,55,0,57,22,59,23,61,24,63,25,65, + 0,67,0,69,0,71,0,73,0,75,0,77,0,79,0,81,0,83,0,85,26,87,27,89,28,91,29, + 93,30,95,31,97,32,99,33,101,34,103,35,105,36,107,37,109,38,111,39,113,40, + 115,41,117,42,119,43,121,44,123,45,125,46,127,47,129,48,131,49,133,50,135, + 51,137,52,139,53,141,54,143,55,145,56,147,57,149,58,151,59,153,60,155,61, + 157,62,159,63,161,64,163,65,165,0,167,66,169,67,171,68,173,69,175,0,177, + 0,179,0,181,0,183,0,185,70,187,0,189,71,191,0,193,72,195,73,197,74,199, + 0,201,0,203,0,205,0,207,0,209,75,211,76,213,77,215,78,217,0,219,0,221,0, + 223,0,225,79,227,0,229,80,231,81,233,82,235,0,237,0,239,83,241,84,243,0, + 245,85,247,0,249,0,251,86,253,87,255,88,257,0,259,0,261,0,263,0,265,0,267, + 0,269,0,271,89,273,90,275,91,277,0,279,0,281,0,283,0,285,92,287,93,289, + 94,291,0,293,95,295,96,297,97,299,98,301,99,303,0,305,100,307,101,309,102, + 311,103,313,104,315,0,317,0,319,0,321,0,323,0,325,0,327,0,329,0,331,0,333, + 0,335,0,337,0,339,0,341,0,343,0,345,0,347,0,349,0,351,0,353,0,355,0,357, + 0,359,0,361,0,363,0,365,0,11,0,1,2,3,4,5,6,7,8,9,10,38,6,0,9,10,13,13,32, + 32,47,47,91,91,93,93,2,0,10,10,13,13,3,0,9,10,13,13,32,32,1,0,48,57,2,0, + 65,90,97,122,5,0,34,34,92,92,110,110,114,114,116,116,4,0,10,10,13,13,34, + 34,92,92,2,0,69,69,101,101,2,0,43,43,45,45,1,0,96,96,10,0,9,10,13,13,32, + 32,44,44,47,47,61,61,91,91,93,93,96,96,124,124,2,0,42,42,47,47,11,0,9,10, + 13,13,32,32,34,35,44,44,47,47,58,58,60,60,62,63,92,92,124,124,2,0,65,65, + 97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,70,70,102,102, + 2,0,71,71,103,103,2,0,72,72,104,104,2,0,73,73,105,105,2,0,74,74,106,106, + 2,0,75,75,107,107,2,0,76,76,108,108,2,0,77,77,109,109,2,0,78,78,110,110, + 2,0,79,79,111,111,2,0,80,80,112,112,2,0,81,81,113,113,2,0,82,82,114,114, + 2,0,83,83,115,115,2,0,84,84,116,116,2,0,85,85,117,117,2,0,86,86,118,118, + 2,0,87,87,119,119,2,0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122, + 1253,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0, + 21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0, + 0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0, + 43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,1,53,1,0, + 0,0,1,55,1,0,0,0,1,57,1,0,0,0,1,59,1,0,0,0,1,61,1,0,0,0,2,63,1,0,0,0,2, + 85,1,0,0,0,2,87,1,0,0,0,2,89,1,0,0,0,2,91,1,0,0,0,2,93,1,0,0,0,2,95,1,0, + 0,0,2,97,1,0,0,0,2,99,1,0,0,0,2,101,1,0,0,0,2,103,1,0,0,0,2,105,1,0,0,0, + 2,107,1,0,0,0,2,109,1,0,0,0,2,111,1,0,0,0,2,113,1,0,0,0,2,115,1,0,0,0,2, + 117,1,0,0,0,2,119,1,0,0,0,2,121,1,0,0,0,2,123,1,0,0,0,2,125,1,0,0,0,2,127, + 1,0,0,0,2,129,1,0,0,0,2,131,1,0,0,0,2,133,1,0,0,0,2,135,1,0,0,0,2,137,1, + 0,0,0,2,139,1,0,0,0,2,141,1,0,0,0,2,143,1,0,0,0,2,145,1,0,0,0,2,147,1,0, + 0,0,2,149,1,0,0,0,2,151,1,0,0,0,2,153,1,0,0,0,2,155,1,0,0,0,2,157,1,0,0, + 0,2,159,1,0,0,0,2,161,1,0,0,0,2,163,1,0,0,0,2,167,1,0,0,0,2,169,1,0,0,0, + 2,171,1,0,0,0,2,173,1,0,0,0,3,175,1,0,0,0,3,177,1,0,0,0,3,179,1,0,0,0,3, + 181,1,0,0,0,3,183,1,0,0,0,3,185,1,0,0,0,3,189,1,0,0,0,3,191,1,0,0,0,3,193, + 1,0,0,0,3,195,1,0,0,0,3,197,1,0,0,0,4,199,1,0,0,0,4,201,1,0,0,0,4,203,1, + 0,0,0,4,209,1,0,0,0,4,211,1,0,0,0,4,213,1,0,0,0,4,215,1,0,0,0,5,217,1,0, + 0,0,5,219,1,0,0,0,5,221,1,0,0,0,5,223,1,0,0,0,5,225,1,0,0,0,5,227,1,0,0, + 0,5,229,1,0,0,0,5,231,1,0,0,0,5,233,1,0,0,0,6,235,1,0,0,0,6,237,1,0,0,0, + 6,239,1,0,0,0,6,241,1,0,0,0,6,245,1,0,0,0,6,247,1,0,0,0,6,249,1,0,0,0,6, + 251,1,0,0,0,6,253,1,0,0,0,6,255,1,0,0,0,7,257,1,0,0,0,7,259,1,0,0,0,7,261, + 1,0,0,0,7,263,1,0,0,0,7,265,1,0,0,0,7,267,1,0,0,0,7,269,1,0,0,0,7,271,1, + 0,0,0,7,273,1,0,0,0,7,275,1,0,0,0,8,277,1,0,0,0,8,279,1,0,0,0,8,281,1,0, + 0,0,8,283,1,0,0,0,8,285,1,0,0,0,8,287,1,0,0,0,8,289,1,0,0,0,9,291,1,0,0, + 0,9,293,1,0,0,0,9,295,1,0,0,0,9,297,1,0,0,0,9,299,1,0,0,0,9,301,1,0,0,0, + 10,303,1,0,0,0,10,305,1,0,0,0,10,307,1,0,0,0,10,309,1,0,0,0,10,311,1,0, + 0,0,10,313,1,0,0,0,11,367,1,0,0,0,13,377,1,0,0,0,15,384,1,0,0,0,17,393, + 1,0,0,0,19,400,1,0,0,0,21,410,1,0,0,0,23,417,1,0,0,0,25,424,1,0,0,0,27, + 438,1,0,0,0,29,445,1,0,0,0,31,453,1,0,0,0,33,465,1,0,0,0,35,474,1,0,0,0, + 37,480,1,0,0,0,39,487,1,0,0,0,41,494,1,0,0,0,43,502,1,0,0,0,45,511,1,0, + 0,0,47,517,1,0,0,0,49,534,1,0,0,0,51,550,1,0,0,0,53,556,1,0,0,0,55,561, + 1,0,0,0,57,566,1,0,0,0,59,570,1,0,0,0,61,574,1,0,0,0,63,578,1,0,0,0,65, + 582,1,0,0,0,67,584,1,0,0,0,69,586,1,0,0,0,71,589,1,0,0,0,73,591,1,0,0,0, + 75,600,1,0,0,0,77,602,1,0,0,0,79,607,1,0,0,0,81,609,1,0,0,0,83,614,1,0, + 0,0,85,645,1,0,0,0,87,648,1,0,0,0,89,694,1,0,0,0,91,696,1,0,0,0,93,699, + 1,0,0,0,95,703,1,0,0,0,97,707,1,0,0,0,99,709,1,0,0,0,101,711,1,0,0,0,103, + 716,1,0,0,0,105,718,1,0,0,0,107,724,1,0,0,0,109,730,1,0,0,0,111,735,1,0, + 0,0,113,737,1,0,0,0,115,740,1,0,0,0,117,743,1,0,0,0,119,748,1,0,0,0,121, + 752,1,0,0,0,123,757,1,0,0,0,125,763,1,0,0,0,127,766,1,0,0,0,129,768,1,0, + 0,0,131,774,1,0,0,0,133,776,1,0,0,0,135,781,1,0,0,0,137,784,1,0,0,0,139, + 787,1,0,0,0,141,790,1,0,0,0,143,792,1,0,0,0,145,795,1,0,0,0,147,797,1,0, + 0,0,149,800,1,0,0,0,151,802,1,0,0,0,153,804,1,0,0,0,155,806,1,0,0,0,157, + 808,1,0,0,0,159,810,1,0,0,0,161,815,1,0,0,0,163,836,1,0,0,0,165,838,1,0, + 0,0,167,846,1,0,0,0,169,848,1,0,0,0,171,852,1,0,0,0,173,856,1,0,0,0,175, + 860,1,0,0,0,177,865,1,0,0,0,179,869,1,0,0,0,181,873,1,0,0,0,183,877,1,0, + 0,0,185,881,1,0,0,0,187,893,1,0,0,0,189,896,1,0,0,0,191,900,1,0,0,0,193, + 904,1,0,0,0,195,908,1,0,0,0,197,912,1,0,0,0,199,916,1,0,0,0,201,921,1,0, + 0,0,203,925,1,0,0,0,205,933,1,0,0,0,207,954,1,0,0,0,209,958,1,0,0,0,211, + 962,1,0,0,0,213,966,1,0,0,0,215,970,1,0,0,0,217,974,1,0,0,0,219,979,1,0, + 0,0,221,983,1,0,0,0,223,987,1,0,0,0,225,991,1,0,0,0,227,994,1,0,0,0,229, + 998,1,0,0,0,231,1002,1,0,0,0,233,1006,1,0,0,0,235,1010,1,0,0,0,237,1015, + 1,0,0,0,239,1020,1,0,0,0,241,1025,1,0,0,0,243,1032,1,0,0,0,245,1041,1,0, + 0,0,247,1048,1,0,0,0,249,1052,1,0,0,0,251,1056,1,0,0,0,253,1060,1,0,0,0, + 255,1064,1,0,0,0,257,1068,1,0,0,0,259,1074,1,0,0,0,261,1078,1,0,0,0,263, + 1082,1,0,0,0,265,1086,1,0,0,0,267,1090,1,0,0,0,269,1094,1,0,0,0,271,1098, + 1,0,0,0,273,1102,1,0,0,0,275,1106,1,0,0,0,277,1110,1,0,0,0,279,1115,1,0, + 0,0,281,1119,1,0,0,0,283,1123,1,0,0,0,285,1127,1,0,0,0,287,1131,1,0,0,0, + 289,1135,1,0,0,0,291,1139,1,0,0,0,293,1144,1,0,0,0,295,1149,1,0,0,0,297, + 1159,1,0,0,0,299,1163,1,0,0,0,301,1167,1,0,0,0,303,1171,1,0,0,0,305,1176, + 1,0,0,0,307,1183,1,0,0,0,309,1187,1,0,0,0,311,1191,1,0,0,0,313,1195,1,0, + 0,0,315,1199,1,0,0,0,317,1201,1,0,0,0,319,1203,1,0,0,0,321,1205,1,0,0,0, + 323,1207,1,0,0,0,325,1209,1,0,0,0,327,1211,1,0,0,0,329,1213,1,0,0,0,331, + 1215,1,0,0,0,333,1217,1,0,0,0,335,1219,1,0,0,0,337,1221,1,0,0,0,339,1223, + 1,0,0,0,341,1225,1,0,0,0,343,1227,1,0,0,0,345,1229,1,0,0,0,347,1231,1,0, + 0,0,349,1233,1,0,0,0,351,1235,1,0,0,0,353,1237,1,0,0,0,355,1239,1,0,0,0, + 357,1241,1,0,0,0,359,1243,1,0,0,0,361,1245,1,0,0,0,363,1247,1,0,0,0,365, + 1249,1,0,0,0,367,368,3,321,155,0,368,369,3,331,160,0,369,370,3,351,170, + 0,370,371,3,351,170,0,371,372,3,323,156,0,372,373,3,319,154,0,373,374,3, + 353,171,0,374,375,1,0,0,0,375,376,6,0,0,0,376,12,1,0,0,0,377,378,3,321, + 155,0,378,379,3,349,169,0,379,380,3,343,166,0,380,381,3,345,167,0,381,382, + 1,0,0,0,382,383,6,1,1,0,383,14,1,0,0,0,384,385,3,323,156,0,385,386,3,341, + 165,0,386,387,3,349,169,0,387,388,3,331,160,0,388,389,3,319,154,0,389,390, + 3,329,159,0,390,391,1,0,0,0,391,392,6,2,2,0,392,16,1,0,0,0,393,394,3,323, + 156,0,394,395,3,357,173,0,395,396,3,315,152,0,396,397,3,337,163,0,397,398, + 1,0,0,0,398,399,6,3,0,0,399,18,1,0,0,0,400,401,3,323,156,0,401,402,3,361, + 175,0,402,403,3,345,167,0,403,404,3,337,163,0,404,405,3,315,152,0,405,406, + 3,331,160,0,406,407,3,341,165,0,407,408,1,0,0,0,408,409,6,4,3,0,409,20, + 1,0,0,0,410,411,3,325,157,0,411,412,3,349,169,0,412,413,3,343,166,0,413, + 414,3,339,164,0,414,415,1,0,0,0,415,416,6,5,4,0,416,22,1,0,0,0,417,418, + 3,327,158,0,418,419,3,349,169,0,419,420,3,343,166,0,420,421,3,335,162,0, + 421,422,1,0,0,0,422,423,6,6,0,0,423,24,1,0,0,0,424,425,3,331,160,0,425, + 426,3,341,165,0,426,427,3,337,163,0,427,428,3,331,160,0,428,429,3,341,165, + 0,429,430,3,323,156,0,430,431,3,351,170,0,431,432,3,353,171,0,432,433,3, + 315,152,0,433,434,3,353,171,0,434,435,3,351,170,0,435,436,1,0,0,0,436,437, + 6,7,0,0,437,26,1,0,0,0,438,439,3,335,162,0,439,440,3,323,156,0,440,441, + 3,323,156,0,441,442,3,345,167,0,442,443,1,0,0,0,443,444,6,8,1,0,444,28, + 1,0,0,0,445,446,3,337,163,0,446,447,3,331,160,0,447,448,3,339,164,0,448, + 449,3,331,160,0,449,450,3,353,171,0,450,451,1,0,0,0,451,452,6,9,0,0,452, + 30,1,0,0,0,453,454,3,339,164,0,454,455,3,357,173,0,455,456,3,81,35,0,456, + 457,3,323,156,0,457,458,3,361,175,0,458,459,3,345,167,0,459,460,3,315,152, + 0,460,461,3,341,165,0,461,462,3,321,155,0,462,463,1,0,0,0,463,464,6,10, + 5,0,464,32,1,0,0,0,465,466,3,349,169,0,466,467,3,323,156,0,467,468,3,341, + 165,0,468,469,3,315,152,0,469,470,3,339,164,0,470,471,3,323,156,0,471,472, + 1,0,0,0,472,473,6,11,6,0,473,34,1,0,0,0,474,475,3,349,169,0,475,476,3,343, + 166,0,476,477,3,359,174,0,477,478,1,0,0,0,478,479,6,12,0,0,479,36,1,0,0, + 0,480,481,3,351,170,0,481,482,3,329,159,0,482,483,3,343,166,0,483,484,3, + 359,174,0,484,485,1,0,0,0,485,486,6,13,7,0,486,38,1,0,0,0,487,488,3,351, + 170,0,488,489,3,343,166,0,489,490,3,349,169,0,490,491,3,353,171,0,491,492, + 1,0,0,0,492,493,6,14,0,0,493,40,1,0,0,0,494,495,3,351,170,0,495,496,3,353, + 171,0,496,497,3,315,152,0,497,498,3,353,171,0,498,499,3,351,170,0,499,500, + 1,0,0,0,500,501,6,15,0,0,501,42,1,0,0,0,502,503,3,359,174,0,503,504,3,329, + 159,0,504,505,3,323,156,0,505,506,3,349,169,0,506,507,3,323,156,0,507,508, + 1,0,0,0,508,509,6,16,0,0,509,44,1,0,0,0,510,512,8,0,0,0,511,510,1,0,0,0, + 512,513,1,0,0,0,513,511,1,0,0,0,513,514,1,0,0,0,514,515,1,0,0,0,515,516, + 6,17,0,0,516,46,1,0,0,0,517,518,5,47,0,0,518,519,5,47,0,0,519,523,1,0,0, + 0,520,522,8,1,0,0,521,520,1,0,0,0,522,525,1,0,0,0,523,521,1,0,0,0,523,524, + 1,0,0,0,524,527,1,0,0,0,525,523,1,0,0,0,526,528,5,13,0,0,527,526,1,0,0, + 0,527,528,1,0,0,0,528,530,1,0,0,0,529,531,5,10,0,0,530,529,1,0,0,0,530, + 531,1,0,0,0,531,532,1,0,0,0,532,533,6,18,8,0,533,48,1,0,0,0,534,535,5,47, + 0,0,535,536,5,42,0,0,536,541,1,0,0,0,537,540,3,49,19,0,538,540,9,0,0,0, + 539,537,1,0,0,0,539,538,1,0,0,0,540,543,1,0,0,0,541,542,1,0,0,0,541,539, + 1,0,0,0,542,544,1,0,0,0,543,541,1,0,0,0,544,545,5,42,0,0,545,546,5,47,0, + 0,546,547,1,0,0,0,547,548,6,19,8,0,548,50,1,0,0,0,549,551,7,2,0,0,550,549, + 1,0,0,0,551,552,1,0,0,0,552,550,1,0,0,0,552,553,1,0,0,0,553,554,1,0,0,0, + 554,555,6,20,8,0,555,52,1,0,0,0,556,557,3,159,74,0,557,558,1,0,0,0,558, + 559,6,21,9,0,559,560,6,21,10,0,560,54,1,0,0,0,561,562,3,63,26,0,562,563, + 1,0,0,0,563,564,6,22,11,0,564,565,6,22,12,0,565,56,1,0,0,0,566,567,3,51, + 20,0,567,568,1,0,0,0,568,569,6,23,8,0,569,58,1,0,0,0,570,571,3,47,18,0, + 571,572,1,0,0,0,572,573,6,24,8,0,573,60,1,0,0,0,574,575,3,49,19,0,575,576, + 1,0,0,0,576,577,6,25,8,0,577,62,1,0,0,0,578,579,5,124,0,0,579,580,1,0,0, + 0,580,581,6,26,12,0,581,64,1,0,0,0,582,583,7,3,0,0,583,66,1,0,0,0,584,585, + 7,4,0,0,585,68,1,0,0,0,586,587,5,92,0,0,587,588,7,5,0,0,588,70,1,0,0,0, + 589,590,8,6,0,0,590,72,1,0,0,0,591,593,7,7,0,0,592,594,7,8,0,0,593,592, + 1,0,0,0,593,594,1,0,0,0,594,596,1,0,0,0,595,597,3,65,27,0,596,595,1,0,0, + 0,597,598,1,0,0,0,598,596,1,0,0,0,598,599,1,0,0,0,599,74,1,0,0,0,600,601, + 5,64,0,0,601,76,1,0,0,0,602,603,5,96,0,0,603,78,1,0,0,0,604,608,8,9,0,0, + 605,606,5,96,0,0,606,608,5,96,0,0,607,604,1,0,0,0,607,605,1,0,0,0,608,80, + 1,0,0,0,609,610,5,95,0,0,610,82,1,0,0,0,611,615,3,67,28,0,612,615,3,65, + 27,0,613,615,3,81,35,0,614,611,1,0,0,0,614,612,1,0,0,0,614,613,1,0,0,0, + 615,84,1,0,0,0,616,621,5,34,0,0,617,620,3,69,29,0,618,620,3,71,30,0,619, + 617,1,0,0,0,619,618,1,0,0,0,620,623,1,0,0,0,621,619,1,0,0,0,621,622,1,0, + 0,0,622,624,1,0,0,0,623,621,1,0,0,0,624,646,5,34,0,0,625,626,5,34,0,0,626, + 627,5,34,0,0,627,628,5,34,0,0,628,632,1,0,0,0,629,631,8,1,0,0,630,629,1, + 0,0,0,631,634,1,0,0,0,632,633,1,0,0,0,632,630,1,0,0,0,633,635,1,0,0,0,634, + 632,1,0,0,0,635,636,5,34,0,0,636,637,5,34,0,0,637,638,5,34,0,0,638,640, + 1,0,0,0,639,641,5,34,0,0,640,639,1,0,0,0,640,641,1,0,0,0,641,643,1,0,0, + 0,642,644,5,34,0,0,643,642,1,0,0,0,643,644,1,0,0,0,644,646,1,0,0,0,645, + 616,1,0,0,0,645,625,1,0,0,0,646,86,1,0,0,0,647,649,3,65,27,0,648,647,1, + 0,0,0,649,650,1,0,0,0,650,648,1,0,0,0,650,651,1,0,0,0,651,88,1,0,0,0,652, + 654,3,65,27,0,653,652,1,0,0,0,654,655,1,0,0,0,655,653,1,0,0,0,655,656,1, + 0,0,0,656,657,1,0,0,0,657,661,3,103,46,0,658,660,3,65,27,0,659,658,1,0, + 0,0,660,663,1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0,662,695,1,0,0,0,663, + 661,1,0,0,0,664,666,3,103,46,0,665,667,3,65,27,0,666,665,1,0,0,0,667,668, + 1,0,0,0,668,666,1,0,0,0,668,669,1,0,0,0,669,695,1,0,0,0,670,672,3,65,27, + 0,671,670,1,0,0,0,672,673,1,0,0,0,673,671,1,0,0,0,673,674,1,0,0,0,674,682, + 1,0,0,0,675,679,3,103,46,0,676,678,3,65,27,0,677,676,1,0,0,0,678,681,1, + 0,0,0,679,677,1,0,0,0,679,680,1,0,0,0,680,683,1,0,0,0,681,679,1,0,0,0,682, + 675,1,0,0,0,682,683,1,0,0,0,683,684,1,0,0,0,684,685,3,73,31,0,685,695,1, + 0,0,0,686,688,3,103,46,0,687,689,3,65,27,0,688,687,1,0,0,0,689,690,1,0, + 0,0,690,688,1,0,0,0,690,691,1,0,0,0,691,692,1,0,0,0,692,693,3,73,31,0,693, + 695,1,0,0,0,694,653,1,0,0,0,694,664,1,0,0,0,694,671,1,0,0,0,694,686,1,0, + 0,0,695,90,1,0,0,0,696,697,3,317,153,0,697,698,3,363,176,0,698,92,1,0,0, + 0,699,700,3,315,152,0,700,701,3,341,165,0,701,702,3,321,155,0,702,94,1, + 0,0,0,703,704,3,315,152,0,704,705,3,351,170,0,705,706,3,319,154,0,706,96, + 1,0,0,0,707,708,5,61,0,0,708,98,1,0,0,0,709,710,5,44,0,0,710,100,1,0,0, + 0,711,712,3,321,155,0,712,713,3,323,156,0,713,714,3,351,170,0,714,715,3, + 319,154,0,715,102,1,0,0,0,716,717,5,46,0,0,717,104,1,0,0,0,718,719,3,325, + 157,0,719,720,3,315,152,0,720,721,3,337,163,0,721,722,3,351,170,0,722,723, + 3,323,156,0,723,106,1,0,0,0,724,725,3,325,157,0,725,726,3,331,160,0,726, + 727,3,349,169,0,727,728,3,351,170,0,728,729,3,353,171,0,729,108,1,0,0,0, + 730,731,3,337,163,0,731,732,3,315,152,0,732,733,3,351,170,0,733,734,3,353, + 171,0,734,110,1,0,0,0,735,736,5,40,0,0,736,112,1,0,0,0,737,738,3,331,160, + 0,738,739,3,341,165,0,739,114,1,0,0,0,740,741,3,331,160,0,741,742,3,351, + 170,0,742,116,1,0,0,0,743,744,3,337,163,0,744,745,3,331,160,0,745,746,3, + 335,162,0,746,747,3,323,156,0,747,118,1,0,0,0,748,749,3,341,165,0,749,750, + 3,343,166,0,750,751,3,353,171,0,751,120,1,0,0,0,752,753,3,341,165,0,753, + 754,3,355,172,0,754,755,3,337,163,0,755,756,3,337,163,0,756,122,1,0,0,0, + 757,758,3,341,165,0,758,759,3,355,172,0,759,760,3,337,163,0,760,761,3,337, + 163,0,761,762,3,351,170,0,762,124,1,0,0,0,763,764,3,343,166,0,764,765,3, + 349,169,0,765,126,1,0,0,0,766,767,5,63,0,0,767,128,1,0,0,0,768,769,3,349, + 169,0,769,770,3,337,163,0,770,771,3,331,160,0,771,772,3,335,162,0,772,773, + 3,323,156,0,773,130,1,0,0,0,774,775,5,41,0,0,775,132,1,0,0,0,776,777,3, + 353,171,0,777,778,3,349,169,0,778,779,3,355,172,0,779,780,3,323,156,0,780, + 134,1,0,0,0,781,782,5,61,0,0,782,783,5,61,0,0,783,136,1,0,0,0,784,785,5, + 61,0,0,785,786,5,126,0,0,786,138,1,0,0,0,787,788,5,33,0,0,788,789,5,61, + 0,0,789,140,1,0,0,0,790,791,5,60,0,0,791,142,1,0,0,0,792,793,5,60,0,0,793, + 794,5,61,0,0,794,144,1,0,0,0,795,796,5,62,0,0,796,146,1,0,0,0,797,798,5, + 62,0,0,798,799,5,61,0,0,799,148,1,0,0,0,800,801,5,43,0,0,801,150,1,0,0, + 0,802,803,5,45,0,0,803,152,1,0,0,0,804,805,5,42,0,0,805,154,1,0,0,0,806, + 807,5,47,0,0,807,156,1,0,0,0,808,809,5,37,0,0,809,158,1,0,0,0,810,811,5, + 91,0,0,811,812,1,0,0,0,812,813,6,74,0,0,813,814,6,74,0,0,814,160,1,0,0, + 0,815,816,5,93,0,0,816,817,1,0,0,0,817,818,6,75,12,0,818,819,6,75,12,0, + 819,162,1,0,0,0,820,824,3,67,28,0,821,823,3,83,36,0,822,821,1,0,0,0,823, + 826,1,0,0,0,824,822,1,0,0,0,824,825,1,0,0,0,825,837,1,0,0,0,826,824,1,0, + 0,0,827,830,3,81,35,0,828,830,3,75,32,0,829,827,1,0,0,0,829,828,1,0,0,0, + 830,832,1,0,0,0,831,833,3,83,36,0,832,831,1,0,0,0,833,834,1,0,0,0,834,832, + 1,0,0,0,834,835,1,0,0,0,835,837,1,0,0,0,836,820,1,0,0,0,836,829,1,0,0,0, + 837,164,1,0,0,0,838,840,3,77,33,0,839,841,3,79,34,0,840,839,1,0,0,0,841, + 842,1,0,0,0,842,840,1,0,0,0,842,843,1,0,0,0,843,844,1,0,0,0,844,845,3,77, + 33,0,845,166,1,0,0,0,846,847,3,165,77,0,847,168,1,0,0,0,848,849,3,47,18, + 0,849,850,1,0,0,0,850,851,6,79,8,0,851,170,1,0,0,0,852,853,3,49,19,0,853, + 854,1,0,0,0,854,855,6,80,8,0,855,172,1,0,0,0,856,857,3,51,20,0,857,858, + 1,0,0,0,858,859,6,81,8,0,859,174,1,0,0,0,860,861,3,63,26,0,861,862,1,0, + 0,0,862,863,6,82,11,0,863,864,6,82,12,0,864,176,1,0,0,0,865,866,3,159,74, + 0,866,867,1,0,0,0,867,868,6,83,9,0,868,178,1,0,0,0,869,870,3,161,75,0,870, + 871,1,0,0,0,871,872,6,84,13,0,872,180,1,0,0,0,873,874,3,99,44,0,874,875, + 1,0,0,0,875,876,6,85,14,0,876,182,1,0,0,0,877,878,3,97,43,0,878,879,1,0, + 0,0,879,880,6,86,15,0,880,184,1,0,0,0,881,882,3,339,164,0,882,883,3,323, + 156,0,883,884,3,353,171,0,884,885,3,315,152,0,885,886,3,321,155,0,886,887, + 3,315,152,0,887,888,3,353,171,0,888,889,3,315,152,0,889,186,1,0,0,0,890, + 894,8,10,0,0,891,892,5,47,0,0,892,894,8,11,0,0,893,890,1,0,0,0,893,891, + 1,0,0,0,894,188,1,0,0,0,895,897,3,187,88,0,896,895,1,0,0,0,897,898,1,0, + 0,0,898,896,1,0,0,0,898,899,1,0,0,0,899,190,1,0,0,0,900,901,3,167,78,0, + 901,902,1,0,0,0,902,903,6,90,16,0,903,192,1,0,0,0,904,905,3,47,18,0,905, + 906,1,0,0,0,906,907,6,91,8,0,907,194,1,0,0,0,908,909,3,49,19,0,909,910, + 1,0,0,0,910,911,6,92,8,0,911,196,1,0,0,0,912,913,3,51,20,0,913,914,1,0, + 0,0,914,915,6,93,8,0,915,198,1,0,0,0,916,917,3,63,26,0,917,918,1,0,0,0, + 918,919,6,94,11,0,919,920,6,94,12,0,920,200,1,0,0,0,921,922,3,103,46,0, + 922,923,1,0,0,0,923,924,6,95,17,0,924,202,1,0,0,0,925,926,3,99,44,0,926, + 927,1,0,0,0,927,928,6,96,14,0,928,204,1,0,0,0,929,934,3,67,28,0,930,934, + 3,65,27,0,931,934,3,81,35,0,932,934,3,153,71,0,933,929,1,0,0,0,933,930, + 1,0,0,0,933,931,1,0,0,0,933,932,1,0,0,0,934,206,1,0,0,0,935,938,3,67,28, + 0,936,938,3,153,71,0,937,935,1,0,0,0,937,936,1,0,0,0,938,942,1,0,0,0,939, + 941,3,205,97,0,940,939,1,0,0,0,941,944,1,0,0,0,942,940,1,0,0,0,942,943, + 1,0,0,0,943,955,1,0,0,0,944,942,1,0,0,0,945,948,3,81,35,0,946,948,3,75, + 32,0,947,945,1,0,0,0,947,946,1,0,0,0,948,950,1,0,0,0,949,951,3,205,97,0, + 950,949,1,0,0,0,951,952,1,0,0,0,952,950,1,0,0,0,952,953,1,0,0,0,953,955, + 1,0,0,0,954,937,1,0,0,0,954,947,1,0,0,0,955,208,1,0,0,0,956,959,3,207,98, + 0,957,959,3,165,77,0,958,956,1,0,0,0,958,957,1,0,0,0,959,960,1,0,0,0,960, + 958,1,0,0,0,960,961,1,0,0,0,961,210,1,0,0,0,962,963,3,47,18,0,963,964,1, + 0,0,0,964,965,6,100,8,0,965,212,1,0,0,0,966,967,3,49,19,0,967,968,1,0,0, + 0,968,969,6,101,8,0,969,214,1,0,0,0,970,971,3,51,20,0,971,972,1,0,0,0,972, + 973,6,102,8,0,973,216,1,0,0,0,974,975,3,63,26,0,975,976,1,0,0,0,976,977, + 6,103,11,0,977,978,6,103,12,0,978,218,1,0,0,0,979,980,3,97,43,0,980,981, + 1,0,0,0,981,982,6,104,15,0,982,220,1,0,0,0,983,984,3,99,44,0,984,985,1, + 0,0,0,985,986,6,105,14,0,986,222,1,0,0,0,987,988,3,103,46,0,988,989,1,0, + 0,0,989,990,6,106,17,0,990,224,1,0,0,0,991,992,3,315,152,0,992,993,3,351, + 170,0,993,226,1,0,0,0,994,995,3,209,99,0,995,996,1,0,0,0,996,997,6,108, + 18,0,997,228,1,0,0,0,998,999,3,47,18,0,999,1000,1,0,0,0,1000,1001,6,109, + 8,0,1001,230,1,0,0,0,1002,1003,3,49,19,0,1003,1004,1,0,0,0,1004,1005,6, + 110,8,0,1005,232,1,0,0,0,1006,1007,3,51,20,0,1007,1008,1,0,0,0,1008,1009, + 6,111,8,0,1009,234,1,0,0,0,1010,1011,3,63,26,0,1011,1012,1,0,0,0,1012,1013, + 6,112,11,0,1013,1014,6,112,12,0,1014,236,1,0,0,0,1015,1016,3,159,74,0,1016, + 1017,1,0,0,0,1017,1018,6,113,9,0,1018,1019,6,113,19,0,1019,238,1,0,0,0, + 1020,1021,3,343,166,0,1021,1022,3,341,165,0,1022,1023,1,0,0,0,1023,1024, + 6,114,20,0,1024,240,1,0,0,0,1025,1026,3,359,174,0,1026,1027,3,331,160,0, + 1027,1028,3,353,171,0,1028,1029,3,329,159,0,1029,1030,1,0,0,0,1030,1031, + 6,115,20,0,1031,242,1,0,0,0,1032,1033,8,12,0,0,1033,244,1,0,0,0,1034,1036, + 3,243,116,0,1035,1034,1,0,0,0,1036,1037,1,0,0,0,1037,1035,1,0,0,0,1037, + 1038,1,0,0,0,1038,1039,1,0,0,0,1039,1040,3,305,147,0,1040,1042,1,0,0,0, + 1041,1035,1,0,0,0,1041,1042,1,0,0,0,1042,1044,1,0,0,0,1043,1045,3,243,116, + 0,1044,1043,1,0,0,0,1045,1046,1,0,0,0,1046,1044,1,0,0,0,1046,1047,1,0,0, + 0,1047,246,1,0,0,0,1048,1049,3,167,78,0,1049,1050,1,0,0,0,1050,1051,6,118, + 16,0,1051,248,1,0,0,0,1052,1053,3,245,117,0,1053,1054,1,0,0,0,1054,1055, + 6,119,21,0,1055,250,1,0,0,0,1056,1057,3,47,18,0,1057,1058,1,0,0,0,1058, + 1059,6,120,8,0,1059,252,1,0,0,0,1060,1061,3,49,19,0,1061,1062,1,0,0,0,1062, + 1063,6,121,8,0,1063,254,1,0,0,0,1064,1065,3,51,20,0,1065,1066,1,0,0,0,1066, + 1067,6,122,8,0,1067,256,1,0,0,0,1068,1069,3,63,26,0,1069,1070,1,0,0,0,1070, + 1071,6,123,11,0,1071,1072,6,123,12,0,1072,1073,6,123,12,0,1073,258,1,0, + 0,0,1074,1075,3,97,43,0,1075,1076,1,0,0,0,1076,1077,6,124,15,0,1077,260, + 1,0,0,0,1078,1079,3,99,44,0,1079,1080,1,0,0,0,1080,1081,6,125,14,0,1081, + 262,1,0,0,0,1082,1083,3,103,46,0,1083,1084,1,0,0,0,1084,1085,6,126,17,0, + 1085,264,1,0,0,0,1086,1087,3,241,115,0,1087,1088,1,0,0,0,1088,1089,6,127, + 22,0,1089,266,1,0,0,0,1090,1091,3,209,99,0,1091,1092,1,0,0,0,1092,1093, + 6,128,18,0,1093,268,1,0,0,0,1094,1095,3,167,78,0,1095,1096,1,0,0,0,1096, + 1097,6,129,16,0,1097,270,1,0,0,0,1098,1099,3,47,18,0,1099,1100,1,0,0,0, + 1100,1101,6,130,8,0,1101,272,1,0,0,0,1102,1103,3,49,19,0,1103,1104,1,0, + 0,0,1104,1105,6,131,8,0,1105,274,1,0,0,0,1106,1107,3,51,20,0,1107,1108, + 1,0,0,0,1108,1109,6,132,8,0,1109,276,1,0,0,0,1110,1111,3,63,26,0,1111,1112, + 1,0,0,0,1112,1113,6,133,11,0,1113,1114,6,133,12,0,1114,278,1,0,0,0,1115, + 1116,3,103,46,0,1116,1117,1,0,0,0,1117,1118,6,134,17,0,1118,280,1,0,0,0, + 1119,1120,3,167,78,0,1120,1121,1,0,0,0,1121,1122,6,135,16,0,1122,282,1, + 0,0,0,1123,1124,3,163,76,0,1124,1125,1,0,0,0,1125,1126,6,136,23,0,1126, + 284,1,0,0,0,1127,1128,3,47,18,0,1128,1129,1,0,0,0,1129,1130,6,137,8,0,1130, + 286,1,0,0,0,1131,1132,3,49,19,0,1132,1133,1,0,0,0,1133,1134,6,138,8,0,1134, + 288,1,0,0,0,1135,1136,3,51,20,0,1136,1137,1,0,0,0,1137,1138,6,139,8,0,1138, + 290,1,0,0,0,1139,1140,3,63,26,0,1140,1141,1,0,0,0,1141,1142,6,140,11,0, + 1142,1143,6,140,12,0,1143,292,1,0,0,0,1144,1145,3,331,160,0,1145,1146,3, + 341,165,0,1146,1147,3,325,157,0,1147,1148,3,343,166,0,1148,294,1,0,0,0, + 1149,1150,3,325,157,0,1150,1151,3,355,172,0,1151,1152,3,341,165,0,1152, + 1153,3,319,154,0,1153,1154,3,353,171,0,1154,1155,3,331,160,0,1155,1156, + 3,343,166,0,1156,1157,3,341,165,0,1157,1158,3,351,170,0,1158,296,1,0,0, + 0,1159,1160,3,47,18,0,1160,1161,1,0,0,0,1161,1162,6,143,8,0,1162,298,1, + 0,0,0,1163,1164,3,49,19,0,1164,1165,1,0,0,0,1165,1166,6,144,8,0,1166,300, + 1,0,0,0,1167,1168,3,51,20,0,1168,1169,1,0,0,0,1169,1170,6,145,8,0,1170, + 302,1,0,0,0,1171,1172,3,161,75,0,1172,1173,1,0,0,0,1173,1174,6,146,13,0, + 1174,1175,6,146,12,0,1175,304,1,0,0,0,1176,1177,5,58,0,0,1177,306,1,0,0, + 0,1178,1184,3,75,32,0,1179,1184,3,65,27,0,1180,1184,3,103,46,0,1181,1184, + 3,67,28,0,1182,1184,3,81,35,0,1183,1178,1,0,0,0,1183,1179,1,0,0,0,1183, + 1180,1,0,0,0,1183,1181,1,0,0,0,1183,1182,1,0,0,0,1184,1185,1,0,0,0,1185, + 1183,1,0,0,0,1185,1186,1,0,0,0,1186,308,1,0,0,0,1187,1188,3,47,18,0,1188, + 1189,1,0,0,0,1189,1190,6,149,8,0,1190,310,1,0,0,0,1191,1192,3,49,19,0,1192, + 1193,1,0,0,0,1193,1194,6,150,8,0,1194,312,1,0,0,0,1195,1196,3,51,20,0,1196, + 1197,1,0,0,0,1197,1198,6,151,8,0,1198,314,1,0,0,0,1199,1200,7,13,0,0,1200, + 316,1,0,0,0,1201,1202,7,14,0,0,1202,318,1,0,0,0,1203,1204,7,15,0,0,1204, + 320,1,0,0,0,1205,1206,7,16,0,0,1206,322,1,0,0,0,1207,1208,7,7,0,0,1208, + 324,1,0,0,0,1209,1210,7,17,0,0,1210,326,1,0,0,0,1211,1212,7,18,0,0,1212, + 328,1,0,0,0,1213,1214,7,19,0,0,1214,330,1,0,0,0,1215,1216,7,20,0,0,1216, + 332,1,0,0,0,1217,1218,7,21,0,0,1218,334,1,0,0,0,1219,1220,7,22,0,0,1220, + 336,1,0,0,0,1221,1222,7,23,0,0,1222,338,1,0,0,0,1223,1224,7,24,0,0,1224, + 340,1,0,0,0,1225,1226,7,25,0,0,1226,342,1,0,0,0,1227,1228,7,26,0,0,1228, + 344,1,0,0,0,1229,1230,7,27,0,0,1230,346,1,0,0,0,1231,1232,7,28,0,0,1232, + 348,1,0,0,0,1233,1234,7,29,0,0,1234,350,1,0,0,0,1235,1236,7,30,0,0,1236, + 352,1,0,0,0,1237,1238,7,31,0,0,1238,354,1,0,0,0,1239,1240,7,32,0,0,1240, + 356,1,0,0,0,1241,1242,7,33,0,0,1242,358,1,0,0,0,1243,1244,7,34,0,0,1244, + 360,1,0,0,0,1245,1246,7,35,0,0,1246,362,1,0,0,0,1247,1248,7,36,0,0,1248, + 364,1,0,0,0,1249,1250,7,37,0,0,1250,366,1,0,0,0,57,0,1,2,3,4,5,6,7,8,9, + 10,513,523,527,530,539,541,552,593,598,607,614,619,621,632,640,643,645, + 650,655,661,668,673,679,682,690,694,824,829,834,836,842,893,898,933,937, + 942,947,952,954,958,960,1037,1041,1046,1183,1185,24,5,2,0,5,4,0,5,6,0,5, + 1,0,5,3,0,5,8,0,5,5,0,5,9,0,0,1,0,7,63,0,5,0,0,7,25,0,4,0,0,7,64,0,7,33, + 0,7,32,0,7,66,0,7,35,0,7,75,0,5,10,0,5,7,0,7,85,0,7,84,0,7,65,0]; + + private static __ATN: ATN; + public static get _ATN(): ATN { + if (!esql_lexer.__ATN) { + esql_lexer.__ATN = new ATNDeserializer().deserialize(esql_lexer._serializedATN); + } + + return esql_lexer.__ATN; + } + + + static DecisionsToDFA = esql_lexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp index fe9f47f619f88..c8bb03fc1feb3 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp @@ -269,4 +269,8 @@ enrichWithClause atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 4, 2, 53, 53, 55, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508] \ No newline at end of file +<<<<<<< HEAD +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 4, 2, 53, 53, 55, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508] +======= +[4, 1, 105, 511, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 112, 8, 1, 10, 1, 12, 1, 115, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 121, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 136, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 148, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 155, 8, 5, 10, 5, 12, 5, 158, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 165, 8, 5, 1, 5, 1, 5, 3, 5, 169, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 177, 8, 5, 10, 5, 12, 5, 180, 9, 5, 1, 6, 1, 6, 3, 6, 184, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 191, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 196, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 203, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 209, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 217, 8, 8, 10, 8, 12, 8, 220, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 229, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 237, 8, 10, 10, 10, 12, 10, 240, 9, 10, 3, 10, 242, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 252, 8, 12, 10, 12, 12, 12, 255, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 262, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 268, 8, 14, 10, 14, 12, 14, 271, 9, 14, 1, 14, 3, 14, 274, 8, 14, 1, 15, 1, 15, 3, 15, 278, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 284, 8, 16, 10, 16, 12, 16, 287, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 298, 8, 19, 1, 19, 1, 19, 3, 19, 302, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 308, 8, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 315, 8, 22, 10, 22, 12, 22, 318, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 323, 8, 23, 10, 23, 12, 23, 326, 9, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 347, 8, 27, 10, 27, 12, 27, 350, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 358, 8, 27, 10, 27, 12, 27, 361, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 369, 8, 27, 10, 27, 12, 27, 372, 9, 27, 1, 27, 1, 27, 3, 27, 376, 8, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 385, 8, 29, 10, 29, 12, 29, 388, 9, 29, 1, 30, 1, 30, 3, 30, 392, 8, 30, 1, 30, 1, 30, 3, 30, 396, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 402, 8, 31, 10, 31, 12, 31, 405, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 411, 8, 32, 10, 32, 12, 32, 414, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 420, 8, 33, 10, 33, 12, 33, 423, 9, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 433, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 5, 38, 445, 8, 38, 10, 38, 12, 38, 448, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 458, 8, 41, 1, 42, 3, 42, 461, 8, 42, 1, 42, 1, 42, 1, 43, 3, 43, 466, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 485, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 491, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 497, 8, 49, 10, 49, 12, 49, 500, 9, 49, 3, 49, 502, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 507, 8, 50, 1, 50, 1, 50, 1, 50, 0, 3, 2, 10, 16, 51, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 0, 9, 1, 0, 58, 59, 1, 0, 60, 62, 2, 0, 66, 66, 71, 71, 1, 0, 65, 66, 2, 0, 66, 66, 105, 105, 2, 0, 31, 31, 34, 34, 1, 0, 37, 38, 2, 0, 36, 36, 50, 50, 1, 0, 51, 57, 536, 0, 102, 1, 0, 0, 0, 2, 105, 1, 0, 0, 0, 4, 120, 1, 0, 0, 0, 6, 135, 1, 0, 0, 0, 8, 137, 1, 0, 0, 0, 10, 168, 1, 0, 0, 0, 12, 195, 1, 0, 0, 0, 14, 202, 1, 0, 0, 0, 16, 208, 1, 0, 0, 0, 18, 228, 1, 0, 0, 0, 20, 230, 1, 0, 0, 0, 22, 245, 1, 0, 0, 0, 24, 248, 1, 0, 0, 0, 26, 261, 1, 0, 0, 0, 28, 263, 1, 0, 0, 0, 30, 277, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 288, 1, 0, 0, 0, 36, 292, 1, 0, 0, 0, 38, 295, 1, 0, 0, 0, 40, 303, 1, 0, 0, 0, 42, 309, 1, 0, 0, 0, 44, 311, 1, 0, 0, 0, 46, 319, 1, 0, 0, 0, 48, 327, 1, 0, 0, 0, 50, 329, 1, 0, 0, 0, 52, 331, 1, 0, 0, 0, 54, 375, 1, 0, 0, 0, 56, 377, 1, 0, 0, 0, 58, 380, 1, 0, 0, 0, 60, 389, 1, 0, 0, 0, 62, 397, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 415, 1, 0, 0, 0, 68, 424, 1, 0, 0, 0, 70, 428, 1, 0, 0, 0, 72, 434, 1, 0, 0, 0, 74, 438, 1, 0, 0, 0, 76, 441, 1, 0, 0, 0, 78, 449, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 457, 1, 0, 0, 0, 84, 460, 1, 0, 0, 0, 86, 465, 1, 0, 0, 0, 88, 469, 1, 0, 0, 0, 90, 471, 1, 0, 0, 0, 92, 473, 1, 0, 0, 0, 94, 476, 1, 0, 0, 0, 96, 484, 1, 0, 0, 0, 98, 486, 1, 0, 0, 0, 100, 506, 1, 0, 0, 0, 102, 103, 3, 2, 1, 0, 103, 104, 5, 0, 0, 1, 104, 1, 1, 0, 0, 0, 105, 106, 6, 1, -1, 0, 106, 107, 3, 4, 2, 0, 107, 113, 1, 0, 0, 0, 108, 109, 10, 1, 0, 0, 109, 110, 5, 25, 0, 0, 110, 112, 3, 6, 3, 0, 111, 108, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 3, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 121, 3, 92, 46, 0, 117, 121, 3, 28, 14, 0, 118, 121, 3, 22, 11, 0, 119, 121, 3, 96, 48, 0, 120, 116, 1, 0, 0, 0, 120, 117, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 5, 1, 0, 0, 0, 122, 136, 3, 36, 18, 0, 123, 136, 3, 40, 20, 0, 124, 136, 3, 56, 28, 0, 125, 136, 3, 62, 31, 0, 126, 136, 3, 58, 29, 0, 127, 136, 3, 38, 19, 0, 128, 136, 3, 8, 4, 0, 129, 136, 3, 64, 32, 0, 130, 136, 3, 66, 33, 0, 131, 136, 3, 70, 35, 0, 132, 136, 3, 72, 36, 0, 133, 136, 3, 98, 49, 0, 134, 136, 3, 74, 37, 0, 135, 122, 1, 0, 0, 0, 135, 123, 1, 0, 0, 0, 135, 124, 1, 0, 0, 0, 135, 125, 1, 0, 0, 0, 135, 126, 1, 0, 0, 0, 135, 127, 1, 0, 0, 0, 135, 128, 1, 0, 0, 0, 135, 129, 1, 0, 0, 0, 135, 130, 1, 0, 0, 0, 135, 131, 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 7, 1, 0, 0, 0, 137, 138, 5, 17, 0, 0, 138, 139, 3, 10, 5, 0, 139, 9, 1, 0, 0, 0, 140, 141, 6, 5, -1, 0, 141, 142, 5, 43, 0, 0, 142, 169, 3, 10, 5, 7, 143, 169, 3, 14, 7, 0, 144, 169, 3, 12, 6, 0, 145, 147, 3, 14, 7, 0, 146, 148, 5, 43, 0, 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 5, 40, 0, 0, 150, 151, 5, 39, 0, 0, 151, 156, 3, 14, 7, 0, 152, 153, 5, 33, 0, 0, 153, 155, 3, 14, 7, 0, 154, 152, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 49, 0, 0, 160, 169, 1, 0, 0, 0, 161, 162, 3, 14, 7, 0, 162, 164, 5, 41, 0, 0, 163, 165, 5, 43, 0, 0, 164, 163, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 5, 44, 0, 0, 167, 169, 1, 0, 0, 0, 168, 140, 1, 0, 0, 0, 168, 143, 1, 0, 0, 0, 168, 144, 1, 0, 0, 0, 168, 145, 1, 0, 0, 0, 168, 161, 1, 0, 0, 0, 169, 178, 1, 0, 0, 0, 170, 171, 10, 4, 0, 0, 171, 172, 5, 30, 0, 0, 172, 177, 3, 10, 5, 5, 173, 174, 10, 3, 0, 0, 174, 175, 5, 46, 0, 0, 175, 177, 3, 10, 5, 4, 176, 170, 1, 0, 0, 0, 176, 173, 1, 0, 0, 0, 177, 180, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 11, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 181, 183, 3, 14, 7, 0, 182, 184, 5, 43, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 5, 42, 0, 0, 186, 187, 3, 88, 44, 0, 187, 196, 1, 0, 0, 0, 188, 190, 3, 14, 7, 0, 189, 191, 5, 43, 0, 0, 190, 189, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 5, 48, 0, 0, 193, 194, 3, 88, 44, 0, 194, 196, 1, 0, 0, 0, 195, 181, 1, 0, 0, 0, 195, 188, 1, 0, 0, 0, 196, 13, 1, 0, 0, 0, 197, 203, 3, 16, 8, 0, 198, 199, 3, 16, 8, 0, 199, 200, 3, 90, 45, 0, 200, 201, 3, 16, 8, 0, 201, 203, 1, 0, 0, 0, 202, 197, 1, 0, 0, 0, 202, 198, 1, 0, 0, 0, 203, 15, 1, 0, 0, 0, 204, 205, 6, 8, -1, 0, 205, 209, 3, 18, 9, 0, 206, 207, 7, 0, 0, 0, 207, 209, 3, 16, 8, 3, 208, 204, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 218, 1, 0, 0, 0, 210, 211, 10, 2, 0, 0, 211, 212, 7, 1, 0, 0, 212, 217, 3, 16, 8, 3, 213, 214, 10, 1, 0, 0, 214, 215, 7, 0, 0, 0, 215, 217, 3, 16, 8, 2, 216, 210, 1, 0, 0, 0, 216, 213, 1, 0, 0, 0, 217, 220, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 17, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 221, 229, 3, 54, 27, 0, 222, 229, 3, 44, 22, 0, 223, 229, 3, 20, 10, 0, 224, 225, 5, 39, 0, 0, 225, 226, 3, 10, 5, 0, 226, 227, 5, 49, 0, 0, 227, 229, 1, 0, 0, 0, 228, 221, 1, 0, 0, 0, 228, 222, 1, 0, 0, 0, 228, 223, 1, 0, 0, 0, 228, 224, 1, 0, 0, 0, 229, 19, 1, 0, 0, 0, 230, 231, 3, 48, 24, 0, 231, 241, 5, 39, 0, 0, 232, 242, 5, 60, 0, 0, 233, 238, 3, 10, 5, 0, 234, 235, 5, 33, 0, 0, 235, 237, 3, 10, 5, 0, 236, 234, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 232, 1, 0, 0, 0, 241, 233, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 244, 5, 49, 0, 0, 244, 21, 1, 0, 0, 0, 245, 246, 5, 13, 0, 0, 246, 247, 3, 24, 12, 0, 247, 23, 1, 0, 0, 0, 248, 253, 3, 26, 13, 0, 249, 250, 5, 33, 0, 0, 250, 252, 3, 26, 13, 0, 251, 249, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 25, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 262, 3, 10, 5, 0, 257, 258, 3, 44, 22, 0, 258, 259, 5, 32, 0, 0, 259, 260, 3, 10, 5, 0, 260, 262, 1, 0, 0, 0, 261, 256, 1, 0, 0, 0, 261, 257, 1, 0, 0, 0, 262, 27, 1, 0, 0, 0, 263, 264, 5, 6, 0, 0, 264, 269, 3, 42, 21, 0, 265, 266, 5, 33, 0, 0, 266, 268, 3, 42, 21, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 274, 3, 30, 15, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 29, 1, 0, 0, 0, 275, 278, 3, 32, 16, 0, 276, 278, 3, 34, 17, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, 70, 0, 0, 280, 285, 3, 42, 21, 0, 281, 282, 5, 33, 0, 0, 282, 284, 3, 42, 21, 0, 283, 281, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 33, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 290, 3, 32, 16, 0, 290, 291, 5, 64, 0, 0, 291, 35, 1, 0, 0, 0, 292, 293, 5, 4, 0, 0, 293, 294, 3, 24, 12, 0, 294, 37, 1, 0, 0, 0, 295, 297, 5, 16, 0, 0, 296, 298, 3, 24, 12, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 300, 5, 29, 0, 0, 300, 302, 3, 24, 12, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 39, 1, 0, 0, 0, 303, 304, 5, 8, 0, 0, 304, 307, 3, 24, 12, 0, 305, 306, 5, 29, 0, 0, 306, 308, 3, 24, 12, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 41, 1, 0, 0, 0, 309, 310, 7, 2, 0, 0, 310, 43, 1, 0, 0, 0, 311, 316, 3, 48, 24, 0, 312, 313, 5, 35, 0, 0, 313, 315, 3, 48, 24, 0, 314, 312, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 45, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 324, 3, 50, 25, 0, 320, 321, 5, 35, 0, 0, 321, 323, 3, 50, 25, 0, 322, 320, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 47, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 327, 328, 7, 3, 0, 0, 328, 49, 1, 0, 0, 0, 329, 330, 5, 75, 0, 0, 330, 51, 1, 0, 0, 0, 331, 332, 7, 4, 0, 0, 332, 53, 1, 0, 0, 0, 333, 376, 5, 44, 0, 0, 334, 335, 3, 86, 43, 0, 335, 336, 5, 65, 0, 0, 336, 376, 1, 0, 0, 0, 337, 376, 3, 84, 42, 0, 338, 376, 3, 86, 43, 0, 339, 376, 3, 80, 40, 0, 340, 376, 5, 47, 0, 0, 341, 376, 3, 88, 44, 0, 342, 343, 5, 63, 0, 0, 343, 348, 3, 82, 41, 0, 344, 345, 5, 33, 0, 0, 345, 347, 3, 82, 41, 0, 346, 344, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 352, 5, 64, 0, 0, 352, 376, 1, 0, 0, 0, 353, 354, 5, 63, 0, 0, 354, 359, 3, 80, 40, 0, 355, 356, 5, 33, 0, 0, 356, 358, 3, 80, 40, 0, 357, 355, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 363, 5, 64, 0, 0, 363, 376, 1, 0, 0, 0, 364, 365, 5, 63, 0, 0, 365, 370, 3, 88, 44, 0, 366, 367, 5, 33, 0, 0, 367, 369, 3, 88, 44, 0, 368, 366, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 374, 5, 64, 0, 0, 374, 376, 1, 0, 0, 0, 375, 333, 1, 0, 0, 0, 375, 334, 1, 0, 0, 0, 375, 337, 1, 0, 0, 0, 375, 338, 1, 0, 0, 0, 375, 339, 1, 0, 0, 0, 375, 340, 1, 0, 0, 0, 375, 341, 1, 0, 0, 0, 375, 342, 1, 0, 0, 0, 375, 353, 1, 0, 0, 0, 375, 364, 1, 0, 0, 0, 376, 55, 1, 0, 0, 0, 377, 378, 5, 10, 0, 0, 378, 379, 5, 27, 0, 0, 379, 57, 1, 0, 0, 0, 380, 381, 5, 15, 0, 0, 381, 386, 3, 60, 30, 0, 382, 383, 5, 33, 0, 0, 383, 385, 3, 60, 30, 0, 384, 382, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 59, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 391, 3, 10, 5, 0, 390, 392, 7, 5, 0, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 394, 5, 45, 0, 0, 394, 396, 7, 6, 0, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 61, 1, 0, 0, 0, 397, 398, 5, 9, 0, 0, 398, 403, 3, 46, 23, 0, 399, 400, 5, 33, 0, 0, 400, 402, 3, 46, 23, 0, 401, 399, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 63, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 407, 5, 2, 0, 0, 407, 412, 3, 46, 23, 0, 408, 409, 5, 33, 0, 0, 409, 411, 3, 46, 23, 0, 410, 408, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 65, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 416, 5, 12, 0, 0, 416, 421, 3, 68, 34, 0, 417, 418, 5, 33, 0, 0, 418, 420, 3, 68, 34, 0, 419, 417, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 67, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 425, 3, 46, 23, 0, 425, 426, 5, 79, 0, 0, 426, 427, 3, 46, 23, 0, 427, 69, 1, 0, 0, 0, 428, 429, 5, 1, 0, 0, 429, 430, 3, 18, 9, 0, 430, 432, 3, 88, 44, 0, 431, 433, 3, 76, 38, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 71, 1, 0, 0, 0, 434, 435, 5, 7, 0, 0, 435, 436, 3, 18, 9, 0, 436, 437, 3, 88, 44, 0, 437, 73, 1, 0, 0, 0, 438, 439, 5, 11, 0, 0, 439, 440, 3, 44, 22, 0, 440, 75, 1, 0, 0, 0, 441, 446, 3, 78, 39, 0, 442, 443, 5, 33, 0, 0, 443, 445, 3, 78, 39, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 77, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 450, 3, 48, 24, 0, 450, 451, 5, 32, 0, 0, 451, 452, 3, 54, 27, 0, 452, 79, 1, 0, 0, 0, 453, 454, 7, 7, 0, 0, 454, 81, 1, 0, 0, 0, 455, 458, 3, 84, 42, 0, 456, 458, 3, 86, 43, 0, 457, 455, 1, 0, 0, 0, 457, 456, 1, 0, 0, 0, 458, 83, 1, 0, 0, 0, 459, 461, 7, 0, 0, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 5, 28, 0, 0, 463, 85, 1, 0, 0, 0, 464, 466, 7, 0, 0, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 5, 27, 0, 0, 468, 87, 1, 0, 0, 0, 469, 470, 5, 26, 0, 0, 470, 89, 1, 0, 0, 0, 471, 472, 7, 8, 0, 0, 472, 91, 1, 0, 0, 0, 473, 474, 5, 5, 0, 0, 474, 475, 3, 94, 47, 0, 475, 93, 1, 0, 0, 0, 476, 477, 5, 63, 0, 0, 477, 478, 3, 2, 1, 0, 478, 479, 5, 64, 0, 0, 479, 95, 1, 0, 0, 0, 480, 481, 5, 14, 0, 0, 481, 485, 5, 95, 0, 0, 482, 483, 5, 14, 0, 0, 483, 485, 5, 96, 0, 0, 484, 480, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 97, 1, 0, 0, 0, 486, 487, 5, 3, 0, 0, 487, 490, 5, 85, 0, 0, 488, 489, 5, 83, 0, 0, 489, 491, 3, 46, 23, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 501, 1, 0, 0, 0, 492, 493, 5, 84, 0, 0, 493, 498, 3, 100, 50, 0, 494, 495, 5, 33, 0, 0, 495, 497, 3, 100, 50, 0, 496, 494, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 492, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 99, 1, 0, 0, 0, 503, 504, 3, 46, 23, 0, 504, 505, 5, 32, 0, 0, 505, 507, 1, 0, 0, 0, 506, 503, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 3, 46, 23, 0, 509, 101, 1, 0, 0, 0, 50, 113, 120, 135, 147, 156, 164, 168, 176, 178, 183, 190, 195, 202, 208, 216, 218, 228, 238, 241, 253, 261, 269, 273, 277, 285, 297, 301, 307, 316, 324, 348, 359, 370, 375, 386, 391, 395, 403, 412, 421, 432, 446, 457, 460, 465, 484, 490, 498, 501, 506] +>>>>>>> 77e354d1553 (new lexer and parser for esql and painless generated from antlr) diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts new file mode 100644 index 0000000000000..0367d77d28f07 --- /dev/null +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts @@ -0,0 +1,5324 @@ +// @ts-nocheck +// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols + +import { + ATN, + ATNDeserializer, DecisionState, DFA, FailedPredicateException, + RecognitionException, NoViableAltException, BailErrorStrategy, + Parser, ParserATNSimulator, + RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, + TerminalNode, RuleNode, + Token, TokenStream, + Interval, IntervalSet +} from 'antlr4'; +import esql_parserListener from "./esql_parserListener.js"; +// for running tests with parameters, TODO: discuss strategy for typed parameters in CI +// eslint-disable-next-line no-unused-vars +type int = number; + +export default class esql_parser extends Parser { + public static readonly DISSECT = 1; + public static readonly DROP = 2; + public static readonly ENRICH = 3; + public static readonly EVAL = 4; + public static readonly EXPLAIN = 5; + public static readonly FROM = 6; + public static readonly GROK = 7; + public static readonly INLINESTATS = 8; + public static readonly KEEP = 9; + public static readonly LIMIT = 10; + public static readonly MV_EXPAND = 11; + public static readonly RENAME = 12; + public static readonly ROW = 13; + public static readonly SHOW = 14; + public static readonly SORT = 15; + public static readonly STATS = 16; + public static readonly WHERE = 17; + public static readonly UNKNOWN_CMD = 18; + public static readonly LINE_COMMENT = 19; + public static readonly MULTILINE_COMMENT = 20; + public static readonly WS = 21; + public static readonly EXPLAIN_WS = 22; + public static readonly EXPLAIN_LINE_COMMENT = 23; + public static readonly EXPLAIN_MULTILINE_COMMENT = 24; + public static readonly PIPE = 25; + public static readonly STRING = 26; + public static readonly INTEGER_LITERAL = 27; + public static readonly DECIMAL_LITERAL = 28; + public static readonly BY = 29; + public static readonly AND = 30; + public static readonly ASC = 31; + public static readonly ASSIGN = 32; + public static readonly COMMA = 33; + public static readonly DESC = 34; + public static readonly DOT = 35; + public static readonly FALSE = 36; + public static readonly FIRST = 37; + public static readonly LAST = 38; + public static readonly LP = 39; + public static readonly IN = 40; + public static readonly IS = 41; + public static readonly LIKE = 42; + public static readonly NOT = 43; + public static readonly NULL = 44; + public static readonly NULLS = 45; + public static readonly OR = 46; + public static readonly PARAM = 47; + public static readonly RLIKE = 48; + public static readonly RP = 49; + public static readonly TRUE = 50; + public static readonly EQ = 51; + public static readonly CIEQ = 52; + public static readonly NEQ = 53; + public static readonly LT = 54; + public static readonly LTE = 55; + public static readonly GT = 56; + public static readonly GTE = 57; + public static readonly PLUS = 58; + public static readonly MINUS = 59; + public static readonly ASTERISK = 60; + public static readonly SLASH = 61; + public static readonly PERCENT = 62; + public static readonly OPENING_BRACKET = 63; + public static readonly CLOSING_BRACKET = 64; + public static readonly UNQUOTED_IDENTIFIER = 65; + public static readonly QUOTED_IDENTIFIER = 66; + public static readonly EXPR_LINE_COMMENT = 67; + public static readonly EXPR_MULTILINE_COMMENT = 68; + public static readonly EXPR_WS = 69; + public static readonly METADATA = 70; + public static readonly FROM_UNQUOTED_IDENTIFIER = 71; + public static readonly FROM_LINE_COMMENT = 72; + public static readonly FROM_MULTILINE_COMMENT = 73; + public static readonly FROM_WS = 74; + public static readonly ID_PATTERN = 75; + public static readonly PROJECT_LINE_COMMENT = 76; + public static readonly PROJECT_MULTILINE_COMMENT = 77; + public static readonly PROJECT_WS = 78; + public static readonly AS = 79; + public static readonly RENAME_LINE_COMMENT = 80; + public static readonly RENAME_MULTILINE_COMMENT = 81; + public static readonly RENAME_WS = 82; + public static readonly ON = 83; + public static readonly WITH = 84; + public static readonly ENRICH_POLICY_NAME = 85; + public static readonly ENRICH_LINE_COMMENT = 86; + public static readonly ENRICH_MULTILINE_COMMENT = 87; + public static readonly ENRICH_WS = 88; + public static readonly ENRICH_FIELD_LINE_COMMENT = 89; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 90; + public static readonly ENRICH_FIELD_WS = 91; + public static readonly MVEXPAND_LINE_COMMENT = 92; + public static readonly MVEXPAND_MULTILINE_COMMENT = 93; + public static readonly MVEXPAND_WS = 94; + public static readonly INFO = 95; + public static readonly FUNCTIONS = 96; + public static readonly SHOW_LINE_COMMENT = 97; + public static readonly SHOW_MULTILINE_COMMENT = 98; + public static readonly SHOW_WS = 99; + public static readonly COLON = 100; + public static readonly SETTING = 101; + public static readonly SETTING_LINE_COMMENT = 102; + public static readonly SETTTING_MULTILINE_COMMENT = 103; + public static readonly SETTING_WS = 104; + public static readonly UNQUOTED_ID_PATTERN = 105; + public static readonly EOF = Token.EOF; + public static readonly RULE_singleStatement = 0; + public static readonly RULE_query = 1; + public static readonly RULE_sourceCommand = 2; + public static readonly RULE_processingCommand = 3; + public static readonly RULE_whereCommand = 4; + public static readonly RULE_booleanExpression = 5; + public static readonly RULE_regexBooleanExpression = 6; + public static readonly RULE_valueExpression = 7; + public static readonly RULE_operatorExpression = 8; + public static readonly RULE_primaryExpression = 9; + public static readonly RULE_functionExpression = 10; + public static readonly RULE_rowCommand = 11; + public static readonly RULE_fields = 12; + public static readonly RULE_field = 13; + public static readonly RULE_fromCommand = 14; + public static readonly RULE_metadata = 15; + public static readonly RULE_metadataOption = 16; + public static readonly RULE_deprecated_metadata = 17; + public static readonly RULE_evalCommand = 18; + public static readonly RULE_statsCommand = 19; + public static readonly RULE_inlinestatsCommand = 20; + public static readonly RULE_fromIdentifier = 21; + public static readonly RULE_qualifiedName = 22; + public static readonly RULE_qualifiedNamePattern = 23; + public static readonly RULE_identifier = 24; + public static readonly RULE_identifierPattern = 25; + public static readonly RULE_idPattern = 26; + public static readonly RULE_constant = 27; + public static readonly RULE_limitCommand = 28; + public static readonly RULE_sortCommand = 29; + public static readonly RULE_orderExpression = 30; + public static readonly RULE_keepCommand = 31; + public static readonly RULE_dropCommand = 32; + public static readonly RULE_renameCommand = 33; + public static readonly RULE_renameClause = 34; + public static readonly RULE_dissectCommand = 35; + public static readonly RULE_grokCommand = 36; + public static readonly RULE_mvExpandCommand = 37; + public static readonly RULE_commandOptions = 38; + public static readonly RULE_commandOption = 39; + public static readonly RULE_booleanValue = 40; + public static readonly RULE_numericValue = 41; + public static readonly RULE_decimalValue = 42; + public static readonly RULE_integerValue = 43; + public static readonly RULE_string = 44; + public static readonly RULE_comparisonOperator = 45; + public static readonly RULE_explainCommand = 46; + public static readonly RULE_subqueryExpression = 47; + public static readonly RULE_showCommand = 48; + public static readonly RULE_enrichCommand = 49; + public static readonly RULE_enrichWithClause = 50; + public static readonly literalNames: (string | null)[] = [ null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, "'|'", + null, null, + null, null, + null, null, + "'='", "','", + null, "'.'", + null, null, + null, "'('", + null, null, + null, null, + null, null, + null, "'?'", + null, "')'", + null, "'=='", + "'=~'", "'!='", + "'<'", "'<='", + "'>'", "'>='", + "'+'", "'-'", + "'*'", "'/'", + "'%'", null, + "']'", null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + "':'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "DISSECT", + "DROP", "ENRICH", + "EVAL", "EXPLAIN", + "FROM", "GROK", + "INLINESTATS", + "KEEP", "LIMIT", + "MV_EXPAND", + "RENAME", "ROW", + "SHOW", "SORT", + "STATS", "WHERE", + "UNKNOWN_CMD", + "LINE_COMMENT", + "MULTILINE_COMMENT", + "WS", "EXPLAIN_WS", + "EXPLAIN_LINE_COMMENT", + "EXPLAIN_MULTILINE_COMMENT", + "PIPE", "STRING", + "INTEGER_LITERAL", + "DECIMAL_LITERAL", + "BY", "AND", + "ASC", "ASSIGN", + "COMMA", "DESC", + "DOT", "FALSE", + "FIRST", "LAST", + "LP", "IN", + "IS", "LIKE", + "NOT", "NULL", + "NULLS", "OR", + "PARAM", "RLIKE", + "RP", "TRUE", + "EQ", "CIEQ", + "NEQ", "LT", + "LTE", "GT", + "GTE", "PLUS", + "MINUS", "ASTERISK", + "SLASH", "PERCENT", + "OPENING_BRACKET", + "CLOSING_BRACKET", + "UNQUOTED_IDENTIFIER", + "QUOTED_IDENTIFIER", + "EXPR_LINE_COMMENT", + "EXPR_MULTILINE_COMMENT", + "EXPR_WS", + "METADATA", + "FROM_UNQUOTED_IDENTIFIER", + "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", + "FROM_WS", + "ID_PATTERN", + "PROJECT_LINE_COMMENT", + "PROJECT_MULTILINE_COMMENT", + "PROJECT_WS", + "AS", "RENAME_LINE_COMMENT", + "RENAME_MULTILINE_COMMENT", + "RENAME_WS", + "ON", "WITH", + "ENRICH_POLICY_NAME", + "ENRICH_LINE_COMMENT", + "ENRICH_MULTILINE_COMMENT", + "ENRICH_WS", + "ENRICH_FIELD_LINE_COMMENT", + "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", + "MVEXPAND_LINE_COMMENT", + "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", + "INFO", "FUNCTIONS", + "SHOW_LINE_COMMENT", + "SHOW_MULTILINE_COMMENT", + "SHOW_WS", + "COLON", "SETTING", + "SETTING_LINE_COMMENT", + "SETTTING_MULTILINE_COMMENT", + "SETTING_WS", + "UNQUOTED_ID_PATTERN" ]; + // tslint:disable:no-trailing-whitespace + public static readonly ruleNames: string[] = [ + "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", + "booleanExpression", "regexBooleanExpression", "valueExpression", "operatorExpression", + "primaryExpression", "functionExpression", "rowCommand", "fields", "field", + "fromCommand", "metadata", "metadataOption", "deprecated_metadata", "evalCommand", + "statsCommand", "inlinestatsCommand", "fromIdentifier", "qualifiedName", + "qualifiedNamePattern", "identifier", "identifierPattern", "idPattern", + "constant", "limitCommand", "sortCommand", "orderExpression", "keepCommand", + "dropCommand", "renameCommand", "renameClause", "dissectCommand", "grokCommand", + "mvExpandCommand", "commandOptions", "commandOption", "booleanValue", + "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator", + "explainCommand", "subqueryExpression", "showCommand", "enrichCommand", + "enrichWithClause", + ]; + public get grammarFileName(): string { return "esql_parser.g4"; } + public get literalNames(): (string | null)[] { return esql_parser.literalNames; } + public get symbolicNames(): (string | null)[] { return esql_parser.symbolicNames; } + public get ruleNames(): string[] { return esql_parser.ruleNames; } + public get serializedATN(): number[] { return esql_parser._serializedATN; } + + protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { + return new FailedPredicateException(this, predicate, message); + } + + constructor(input: TokenStream) { + super(input); + this._interp = new ParserATNSimulator(this, esql_parser._ATN, esql_parser.DecisionsToDFA, new PredictionContextCache()); + } + // @RuleVersion(0) + public singleStatement(): SingleStatementContext { + let localctx: SingleStatementContext = new SingleStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, esql_parser.RULE_singleStatement); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 102; + this.query(0); + this.state = 103; + this.match(esql_parser.EOF); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public query(): QueryContext; + public query(_p: number): QueryContext; + // @RuleVersion(0) + public query(_p?: number): QueryContext { + if (_p === undefined) { + _p = 0; + } + + let _parentctx: ParserRuleContext = this._ctx; + let _parentState: number = this.state; + let localctx: QueryContext = new QueryContext(this, this._ctx, _parentState); + let _prevctx: QueryContext = localctx; + let _startState: number = 2; + this.enterRecursionRule(localctx, 2, esql_parser.RULE_query, _p); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + { + localctx = new SingleCommandQueryContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 106; + this.sourceCommand(); + } + this._ctx.stop = this._input.LT(-1); + this.state = 113; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + { + { + localctx = new CompositeQueryContext(this, new QueryContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_query); + this.state = 108; + if (!(this.precpred(this._ctx, 1))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); + } + this.state = 109; + this.match(esql_parser.PIPE); + this.state = 110; + this.processingCommand(); + } + } + } + this.state = 115; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; + } + // @RuleVersion(0) + public sourceCommand(): SourceCommandContext { + let localctx: SourceCommandContext = new SourceCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, esql_parser.RULE_sourceCommand); + try { + this.state = 120; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 5: + this.enterOuterAlt(localctx, 1); + { + this.state = 116; + this.explainCommand(); + } + break; + case 6: + this.enterOuterAlt(localctx, 2); + { + this.state = 117; + this.fromCommand(); + } + break; + case 13: + this.enterOuterAlt(localctx, 3); + { + this.state = 118; + this.rowCommand(); + } + break; + case 14: + this.enterOuterAlt(localctx, 4); + { + this.state = 119; + this.showCommand(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public processingCommand(): ProcessingCommandContext { + let localctx: ProcessingCommandContext = new ProcessingCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, esql_parser.RULE_processingCommand); + try { + this.state = 135; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 4: + this.enterOuterAlt(localctx, 1); + { + this.state = 122; + this.evalCommand(); + } + break; + case 8: + this.enterOuterAlt(localctx, 2); + { + this.state = 123; + this.inlinestatsCommand(); + } + break; + case 10: + this.enterOuterAlt(localctx, 3); + { + this.state = 124; + this.limitCommand(); + } + break; + case 9: + this.enterOuterAlt(localctx, 4); + { + this.state = 125; + this.keepCommand(); + } + break; + case 15: + this.enterOuterAlt(localctx, 5); + { + this.state = 126; + this.sortCommand(); + } + break; + case 16: + this.enterOuterAlt(localctx, 6); + { + this.state = 127; + this.statsCommand(); + } + break; + case 17: + this.enterOuterAlt(localctx, 7); + { + this.state = 128; + this.whereCommand(); + } + break; + case 2: + this.enterOuterAlt(localctx, 8); + { + this.state = 129; + this.dropCommand(); + } + break; + case 12: + this.enterOuterAlt(localctx, 9); + { + this.state = 130; + this.renameCommand(); + } + break; + case 1: + this.enterOuterAlt(localctx, 10); + { + this.state = 131; + this.dissectCommand(); + } + break; + case 7: + this.enterOuterAlt(localctx, 11); + { + this.state = 132; + this.grokCommand(); + } + break; + case 3: + this.enterOuterAlt(localctx, 12); + { + this.state = 133; + this.enrichCommand(); + } + break; + case 11: + this.enterOuterAlt(localctx, 13); + { + this.state = 134; + this.mvExpandCommand(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public whereCommand(): WhereCommandContext { + let localctx: WhereCommandContext = new WhereCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, esql_parser.RULE_whereCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 137; + this.match(esql_parser.WHERE); + this.state = 138; + this.booleanExpression(0); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public booleanExpression(): BooleanExpressionContext; + public booleanExpression(_p: number): BooleanExpressionContext; + // @RuleVersion(0) + public booleanExpression(_p?: number): BooleanExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let _parentctx: ParserRuleContext = this._ctx; + let _parentState: number = this.state; + let localctx: BooleanExpressionContext = new BooleanExpressionContext(this, this._ctx, _parentState); + let _prevctx: BooleanExpressionContext = localctx; + let _startState: number = 10; + this.enterRecursionRule(localctx, 10, esql_parser.RULE_booleanExpression, _p); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 168; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 6, this._ctx) ) { + case 1: + { + localctx = new LogicalNotContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 141; + this.match(esql_parser.NOT); + this.state = 142; + this.booleanExpression(7); + } + break; + case 2: + { + localctx = new BooleanDefaultContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 143; + this.valueExpression(); + } + break; + case 3: + { + localctx = new RegexExpressionContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 144; + this.regexBooleanExpression(); + } + break; + case 4: + { + localctx = new LogicalInContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 145; + this.valueExpression(); + this.state = 147; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===43) { + { + this.state = 146; + this.match(esql_parser.NOT); + } + } + + this.state = 149; + this.match(esql_parser.IN); + this.state = 150; + this.match(esql_parser.LP); + this.state = 151; + this.valueExpression(); + this.state = 156; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===33) { + { + { + this.state = 152; + this.match(esql_parser.COMMA); + this.state = 153; + this.valueExpression(); + } + } + this.state = 158; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 159; + this.match(esql_parser.RP); + } + break; + case 5: + { + localctx = new IsNullContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 161; + this.valueExpression(); + this.state = 162; + this.match(esql_parser.IS); + this.state = 164; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===43) { + { + this.state = 163; + this.match(esql_parser.NOT); + } + } + + this.state = 166; + this.match(esql_parser.NULL); + } + break; + } + this._ctx.stop = this._input.LT(-1); + this.state = 178; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 8, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + { + this.state = 176; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { + case 1: + { + localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); + (localctx as LogicalBinaryContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_booleanExpression); + this.state = 170; + if (!(this.precpred(this._ctx, 4))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); + } + this.state = 171; + (localctx as LogicalBinaryContext)._operator = this.match(esql_parser.AND); + this.state = 172; + (localctx as LogicalBinaryContext)._right = this.booleanExpression(5); + } + break; + case 2: + { + localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); + (localctx as LogicalBinaryContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_booleanExpression); + this.state = 173; + if (!(this.precpred(this._ctx, 3))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); + } + this.state = 174; + (localctx as LogicalBinaryContext)._operator = this.match(esql_parser.OR); + this.state = 175; + (localctx as LogicalBinaryContext)._right = this.booleanExpression(4); + } + break; + } + } + } + this.state = 180; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 8, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; + } + // @RuleVersion(0) + public regexBooleanExpression(): RegexBooleanExpressionContext { + let localctx: RegexBooleanExpressionContext = new RegexBooleanExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, esql_parser.RULE_regexBooleanExpression); + let _la: number; + try { + this.state = 195; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 181; + this.valueExpression(); + this.state = 183; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===43) { + { + this.state = 182; + this.match(esql_parser.NOT); + } + } + + this.state = 185; + localctx._kind = this.match(esql_parser.LIKE); + this.state = 186; + localctx._pattern = this.string_(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 188; + this.valueExpression(); + this.state = 190; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===43) { + { + this.state = 189; + this.match(esql_parser.NOT); + } + } + + this.state = 192; + localctx._kind = this.match(esql_parser.RLIKE); + this.state = 193; + localctx._pattern = this.string_(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public valueExpression(): ValueExpressionContext { + let localctx: ValueExpressionContext = new ValueExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, esql_parser.RULE_valueExpression); + try { + this.state = 202; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { + case 1: + localctx = new ValueExpressionDefaultContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 197; + this.operatorExpression(0); + } + break; + case 2: + localctx = new ComparisonContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 198; + (localctx as ComparisonContext)._left = this.operatorExpression(0); + this.state = 199; + this.comparisonOperator(); + this.state = 200; + (localctx as ComparisonContext)._right = this.operatorExpression(0); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public operatorExpression(): OperatorExpressionContext; + public operatorExpression(_p: number): OperatorExpressionContext; + // @RuleVersion(0) + public operatorExpression(_p?: number): OperatorExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let _parentctx: ParserRuleContext = this._ctx; + let _parentState: number = this.state; + let localctx: OperatorExpressionContext = new OperatorExpressionContext(this, this._ctx, _parentState); + let _prevctx: OperatorExpressionContext = localctx; + let _startState: number = 16; + this.enterRecursionRule(localctx, 16, esql_parser.RULE_operatorExpression, _p); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 208; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { + case 1: + { + localctx = new OperatorExpressionDefaultContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 205; + this.primaryExpression(); + } + break; + case 2: + { + localctx = new ArithmeticUnaryContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 206; + (localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); + _la = this._input.LA(1); + if(!(_la===58 || _la===59)) { + (localctx as ArithmeticUnaryContext)._operator = this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 207; + this.operatorExpression(3); + } + break; + } + this._ctx.stop = this._input.LT(-1); + this.state = 218; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + { + this.state = 216; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 14, this._ctx) ) { + case 1: + { + localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); + (localctx as ArithmeticBinaryContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); + this.state = 210; + if (!(this.precpred(this._ctx, 2))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); + } + this.state = 211; + (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); + _la = this._input.LA(1); + if(!(((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & 7) !== 0))) { + (localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 212; + (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); + } + break; + case 2: + { + localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); + (localctx as ArithmeticBinaryContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); + this.state = 213; + if (!(this.precpred(this._ctx, 1))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); + } + this.state = 214; + (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); + _la = this._input.LA(1); + if(!(_la===58 || _la===59)) { + (localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 215; + (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); + } + break; + } + } + } + this.state = 220; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; + } + // @RuleVersion(0) + public primaryExpression(): PrimaryExpressionContext { + let localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, esql_parser.RULE_primaryExpression); + try { + this.state = 228; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 16, this._ctx) ) { + case 1: + localctx = new ConstantDefaultContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 221; + this.constant(); + } + break; + case 2: + localctx = new DereferenceContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 222; + this.qualifiedName(); + } + break; + case 3: + localctx = new FunctionContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 223; + this.functionExpression(); + } + break; + case 4: + localctx = new ParenthesizedExpressionContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 224; + this.match(esql_parser.LP); + this.state = 225; + this.booleanExpression(0); + this.state = 226; + this.match(esql_parser.RP); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public functionExpression(): FunctionExpressionContext { + let localctx: FunctionExpressionContext = new FunctionExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, esql_parser.RULE_functionExpression); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 230; + this.identifier(); + this.state = 231; + this.match(esql_parser.LP); + this.state = 241; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 60: + { + this.state = 232; + this.match(esql_parser.ASTERISK); + } + break; + case 26: + case 27: + case 28: + case 36: + case 39: + case 43: + case 44: + case 47: + case 50: + case 58: + case 59: + case 63: + case 65: + case 66: + { + { + this.state = 233; + this.booleanExpression(0); + this.state = 238; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===33) { + { + { + this.state = 234; + this.match(esql_parser.COMMA); + this.state = 235; + this.booleanExpression(0); + } + } + this.state = 240; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + break; + case 49: + break; + default: + break; + } + this.state = 243; + this.match(esql_parser.RP); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public rowCommand(): RowCommandContext { + let localctx: RowCommandContext = new RowCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, esql_parser.RULE_rowCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 245; + this.match(esql_parser.ROW); + this.state = 246; + this.fields(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public fields(): FieldsContext { + let localctx: FieldsContext = new FieldsContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, esql_parser.RULE_fields); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 248; + this.field(); + this.state = 253; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 249; + this.match(esql_parser.COMMA); + this.state = 250; + this.field(); + } + } + } + this.state = 255; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public field(): FieldContext { + let localctx: FieldContext = new FieldContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, esql_parser.RULE_field); + try { + this.state = 261; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 256; + this.booleanExpression(0); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 257; + this.qualifiedName(); + this.state = 258; + this.match(esql_parser.ASSIGN); + this.state = 259; + this.booleanExpression(0); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public fromCommand(): FromCommandContext { + let localctx: FromCommandContext = new FromCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, esql_parser.RULE_fromCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 263; + this.match(esql_parser.FROM); + this.state = 264; + this.fromIdentifier(); + this.state = 269; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 265; + this.match(esql_parser.COMMA); + this.state = 266; + this.fromIdentifier(); + } + } + } + this.state = 271; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); + } + this.state = 273; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 22, this._ctx) ) { + case 1: + { + this.state = 272; + this.metadata(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public metadata(): MetadataContext { + let localctx: MetadataContext = new MetadataContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, esql_parser.RULE_metadata); + try { + this.state = 277; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 70: + this.enterOuterAlt(localctx, 1); + { + this.state = 275; + this.metadataOption(); + } + break; + case 63: + this.enterOuterAlt(localctx, 2); + { + this.state = 276; + this.deprecated_metadata(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public metadataOption(): MetadataOptionContext { + let localctx: MetadataOptionContext = new MetadataOptionContext(this, this._ctx, this.state); + this.enterRule(localctx, 32, esql_parser.RULE_metadataOption); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 279; + this.match(esql_parser.METADATA); + this.state = 280; + this.fromIdentifier(); + this.state = 285; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 24, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 281; + this.match(esql_parser.COMMA); + this.state = 282; + this.fromIdentifier(); + } + } + } + this.state = 287; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 24, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public deprecated_metadata(): Deprecated_metadataContext { + let localctx: Deprecated_metadataContext = new Deprecated_metadataContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, esql_parser.RULE_deprecated_metadata); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 288; + this.match(esql_parser.OPENING_BRACKET); + this.state = 289; + this.metadataOption(); + this.state = 290; + this.match(esql_parser.CLOSING_BRACKET); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public evalCommand(): EvalCommandContext { + let localctx: EvalCommandContext = new EvalCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, esql_parser.RULE_evalCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 292; + this.match(esql_parser.EVAL); + this.state = 293; + this.fields(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public statsCommand(): StatsCommandContext { + let localctx: StatsCommandContext = new StatsCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, esql_parser.RULE_statsCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 295; + this.match(esql_parser.STATS); + this.state = 297; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 25, this._ctx) ) { + case 1: + { + this.state = 296; + localctx._stats = this.fields(); + } + break; + } + this.state = 301; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 26, this._ctx) ) { + case 1: + { + this.state = 299; + this.match(esql_parser.BY); + this.state = 300; + localctx._grouping = this.fields(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public inlinestatsCommand(): InlinestatsCommandContext { + let localctx: InlinestatsCommandContext = new InlinestatsCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 40, esql_parser.RULE_inlinestatsCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 303; + this.match(esql_parser.INLINESTATS); + this.state = 304; + localctx._stats = this.fields(); + this.state = 307; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 27, this._ctx) ) { + case 1: + { + this.state = 305; + this.match(esql_parser.BY); + this.state = 306; + localctx._grouping = this.fields(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public fromIdentifier(): FromIdentifierContext { + let localctx: FromIdentifierContext = new FromIdentifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, esql_parser.RULE_fromIdentifier); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 309; + _la = this._input.LA(1); + if(!(_la===66 || _la===71)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public qualifiedName(): QualifiedNameContext { + let localctx: QualifiedNameContext = new QualifiedNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 44, esql_parser.RULE_qualifiedName); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 311; + this.identifier(); + this.state = 316; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 312; + this.match(esql_parser.DOT); + this.state = 313; + this.identifier(); + } + } + } + this.state = 318; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public qualifiedNamePattern(): QualifiedNamePatternContext { + let localctx: QualifiedNamePatternContext = new QualifiedNamePatternContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, esql_parser.RULE_qualifiedNamePattern); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 319; + this.identifierPattern(); + this.state = 324; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 29, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 320; + this.match(esql_parser.DOT); + this.state = 321; + this.identifierPattern(); + } + } + } + this.state = 326; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 29, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public identifier(): IdentifierContext { + let localctx: IdentifierContext = new IdentifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, esql_parser.RULE_identifier); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 327; + _la = this._input.LA(1); + if(!(_la===65 || _la===66)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public identifierPattern(): IdentifierPatternContext { + let localctx: IdentifierPatternContext = new IdentifierPatternContext(this, this._ctx, this.state); + this.enterRule(localctx, 50, esql_parser.RULE_identifierPattern); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 329; + this.match(esql_parser.ID_PATTERN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public idPattern(): IdPatternContext { + let localctx: IdPatternContext = new IdPatternContext(this, this._ctx, this.state); + this.enterRule(localctx, 52, esql_parser.RULE_idPattern); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 331; + _la = this._input.LA(1); + if(!(_la===66 || _la===105)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public constant(): ConstantContext { + let localctx: ConstantContext = new ConstantContext(this, this._ctx, this.state); + this.enterRule(localctx, 54, esql_parser.RULE_constant); + let _la: number; + try { + this.state = 375; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 33, this._ctx) ) { + case 1: + localctx = new NullLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 333; + this.match(esql_parser.NULL); + } + break; + case 2: + localctx = new QualifiedIntegerLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 334; + this.integerValue(); + this.state = 335; + this.match(esql_parser.UNQUOTED_IDENTIFIER); + } + break; + case 3: + localctx = new DecimalLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 337; + this.decimalValue(); + } + break; + case 4: + localctx = new IntegerLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 338; + this.integerValue(); + } + break; + case 5: + localctx = new BooleanLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 5); + { + this.state = 339; + this.booleanValue(); + } + break; + case 6: + localctx = new InputParamContext(this, localctx); + this.enterOuterAlt(localctx, 6); + { + this.state = 340; + this.match(esql_parser.PARAM); + } + break; + case 7: + localctx = new StringLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 7); + { + this.state = 341; + this.string_(); + } + break; + case 8: + localctx = new NumericArrayLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 8); + { + this.state = 342; + this.match(esql_parser.OPENING_BRACKET); + this.state = 343; + this.numericValue(); + this.state = 348; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===33) { + { + { + this.state = 344; + this.match(esql_parser.COMMA); + this.state = 345; + this.numericValue(); + } + } + this.state = 350; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 351; + this.match(esql_parser.CLOSING_BRACKET); + } + break; + case 9: + localctx = new BooleanArrayLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 9); + { + this.state = 353; + this.match(esql_parser.OPENING_BRACKET); + this.state = 354; + this.booleanValue(); + this.state = 359; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===33) { + { + { + this.state = 355; + this.match(esql_parser.COMMA); + this.state = 356; + this.booleanValue(); + } + } + this.state = 361; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 362; + this.match(esql_parser.CLOSING_BRACKET); + } + break; + case 10: + localctx = new StringArrayLiteralContext(this, localctx); + this.enterOuterAlt(localctx, 10); + { + this.state = 364; + this.match(esql_parser.OPENING_BRACKET); + this.state = 365; + this.string_(); + this.state = 370; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===33) { + { + { + this.state = 366; + this.match(esql_parser.COMMA); + this.state = 367; + this.string_(); + } + } + this.state = 372; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 373; + this.match(esql_parser.CLOSING_BRACKET); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public limitCommand(): LimitCommandContext { + let localctx: LimitCommandContext = new LimitCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 56, esql_parser.RULE_limitCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 377; + this.match(esql_parser.LIMIT); + this.state = 378; + this.match(esql_parser.INTEGER_LITERAL); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public sortCommand(): SortCommandContext { + let localctx: SortCommandContext = new SortCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 58, esql_parser.RULE_sortCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 380; + this.match(esql_parser.SORT); + this.state = 381; + this.orderExpression(); + this.state = 386; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 382; + this.match(esql_parser.COMMA); + this.state = 383; + this.orderExpression(); + } + } + } + this.state = 388; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public orderExpression(): OrderExpressionContext { + let localctx: OrderExpressionContext = new OrderExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 60, esql_parser.RULE_orderExpression); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 389; + this.booleanExpression(0); + this.state = 391; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 35, this._ctx) ) { + case 1: + { + this.state = 390; + localctx._ordering = this._input.LT(1); + _la = this._input.LA(1); + if(!(_la===31 || _la===34)) { + localctx._ordering = this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 395; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 36, this._ctx) ) { + case 1: + { + this.state = 393; + this.match(esql_parser.NULLS); + this.state = 394; + localctx._nullOrdering = this._input.LT(1); + _la = this._input.LA(1); + if(!(_la===37 || _la===38)) { + localctx._nullOrdering = this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public keepCommand(): KeepCommandContext { + let localctx: KeepCommandContext = new KeepCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 62, esql_parser.RULE_keepCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 397; + this.match(esql_parser.KEEP); + this.state = 398; + this.qualifiedNamePattern(); + this.state = 403; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 399; + this.match(esql_parser.COMMA); + this.state = 400; + this.qualifiedNamePattern(); + } + } + } + this.state = 405; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public dropCommand(): DropCommandContext { + let localctx: DropCommandContext = new DropCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 64, esql_parser.RULE_dropCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 406; + this.match(esql_parser.DROP); + this.state = 407; + this.qualifiedNamePattern(); + this.state = 412; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 38, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 408; + this.match(esql_parser.COMMA); + this.state = 409; + this.qualifiedNamePattern(); + } + } + } + this.state = 414; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 38, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public renameCommand(): RenameCommandContext { + let localctx: RenameCommandContext = new RenameCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 66, esql_parser.RULE_renameCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 415; + this.match(esql_parser.RENAME); + this.state = 416; + this.renameClause(); + this.state = 421; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 39, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 417; + this.match(esql_parser.COMMA); + this.state = 418; + this.renameClause(); + } + } + } + this.state = 423; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 39, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public renameClause(): RenameClauseContext { + let localctx: RenameClauseContext = new RenameClauseContext(this, this._ctx, this.state); + this.enterRule(localctx, 68, esql_parser.RULE_renameClause); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 424; + localctx._oldName = this.qualifiedNamePattern(); + this.state = 425; + this.match(esql_parser.AS); + this.state = 426; + localctx._newName = this.qualifiedNamePattern(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public dissectCommand(): DissectCommandContext { + let localctx: DissectCommandContext = new DissectCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 70, esql_parser.RULE_dissectCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 428; + this.match(esql_parser.DISSECT); + this.state = 429; + this.primaryExpression(); + this.state = 430; + this.string_(); + this.state = 432; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 40, this._ctx) ) { + case 1: + { + this.state = 431; + this.commandOptions(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public grokCommand(): GrokCommandContext { + let localctx: GrokCommandContext = new GrokCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 72, esql_parser.RULE_grokCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 434; + this.match(esql_parser.GROK); + this.state = 435; + this.primaryExpression(); + this.state = 436; + this.string_(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public mvExpandCommand(): MvExpandCommandContext { + let localctx: MvExpandCommandContext = new MvExpandCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 74, esql_parser.RULE_mvExpandCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 438; + this.match(esql_parser.MV_EXPAND); + this.state = 439; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public commandOptions(): CommandOptionsContext { + let localctx: CommandOptionsContext = new CommandOptionsContext(this, this._ctx, this.state); + this.enterRule(localctx, 76, esql_parser.RULE_commandOptions); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 441; + this.commandOption(); + this.state = 446; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 41, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 442; + this.match(esql_parser.COMMA); + this.state = 443; + this.commandOption(); + } + } + } + this.state = 448; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 41, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public commandOption(): CommandOptionContext { + let localctx: CommandOptionContext = new CommandOptionContext(this, this._ctx, this.state); + this.enterRule(localctx, 78, esql_parser.RULE_commandOption); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 449; + this.identifier(); + this.state = 450; + this.match(esql_parser.ASSIGN); + this.state = 451; + this.constant(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public booleanValue(): BooleanValueContext { + let localctx: BooleanValueContext = new BooleanValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 80, esql_parser.RULE_booleanValue); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 453; + _la = this._input.LA(1); + if(!(_la===36 || _la===50)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public numericValue(): NumericValueContext { + let localctx: NumericValueContext = new NumericValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 82, esql_parser.RULE_numericValue); + try { + this.state = 457; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 42, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 455; + this.decimalValue(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 456; + this.integerValue(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public decimalValue(): DecimalValueContext { + let localctx: DecimalValueContext = new DecimalValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 84, esql_parser.RULE_decimalValue); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 460; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===58 || _la===59) { + { + this.state = 459; + _la = this._input.LA(1); + if(!(_la===58 || _la===59)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 462; + this.match(esql_parser.DECIMAL_LITERAL); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public integerValue(): IntegerValueContext { + let localctx: IntegerValueContext = new IntegerValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 86, esql_parser.RULE_integerValue); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 465; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===58 || _la===59) { + { + this.state = 464; + _la = this._input.LA(1); + if(!(_la===58 || _la===59)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 467; + this.match(esql_parser.INTEGER_LITERAL); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public string_(): StringContext { + let localctx: StringContext = new StringContext(this, this._ctx, this.state); + this.enterRule(localctx, 88, esql_parser.RULE_string); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 469; + this.match(esql_parser.STRING); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public comparisonOperator(): ComparisonOperatorContext { + let localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this, this._ctx, this.state); + this.enterRule(localctx, 90, esql_parser.RULE_comparisonOperator); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 471; + _la = this._input.LA(1); + if(!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 127) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public explainCommand(): ExplainCommandContext { + let localctx: ExplainCommandContext = new ExplainCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 92, esql_parser.RULE_explainCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 473; + this.match(esql_parser.EXPLAIN); + this.state = 474; + this.subqueryExpression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public subqueryExpression(): SubqueryExpressionContext { + let localctx: SubqueryExpressionContext = new SubqueryExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 94, esql_parser.RULE_subqueryExpression); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 476; + this.match(esql_parser.OPENING_BRACKET); + this.state = 477; + this.query(0); + this.state = 478; + this.match(esql_parser.CLOSING_BRACKET); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public showCommand(): ShowCommandContext { + let localctx: ShowCommandContext = new ShowCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 96, esql_parser.RULE_showCommand); + try { + this.state = 484; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 45, this._ctx) ) { + case 1: + localctx = new ShowInfoContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 480; + this.match(esql_parser.SHOW); + this.state = 481; + this.match(esql_parser.INFO); + } + break; + case 2: + localctx = new ShowFunctionsContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 482; + this.match(esql_parser.SHOW); + this.state = 483; + this.match(esql_parser.FUNCTIONS); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public enrichCommand(): EnrichCommandContext { + let localctx: EnrichCommandContext = new EnrichCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 98, esql_parser.RULE_enrichCommand); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 486; + this.match(esql_parser.ENRICH); + this.state = 487; + localctx._policyName = this.match(esql_parser.ENRICH_POLICY_NAME); + this.state = 490; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 46, this._ctx) ) { + case 1: + { + this.state = 488; + this.match(esql_parser.ON); + this.state = 489; + localctx._matchField = this.qualifiedNamePattern(); + } + break; + } + this.state = 501; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { + case 1: + { + this.state = 492; + this.match(esql_parser.WITH); + this.state = 493; + this.enrichWithClause(); + this.state = 498; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 494; + this.match(esql_parser.COMMA); + this.state = 495; + this.enrichWithClause(); + } + } + } + this.state = 500; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + } + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public enrichWithClause(): EnrichWithClauseContext { + let localctx: EnrichWithClauseContext = new EnrichWithClauseContext(this, this._ctx, this.state); + this.enterRule(localctx, 100, esql_parser.RULE_enrichWithClause); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 506; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 49, this._ctx) ) { + case 1: + { + this.state = 503; + localctx._newName = this.qualifiedNamePattern(); + this.state = 504; + this.match(esql_parser.ASSIGN); + } + break; + } + this.state = 508; + localctx._enrichField = this.qualifiedNamePattern(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 1: + return this.query_sempred(localctx as QueryContext, predIndex); + case 5: + return this.booleanExpression_sempred(localctx as BooleanExpressionContext, predIndex); + case 8: + return this.operatorExpression_sempred(localctx as OperatorExpressionContext, predIndex); + } + return true; + } + private query_sempred(localctx: QueryContext, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.precpred(this._ctx, 1); + } + return true; + } + private booleanExpression_sempred(localctx: BooleanExpressionContext, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.precpred(this._ctx, 4); + case 2: + return this.precpred(this._ctx, 3); + } + return true; + } + private operatorExpression_sempred(localctx: OperatorExpressionContext, predIndex: number): boolean { + switch (predIndex) { + case 3: + return this.precpred(this._ctx, 2); + case 4: + return this.precpred(this._ctx, 1); + } + return true; + } + + public static readonly _serializedATN: number[] = [4,1,105,511,2,0,7,0, + 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, + 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, + 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, + 7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7, + 31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38, + 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, + 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,1,0,1,0,1,0,1,1,1,1,1,1, + 1,1,1,1,1,1,5,1,112,8,1,10,1,12,1,115,9,1,1,2,1,2,1,2,1,2,3,2,121,8,2,1, + 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,136,8,3,1,4,1,4,1, + 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,148,8,5,1,5,1,5,1,5,1,5,1,5,5,5,155,8, + 5,10,5,12,5,158,9,5,1,5,1,5,1,5,1,5,1,5,3,5,165,8,5,1,5,1,5,3,5,169,8,5, + 1,5,1,5,1,5,1,5,1,5,1,5,5,5,177,8,5,10,5,12,5,180,9,5,1,6,1,6,3,6,184,8, + 6,1,6,1,6,1,6,1,6,1,6,3,6,191,8,6,1,6,1,6,1,6,3,6,196,8,6,1,7,1,7,1,7,1, + 7,1,7,3,7,203,8,7,1,8,1,8,1,8,1,8,3,8,209,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5, + 8,217,8,8,10,8,12,8,220,9,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,229,8,9,1,10, + 1,10,1,10,1,10,1,10,1,10,5,10,237,8,10,10,10,12,10,240,9,10,3,10,242,8, + 10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,5,12,252,8,12,10,12,12,12,255, + 9,12,1,13,1,13,1,13,1,13,1,13,3,13,262,8,13,1,14,1,14,1,14,1,14,5,14,268, + 8,14,10,14,12,14,271,9,14,1,14,3,14,274,8,14,1,15,1,15,3,15,278,8,15,1, + 16,1,16,1,16,1,16,5,16,284,8,16,10,16,12,16,287,9,16,1,17,1,17,1,17,1,17, + 1,18,1,18,1,18,1,19,1,19,3,19,298,8,19,1,19,1,19,3,19,302,8,19,1,20,1,20, + 1,20,1,20,3,20,308,8,20,1,21,1,21,1,22,1,22,1,22,5,22,315,8,22,10,22,12, + 22,318,9,22,1,23,1,23,1,23,5,23,323,8,23,10,23,12,23,326,9,23,1,24,1,24, + 1,25,1,25,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, + 27,1,27,1,27,5,27,347,8,27,10,27,12,27,350,9,27,1,27,1,27,1,27,1,27,1,27, + 1,27,5,27,358,8,27,10,27,12,27,361,9,27,1,27,1,27,1,27,1,27,1,27,1,27,5, + 27,369,8,27,10,27,12,27,372,9,27,1,27,1,27,3,27,376,8,27,1,28,1,28,1,28, + 1,29,1,29,1,29,1,29,5,29,385,8,29,10,29,12,29,388,9,29,1,30,1,30,3,30,392, + 8,30,1,30,1,30,3,30,396,8,30,1,31,1,31,1,31,1,31,5,31,402,8,31,10,31,12, + 31,405,9,31,1,32,1,32,1,32,1,32,5,32,411,8,32,10,32,12,32,414,9,32,1,33, + 1,33,1,33,1,33,5,33,420,8,33,10,33,12,33,423,9,33,1,34,1,34,1,34,1,34,1, + 35,1,35,1,35,1,35,3,35,433,8,35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,38, + 1,38,1,38,5,38,445,8,38,10,38,12,38,448,9,38,1,39,1,39,1,39,1,39,1,40,1, + 40,1,41,1,41,3,41,458,8,41,1,42,3,42,461,8,42,1,42,1,42,1,43,3,43,466,8, + 43,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,48, + 1,48,1,48,1,48,3,48,485,8,48,1,49,1,49,1,49,1,49,3,49,491,8,49,1,49,1,49, + 1,49,1,49,5,49,497,8,49,10,49,12,49,500,9,49,3,49,502,8,49,1,50,1,50,1, + 50,3,50,507,8,50,1,50,1,50,1,50,0,3,2,10,16,51,0,2,4,6,8,10,12,14,16,18, + 20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66, + 68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,0,9,1,0,58,59,1,0,60, + 62,2,0,66,66,71,71,1,0,65,66,2,0,66,66,105,105,2,0,31,31,34,34,1,0,37,38, + 2,0,36,36,50,50,1,0,51,57,536,0,102,1,0,0,0,2,105,1,0,0,0,4,120,1,0,0,0, + 6,135,1,0,0,0,8,137,1,0,0,0,10,168,1,0,0,0,12,195,1,0,0,0,14,202,1,0,0, + 0,16,208,1,0,0,0,18,228,1,0,0,0,20,230,1,0,0,0,22,245,1,0,0,0,24,248,1, + 0,0,0,26,261,1,0,0,0,28,263,1,0,0,0,30,277,1,0,0,0,32,279,1,0,0,0,34,288, + 1,0,0,0,36,292,1,0,0,0,38,295,1,0,0,0,40,303,1,0,0,0,42,309,1,0,0,0,44, + 311,1,0,0,0,46,319,1,0,0,0,48,327,1,0,0,0,50,329,1,0,0,0,52,331,1,0,0,0, + 54,375,1,0,0,0,56,377,1,0,0,0,58,380,1,0,0,0,60,389,1,0,0,0,62,397,1,0, + 0,0,64,406,1,0,0,0,66,415,1,0,0,0,68,424,1,0,0,0,70,428,1,0,0,0,72,434, + 1,0,0,0,74,438,1,0,0,0,76,441,1,0,0,0,78,449,1,0,0,0,80,453,1,0,0,0,82, + 457,1,0,0,0,84,460,1,0,0,0,86,465,1,0,0,0,88,469,1,0,0,0,90,471,1,0,0,0, + 92,473,1,0,0,0,94,476,1,0,0,0,96,484,1,0,0,0,98,486,1,0,0,0,100,506,1,0, + 0,0,102,103,3,2,1,0,103,104,5,0,0,1,104,1,1,0,0,0,105,106,6,1,-1,0,106, + 107,3,4,2,0,107,113,1,0,0,0,108,109,10,1,0,0,109,110,5,25,0,0,110,112,3, + 6,3,0,111,108,1,0,0,0,112,115,1,0,0,0,113,111,1,0,0,0,113,114,1,0,0,0,114, + 3,1,0,0,0,115,113,1,0,0,0,116,121,3,92,46,0,117,121,3,28,14,0,118,121,3, + 22,11,0,119,121,3,96,48,0,120,116,1,0,0,0,120,117,1,0,0,0,120,118,1,0,0, + 0,120,119,1,0,0,0,121,5,1,0,0,0,122,136,3,36,18,0,123,136,3,40,20,0,124, + 136,3,56,28,0,125,136,3,62,31,0,126,136,3,58,29,0,127,136,3,38,19,0,128, + 136,3,8,4,0,129,136,3,64,32,0,130,136,3,66,33,0,131,136,3,70,35,0,132,136, + 3,72,36,0,133,136,3,98,49,0,134,136,3,74,37,0,135,122,1,0,0,0,135,123,1, + 0,0,0,135,124,1,0,0,0,135,125,1,0,0,0,135,126,1,0,0,0,135,127,1,0,0,0,135, + 128,1,0,0,0,135,129,1,0,0,0,135,130,1,0,0,0,135,131,1,0,0,0,135,132,1,0, + 0,0,135,133,1,0,0,0,135,134,1,0,0,0,136,7,1,0,0,0,137,138,5,17,0,0,138, + 139,3,10,5,0,139,9,1,0,0,0,140,141,6,5,-1,0,141,142,5,43,0,0,142,169,3, + 10,5,7,143,169,3,14,7,0,144,169,3,12,6,0,145,147,3,14,7,0,146,148,5,43, + 0,0,147,146,1,0,0,0,147,148,1,0,0,0,148,149,1,0,0,0,149,150,5,40,0,0,150, + 151,5,39,0,0,151,156,3,14,7,0,152,153,5,33,0,0,153,155,3,14,7,0,154,152, + 1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,156,157,1,0,0,0,157,159,1,0,0,0, + 158,156,1,0,0,0,159,160,5,49,0,0,160,169,1,0,0,0,161,162,3,14,7,0,162,164, + 5,41,0,0,163,165,5,43,0,0,164,163,1,0,0,0,164,165,1,0,0,0,165,166,1,0,0, + 0,166,167,5,44,0,0,167,169,1,0,0,0,168,140,1,0,0,0,168,143,1,0,0,0,168, + 144,1,0,0,0,168,145,1,0,0,0,168,161,1,0,0,0,169,178,1,0,0,0,170,171,10, + 4,0,0,171,172,5,30,0,0,172,177,3,10,5,5,173,174,10,3,0,0,174,175,5,46,0, + 0,175,177,3,10,5,4,176,170,1,0,0,0,176,173,1,0,0,0,177,180,1,0,0,0,178, + 176,1,0,0,0,178,179,1,0,0,0,179,11,1,0,0,0,180,178,1,0,0,0,181,183,3,14, + 7,0,182,184,5,43,0,0,183,182,1,0,0,0,183,184,1,0,0,0,184,185,1,0,0,0,185, + 186,5,42,0,0,186,187,3,88,44,0,187,196,1,0,0,0,188,190,3,14,7,0,189,191, + 5,43,0,0,190,189,1,0,0,0,190,191,1,0,0,0,191,192,1,0,0,0,192,193,5,48,0, + 0,193,194,3,88,44,0,194,196,1,0,0,0,195,181,1,0,0,0,195,188,1,0,0,0,196, + 13,1,0,0,0,197,203,3,16,8,0,198,199,3,16,8,0,199,200,3,90,45,0,200,201, + 3,16,8,0,201,203,1,0,0,0,202,197,1,0,0,0,202,198,1,0,0,0,203,15,1,0,0,0, + 204,205,6,8,-1,0,205,209,3,18,9,0,206,207,7,0,0,0,207,209,3,16,8,3,208, + 204,1,0,0,0,208,206,1,0,0,0,209,218,1,0,0,0,210,211,10,2,0,0,211,212,7, + 1,0,0,212,217,3,16,8,3,213,214,10,1,0,0,214,215,7,0,0,0,215,217,3,16,8, + 2,216,210,1,0,0,0,216,213,1,0,0,0,217,220,1,0,0,0,218,216,1,0,0,0,218,219, + 1,0,0,0,219,17,1,0,0,0,220,218,1,0,0,0,221,229,3,54,27,0,222,229,3,44,22, + 0,223,229,3,20,10,0,224,225,5,39,0,0,225,226,3,10,5,0,226,227,5,49,0,0, + 227,229,1,0,0,0,228,221,1,0,0,0,228,222,1,0,0,0,228,223,1,0,0,0,228,224, + 1,0,0,0,229,19,1,0,0,0,230,231,3,48,24,0,231,241,5,39,0,0,232,242,5,60, + 0,0,233,238,3,10,5,0,234,235,5,33,0,0,235,237,3,10,5,0,236,234,1,0,0,0, + 237,240,1,0,0,0,238,236,1,0,0,0,238,239,1,0,0,0,239,242,1,0,0,0,240,238, + 1,0,0,0,241,232,1,0,0,0,241,233,1,0,0,0,241,242,1,0,0,0,242,243,1,0,0,0, + 243,244,5,49,0,0,244,21,1,0,0,0,245,246,5,13,0,0,246,247,3,24,12,0,247, + 23,1,0,0,0,248,253,3,26,13,0,249,250,5,33,0,0,250,252,3,26,13,0,251,249, + 1,0,0,0,252,255,1,0,0,0,253,251,1,0,0,0,253,254,1,0,0,0,254,25,1,0,0,0, + 255,253,1,0,0,0,256,262,3,10,5,0,257,258,3,44,22,0,258,259,5,32,0,0,259, + 260,3,10,5,0,260,262,1,0,0,0,261,256,1,0,0,0,261,257,1,0,0,0,262,27,1,0, + 0,0,263,264,5,6,0,0,264,269,3,42,21,0,265,266,5,33,0,0,266,268,3,42,21, + 0,267,265,1,0,0,0,268,271,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0,0,270,273, + 1,0,0,0,271,269,1,0,0,0,272,274,3,30,15,0,273,272,1,0,0,0,273,274,1,0,0, + 0,274,29,1,0,0,0,275,278,3,32,16,0,276,278,3,34,17,0,277,275,1,0,0,0,277, + 276,1,0,0,0,278,31,1,0,0,0,279,280,5,70,0,0,280,285,3,42,21,0,281,282,5, + 33,0,0,282,284,3,42,21,0,283,281,1,0,0,0,284,287,1,0,0,0,285,283,1,0,0, + 0,285,286,1,0,0,0,286,33,1,0,0,0,287,285,1,0,0,0,288,289,5,63,0,0,289,290, + 3,32,16,0,290,291,5,64,0,0,291,35,1,0,0,0,292,293,5,4,0,0,293,294,3,24, + 12,0,294,37,1,0,0,0,295,297,5,16,0,0,296,298,3,24,12,0,297,296,1,0,0,0, + 297,298,1,0,0,0,298,301,1,0,0,0,299,300,5,29,0,0,300,302,3,24,12,0,301, + 299,1,0,0,0,301,302,1,0,0,0,302,39,1,0,0,0,303,304,5,8,0,0,304,307,3,24, + 12,0,305,306,5,29,0,0,306,308,3,24,12,0,307,305,1,0,0,0,307,308,1,0,0,0, + 308,41,1,0,0,0,309,310,7,2,0,0,310,43,1,0,0,0,311,316,3,48,24,0,312,313, + 5,35,0,0,313,315,3,48,24,0,314,312,1,0,0,0,315,318,1,0,0,0,316,314,1,0, + 0,0,316,317,1,0,0,0,317,45,1,0,0,0,318,316,1,0,0,0,319,324,3,50,25,0,320, + 321,5,35,0,0,321,323,3,50,25,0,322,320,1,0,0,0,323,326,1,0,0,0,324,322, + 1,0,0,0,324,325,1,0,0,0,325,47,1,0,0,0,326,324,1,0,0,0,327,328,7,3,0,0, + 328,49,1,0,0,0,329,330,5,75,0,0,330,51,1,0,0,0,331,332,7,4,0,0,332,53,1, + 0,0,0,333,376,5,44,0,0,334,335,3,86,43,0,335,336,5,65,0,0,336,376,1,0,0, + 0,337,376,3,84,42,0,338,376,3,86,43,0,339,376,3,80,40,0,340,376,5,47,0, + 0,341,376,3,88,44,0,342,343,5,63,0,0,343,348,3,82,41,0,344,345,5,33,0,0, + 345,347,3,82,41,0,346,344,1,0,0,0,347,350,1,0,0,0,348,346,1,0,0,0,348,349, + 1,0,0,0,349,351,1,0,0,0,350,348,1,0,0,0,351,352,5,64,0,0,352,376,1,0,0, + 0,353,354,5,63,0,0,354,359,3,80,40,0,355,356,5,33,0,0,356,358,3,80,40,0, + 357,355,1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,359,360,1,0,0,0,360,362, + 1,0,0,0,361,359,1,0,0,0,362,363,5,64,0,0,363,376,1,0,0,0,364,365,5,63,0, + 0,365,370,3,88,44,0,366,367,5,33,0,0,367,369,3,88,44,0,368,366,1,0,0,0, + 369,372,1,0,0,0,370,368,1,0,0,0,370,371,1,0,0,0,371,373,1,0,0,0,372,370, + 1,0,0,0,373,374,5,64,0,0,374,376,1,0,0,0,375,333,1,0,0,0,375,334,1,0,0, + 0,375,337,1,0,0,0,375,338,1,0,0,0,375,339,1,0,0,0,375,340,1,0,0,0,375,341, + 1,0,0,0,375,342,1,0,0,0,375,353,1,0,0,0,375,364,1,0,0,0,376,55,1,0,0,0, + 377,378,5,10,0,0,378,379,5,27,0,0,379,57,1,0,0,0,380,381,5,15,0,0,381,386, + 3,60,30,0,382,383,5,33,0,0,383,385,3,60,30,0,384,382,1,0,0,0,385,388,1, + 0,0,0,386,384,1,0,0,0,386,387,1,0,0,0,387,59,1,0,0,0,388,386,1,0,0,0,389, + 391,3,10,5,0,390,392,7,5,0,0,391,390,1,0,0,0,391,392,1,0,0,0,392,395,1, + 0,0,0,393,394,5,45,0,0,394,396,7,6,0,0,395,393,1,0,0,0,395,396,1,0,0,0, + 396,61,1,0,0,0,397,398,5,9,0,0,398,403,3,46,23,0,399,400,5,33,0,0,400,402, + 3,46,23,0,401,399,1,0,0,0,402,405,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0, + 0,404,63,1,0,0,0,405,403,1,0,0,0,406,407,5,2,0,0,407,412,3,46,23,0,408, + 409,5,33,0,0,409,411,3,46,23,0,410,408,1,0,0,0,411,414,1,0,0,0,412,410, + 1,0,0,0,412,413,1,0,0,0,413,65,1,0,0,0,414,412,1,0,0,0,415,416,5,12,0,0, + 416,421,3,68,34,0,417,418,5,33,0,0,418,420,3,68,34,0,419,417,1,0,0,0,420, + 423,1,0,0,0,421,419,1,0,0,0,421,422,1,0,0,0,422,67,1,0,0,0,423,421,1,0, + 0,0,424,425,3,46,23,0,425,426,5,79,0,0,426,427,3,46,23,0,427,69,1,0,0,0, + 428,429,5,1,0,0,429,430,3,18,9,0,430,432,3,88,44,0,431,433,3,76,38,0,432, + 431,1,0,0,0,432,433,1,0,0,0,433,71,1,0,0,0,434,435,5,7,0,0,435,436,3,18, + 9,0,436,437,3,88,44,0,437,73,1,0,0,0,438,439,5,11,0,0,439,440,3,44,22,0, + 440,75,1,0,0,0,441,446,3,78,39,0,442,443,5,33,0,0,443,445,3,78,39,0,444, + 442,1,0,0,0,445,448,1,0,0,0,446,444,1,0,0,0,446,447,1,0,0,0,447,77,1,0, + 0,0,448,446,1,0,0,0,449,450,3,48,24,0,450,451,5,32,0,0,451,452,3,54,27, + 0,452,79,1,0,0,0,453,454,7,7,0,0,454,81,1,0,0,0,455,458,3,84,42,0,456,458, + 3,86,43,0,457,455,1,0,0,0,457,456,1,0,0,0,458,83,1,0,0,0,459,461,7,0,0, + 0,460,459,1,0,0,0,460,461,1,0,0,0,461,462,1,0,0,0,462,463,5,28,0,0,463, + 85,1,0,0,0,464,466,7,0,0,0,465,464,1,0,0,0,465,466,1,0,0,0,466,467,1,0, + 0,0,467,468,5,27,0,0,468,87,1,0,0,0,469,470,5,26,0,0,470,89,1,0,0,0,471, + 472,7,8,0,0,472,91,1,0,0,0,473,474,5,5,0,0,474,475,3,94,47,0,475,93,1,0, + 0,0,476,477,5,63,0,0,477,478,3,2,1,0,478,479,5,64,0,0,479,95,1,0,0,0,480, + 481,5,14,0,0,481,485,5,95,0,0,482,483,5,14,0,0,483,485,5,96,0,0,484,480, + 1,0,0,0,484,482,1,0,0,0,485,97,1,0,0,0,486,487,5,3,0,0,487,490,5,85,0,0, + 488,489,5,83,0,0,489,491,3,46,23,0,490,488,1,0,0,0,490,491,1,0,0,0,491, + 501,1,0,0,0,492,493,5,84,0,0,493,498,3,100,50,0,494,495,5,33,0,0,495,497, + 3,100,50,0,496,494,1,0,0,0,497,500,1,0,0,0,498,496,1,0,0,0,498,499,1,0, + 0,0,499,502,1,0,0,0,500,498,1,0,0,0,501,492,1,0,0,0,501,502,1,0,0,0,502, + 99,1,0,0,0,503,504,3,46,23,0,504,505,5,32,0,0,505,507,1,0,0,0,506,503,1, + 0,0,0,506,507,1,0,0,0,507,508,1,0,0,0,508,509,3,46,23,0,509,101,1,0,0,0, + 50,113,120,135,147,156,164,168,176,178,183,190,195,202,208,216,218,228, + 238,241,253,261,269,273,277,285,297,301,307,316,324,348,359,370,375,386, + 391,395,403,412,421,432,446,457,460,465,484,490,498,501,506]; + + private static __ATN: ATN; + public static get _ATN(): ATN { + if (!esql_parser.__ATN) { + esql_parser.__ATN = new ATNDeserializer().deserialize(esql_parser._serializedATN); + } + + return esql_parser.__ATN; + } + + + static DecisionsToDFA = esql_parser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); + +} + +export class SingleStatementContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public query(): QueryContext { + return this.getTypedRuleContext(QueryContext, 0) as QueryContext; + } + public EOF(): TerminalNode { + return this.getToken(esql_parser.EOF, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_singleStatement; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterSingleStatement) { + listener.enterSingleStatement(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitSingleStatement) { + listener.exitSingleStatement(this); + } + } +} + + +export class QueryContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_query; + } + public copyFrom(ctx: QueryContext): void { + super.copyFrom(ctx); + } +} +export class CompositeQueryContext extends QueryContext { + constructor(parser: esql_parser, ctx: QueryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public query(): QueryContext { + return this.getTypedRuleContext(QueryContext, 0) as QueryContext; + } + public PIPE(): TerminalNode { + return this.getToken(esql_parser.PIPE, 0); + } + public processingCommand(): ProcessingCommandContext { + return this.getTypedRuleContext(ProcessingCommandContext, 0) as ProcessingCommandContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterCompositeQuery) { + listener.enterCompositeQuery(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitCompositeQuery) { + listener.exitCompositeQuery(this); + } + } +} +export class SingleCommandQueryContext extends QueryContext { + constructor(parser: esql_parser, ctx: QueryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public sourceCommand(): SourceCommandContext { + return this.getTypedRuleContext(SourceCommandContext, 0) as SourceCommandContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterSingleCommandQuery) { + listener.enterSingleCommandQuery(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitSingleCommandQuery) { + listener.exitSingleCommandQuery(this); + } + } +} + + +export class SourceCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public explainCommand(): ExplainCommandContext { + return this.getTypedRuleContext(ExplainCommandContext, 0) as ExplainCommandContext; + } + public fromCommand(): FromCommandContext { + return this.getTypedRuleContext(FromCommandContext, 0) as FromCommandContext; + } + public rowCommand(): RowCommandContext { + return this.getTypedRuleContext(RowCommandContext, 0) as RowCommandContext; + } + public showCommand(): ShowCommandContext { + return this.getTypedRuleContext(ShowCommandContext, 0) as ShowCommandContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_sourceCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterSourceCommand) { + listener.enterSourceCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitSourceCommand) { + listener.exitSourceCommand(this); + } + } +} + + +export class ProcessingCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public evalCommand(): EvalCommandContext { + return this.getTypedRuleContext(EvalCommandContext, 0) as EvalCommandContext; + } + public inlinestatsCommand(): InlinestatsCommandContext { + return this.getTypedRuleContext(InlinestatsCommandContext, 0) as InlinestatsCommandContext; + } + public limitCommand(): LimitCommandContext { + return this.getTypedRuleContext(LimitCommandContext, 0) as LimitCommandContext; + } + public keepCommand(): KeepCommandContext { + return this.getTypedRuleContext(KeepCommandContext, 0) as KeepCommandContext; + } + public sortCommand(): SortCommandContext { + return this.getTypedRuleContext(SortCommandContext, 0) as SortCommandContext; + } + public statsCommand(): StatsCommandContext { + return this.getTypedRuleContext(StatsCommandContext, 0) as StatsCommandContext; + } + public whereCommand(): WhereCommandContext { + return this.getTypedRuleContext(WhereCommandContext, 0) as WhereCommandContext; + } + public dropCommand(): DropCommandContext { + return this.getTypedRuleContext(DropCommandContext, 0) as DropCommandContext; + } + public renameCommand(): RenameCommandContext { + return this.getTypedRuleContext(RenameCommandContext, 0) as RenameCommandContext; + } + public dissectCommand(): DissectCommandContext { + return this.getTypedRuleContext(DissectCommandContext, 0) as DissectCommandContext; + } + public grokCommand(): GrokCommandContext { + return this.getTypedRuleContext(GrokCommandContext, 0) as GrokCommandContext; + } + public enrichCommand(): EnrichCommandContext { + return this.getTypedRuleContext(EnrichCommandContext, 0) as EnrichCommandContext; + } + public mvExpandCommand(): MvExpandCommandContext { + return this.getTypedRuleContext(MvExpandCommandContext, 0) as MvExpandCommandContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_processingCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterProcessingCommand) { + listener.enterProcessingCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitProcessingCommand) { + listener.exitProcessingCommand(this); + } + } +} + + +export class WhereCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public WHERE(): TerminalNode { + return this.getToken(esql_parser.WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_whereCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterWhereCommand) { + listener.enterWhereCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitWhereCommand) { + listener.exitWhereCommand(this); + } + } +} + + +export class BooleanExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_booleanExpression; + } + public copyFrom(ctx: BooleanExpressionContext): void { + super.copyFrom(ctx); + } +} +export class LogicalNotContext extends BooleanExpressionContext { + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NOT(): TerminalNode { + return this.getToken(esql_parser.NOT, 0); + } + public booleanExpression(): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterLogicalNot) { + listener.enterLogicalNot(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitLogicalNot) { + listener.exitLogicalNot(this); + } + } +} +export class BooleanDefaultContext extends BooleanExpressionContext { + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression(): ValueExpressionContext { + return this.getTypedRuleContext(ValueExpressionContext, 0) as ValueExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterBooleanDefault) { + listener.enterBooleanDefault(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitBooleanDefault) { + listener.exitBooleanDefault(this); + } + } +} +export class IsNullContext extends BooleanExpressionContext { + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression(): ValueExpressionContext { + return this.getTypedRuleContext(ValueExpressionContext, 0) as ValueExpressionContext; + } + public IS(): TerminalNode { + return this.getToken(esql_parser.IS, 0); + } + public NULL(): TerminalNode { + return this.getToken(esql_parser.NULL, 0); + } + public NOT(): TerminalNode { + return this.getToken(esql_parser.NOT, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIsNull) { + listener.enterIsNull(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIsNull) { + listener.exitIsNull(this); + } + } +} +export class RegexExpressionContext extends BooleanExpressionContext { + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public regexBooleanExpression(): RegexBooleanExpressionContext { + return this.getTypedRuleContext(RegexBooleanExpressionContext, 0) as RegexBooleanExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterRegexExpression) { + listener.enterRegexExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitRegexExpression) { + listener.exitRegexExpression(this); + } + } +} +export class LogicalInContext extends BooleanExpressionContext { + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public valueExpression_list(): ValueExpressionContext[] { + return this.getTypedRuleContexts(ValueExpressionContext) as ValueExpressionContext[]; + } + public valueExpression(i: number): ValueExpressionContext { + return this.getTypedRuleContext(ValueExpressionContext, i) as ValueExpressionContext; + } + public IN(): TerminalNode { + return this.getToken(esql_parser.IN, 0); + } + public LP(): TerminalNode { + return this.getToken(esql_parser.LP, 0); + } + public RP(): TerminalNode { + return this.getToken(esql_parser.RP, 0); + } + public NOT(): TerminalNode { + return this.getToken(esql_parser.NOT, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterLogicalIn) { + listener.enterLogicalIn(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitLogicalIn) { + listener.exitLogicalIn(this); + } + } +} +export class LogicalBinaryContext extends BooleanExpressionContext { + public _left!: BooleanExpressionContext; + public _operator!: Token; + public _right!: BooleanExpressionContext; + constructor(parser: esql_parser, ctx: BooleanExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public booleanExpression_list(): BooleanExpressionContext[] { + return this.getTypedRuleContexts(BooleanExpressionContext) as BooleanExpressionContext[]; + } + public booleanExpression(i: number): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, i) as BooleanExpressionContext; + } + public AND(): TerminalNode { + return this.getToken(esql_parser.AND, 0); + } + public OR(): TerminalNode { + return this.getToken(esql_parser.OR, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterLogicalBinary) { + listener.enterLogicalBinary(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitLogicalBinary) { + listener.exitLogicalBinary(this); + } + } +} + + +export class RegexBooleanExpressionContext extends ParserRuleContext { + public _kind!: Token; + public _pattern!: StringContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public valueExpression(): ValueExpressionContext { + return this.getTypedRuleContext(ValueExpressionContext, 0) as ValueExpressionContext; + } + public LIKE(): TerminalNode { + return this.getToken(esql_parser.LIKE, 0); + } + public string_(): StringContext { + return this.getTypedRuleContext(StringContext, 0) as StringContext; + } + public NOT(): TerminalNode { + return this.getToken(esql_parser.NOT, 0); + } + public RLIKE(): TerminalNode { + return this.getToken(esql_parser.RLIKE, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_regexBooleanExpression; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterRegexBooleanExpression) { + listener.enterRegexBooleanExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitRegexBooleanExpression) { + listener.exitRegexBooleanExpression(this); + } + } +} + + +export class ValueExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_valueExpression; + } + public copyFrom(ctx: ValueExpressionContext): void { + super.copyFrom(ctx); + } +} +export class ValueExpressionDefaultContext extends ValueExpressionContext { + constructor(parser: esql_parser, ctx: ValueExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression(): OperatorExpressionContext { + return this.getTypedRuleContext(OperatorExpressionContext, 0) as OperatorExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterValueExpressionDefault) { + listener.enterValueExpressionDefault(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitValueExpressionDefault) { + listener.exitValueExpressionDefault(this); + } + } +} +export class ComparisonContext extends ValueExpressionContext { + public _left!: OperatorExpressionContext; + public _right!: OperatorExpressionContext; + constructor(parser: esql_parser, ctx: ValueExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public comparisonOperator(): ComparisonOperatorContext { + return this.getTypedRuleContext(ComparisonOperatorContext, 0) as ComparisonOperatorContext; + } + public operatorExpression_list(): OperatorExpressionContext[] { + return this.getTypedRuleContexts(OperatorExpressionContext) as OperatorExpressionContext[]; + } + public operatorExpression(i: number): OperatorExpressionContext { + return this.getTypedRuleContext(OperatorExpressionContext, i) as OperatorExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterComparison) { + listener.enterComparison(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitComparison) { + listener.exitComparison(this); + } + } +} + + +export class OperatorExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_operatorExpression; + } + public copyFrom(ctx: OperatorExpressionContext): void { + super.copyFrom(ctx); + } +} +export class OperatorExpressionDefaultContext extends OperatorExpressionContext { + constructor(parser: esql_parser, ctx: OperatorExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getTypedRuleContext(PrimaryExpressionContext, 0) as PrimaryExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterOperatorExpressionDefault) { + listener.enterOperatorExpressionDefault(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitOperatorExpressionDefault) { + listener.exitOperatorExpressionDefault(this); + } + } +} +export class ArithmeticBinaryContext extends OperatorExpressionContext { + public _left!: OperatorExpressionContext; + public _operator!: Token; + public _right!: OperatorExpressionContext; + constructor(parser: esql_parser, ctx: OperatorExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression_list(): OperatorExpressionContext[] { + return this.getTypedRuleContexts(OperatorExpressionContext) as OperatorExpressionContext[]; + } + public operatorExpression(i: number): OperatorExpressionContext { + return this.getTypedRuleContext(OperatorExpressionContext, i) as OperatorExpressionContext; + } + public ASTERISK(): TerminalNode { + return this.getToken(esql_parser.ASTERISK, 0); + } + public SLASH(): TerminalNode { + return this.getToken(esql_parser.SLASH, 0); + } + public PERCENT(): TerminalNode { + return this.getToken(esql_parser.PERCENT, 0); + } + public PLUS(): TerminalNode { + return this.getToken(esql_parser.PLUS, 0); + } + public MINUS(): TerminalNode { + return this.getToken(esql_parser.MINUS, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterArithmeticBinary) { + listener.enterArithmeticBinary(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitArithmeticBinary) { + listener.exitArithmeticBinary(this); + } + } +} +export class ArithmeticUnaryContext extends OperatorExpressionContext { + public _operator!: Token; + constructor(parser: esql_parser, ctx: OperatorExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public operatorExpression(): OperatorExpressionContext { + return this.getTypedRuleContext(OperatorExpressionContext, 0) as OperatorExpressionContext; + } + public MINUS(): TerminalNode { + return this.getToken(esql_parser.MINUS, 0); + } + public PLUS(): TerminalNode { + return this.getToken(esql_parser.PLUS, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterArithmeticUnary) { + listener.enterArithmeticUnary(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitArithmeticUnary) { + listener.exitArithmeticUnary(this); + } + } +} + + +export class PrimaryExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_primaryExpression; + } + public copyFrom(ctx: PrimaryExpressionContext): void { + super.copyFrom(ctx); + } +} +export class DereferenceContext extends PrimaryExpressionContext { + constructor(parser: esql_parser, ctx: PrimaryExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public qualifiedName(): QualifiedNameContext { + return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDereference) { + listener.enterDereference(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDereference) { + listener.exitDereference(this); + } + } +} +export class ConstantDefaultContext extends PrimaryExpressionContext { + constructor(parser: esql_parser, ctx: PrimaryExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public constant(): ConstantContext { + return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterConstantDefault) { + listener.enterConstantDefault(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitConstantDefault) { + listener.exitConstantDefault(this); + } + } +} +export class ParenthesizedExpressionContext extends PrimaryExpressionContext { + constructor(parser: esql_parser, ctx: PrimaryExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public LP(): TerminalNode { + return this.getToken(esql_parser.LP, 0); + } + public booleanExpression(): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(esql_parser.RP, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterParenthesizedExpression) { + listener.enterParenthesizedExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitParenthesizedExpression) { + listener.exitParenthesizedExpression(this); + } + } +} +export class FunctionContext extends PrimaryExpressionContext { + constructor(parser: esql_parser, ctx: PrimaryExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public functionExpression(): FunctionExpressionContext { + return this.getTypedRuleContext(FunctionExpressionContext, 0) as FunctionExpressionContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterFunction) { + listener.enterFunction(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitFunction) { + listener.exitFunction(this); + } + } +} + + +export class FunctionExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; + } + public LP(): TerminalNode { + return this.getToken(esql_parser.LP, 0); + } + public RP(): TerminalNode { + return this.getToken(esql_parser.RP, 0); + } + public ASTERISK(): TerminalNode { + return this.getToken(esql_parser.ASTERISK, 0); + } + public booleanExpression_list(): BooleanExpressionContext[] { + return this.getTypedRuleContexts(BooleanExpressionContext) as BooleanExpressionContext[]; + } + public booleanExpression(i: number): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, i) as BooleanExpressionContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_functionExpression; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterFunctionExpression) { + listener.enterFunctionExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitFunctionExpression) { + listener.exitFunctionExpression(this); + } + } +} + + +export class RowCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ROW(): TerminalNode { + return this.getToken(esql_parser.ROW, 0); + } + public fields(): FieldsContext { + return this.getTypedRuleContext(FieldsContext, 0) as FieldsContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_rowCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterRowCommand) { + listener.enterRowCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitRowCommand) { + listener.exitRowCommand(this); + } + } +} + + +export class FieldsContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public field_list(): FieldContext[] { + return this.getTypedRuleContexts(FieldContext) as FieldContext[]; + } + public field(i: number): FieldContext { + return this.getTypedRuleContext(FieldContext, i) as FieldContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_fields; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterFields) { + listener.enterFields(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitFields) { + listener.exitFields(this); + } + } +} + + +export class FieldContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public booleanExpression(): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; + } + public qualifiedName(): QualifiedNameContext { + return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; + } + public ASSIGN(): TerminalNode { + return this.getToken(esql_parser.ASSIGN, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_field; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterField) { + listener.enterField(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitField) { + listener.exitField(this); + } + } +} + + +export class FromCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public FROM(): TerminalNode { + return this.getToken(esql_parser.FROM, 0); + } + public fromIdentifier_list(): FromIdentifierContext[] { + return this.getTypedRuleContexts(FromIdentifierContext) as FromIdentifierContext[]; + } + public fromIdentifier(i: number): FromIdentifierContext { + return this.getTypedRuleContext(FromIdentifierContext, i) as FromIdentifierContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public metadata(): MetadataContext { + return this.getTypedRuleContext(MetadataContext, 0) as MetadataContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_fromCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterFromCommand) { + listener.enterFromCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitFromCommand) { + listener.exitFromCommand(this); + } + } +} + + +export class MetadataContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public metadataOption(): MetadataOptionContext { + return this.getTypedRuleContext(MetadataOptionContext, 0) as MetadataOptionContext; + } + public deprecated_metadata(): Deprecated_metadataContext { + return this.getTypedRuleContext(Deprecated_metadataContext, 0) as Deprecated_metadataContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_metadata; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterMetadata) { + listener.enterMetadata(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitMetadata) { + listener.exitMetadata(this); + } + } +} + + +export class MetadataOptionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public METADATA(): TerminalNode { + return this.getToken(esql_parser.METADATA, 0); + } + public fromIdentifier_list(): FromIdentifierContext[] { + return this.getTypedRuleContexts(FromIdentifierContext) as FromIdentifierContext[]; + } + public fromIdentifier(i: number): FromIdentifierContext { + return this.getTypedRuleContext(FromIdentifierContext, i) as FromIdentifierContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_metadataOption; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterMetadataOption) { + listener.enterMetadataOption(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitMetadataOption) { + listener.exitMetadataOption(this); + } + } +} + + +export class Deprecated_metadataContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public OPENING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.OPENING_BRACKET, 0); + } + public metadataOption(): MetadataOptionContext { + return this.getTypedRuleContext(MetadataOptionContext, 0) as MetadataOptionContext; + } + public CLOSING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.CLOSING_BRACKET, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_deprecated_metadata; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDeprecated_metadata) { + listener.enterDeprecated_metadata(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDeprecated_metadata) { + listener.exitDeprecated_metadata(this); + } + } +} + + +export class EvalCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public EVAL(): TerminalNode { + return this.getToken(esql_parser.EVAL, 0); + } + public fields(): FieldsContext { + return this.getTypedRuleContext(FieldsContext, 0) as FieldsContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_evalCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterEvalCommand) { + listener.enterEvalCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitEvalCommand) { + listener.exitEvalCommand(this); + } + } +} + + +export class StatsCommandContext extends ParserRuleContext { + public _stats!: FieldsContext; + public _grouping!: FieldsContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public STATS(): TerminalNode { + return this.getToken(esql_parser.STATS, 0); + } + public BY(): TerminalNode { + return this.getToken(esql_parser.BY, 0); + } + public fields_list(): FieldsContext[] { + return this.getTypedRuleContexts(FieldsContext) as FieldsContext[]; + } + public fields(i: number): FieldsContext { + return this.getTypedRuleContext(FieldsContext, i) as FieldsContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_statsCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterStatsCommand) { + listener.enterStatsCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitStatsCommand) { + listener.exitStatsCommand(this); + } + } +} + + +export class InlinestatsCommandContext extends ParserRuleContext { + public _stats!: FieldsContext; + public _grouping!: FieldsContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public INLINESTATS(): TerminalNode { + return this.getToken(esql_parser.INLINESTATS, 0); + } + public fields_list(): FieldsContext[] { + return this.getTypedRuleContexts(FieldsContext) as FieldsContext[]; + } + public fields(i: number): FieldsContext { + return this.getTypedRuleContext(FieldsContext, i) as FieldsContext; + } + public BY(): TerminalNode { + return this.getToken(esql_parser.BY, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_inlinestatsCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterInlinestatsCommand) { + listener.enterInlinestatsCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitInlinestatsCommand) { + listener.exitInlinestatsCommand(this); + } + } +} + + +export class FromIdentifierContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public FROM_UNQUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.FROM_UNQUOTED_IDENTIFIER, 0); + } + public QUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.QUOTED_IDENTIFIER, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_fromIdentifier; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterFromIdentifier) { + listener.enterFromIdentifier(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitFromIdentifier) { + listener.exitFromIdentifier(this); + } + } +} + + +export class QualifiedNameContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public DOT_list(): TerminalNode[] { + return this.getTokens(esql_parser.DOT); + } + public DOT(i: number): TerminalNode { + return this.getToken(esql_parser.DOT, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_qualifiedName; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterQualifiedName) { + listener.enterQualifiedName(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitQualifiedName) { + listener.exitQualifiedName(this); + } + } +} + + +export class QualifiedNamePatternContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public identifierPattern_list(): IdentifierPatternContext[] { + return this.getTypedRuleContexts(IdentifierPatternContext) as IdentifierPatternContext[]; + } + public identifierPattern(i: number): IdentifierPatternContext { + return this.getTypedRuleContext(IdentifierPatternContext, i) as IdentifierPatternContext; + } + public DOT_list(): TerminalNode[] { + return this.getTokens(esql_parser.DOT); + } + public DOT(i: number): TerminalNode { + return this.getToken(esql_parser.DOT, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_qualifiedNamePattern; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterQualifiedNamePattern) { + listener.enterQualifiedNamePattern(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitQualifiedNamePattern) { + listener.exitQualifiedNamePattern(this); + } + } +} + + +export class IdentifierContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public UNQUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.UNQUOTED_IDENTIFIER, 0); + } + public QUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.QUOTED_IDENTIFIER, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_identifier; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIdentifier) { + listener.enterIdentifier(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIdentifier) { + listener.exitIdentifier(this); + } + } +} + + +export class IdentifierPatternContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ID_PATTERN(): TerminalNode { + return this.getToken(esql_parser.ID_PATTERN, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_identifierPattern; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIdentifierPattern) { + listener.enterIdentifierPattern(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIdentifierPattern) { + listener.exitIdentifierPattern(this); + } + } +} + + +export class IdPatternContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public UNQUOTED_ID_PATTERN(): TerminalNode { + return this.getToken(esql_parser.UNQUOTED_ID_PATTERN, 0); + } + public QUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.QUOTED_IDENTIFIER, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_idPattern; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIdPattern) { + listener.enterIdPattern(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIdPattern) { + listener.exitIdPattern(this); + } + } +} + + +export class ConstantContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_constant; + } + public copyFrom(ctx: ConstantContext): void { + super.copyFrom(ctx); + } +} +export class BooleanArrayLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.OPENING_BRACKET, 0); + } + public booleanValue_list(): BooleanValueContext[] { + return this.getTypedRuleContexts(BooleanValueContext) as BooleanValueContext[]; + } + public booleanValue(i: number): BooleanValueContext { + return this.getTypedRuleContext(BooleanValueContext, i) as BooleanValueContext; + } + public CLOSING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.CLOSING_BRACKET, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterBooleanArrayLiteral) { + listener.enterBooleanArrayLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitBooleanArrayLiteral) { + listener.exitBooleanArrayLiteral(this); + } + } +} +export class DecimalLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public decimalValue(): DecimalValueContext { + return this.getTypedRuleContext(DecimalValueContext, 0) as DecimalValueContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDecimalLiteral) { + listener.enterDecimalLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDecimalLiteral) { + listener.exitDecimalLiteral(this); + } + } +} +export class NullLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NULL(): TerminalNode { + return this.getToken(esql_parser.NULL, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterNullLiteral) { + listener.enterNullLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitNullLiteral) { + listener.exitNullLiteral(this); + } + } +} +export class QualifiedIntegerLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public integerValue(): IntegerValueContext { + return this.getTypedRuleContext(IntegerValueContext, 0) as IntegerValueContext; + } + public UNQUOTED_IDENTIFIER(): TerminalNode { + return this.getToken(esql_parser.UNQUOTED_IDENTIFIER, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterQualifiedIntegerLiteral) { + listener.enterQualifiedIntegerLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitQualifiedIntegerLiteral) { + listener.exitQualifiedIntegerLiteral(this); + } + } +} +export class StringArrayLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.OPENING_BRACKET, 0); + } + public string__list(): StringContext[] { + return this.getTypedRuleContexts(StringContext) as StringContext[]; + } + public string_(i: number): StringContext { + return this.getTypedRuleContext(StringContext, i) as StringContext; + } + public CLOSING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.CLOSING_BRACKET, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterStringArrayLiteral) { + listener.enterStringArrayLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitStringArrayLiteral) { + listener.exitStringArrayLiteral(this); + } + } +} +export class StringLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public string_(): StringContext { + return this.getTypedRuleContext(StringContext, 0) as StringContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterStringLiteral) { + listener.enterStringLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitStringLiteral) { + listener.exitStringLiteral(this); + } + } +} +export class NumericArrayLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public OPENING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.OPENING_BRACKET, 0); + } + public numericValue_list(): NumericValueContext[] { + return this.getTypedRuleContexts(NumericValueContext) as NumericValueContext[]; + } + public numericValue(i: number): NumericValueContext { + return this.getTypedRuleContext(NumericValueContext, i) as NumericValueContext; + } + public CLOSING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.CLOSING_BRACKET, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterNumericArrayLiteral) { + listener.enterNumericArrayLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitNumericArrayLiteral) { + listener.exitNumericArrayLiteral(this); + } + } +} +export class InputParamContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public PARAM(): TerminalNode { + return this.getToken(esql_parser.PARAM, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterInputParam) { + listener.enterInputParam(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitInputParam) { + listener.exitInputParam(this); + } + } +} +export class IntegerLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public integerValue(): IntegerValueContext { + return this.getTypedRuleContext(IntegerValueContext, 0) as IntegerValueContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIntegerLiteral) { + listener.enterIntegerLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIntegerLiteral) { + listener.exitIntegerLiteral(this); + } + } +} +export class BooleanLiteralContext extends ConstantContext { + constructor(parser: esql_parser, ctx: ConstantContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public booleanValue(): BooleanValueContext { + return this.getTypedRuleContext(BooleanValueContext, 0) as BooleanValueContext; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterBooleanLiteral) { + listener.enterBooleanLiteral(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitBooleanLiteral) { + listener.exitBooleanLiteral(this); + } + } +} + + +export class LimitCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LIMIT(): TerminalNode { + return this.getToken(esql_parser.LIMIT, 0); + } + public INTEGER_LITERAL(): TerminalNode { + return this.getToken(esql_parser.INTEGER_LITERAL, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_limitCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterLimitCommand) { + listener.enterLimitCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitLimitCommand) { + listener.exitLimitCommand(this); + } + } +} + + +export class SortCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public SORT(): TerminalNode { + return this.getToken(esql_parser.SORT, 0); + } + public orderExpression_list(): OrderExpressionContext[] { + return this.getTypedRuleContexts(OrderExpressionContext) as OrderExpressionContext[]; + } + public orderExpression(i: number): OrderExpressionContext { + return this.getTypedRuleContext(OrderExpressionContext, i) as OrderExpressionContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_sortCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterSortCommand) { + listener.enterSortCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitSortCommand) { + listener.exitSortCommand(this); + } + } +} + + +export class OrderExpressionContext extends ParserRuleContext { + public _ordering!: Token; + public _nullOrdering!: Token; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public booleanExpression(): BooleanExpressionContext { + return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; + } + public NULLS(): TerminalNode { + return this.getToken(esql_parser.NULLS, 0); + } + public ASC(): TerminalNode { + return this.getToken(esql_parser.ASC, 0); + } + public DESC(): TerminalNode { + return this.getToken(esql_parser.DESC, 0); + } + public FIRST(): TerminalNode { + return this.getToken(esql_parser.FIRST, 0); + } + public LAST(): TerminalNode { + return this.getToken(esql_parser.LAST, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_orderExpression; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterOrderExpression) { + listener.enterOrderExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitOrderExpression) { + listener.exitOrderExpression(this); + } + } +} + + +export class KeepCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public KEEP(): TerminalNode { + return this.getToken(esql_parser.KEEP, 0); + } + public qualifiedNamePattern_list(): QualifiedNamePatternContext[] { + return this.getTypedRuleContexts(QualifiedNamePatternContext) as QualifiedNamePatternContext[]; + } + public qualifiedNamePattern(i: number): QualifiedNamePatternContext { + return this.getTypedRuleContext(QualifiedNamePatternContext, i) as QualifiedNamePatternContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_keepCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterKeepCommand) { + listener.enterKeepCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitKeepCommand) { + listener.exitKeepCommand(this); + } + } +} + + +export class DropCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DROP(): TerminalNode { + return this.getToken(esql_parser.DROP, 0); + } + public qualifiedNamePattern_list(): QualifiedNamePatternContext[] { + return this.getTypedRuleContexts(QualifiedNamePatternContext) as QualifiedNamePatternContext[]; + } + public qualifiedNamePattern(i: number): QualifiedNamePatternContext { + return this.getTypedRuleContext(QualifiedNamePatternContext, i) as QualifiedNamePatternContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_dropCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDropCommand) { + listener.enterDropCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDropCommand) { + listener.exitDropCommand(this); + } + } +} + + +export class RenameCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public RENAME(): TerminalNode { + return this.getToken(esql_parser.RENAME, 0); + } + public renameClause_list(): RenameClauseContext[] { + return this.getTypedRuleContexts(RenameClauseContext) as RenameClauseContext[]; + } + public renameClause(i: number): RenameClauseContext { + return this.getTypedRuleContext(RenameClauseContext, i) as RenameClauseContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_renameCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterRenameCommand) { + listener.enterRenameCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitRenameCommand) { + listener.exitRenameCommand(this); + } + } +} + + +export class RenameClauseContext extends ParserRuleContext { + public _oldName!: QualifiedNamePatternContext; + public _newName!: QualifiedNamePatternContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public AS(): TerminalNode { + return this.getToken(esql_parser.AS, 0); + } + public qualifiedNamePattern_list(): QualifiedNamePatternContext[] { + return this.getTypedRuleContexts(QualifiedNamePatternContext) as QualifiedNamePatternContext[]; + } + public qualifiedNamePattern(i: number): QualifiedNamePatternContext { + return this.getTypedRuleContext(QualifiedNamePatternContext, i) as QualifiedNamePatternContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_renameClause; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterRenameClause) { + listener.enterRenameClause(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitRenameClause) { + listener.exitRenameClause(this); + } + } +} + + +export class DissectCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DISSECT(): TerminalNode { + return this.getToken(esql_parser.DISSECT, 0); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getTypedRuleContext(PrimaryExpressionContext, 0) as PrimaryExpressionContext; + } + public string_(): StringContext { + return this.getTypedRuleContext(StringContext, 0) as StringContext; + } + public commandOptions(): CommandOptionsContext { + return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_dissectCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDissectCommand) { + listener.enterDissectCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDissectCommand) { + listener.exitDissectCommand(this); + } + } +} + + +export class GrokCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public GROK(): TerminalNode { + return this.getToken(esql_parser.GROK, 0); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getTypedRuleContext(PrimaryExpressionContext, 0) as PrimaryExpressionContext; + } + public string_(): StringContext { + return this.getTypedRuleContext(StringContext, 0) as StringContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_grokCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterGrokCommand) { + listener.enterGrokCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitGrokCommand) { + listener.exitGrokCommand(this); + } + } +} + + +export class MvExpandCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public MV_EXPAND(): TerminalNode { + return this.getToken(esql_parser.MV_EXPAND, 0); + } + public qualifiedName(): QualifiedNameContext { + return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_mvExpandCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterMvExpandCommand) { + listener.enterMvExpandCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitMvExpandCommand) { + listener.exitMvExpandCommand(this); + } + } +} + + +export class CommandOptionsContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public commandOption_list(): CommandOptionContext[] { + return this.getTypedRuleContexts(CommandOptionContext) as CommandOptionContext[]; + } + public commandOption(i: number): CommandOptionContext { + return this.getTypedRuleContext(CommandOptionContext, i) as CommandOptionContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_commandOptions; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterCommandOptions) { + listener.enterCommandOptions(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitCommandOptions) { + listener.exitCommandOptions(this); + } + } +} + + +export class CommandOptionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; + } + public ASSIGN(): TerminalNode { + return this.getToken(esql_parser.ASSIGN, 0); + } + public constant(): ConstantContext { + return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_commandOption; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterCommandOption) { + listener.enterCommandOption(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitCommandOption) { + listener.exitCommandOption(this); + } + } +} + + +export class BooleanValueContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public TRUE(): TerminalNode { + return this.getToken(esql_parser.TRUE, 0); + } + public FALSE(): TerminalNode { + return this.getToken(esql_parser.FALSE, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_booleanValue; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterBooleanValue) { + listener.enterBooleanValue(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitBooleanValue) { + listener.exitBooleanValue(this); + } + } +} + + +export class NumericValueContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public decimalValue(): DecimalValueContext { + return this.getTypedRuleContext(DecimalValueContext, 0) as DecimalValueContext; + } + public integerValue(): IntegerValueContext { + return this.getTypedRuleContext(IntegerValueContext, 0) as IntegerValueContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_numericValue; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterNumericValue) { + listener.enterNumericValue(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitNumericValue) { + listener.exitNumericValue(this); + } + } +} + + +export class DecimalValueContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DECIMAL_LITERAL(): TerminalNode { + return this.getToken(esql_parser.DECIMAL_LITERAL, 0); + } + public PLUS(): TerminalNode { + return this.getToken(esql_parser.PLUS, 0); + } + public MINUS(): TerminalNode { + return this.getToken(esql_parser.MINUS, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_decimalValue; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterDecimalValue) { + listener.enterDecimalValue(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitDecimalValue) { + listener.exitDecimalValue(this); + } + } +} + + +export class IntegerValueContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public INTEGER_LITERAL(): TerminalNode { + return this.getToken(esql_parser.INTEGER_LITERAL, 0); + } + public PLUS(): TerminalNode { + return this.getToken(esql_parser.PLUS, 0); + } + public MINUS(): TerminalNode { + return this.getToken(esql_parser.MINUS, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_integerValue; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterIntegerValue) { + listener.enterIntegerValue(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitIntegerValue) { + listener.exitIntegerValue(this); + } + } +} + + +export class StringContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public STRING(): TerminalNode { + return this.getToken(esql_parser.STRING, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_string; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterString) { + listener.enterString(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitString) { + listener.exitString(this); + } + } +} + + +export class ComparisonOperatorContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public EQ(): TerminalNode { + return this.getToken(esql_parser.EQ, 0); + } + public CIEQ(): TerminalNode { + return this.getToken(esql_parser.CIEQ, 0); + } + public NEQ(): TerminalNode { + return this.getToken(esql_parser.NEQ, 0); + } + public LT(): TerminalNode { + return this.getToken(esql_parser.LT, 0); + } + public LTE(): TerminalNode { + return this.getToken(esql_parser.LTE, 0); + } + public GT(): TerminalNode { + return this.getToken(esql_parser.GT, 0); + } + public GTE(): TerminalNode { + return this.getToken(esql_parser.GTE, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_comparisonOperator; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterComparisonOperator) { + listener.enterComparisonOperator(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitComparisonOperator) { + listener.exitComparisonOperator(this); + } + } +} + + +export class ExplainCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public EXPLAIN(): TerminalNode { + return this.getToken(esql_parser.EXPLAIN, 0); + } + public subqueryExpression(): SubqueryExpressionContext { + return this.getTypedRuleContext(SubqueryExpressionContext, 0) as SubqueryExpressionContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_explainCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterExplainCommand) { + listener.enterExplainCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitExplainCommand) { + listener.exitExplainCommand(this); + } + } +} + + +export class SubqueryExpressionContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public OPENING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.OPENING_BRACKET, 0); + } + public query(): QueryContext { + return this.getTypedRuleContext(QueryContext, 0) as QueryContext; + } + public CLOSING_BRACKET(): TerminalNode { + return this.getToken(esql_parser.CLOSING_BRACKET, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_subqueryExpression; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterSubqueryExpression) { + listener.enterSubqueryExpression(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitSubqueryExpression) { + listener.exitSubqueryExpression(this); + } + } +} + + +export class ShowCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return esql_parser.RULE_showCommand; + } + public copyFrom(ctx: ShowCommandContext): void { + super.copyFrom(ctx); + } +} +export class ShowInfoContext extends ShowCommandContext { + constructor(parser: esql_parser, ctx: ShowCommandContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public SHOW(): TerminalNode { + return this.getToken(esql_parser.SHOW, 0); + } + public INFO(): TerminalNode { + return this.getToken(esql_parser.INFO, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterShowInfo) { + listener.enterShowInfo(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitShowInfo) { + listener.exitShowInfo(this); + } + } +} +export class ShowFunctionsContext extends ShowCommandContext { + constructor(parser: esql_parser, ctx: ShowCommandContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public SHOW(): TerminalNode { + return this.getToken(esql_parser.SHOW, 0); + } + public FUNCTIONS(): TerminalNode { + return this.getToken(esql_parser.FUNCTIONS, 0); + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterShowFunctions) { + listener.enterShowFunctions(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitShowFunctions) { + listener.exitShowFunctions(this); + } + } +} + + +export class EnrichCommandContext extends ParserRuleContext { + public _policyName!: Token; + public _matchField!: QualifiedNamePatternContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ENRICH(): TerminalNode { + return this.getToken(esql_parser.ENRICH, 0); + } + public ENRICH_POLICY_NAME(): TerminalNode { + return this.getToken(esql_parser.ENRICH_POLICY_NAME, 0); + } + public ON(): TerminalNode { + return this.getToken(esql_parser.ON, 0); + } + public WITH(): TerminalNode { + return this.getToken(esql_parser.WITH, 0); + } + public enrichWithClause_list(): EnrichWithClauseContext[] { + return this.getTypedRuleContexts(EnrichWithClauseContext) as EnrichWithClauseContext[]; + } + public enrichWithClause(i: number): EnrichWithClauseContext { + return this.getTypedRuleContext(EnrichWithClauseContext, i) as EnrichWithClauseContext; + } + public qualifiedNamePattern(): QualifiedNamePatternContext { + return this.getTypedRuleContext(QualifiedNamePatternContext, 0) as QualifiedNamePatternContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(esql_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(esql_parser.COMMA, i); + } + public get ruleIndex(): number { + return esql_parser.RULE_enrichCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterEnrichCommand) { + listener.enterEnrichCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitEnrichCommand) { + listener.exitEnrichCommand(this); + } + } +} + + +export class EnrichWithClauseContext extends ParserRuleContext { + public _newName!: QualifiedNamePatternContext; + public _enrichField!: QualifiedNamePatternContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public qualifiedNamePattern_list(): QualifiedNamePatternContext[] { + return this.getTypedRuleContexts(QualifiedNamePatternContext) as QualifiedNamePatternContext[]; + } + public qualifiedNamePattern(i: number): QualifiedNamePatternContext { + return this.getTypedRuleContext(QualifiedNamePatternContext, i) as QualifiedNamePatternContext; + } + public ASSIGN(): TerminalNode { + return this.getToken(esql_parser.ASSIGN, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_enrichWithClause; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterEnrichWithClause) { + listener.enterEnrichWithClause(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitEnrichWithClause) { + listener.exitEnrichWithClause(this); + } + } +} diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts new file mode 100644 index 0000000000000..d340b1176084d --- /dev/null +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts @@ -0,0 +1,876 @@ +// @ts-nocheck +// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.13.1 + +import {ParseTreeListener} from "antlr4"; + + +import { SingleStatementContext } from "./esql_parser"; +import { CompositeQueryContext } from "./esql_parser"; +import { SingleCommandQueryContext } from "./esql_parser"; +import { SourceCommandContext } from "./esql_parser"; +import { ProcessingCommandContext } from "./esql_parser"; +import { WhereCommandContext } from "./esql_parser"; +import { LogicalNotContext } from "./esql_parser"; +import { BooleanDefaultContext } from "./esql_parser"; +import { IsNullContext } from "./esql_parser"; +import { RegexExpressionContext } from "./esql_parser"; +import { LogicalInContext } from "./esql_parser"; +import { LogicalBinaryContext } from "./esql_parser"; +import { RegexBooleanExpressionContext } from "./esql_parser"; +import { ValueExpressionDefaultContext } from "./esql_parser"; +import { ComparisonContext } from "./esql_parser"; +import { OperatorExpressionDefaultContext } from "./esql_parser"; +import { ArithmeticBinaryContext } from "./esql_parser"; +import { ArithmeticUnaryContext } from "./esql_parser"; +import { ConstantDefaultContext } from "./esql_parser"; +import { DereferenceContext } from "./esql_parser"; +import { FunctionContext } from "./esql_parser"; +import { ParenthesizedExpressionContext } from "./esql_parser"; +import { FunctionExpressionContext } from "./esql_parser"; +import { RowCommandContext } from "./esql_parser"; +import { FieldsContext } from "./esql_parser"; +import { FieldContext } from "./esql_parser"; +import { FromCommandContext } from "./esql_parser"; +import { MetadataContext } from "./esql_parser"; +import { MetadataOptionContext } from "./esql_parser"; +import { Deprecated_metadataContext } from "./esql_parser"; +import { EvalCommandContext } from "./esql_parser"; +import { StatsCommandContext } from "./esql_parser"; +import { InlinestatsCommandContext } from "./esql_parser"; +import { FromIdentifierContext } from "./esql_parser"; +import { QualifiedNameContext } from "./esql_parser"; +import { QualifiedNamePatternContext } from "./esql_parser"; +import { IdentifierContext } from "./esql_parser"; +import { IdentifierPatternContext } from "./esql_parser"; +import { IdPatternContext } from "./esql_parser"; +import { NullLiteralContext } from "./esql_parser"; +import { QualifiedIntegerLiteralContext } from "./esql_parser"; +import { DecimalLiteralContext } from "./esql_parser"; +import { IntegerLiteralContext } from "./esql_parser"; +import { BooleanLiteralContext } from "./esql_parser"; +import { InputParamContext } from "./esql_parser"; +import { StringLiteralContext } from "./esql_parser"; +import { NumericArrayLiteralContext } from "./esql_parser"; +import { BooleanArrayLiteralContext } from "./esql_parser"; +import { StringArrayLiteralContext } from "./esql_parser"; +import { LimitCommandContext } from "./esql_parser"; +import { SortCommandContext } from "./esql_parser"; +import { OrderExpressionContext } from "./esql_parser"; +import { KeepCommandContext } from "./esql_parser"; +import { DropCommandContext } from "./esql_parser"; +import { RenameCommandContext } from "./esql_parser"; +import { RenameClauseContext } from "./esql_parser"; +import { DissectCommandContext } from "./esql_parser"; +import { GrokCommandContext } from "./esql_parser"; +import { MvExpandCommandContext } from "./esql_parser"; +import { CommandOptionsContext } from "./esql_parser"; +import { CommandOptionContext } from "./esql_parser"; +import { BooleanValueContext } from "./esql_parser"; +import { NumericValueContext } from "./esql_parser"; +import { DecimalValueContext } from "./esql_parser"; +import { IntegerValueContext } from "./esql_parser"; +import { StringContext } from "./esql_parser"; +import { ComparisonOperatorContext } from "./esql_parser"; +import { ExplainCommandContext } from "./esql_parser"; +import { SubqueryExpressionContext } from "./esql_parser"; +import { ShowInfoContext } from "./esql_parser"; +import { ShowFunctionsContext } from "./esql_parser"; +import { EnrichCommandContext } from "./esql_parser"; +import { EnrichWithClauseContext } from "./esql_parser"; + + +/** + * This interface defines a complete listener for a parse tree produced by + * `esql_parser`. + */ +export default class esql_parserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by `esql_parser.singleStatement`. + * @param ctx the parse tree + */ + enterSingleStatement?: (ctx: SingleStatementContext) => void; + /** + * Exit a parse tree produced by `esql_parser.singleStatement`. + * @param ctx the parse tree + */ + exitSingleStatement?: (ctx: SingleStatementContext) => void; + /** + * Enter a parse tree produced by the `compositeQuery` + * labeled alternative in `esql_parser.query`. + * @param ctx the parse tree + */ + enterCompositeQuery?: (ctx: CompositeQueryContext) => void; + /** + * Exit a parse tree produced by the `compositeQuery` + * labeled alternative in `esql_parser.query`. + * @param ctx the parse tree + */ + exitCompositeQuery?: (ctx: CompositeQueryContext) => void; + /** + * Enter a parse tree produced by the `singleCommandQuery` + * labeled alternative in `esql_parser.query`. + * @param ctx the parse tree + */ + enterSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; + /** + * Exit a parse tree produced by the `singleCommandQuery` + * labeled alternative in `esql_parser.query`. + * @param ctx the parse tree + */ + exitSingleCommandQuery?: (ctx: SingleCommandQueryContext) => void; + /** + * Enter a parse tree produced by `esql_parser.sourceCommand`. + * @param ctx the parse tree + */ + enterSourceCommand?: (ctx: SourceCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.sourceCommand`. + * @param ctx the parse tree + */ + exitSourceCommand?: (ctx: SourceCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.processingCommand`. + * @param ctx the parse tree + */ + enterProcessingCommand?: (ctx: ProcessingCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.processingCommand`. + * @param ctx the parse tree + */ + exitProcessingCommand?: (ctx: ProcessingCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.whereCommand`. + * @param ctx the parse tree + */ + enterWhereCommand?: (ctx: WhereCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.whereCommand`. + * @param ctx the parse tree + */ + exitWhereCommand?: (ctx: WhereCommandContext) => void; + /** + * Enter a parse tree produced by the `logicalNot` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Exit a parse tree produced by the `logicalNot` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Enter a parse tree produced by the `booleanDefault` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterBooleanDefault?: (ctx: BooleanDefaultContext) => void; + /** + * Exit a parse tree produced by the `booleanDefault` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitBooleanDefault?: (ctx: BooleanDefaultContext) => void; + /** + * Enter a parse tree produced by the `isNull` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterIsNull?: (ctx: IsNullContext) => void; + /** + * Exit a parse tree produced by the `isNull` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitIsNull?: (ctx: IsNullContext) => void; + /** + * Enter a parse tree produced by the `regexExpression` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterRegexExpression?: (ctx: RegexExpressionContext) => void; + /** + * Exit a parse tree produced by the `regexExpression` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitRegexExpression?: (ctx: RegexExpressionContext) => void; + /** + * Enter a parse tree produced by the `logicalIn` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalIn?: (ctx: LogicalInContext) => void; + /** + * Exit a parse tree produced by the `logicalIn` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalIn?: (ctx: LogicalInContext) => void; + /** + * Enter a parse tree produced by the `logicalBinary` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; + /** + * Exit a parse tree produced by the `logicalBinary` + * labeled alternative in `esql_parser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; + /** + * Enter a parse tree produced by `esql_parser.regexBooleanExpression`. + * @param ctx the parse tree + */ + enterRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.regexBooleanExpression`. + * @param ctx the parse tree + */ + exitRegexBooleanExpression?: (ctx: RegexBooleanExpressionContext) => void; + /** + * Enter a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `esql_parser.valueExpression`. + * @param ctx the parse tree + */ + enterValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; + /** + * Exit a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `esql_parser.valueExpression`. + * @param ctx the parse tree + */ + exitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; + /** + * Enter a parse tree produced by the `comparison` + * labeled alternative in `esql_parser.valueExpression`. + * @param ctx the parse tree + */ + enterComparison?: (ctx: ComparisonContext) => void; + /** + * Exit a parse tree produced by the `comparison` + * labeled alternative in `esql_parser.valueExpression`. + * @param ctx the parse tree + */ + exitComparison?: (ctx: ComparisonContext) => void; + /** + * Enter a parse tree produced by the `operatorExpressionDefault` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + enterOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; + /** + * Exit a parse tree produced by the `operatorExpressionDefault` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + exitOperatorExpressionDefault?: (ctx: OperatorExpressionDefaultContext) => void; + /** + * Enter a parse tree produced by the `arithmeticBinary` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + enterArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; + /** + * Exit a parse tree produced by the `arithmeticBinary` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + exitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; + /** + * Enter a parse tree produced by the `arithmeticUnary` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + enterArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; + /** + * Exit a parse tree produced by the `arithmeticUnary` + * labeled alternative in `esql_parser.operatorExpression`. + * @param ctx the parse tree + */ + exitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; + /** + * Enter a parse tree produced by the `constantDefault` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + enterConstantDefault?: (ctx: ConstantDefaultContext) => void; + /** + * Exit a parse tree produced by the `constantDefault` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + exitConstantDefault?: (ctx: ConstantDefaultContext) => void; + /** + * Enter a parse tree produced by the `dereference` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + enterDereference?: (ctx: DereferenceContext) => void; + /** + * Exit a parse tree produced by the `dereference` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + exitDereference?: (ctx: DereferenceContext) => void; + /** + * Enter a parse tree produced by the `function` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + enterFunction?: (ctx: FunctionContext) => void; + /** + * Exit a parse tree produced by the `function` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + exitFunction?: (ctx: FunctionContext) => void; + /** + * Enter a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Exit a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `esql_parser.primaryExpression`. + * @param ctx the parse tree + */ + exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.functionExpression`. + * @param ctx the parse tree + */ + enterFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.functionExpression`. + * @param ctx the parse tree + */ + exitFunctionExpression?: (ctx: FunctionExpressionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.rowCommand`. + * @param ctx the parse tree + */ + enterRowCommand?: (ctx: RowCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.rowCommand`. + * @param ctx the parse tree + */ + exitRowCommand?: (ctx: RowCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.fields`. + * @param ctx the parse tree + */ + enterFields?: (ctx: FieldsContext) => void; + /** + * Exit a parse tree produced by `esql_parser.fields`. + * @param ctx the parse tree + */ + exitFields?: (ctx: FieldsContext) => void; + /** + * Enter a parse tree produced by `esql_parser.field`. + * @param ctx the parse tree + */ + enterField?: (ctx: FieldContext) => void; + /** + * Exit a parse tree produced by `esql_parser.field`. + * @param ctx the parse tree + */ + exitField?: (ctx: FieldContext) => void; + /** + * Enter a parse tree produced by `esql_parser.fromCommand`. + * @param ctx the parse tree + */ + enterFromCommand?: (ctx: FromCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.fromCommand`. + * @param ctx the parse tree + */ + exitFromCommand?: (ctx: FromCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.metadata`. + * @param ctx the parse tree + */ + enterMetadata?: (ctx: MetadataContext) => void; + /** + * Exit a parse tree produced by `esql_parser.metadata`. + * @param ctx the parse tree + */ + exitMetadata?: (ctx: MetadataContext) => void; + /** + * Enter a parse tree produced by `esql_parser.metadataOption`. + * @param ctx the parse tree + */ + enterMetadataOption?: (ctx: MetadataOptionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.metadataOption`. + * @param ctx the parse tree + */ + exitMetadataOption?: (ctx: MetadataOptionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.deprecated_metadata`. + * @param ctx the parse tree + */ + enterDeprecated_metadata?: (ctx: Deprecated_metadataContext) => void; + /** + * Exit a parse tree produced by `esql_parser.deprecated_metadata`. + * @param ctx the parse tree + */ + exitDeprecated_metadata?: (ctx: Deprecated_metadataContext) => void; + /** + * Enter a parse tree produced by `esql_parser.evalCommand`. + * @param ctx the parse tree + */ + enterEvalCommand?: (ctx: EvalCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.evalCommand`. + * @param ctx the parse tree + */ + exitEvalCommand?: (ctx: EvalCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.statsCommand`. + * @param ctx the parse tree + */ + enterStatsCommand?: (ctx: StatsCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.statsCommand`. + * @param ctx the parse tree + */ + exitStatsCommand?: (ctx: StatsCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.inlinestatsCommand`. + * @param ctx the parse tree + */ + enterInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.inlinestatsCommand`. + * @param ctx the parse tree + */ + exitInlinestatsCommand?: (ctx: InlinestatsCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.fromIdentifier`. + * @param ctx the parse tree + */ + enterFromIdentifier?: (ctx: FromIdentifierContext) => void; + /** + * Exit a parse tree produced by `esql_parser.fromIdentifier`. + * @param ctx the parse tree + */ + exitFromIdentifier?: (ctx: FromIdentifierContext) => void; + /** + * Enter a parse tree produced by `esql_parser.qualifiedName`. + * @param ctx the parse tree + */ + enterQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Exit a parse tree produced by `esql_parser.qualifiedName`. + * @param ctx the parse tree + */ + exitQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Enter a parse tree produced by `esql_parser.qualifiedNamePattern`. + * @param ctx the parse tree + */ + enterQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; + /** + * Exit a parse tree produced by `esql_parser.qualifiedNamePattern`. + * @param ctx the parse tree + */ + exitQualifiedNamePattern?: (ctx: QualifiedNamePatternContext) => void; + /** + * Enter a parse tree produced by `esql_parser.identifier`. + * @param ctx the parse tree + */ + enterIdentifier?: (ctx: IdentifierContext) => void; + /** + * Exit a parse tree produced by `esql_parser.identifier`. + * @param ctx the parse tree + */ + exitIdentifier?: (ctx: IdentifierContext) => void; + /** + * Enter a parse tree produced by `esql_parser.identifierPattern`. + * @param ctx the parse tree + */ + enterIdentifierPattern?: (ctx: IdentifierPatternContext) => void; + /** + * Exit a parse tree produced by `esql_parser.identifierPattern`. + * @param ctx the parse tree + */ + exitIdentifierPattern?: (ctx: IdentifierPatternContext) => void; + /** + * Enter a parse tree produced by `esql_parser.idPattern`. + * @param ctx the parse tree + */ + enterIdPattern?: (ctx: IdPatternContext) => void; + /** + * Exit a parse tree produced by `esql_parser.idPattern`. + * @param ctx the parse tree + */ + exitIdPattern?: (ctx: IdPatternContext) => void; + /** + * Enter a parse tree produced by the `nullLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterNullLiteral?: (ctx: NullLiteralContext) => void; + /** + * Exit a parse tree produced by the `nullLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitNullLiteral?: (ctx: NullLiteralContext) => void; + /** + * Enter a parse tree produced by the `qualifiedIntegerLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; + /** + * Exit a parse tree produced by the `qualifiedIntegerLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitQualifiedIntegerLiteral?: (ctx: QualifiedIntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `decimalLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterDecimalLiteral?: (ctx: DecimalLiteralContext) => void; + /** + * Exit a parse tree produced by the `decimalLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitDecimalLiteral?: (ctx: DecimalLiteralContext) => void; + /** + * Enter a parse tree produced by the `integerLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Exit a parse tree produced by the `integerLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `booleanLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Exit a parse tree produced by the `booleanLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Enter a parse tree produced by the `inputParam` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterInputParam?: (ctx: InputParamContext) => void; + /** + * Exit a parse tree produced by the `inputParam` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitInputParam?: (ctx: InputParamContext) => void; + /** + * Enter a parse tree produced by the `stringLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterStringLiteral?: (ctx: StringLiteralContext) => void; + /** + * Exit a parse tree produced by the `stringLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitStringLiteral?: (ctx: StringLiteralContext) => void; + /** + * Enter a parse tree produced by the `numericArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `numericArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitNumericArrayLiteral?: (ctx: NumericArrayLiteralContext) => void; + /** + * Enter a parse tree produced by the `booleanArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `booleanArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitBooleanArrayLiteral?: (ctx: BooleanArrayLiteralContext) => void; + /** + * Enter a parse tree produced by the `stringArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + enterStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; + /** + * Exit a parse tree produced by the `stringArrayLiteral` + * labeled alternative in `esql_parser.constant`. + * @param ctx the parse tree + */ + exitStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void; + /** + * Enter a parse tree produced by `esql_parser.limitCommand`. + * @param ctx the parse tree + */ + enterLimitCommand?: (ctx: LimitCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.limitCommand`. + * @param ctx the parse tree + */ + exitLimitCommand?: (ctx: LimitCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.sortCommand`. + * @param ctx the parse tree + */ + enterSortCommand?: (ctx: SortCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.sortCommand`. + * @param ctx the parse tree + */ + exitSortCommand?: (ctx: SortCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.orderExpression`. + * @param ctx the parse tree + */ + enterOrderExpression?: (ctx: OrderExpressionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.orderExpression`. + * @param ctx the parse tree + */ + exitOrderExpression?: (ctx: OrderExpressionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.keepCommand`. + * @param ctx the parse tree + */ + enterKeepCommand?: (ctx: KeepCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.keepCommand`. + * @param ctx the parse tree + */ + exitKeepCommand?: (ctx: KeepCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.dropCommand`. + * @param ctx the parse tree + */ + enterDropCommand?: (ctx: DropCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.dropCommand`. + * @param ctx the parse tree + */ + exitDropCommand?: (ctx: DropCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.renameCommand`. + * @param ctx the parse tree + */ + enterRenameCommand?: (ctx: RenameCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.renameCommand`. + * @param ctx the parse tree + */ + exitRenameCommand?: (ctx: RenameCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.renameClause`. + * @param ctx the parse tree + */ + enterRenameClause?: (ctx: RenameClauseContext) => void; + /** + * Exit a parse tree produced by `esql_parser.renameClause`. + * @param ctx the parse tree + */ + exitRenameClause?: (ctx: RenameClauseContext) => void; + /** + * Enter a parse tree produced by `esql_parser.dissectCommand`. + * @param ctx the parse tree + */ + enterDissectCommand?: (ctx: DissectCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.dissectCommand`. + * @param ctx the parse tree + */ + exitDissectCommand?: (ctx: DissectCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.grokCommand`. + * @param ctx the parse tree + */ + enterGrokCommand?: (ctx: GrokCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.grokCommand`. + * @param ctx the parse tree + */ + exitGrokCommand?: (ctx: GrokCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.mvExpandCommand`. + * @param ctx the parse tree + */ + enterMvExpandCommand?: (ctx: MvExpandCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.mvExpandCommand`. + * @param ctx the parse tree + */ + exitMvExpandCommand?: (ctx: MvExpandCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.commandOptions`. + * @param ctx the parse tree + */ + enterCommandOptions?: (ctx: CommandOptionsContext) => void; + /** + * Exit a parse tree produced by `esql_parser.commandOptions`. + * @param ctx the parse tree + */ + exitCommandOptions?: (ctx: CommandOptionsContext) => void; + /** + * Enter a parse tree produced by `esql_parser.commandOption`. + * @param ctx the parse tree + */ + enterCommandOption?: (ctx: CommandOptionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.commandOption`. + * @param ctx the parse tree + */ + exitCommandOption?: (ctx: CommandOptionContext) => void; + /** + * Enter a parse tree produced by `esql_parser.booleanValue`. + * @param ctx the parse tree + */ + enterBooleanValue?: (ctx: BooleanValueContext) => void; + /** + * Exit a parse tree produced by `esql_parser.booleanValue`. + * @param ctx the parse tree + */ + exitBooleanValue?: (ctx: BooleanValueContext) => void; + /** + * Enter a parse tree produced by `esql_parser.numericValue`. + * @param ctx the parse tree + */ + enterNumericValue?: (ctx: NumericValueContext) => void; + /** + * Exit a parse tree produced by `esql_parser.numericValue`. + * @param ctx the parse tree + */ + exitNumericValue?: (ctx: NumericValueContext) => void; + /** + * Enter a parse tree produced by `esql_parser.decimalValue`. + * @param ctx the parse tree + */ + enterDecimalValue?: (ctx: DecimalValueContext) => void; + /** + * Exit a parse tree produced by `esql_parser.decimalValue`. + * @param ctx the parse tree + */ + exitDecimalValue?: (ctx: DecimalValueContext) => void; + /** + * Enter a parse tree produced by `esql_parser.integerValue`. + * @param ctx the parse tree + */ + enterIntegerValue?: (ctx: IntegerValueContext) => void; + /** + * Exit a parse tree produced by `esql_parser.integerValue`. + * @param ctx the parse tree + */ + exitIntegerValue?: (ctx: IntegerValueContext) => void; + /** + * Enter a parse tree produced by `esql_parser.string`. + * @param ctx the parse tree + */ + enterString?: (ctx: StringContext) => void; + /** + * Exit a parse tree produced by `esql_parser.string`. + * @param ctx the parse tree + */ + exitString?: (ctx: StringContext) => void; + /** + * Enter a parse tree produced by `esql_parser.comparisonOperator`. + * @param ctx the parse tree + */ + enterComparisonOperator?: (ctx: ComparisonOperatorContext) => void; + /** + * Exit a parse tree produced by `esql_parser.comparisonOperator`. + * @param ctx the parse tree + */ + exitComparisonOperator?: (ctx: ComparisonOperatorContext) => void; + /** + * Enter a parse tree produced by `esql_parser.explainCommand`. + * @param ctx the parse tree + */ + enterExplainCommand?: (ctx: ExplainCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.explainCommand`. + * @param ctx the parse tree + */ + exitExplainCommand?: (ctx: ExplainCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.subqueryExpression`. + * @param ctx the parse tree + */ + enterSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + /** + * Exit a parse tree produced by `esql_parser.subqueryExpression`. + * @param ctx the parse tree + */ + exitSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + /** + * Enter a parse tree produced by the `showInfo` + * labeled alternative in `esql_parser.showCommand`. + * @param ctx the parse tree + */ + enterShowInfo?: (ctx: ShowInfoContext) => void; + /** + * Exit a parse tree produced by the `showInfo` + * labeled alternative in `esql_parser.showCommand`. + * @param ctx the parse tree + */ + exitShowInfo?: (ctx: ShowInfoContext) => void; + /** + * Enter a parse tree produced by the `showFunctions` + * labeled alternative in `esql_parser.showCommand`. + * @param ctx the parse tree + */ + enterShowFunctions?: (ctx: ShowFunctionsContext) => void; + /** + * Exit a parse tree produced by the `showFunctions` + * labeled alternative in `esql_parser.showCommand`. + * @param ctx the parse tree + */ + exitShowFunctions?: (ctx: ShowFunctionsContext) => void; + /** + * Enter a parse tree produced by `esql_parser.enrichCommand`. + * @param ctx the parse tree + */ + enterEnrichCommand?: (ctx: EnrichCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.enrichCommand`. + * @param ctx the parse tree + */ + exitEnrichCommand?: (ctx: EnrichCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.enrichWithClause`. + * @param ctx the parse tree + */ + enterEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; + /** + * Exit a parse tree produced by `esql_parser.enrichWithClause`. + * @param ctx the parse tree + */ + exitEnrichWithClause?: (ctx: EnrichWithClauseContext) => void; +} + diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index cb688d7847c6d..cde1a9cf654af 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -10,10 +10,7 @@ * In case of changes in the grammar, this script should be updated: esql_update_ast_script.js */ -import { Token } from 'antlr4'; -import type { ParserRuleContext } from 'antlr4/ParserRuleContext'; -import { ErrorNode } from 'antlr4/tree/ErrorNode'; -import type { TerminalNode } from 'antlr4/tree/TerminalNode'; +import { Token, ErrorNode, type ParserRuleContext, type TerminalNode } from 'antlr4'; import type { ArithmeticUnaryContext, DecimalValueContext, diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp b/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp index ab7a7e876df8e..4a39e8dd20d0c 100644 --- a/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp @@ -273,4 +273,4 @@ DEFAULT_MODE AFTER_DOT atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 88, 638, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 3, 2, 6, 2, 178, 10, 2, 13, 2, 14, 2, 179, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 188, 10, 3, 12, 3, 14, 3, 191, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 198, 10, 3, 12, 3, 14, 3, 201, 11, 3, 3, 3, 3, 3, 5, 3, 205, 10, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 6, 74, 446, 10, 74, 13, 74, 14, 74, 447, 3, 74, 5, 74, 451, 10, 74, 3, 75, 3, 75, 3, 75, 6, 75, 456, 10, 75, 13, 75, 14, 75, 457, 3, 75, 5, 75, 461, 10, 75, 3, 76, 3, 76, 3, 76, 7, 76, 466, 10, 76, 12, 76, 14, 76, 469, 11, 76, 5, 76, 471, 10, 76, 3, 76, 5, 76, 474, 10, 76, 3, 77, 3, 77, 3, 77, 7, 77, 479, 10, 77, 12, 77, 14, 77, 482, 11, 77, 5, 77, 484, 10, 77, 3, 77, 3, 77, 6, 77, 488, 10, 77, 13, 77, 14, 77, 489, 5, 77, 492, 10, 77, 3, 77, 3, 77, 5, 77, 496, 10, 77, 3, 77, 6, 77, 499, 10, 77, 13, 77, 14, 77, 500, 5, 77, 503, 10, 77, 3, 77, 5, 77, 506, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 7, 78, 514, 10, 78, 12, 78, 14, 78, 517, 11, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 7, 78, 526, 10, 78, 12, 78, 14, 78, 529, 11, 78, 3, 78, 5, 78, 532, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 6, 79, 538, 10, 79, 13, 79, 14, 79, 539, 3, 79, 3, 79, 7, 79, 544, 10, 79, 12, 79, 14, 79, 547, 11, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 605, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 7, 85, 613, 10, 85, 12, 85, 14, 85, 616, 11, 85, 3, 86, 3, 86, 3, 86, 7, 86, 621, 10, 86, 12, 86, 14, 86, 624, 11, 86, 5, 86, 626, 10, 86, 3, 86, 3, 86, 3, 87, 3, 87, 7, 87, 632, 10, 87, 12, 87, 14, 87, 635, 11, 87, 3, 87, 3, 87, 7, 189, 199, 515, 527, 539, 2, 2, 88, 4, 2, 3, 6, 2, 4, 8, 2, 5, 10, 2, 6, 12, 2, 7, 14, 2, 8, 16, 2, 9, 18, 2, 10, 20, 2, 11, 22, 2, 12, 24, 2, 13, 26, 2, 14, 28, 2, 15, 30, 2, 16, 32, 2, 17, 34, 2, 18, 36, 2, 19, 38, 2, 20, 40, 2, 21, 42, 2, 22, 44, 2, 23, 46, 2, 24, 48, 2, 25, 50, 2, 26, 52, 2, 27, 54, 2, 28, 56, 2, 29, 58, 2, 30, 60, 2, 31, 62, 2, 32, 64, 2, 33, 66, 2, 34, 68, 2, 35, 70, 2, 36, 72, 2, 37, 74, 2, 38, 76, 2, 39, 78, 2, 40, 80, 2, 41, 82, 2, 42, 84, 2, 43, 86, 2, 44, 88, 2, 45, 90, 2, 46, 92, 2, 47, 94, 2, 48, 96, 2, 49, 98, 2, 50, 100, 2, 51, 102, 2, 52, 104, 2, 53, 106, 2, 54, 108, 2, 55, 110, 2, 56, 112, 2, 57, 114, 2, 58, 116, 2, 59, 118, 2, 60, 120, 2, 61, 122, 2, 62, 124, 2, 63, 126, 2, 64, 128, 2, 65, 130, 2, 66, 132, 2, 67, 134, 2, 68, 136, 2, 69, 138, 2, 70, 140, 2, 71, 142, 2, 72, 144, 2, 73, 146, 2, 74, 148, 2, 75, 150, 2, 76, 152, 2, 77, 154, 2, 78, 156, 2, 79, 158, 2, 80, 160, 2, 81, 162, 2, 82, 164, 2, 83, 166, 2, 84, 168, 2, 85, 170, 2, 86, 172, 2, 87, 174, 2, 88, 4, 2, 3, 21, 5, 2, 11, 12, 15, 15, 34, 34, 4, 2, 12, 12, 15, 15, 3, 2, 50, 57, 4, 2, 78, 78, 110, 110, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 3, 2, 50, 59, 8, 2, 70, 70, 72, 72, 78, 78, 102, 102, 104, 104, 110, 110, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 6, 2, 70, 70, 72, 72, 102, 102, 104, 104, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 3, 2, 12, 12, 4, 2, 12, 12, 49, 49, 9, 2, 87, 87, 101, 101, 107, 107, 110, 111, 117, 117, 119, 119, 122, 122, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 2, 676, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 146, 3, 2, 2, 2, 2, 148, 3, 2, 2, 2, 2, 150, 3, 2, 2, 2, 2, 152, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 156, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 2, 170, 3, 2, 2, 2, 3, 172, 3, 2, 2, 2, 3, 174, 3, 2, 2, 2, 4, 177, 3, 2, 2, 2, 6, 204, 3, 2, 2, 2, 8, 208, 3, 2, 2, 2, 10, 210, 3, 2, 2, 2, 12, 212, 3, 2, 2, 2, 14, 214, 3, 2, 2, 2, 16, 216, 3, 2, 2, 2, 18, 218, 3, 2, 2, 2, 20, 220, 3, 2, 2, 2, 22, 222, 3, 2, 2, 2, 24, 226, 3, 2, 2, 2, 26, 231, 3, 2, 2, 2, 28, 233, 3, 2, 2, 2, 30, 235, 3, 2, 2, 2, 32, 238, 3, 2, 2, 2, 34, 241, 3, 2, 2, 2, 36, 246, 3, 2, 2, 2, 38, 252, 3, 2, 2, 2, 40, 255, 3, 2, 2, 2, 42, 259, 3, 2, 2, 2, 44, 268, 3, 2, 2, 2, 46, 274, 3, 2, 2, 2, 48, 281, 3, 2, 2, 2, 50, 285, 3, 2, 2, 2, 52, 289, 3, 2, 2, 2, 54, 295, 3, 2, 2, 2, 56, 301, 3, 2, 2, 2, 58, 306, 3, 2, 2, 2, 60, 317, 3, 2, 2, 2, 62, 319, 3, 2, 2, 2, 64, 321, 3, 2, 2, 2, 66, 323, 3, 2, 2, 2, 68, 326, 3, 2, 2, 2, 70, 328, 3, 2, 2, 2, 72, 330, 3, 2, 2, 2, 74, 332, 3, 2, 2, 2, 76, 335, 3, 2, 2, 2, 78, 338, 3, 2, 2, 2, 80, 342, 3, 2, 2, 2, 82, 344, 3, 2, 2, 2, 84, 347, 3, 2, 2, 2, 86, 349, 3, 2, 2, 2, 88, 352, 3, 2, 2, 2, 90, 355, 3, 2, 2, 2, 92, 359, 3, 2, 2, 2, 94, 362, 3, 2, 2, 2, 96, 366, 3, 2, 2, 2, 98, 368, 3, 2, 2, 2, 100, 370, 3, 2, 2, 2, 102, 372, 3, 2, 2, 2, 104, 375, 3, 2, 2, 2, 106, 378, 3, 2, 2, 2, 108, 380, 3, 2, 2, 2, 110, 382, 3, 2, 2, 2, 112, 385, 3, 2, 2, 2, 114, 388, 3, 2, 2, 2, 116, 391, 3, 2, 2, 2, 118, 394, 3, 2, 2, 2, 120, 398, 3, 2, 2, 2, 122, 401, 3, 2, 2, 2, 124, 404, 3, 2, 2, 2, 126, 406, 3, 2, 2, 2, 128, 409, 3, 2, 2, 2, 130, 412, 3, 2, 2, 2, 132, 415, 3, 2, 2, 2, 134, 418, 3, 2, 2, 2, 136, 421, 3, 2, 2, 2, 138, 424, 3, 2, 2, 2, 140, 427, 3, 2, 2, 2, 142, 430, 3, 2, 2, 2, 144, 434, 3, 2, 2, 2, 146, 438, 3, 2, 2, 2, 148, 443, 3, 2, 2, 2, 150, 452, 3, 2, 2, 2, 152, 470, 3, 2, 2, 2, 154, 483, 3, 2, 2, 2, 156, 531, 3, 2, 2, 2, 158, 533, 3, 2, 2, 2, 160, 550, 3, 2, 2, 2, 162, 555, 3, 2, 2, 2, 164, 561, 3, 2, 2, 2, 166, 604, 3, 2, 2, 2, 168, 606, 3, 2, 2, 2, 170, 610, 3, 2, 2, 2, 172, 625, 3, 2, 2, 2, 174, 629, 3, 2, 2, 2, 176, 178, 9, 2, 2, 2, 177, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 179, 180, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 182, 8, 2, 2, 2, 182, 5, 3, 2, 2, 2, 183, 184, 7, 49, 2, 2, 184, 185, 7, 49, 2, 2, 185, 189, 3, 2, 2, 2, 186, 188, 11, 2, 2, 2, 187, 186, 3, 2, 2, 2, 188, 191, 3, 2, 2, 2, 189, 190, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 190, 192, 3, 2, 2, 2, 191, 189, 3, 2, 2, 2, 192, 205, 9, 3, 2, 2, 193, 194, 7, 49, 2, 2, 194, 195, 7, 44, 2, 2, 195, 199, 3, 2, 2, 2, 196, 198, 11, 2, 2, 2, 197, 196, 3, 2, 2, 2, 198, 201, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 200, 202, 3, 2, 2, 2, 201, 199, 3, 2, 2, 2, 202, 203, 7, 44, 2, 2, 203, 205, 7, 49, 2, 2, 204, 183, 3, 2, 2, 2, 204, 193, 3, 2, 2, 2, 205, 206, 3, 2, 2, 2, 206, 207, 8, 3, 2, 2, 207, 7, 3, 2, 2, 2, 208, 209, 7, 125, 2, 2, 209, 9, 3, 2, 2, 2, 210, 211, 7, 127, 2, 2, 211, 11, 3, 2, 2, 2, 212, 213, 7, 93, 2, 2, 213, 13, 3, 2, 2, 2, 214, 215, 7, 95, 2, 2, 215, 15, 3, 2, 2, 2, 216, 217, 7, 42, 2, 2, 217, 17, 3, 2, 2, 2, 218, 219, 7, 43, 2, 2, 219, 19, 3, 2, 2, 2, 220, 221, 7, 38, 2, 2, 221, 21, 3, 2, 2, 2, 222, 223, 7, 48, 2, 2, 223, 224, 3, 2, 2, 2, 224, 225, 8, 11, 3, 2, 225, 23, 3, 2, 2, 2, 226, 227, 7, 65, 2, 2, 227, 228, 7, 48, 2, 2, 228, 229, 3, 2, 2, 2, 229, 230, 8, 12, 3, 2, 230, 25, 3, 2, 2, 2, 231, 232, 7, 46, 2, 2, 232, 27, 3, 2, 2, 2, 233, 234, 7, 61, 2, 2, 234, 29, 3, 2, 2, 2, 235, 236, 7, 107, 2, 2, 236, 237, 7, 104, 2, 2, 237, 31, 3, 2, 2, 2, 238, 239, 7, 107, 2, 2, 239, 240, 7, 112, 2, 2, 240, 33, 3, 2, 2, 2, 241, 242, 7, 103, 2, 2, 242, 243, 7, 110, 2, 2, 243, 244, 7, 117, 2, 2, 244, 245, 7, 103, 2, 2, 245, 35, 3, 2, 2, 2, 246, 247, 7, 121, 2, 2, 247, 248, 7, 106, 2, 2, 248, 249, 7, 107, 2, 2, 249, 250, 7, 110, 2, 2, 250, 251, 7, 103, 2, 2, 251, 37, 3, 2, 2, 2, 252, 253, 7, 102, 2, 2, 253, 254, 7, 113, 2, 2, 254, 39, 3, 2, 2, 2, 255, 256, 7, 104, 2, 2, 256, 257, 7, 113, 2, 2, 257, 258, 7, 116, 2, 2, 258, 41, 3, 2, 2, 2, 259, 260, 7, 101, 2, 2, 260, 261, 7, 113, 2, 2, 261, 262, 7, 112, 2, 2, 262, 263, 7, 118, 2, 2, 263, 264, 7, 107, 2, 2, 264, 265, 7, 112, 2, 2, 265, 266, 7, 119, 2, 2, 266, 267, 7, 103, 2, 2, 267, 43, 3, 2, 2, 2, 268, 269, 7, 100, 2, 2, 269, 270, 7, 116, 2, 2, 270, 271, 7, 103, 2, 2, 271, 272, 7, 99, 2, 2, 272, 273, 7, 109, 2, 2, 273, 45, 3, 2, 2, 2, 274, 275, 7, 116, 2, 2, 275, 276, 7, 103, 2, 2, 276, 277, 7, 118, 2, 2, 277, 278, 7, 119, 2, 2, 278, 279, 7, 116, 2, 2, 279, 280, 7, 112, 2, 2, 280, 47, 3, 2, 2, 2, 281, 282, 7, 112, 2, 2, 282, 283, 7, 103, 2, 2, 283, 284, 7, 121, 2, 2, 284, 49, 3, 2, 2, 2, 285, 286, 7, 118, 2, 2, 286, 287, 7, 116, 2, 2, 287, 288, 7, 123, 2, 2, 288, 51, 3, 2, 2, 2, 289, 290, 7, 101, 2, 2, 290, 291, 7, 99, 2, 2, 291, 292, 7, 118, 2, 2, 292, 293, 7, 101, 2, 2, 293, 294, 7, 106, 2, 2, 294, 53, 3, 2, 2, 2, 295, 296, 7, 118, 2, 2, 296, 297, 7, 106, 2, 2, 297, 298, 7, 116, 2, 2, 298, 299, 7, 113, 2, 2, 299, 300, 7, 121, 2, 2, 300, 55, 3, 2, 2, 2, 301, 302, 7, 118, 2, 2, 302, 303, 7, 106, 2, 2, 303, 304, 7, 107, 2, 2, 304, 305, 7, 117, 2, 2, 305, 57, 3, 2, 2, 2, 306, 307, 7, 107, 2, 2, 307, 308, 7, 112, 2, 2, 308, 309, 7, 117, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, 7, 99, 2, 2, 311, 312, 7, 112, 2, 2, 312, 313, 7, 101, 2, 2, 313, 314, 7, 103, 2, 2, 314, 315, 7, 113, 2, 2, 315, 316, 7, 104, 2, 2, 316, 59, 3, 2, 2, 2, 317, 318, 7, 35, 2, 2, 318, 61, 3, 2, 2, 2, 319, 320, 7, 128, 2, 2, 320, 63, 3, 2, 2, 2, 321, 322, 7, 44, 2, 2, 322, 65, 3, 2, 2, 2, 323, 324, 7, 49, 2, 2, 324, 325, 6, 33, 2, 2, 325, 67, 3, 2, 2, 2, 326, 327, 7, 39, 2, 2, 327, 69, 3, 2, 2, 2, 328, 329, 7, 45, 2, 2, 329, 71, 3, 2, 2, 2, 330, 331, 7, 47, 2, 2, 331, 73, 3, 2, 2, 2, 332, 333, 7, 62, 2, 2, 333, 334, 7, 62, 2, 2, 334, 75, 3, 2, 2, 2, 335, 336, 7, 64, 2, 2, 336, 337, 7, 64, 2, 2, 337, 77, 3, 2, 2, 2, 338, 339, 7, 64, 2, 2, 339, 340, 7, 64, 2, 2, 340, 341, 7, 64, 2, 2, 341, 79, 3, 2, 2, 2, 342, 343, 7, 62, 2, 2, 343, 81, 3, 2, 2, 2, 344, 345, 7, 62, 2, 2, 345, 346, 7, 63, 2, 2, 346, 83, 3, 2, 2, 2, 347, 348, 7, 64, 2, 2, 348, 85, 3, 2, 2, 2, 349, 350, 7, 64, 2, 2, 350, 351, 7, 63, 2, 2, 351, 87, 3, 2, 2, 2, 352, 353, 7, 63, 2, 2, 353, 354, 7, 63, 2, 2, 354, 89, 3, 2, 2, 2, 355, 356, 7, 63, 2, 2, 356, 357, 7, 63, 2, 2, 357, 358, 7, 63, 2, 2, 358, 91, 3, 2, 2, 2, 359, 360, 7, 35, 2, 2, 360, 361, 7, 63, 2, 2, 361, 93, 3, 2, 2, 2, 362, 363, 7, 35, 2, 2, 363, 364, 7, 63, 2, 2, 364, 365, 7, 63, 2, 2, 365, 95, 3, 2, 2, 2, 366, 367, 7, 40, 2, 2, 367, 97, 3, 2, 2, 2, 368, 369, 7, 96, 2, 2, 369, 99, 3, 2, 2, 2, 370, 371, 7, 126, 2, 2, 371, 101, 3, 2, 2, 2, 372, 373, 7, 40, 2, 2, 373, 374, 7, 40, 2, 2, 374, 103, 3, 2, 2, 2, 375, 376, 7, 126, 2, 2, 376, 377, 7, 126, 2, 2, 377, 105, 3, 2, 2, 2, 378, 379, 7, 65, 2, 2, 379, 107, 3, 2, 2, 2, 380, 381, 7, 60, 2, 2, 381, 109, 3, 2, 2, 2, 382, 383, 7, 65, 2, 2, 383, 384, 7, 60, 2, 2, 384, 111, 3, 2, 2, 2, 385, 386, 7, 60, 2, 2, 386, 387, 7, 60, 2, 2, 387, 113, 3, 2, 2, 2, 388, 389, 7, 47, 2, 2, 389, 390, 7, 64, 2, 2, 390, 115, 3, 2, 2, 2, 391, 392, 7, 63, 2, 2, 392, 393, 7, 128, 2, 2, 393, 117, 3, 2, 2, 2, 394, 395, 7, 63, 2, 2, 395, 396, 7, 63, 2, 2, 396, 397, 7, 128, 2, 2, 397, 119, 3, 2, 2, 2, 398, 399, 7, 45, 2, 2, 399, 400, 7, 45, 2, 2, 400, 121, 3, 2, 2, 2, 401, 402, 7, 47, 2, 2, 402, 403, 7, 47, 2, 2, 403, 123, 3, 2, 2, 2, 404, 405, 7, 63, 2, 2, 405, 125, 3, 2, 2, 2, 406, 407, 7, 45, 2, 2, 407, 408, 7, 63, 2, 2, 408, 127, 3, 2, 2, 2, 409, 410, 7, 47, 2, 2, 410, 411, 7, 63, 2, 2, 411, 129, 3, 2, 2, 2, 412, 413, 7, 44, 2, 2, 413, 414, 7, 63, 2, 2, 414, 131, 3, 2, 2, 2, 415, 416, 7, 49, 2, 2, 416, 417, 7, 63, 2, 2, 417, 133, 3, 2, 2, 2, 418, 419, 7, 39, 2, 2, 419, 420, 7, 63, 2, 2, 420, 135, 3, 2, 2, 2, 421, 422, 7, 40, 2, 2, 422, 423, 7, 63, 2, 2, 423, 137, 3, 2, 2, 2, 424, 425, 7, 96, 2, 2, 425, 426, 7, 63, 2, 2, 426, 139, 3, 2, 2, 2, 427, 428, 7, 126, 2, 2, 428, 429, 7, 63, 2, 2, 429, 141, 3, 2, 2, 2, 430, 431, 7, 62, 2, 2, 431, 432, 7, 62, 2, 2, 432, 433, 7, 63, 2, 2, 433, 143, 3, 2, 2, 2, 434, 435, 7, 64, 2, 2, 435, 436, 7, 64, 2, 2, 436, 437, 7, 63, 2, 2, 437, 145, 3, 2, 2, 2, 438, 439, 7, 64, 2, 2, 439, 440, 7, 64, 2, 2, 440, 441, 7, 64, 2, 2, 441, 442, 7, 63, 2, 2, 442, 147, 3, 2, 2, 2, 443, 445, 7, 50, 2, 2, 444, 446, 9, 4, 2, 2, 445, 444, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 450, 3, 2, 2, 2, 449, 451, 9, 5, 2, 2, 450, 449, 3, 2, 2, 2, 450, 451, 3, 2, 2, 2, 451, 149, 3, 2, 2, 2, 452, 453, 7, 50, 2, 2, 453, 455, 9, 6, 2, 2, 454, 456, 9, 7, 2, 2, 455, 454, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 460, 3, 2, 2, 2, 459, 461, 9, 5, 2, 2, 460, 459, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 151, 3, 2, 2, 2, 462, 471, 7, 50, 2, 2, 463, 467, 9, 8, 2, 2, 464, 466, 9, 9, 2, 2, 465, 464, 3, 2, 2, 2, 466, 469, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 471, 3, 2, 2, 2, 469, 467, 3, 2, 2, 2, 470, 462, 3, 2, 2, 2, 470, 463, 3, 2, 2, 2, 471, 473, 3, 2, 2, 2, 472, 474, 9, 10, 2, 2, 473, 472, 3, 2, 2, 2, 473, 474, 3, 2, 2, 2, 474, 153, 3, 2, 2, 2, 475, 484, 7, 50, 2, 2, 476, 480, 9, 8, 2, 2, 477, 479, 9, 9, 2, 2, 478, 477, 3, 2, 2, 2, 479, 482, 3, 2, 2, 2, 480, 478, 3, 2, 2, 2, 480, 481, 3, 2, 2, 2, 481, 484, 3, 2, 2, 2, 482, 480, 3, 2, 2, 2, 483, 475, 3, 2, 2, 2, 483, 476, 3, 2, 2, 2, 484, 491, 3, 2, 2, 2, 485, 487, 5, 22, 11, 2, 486, 488, 9, 9, 2, 2, 487, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 492, 3, 2, 2, 2, 491, 485, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 502, 3, 2, 2, 2, 493, 495, 9, 11, 2, 2, 494, 496, 9, 12, 2, 2, 495, 494, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 498, 3, 2, 2, 2, 497, 499, 9, 9, 2, 2, 498, 497, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 503, 3, 2, 2, 2, 502, 493, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 505, 3, 2, 2, 2, 504, 506, 9, 13, 2, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 155, 3, 2, 2, 2, 507, 515, 7, 36, 2, 2, 508, 509, 7, 94, 2, 2, 509, 514, 7, 36, 2, 2, 510, 511, 7, 94, 2, 2, 511, 514, 7, 94, 2, 2, 512, 514, 10, 14, 2, 2, 513, 508, 3, 2, 2, 2, 513, 510, 3, 2, 2, 2, 513, 512, 3, 2, 2, 2, 514, 517, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 516, 518, 3, 2, 2, 2, 517, 515, 3, 2, 2, 2, 518, 532, 7, 36, 2, 2, 519, 527, 7, 41, 2, 2, 520, 521, 7, 94, 2, 2, 521, 526, 7, 41, 2, 2, 522, 523, 7, 94, 2, 2, 523, 526, 7, 94, 2, 2, 524, 526, 10, 15, 2, 2, 525, 520, 3, 2, 2, 2, 525, 522, 3, 2, 2, 2, 525, 524, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 528, 530, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 530, 532, 7, 41, 2, 2, 531, 507, 3, 2, 2, 2, 531, 519, 3, 2, 2, 2, 532, 157, 3, 2, 2, 2, 533, 537, 7, 49, 2, 2, 534, 535, 7, 94, 2, 2, 535, 538, 10, 16, 2, 2, 536, 538, 10, 17, 2, 2, 537, 534, 3, 2, 2, 2, 537, 536, 3, 2, 2, 2, 538, 539, 3, 2, 2, 2, 539, 540, 3, 2, 2, 2, 539, 537, 3, 2, 2, 2, 540, 541, 3, 2, 2, 2, 541, 545, 7, 49, 2, 2, 542, 544, 9, 18, 2, 2, 543, 542, 3, 2, 2, 2, 544, 547, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 548, 3, 2, 2, 2, 547, 545, 3, 2, 2, 2, 548, 549, 6, 79, 3, 2, 549, 159, 3, 2, 2, 2, 550, 551, 7, 118, 2, 2, 551, 552, 7, 116, 2, 2, 552, 553, 7, 119, 2, 2, 553, 554, 7, 103, 2, 2, 554, 161, 3, 2, 2, 2, 555, 556, 7, 104, 2, 2, 556, 557, 7, 99, 2, 2, 557, 558, 7, 110, 2, 2, 558, 559, 7, 117, 2, 2, 559, 560, 7, 103, 2, 2, 560, 163, 3, 2, 2, 2, 561, 562, 7, 112, 2, 2, 562, 563, 7, 119, 2, 2, 563, 564, 7, 110, 2, 2, 564, 565, 7, 110, 2, 2, 565, 165, 3, 2, 2, 2, 566, 567, 7, 100, 2, 2, 567, 568, 7, 113, 2, 2, 568, 569, 7, 113, 2, 2, 569, 570, 7, 110, 2, 2, 570, 571, 7, 103, 2, 2, 571, 572, 7, 99, 2, 2, 572, 605, 7, 112, 2, 2, 573, 574, 7, 100, 2, 2, 574, 575, 7, 123, 2, 2, 575, 576, 7, 118, 2, 2, 576, 605, 7, 103, 2, 2, 577, 578, 7, 117, 2, 2, 578, 579, 7, 106, 2, 2, 579, 580, 7, 113, 2, 2, 580, 581, 7, 116, 2, 2, 581, 605, 7, 118, 2, 2, 582, 583, 7, 101, 2, 2, 583, 584, 7, 106, 2, 2, 584, 585, 7, 99, 2, 2, 585, 605, 7, 116, 2, 2, 586, 587, 7, 107, 2, 2, 587, 588, 7, 112, 2, 2, 588, 605, 7, 118, 2, 2, 589, 590, 7, 110, 2, 2, 590, 591, 7, 113, 2, 2, 591, 592, 7, 112, 2, 2, 592, 605, 7, 105, 2, 2, 593, 594, 7, 104, 2, 2, 594, 595, 7, 110, 2, 2, 595, 596, 7, 113, 2, 2, 596, 597, 7, 99, 2, 2, 597, 605, 7, 118, 2, 2, 598, 599, 7, 102, 2, 2, 599, 600, 7, 113, 2, 2, 600, 601, 7, 119, 2, 2, 601, 602, 7, 100, 2, 2, 602, 603, 7, 110, 2, 2, 603, 605, 7, 103, 2, 2, 604, 566, 3, 2, 2, 2, 604, 573, 3, 2, 2, 2, 604, 577, 3, 2, 2, 2, 604, 582, 3, 2, 2, 2, 604, 586, 3, 2, 2, 2, 604, 589, 3, 2, 2, 2, 604, 593, 3, 2, 2, 2, 604, 598, 3, 2, 2, 2, 605, 167, 3, 2, 2, 2, 606, 607, 7, 102, 2, 2, 607, 608, 7, 103, 2, 2, 608, 609, 7, 104, 2, 2, 609, 169, 3, 2, 2, 2, 610, 614, 9, 19, 2, 2, 611, 613, 9, 20, 2, 2, 612, 611, 3, 2, 2, 2, 613, 616, 3, 2, 2, 2, 614, 612, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 171, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 617, 626, 7, 50, 2, 2, 618, 622, 9, 8, 2, 2, 619, 621, 9, 9, 2, 2, 620, 619, 3, 2, 2, 2, 621, 624, 3, 2, 2, 2, 622, 620, 3, 2, 2, 2, 622, 623, 3, 2, 2, 2, 623, 626, 3, 2, 2, 2, 624, 622, 3, 2, 2, 2, 625, 617, 3, 2, 2, 2, 625, 618, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 628, 8, 86, 4, 2, 628, 173, 3, 2, 2, 2, 629, 633, 9, 19, 2, 2, 630, 632, 9, 20, 2, 2, 631, 630, 3, 2, 2, 2, 632, 635, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 636, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 637, 8, 87, 4, 2, 637, 175, 3, 2, 2, 2, 36, 2, 3, 179, 189, 199, 204, 447, 450, 457, 460, 467, 470, 473, 480, 483, 489, 491, 495, 500, 502, 505, 513, 515, 525, 527, 531, 537, 539, 545, 604, 614, 622, 625, 633, 5, 8, 2, 2, 4, 3, 2, 4, 2, 2] \ No newline at end of file +[4, 0, 86, 636, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 1, 0, 4, 0, 176, 8, 0, 11, 0, 12, 0, 177, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 186, 8, 1, 10, 1, 12, 1, 189, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 196, 8, 1, 10, 1, 12, 1, 199, 9, 1, 1, 1, 1, 1, 3, 1, 203, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 4, 72, 444, 8, 72, 11, 72, 12, 72, 445, 1, 72, 3, 72, 449, 8, 72, 1, 73, 1, 73, 1, 73, 4, 73, 454, 8, 73, 11, 73, 12, 73, 455, 1, 73, 3, 73, 459, 8, 73, 1, 74, 1, 74, 1, 74, 5, 74, 464, 8, 74, 10, 74, 12, 74, 467, 9, 74, 3, 74, 469, 8, 74, 1, 74, 3, 74, 472, 8, 74, 1, 75, 1, 75, 1, 75, 5, 75, 477, 8, 75, 10, 75, 12, 75, 480, 9, 75, 3, 75, 482, 8, 75, 1, 75, 1, 75, 4, 75, 486, 8, 75, 11, 75, 12, 75, 487, 3, 75, 490, 8, 75, 1, 75, 1, 75, 3, 75, 494, 8, 75, 1, 75, 4, 75, 497, 8, 75, 11, 75, 12, 75, 498, 3, 75, 501, 8, 75, 1, 75, 3, 75, 504, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 512, 8, 76, 10, 76, 12, 76, 515, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 524, 8, 76, 10, 76, 12, 76, 527, 9, 76, 1, 76, 3, 76, 530, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 536, 8, 77, 11, 77, 12, 77, 537, 1, 77, 1, 77, 5, 77, 542, 8, 77, 10, 77, 12, 77, 545, 9, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 603, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 5, 83, 611, 8, 83, 10, 83, 12, 83, 614, 9, 83, 1, 84, 1, 84, 1, 84, 5, 84, 619, 8, 84, 10, 84, 12, 84, 622, 9, 84, 3, 84, 624, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 5, 85, 630, 8, 85, 10, 85, 12, 85, 633, 9, 85, 1, 85, 1, 85, 5, 187, 197, 513, 525, 537, 0, 86, 2, 1, 4, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18, 9, 20, 10, 22, 11, 24, 12, 26, 13, 28, 14, 30, 15, 32, 16, 34, 17, 36, 18, 38, 19, 40, 20, 42, 21, 44, 22, 46, 23, 48, 24, 50, 25, 52, 26, 54, 27, 56, 28, 58, 29, 60, 30, 62, 31, 64, 32, 66, 33, 68, 34, 70, 35, 72, 36, 74, 37, 76, 38, 78, 39, 80, 40, 82, 41, 84, 42, 86, 43, 88, 44, 90, 45, 92, 46, 94, 47, 96, 48, 98, 49, 100, 50, 102, 51, 104, 52, 106, 53, 108, 54, 110, 55, 112, 56, 114, 57, 116, 58, 118, 59, 120, 60, 122, 61, 124, 62, 126, 63, 128, 64, 130, 65, 132, 66, 134, 67, 136, 68, 138, 69, 140, 70, 142, 71, 144, 72, 146, 73, 148, 74, 150, 75, 152, 76, 154, 77, 156, 78, 158, 79, 160, 80, 162, 81, 164, 82, 166, 83, 168, 84, 170, 85, 172, 86, 2, 0, 1, 19, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1, 0, 48, 55, 2, 0, 76, 76, 108, 108, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 49, 57, 1, 0, 48, 57, 6, 0, 68, 68, 70, 70, 76, 76, 100, 100, 102, 102, 108, 108, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4, 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 1, 0, 10, 10, 2, 0, 10, 10, 47, 47, 7, 0, 85, 85, 99, 99, 105, 105, 108, 109, 115, 115, 117, 117, 120, 120, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 674, 0, 2, 1, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 104, 1, 0, 0, 0, 0, 106, 1, 0, 0, 0, 0, 108, 1, 0, 0, 0, 0, 110, 1, 0, 0, 0, 0, 112, 1, 0, 0, 0, 0, 114, 1, 0, 0, 0, 0, 116, 1, 0, 0, 0, 0, 118, 1, 0, 0, 0, 0, 120, 1, 0, 0, 0, 0, 122, 1, 0, 0, 0, 0, 124, 1, 0, 0, 0, 0, 126, 1, 0, 0, 0, 0, 128, 1, 0, 0, 0, 0, 130, 1, 0, 0, 0, 0, 132, 1, 0, 0, 0, 0, 134, 1, 0, 0, 0, 0, 136, 1, 0, 0, 0, 0, 138, 1, 0, 0, 0, 0, 140, 1, 0, 0, 0, 0, 142, 1, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 146, 1, 0, 0, 0, 0, 148, 1, 0, 0, 0, 0, 150, 1, 0, 0, 0, 0, 152, 1, 0, 0, 0, 0, 154, 1, 0, 0, 0, 0, 156, 1, 0, 0, 0, 0, 158, 1, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 162, 1, 0, 0, 0, 0, 164, 1, 0, 0, 0, 0, 166, 1, 0, 0, 0, 0, 168, 1, 0, 0, 0, 1, 170, 1, 0, 0, 0, 1, 172, 1, 0, 0, 0, 2, 175, 1, 0, 0, 0, 4, 202, 1, 0, 0, 0, 6, 206, 1, 0, 0, 0, 8, 208, 1, 0, 0, 0, 10, 210, 1, 0, 0, 0, 12, 212, 1, 0, 0, 0, 14, 214, 1, 0, 0, 0, 16, 216, 1, 0, 0, 0, 18, 218, 1, 0, 0, 0, 20, 220, 1, 0, 0, 0, 22, 224, 1, 0, 0, 0, 24, 229, 1, 0, 0, 0, 26, 231, 1, 0, 0, 0, 28, 233, 1, 0, 0, 0, 30, 236, 1, 0, 0, 0, 32, 239, 1, 0, 0, 0, 34, 244, 1, 0, 0, 0, 36, 250, 1, 0, 0, 0, 38, 253, 1, 0, 0, 0, 40, 257, 1, 0, 0, 0, 42, 266, 1, 0, 0, 0, 44, 272, 1, 0, 0, 0, 46, 279, 1, 0, 0, 0, 48, 283, 1, 0, 0, 0, 50, 287, 1, 0, 0, 0, 52, 293, 1, 0, 0, 0, 54, 299, 1, 0, 0, 0, 56, 304, 1, 0, 0, 0, 58, 315, 1, 0, 0, 0, 60, 317, 1, 0, 0, 0, 62, 319, 1, 0, 0, 0, 64, 321, 1, 0, 0, 0, 66, 324, 1, 0, 0, 0, 68, 326, 1, 0, 0, 0, 70, 328, 1, 0, 0, 0, 72, 330, 1, 0, 0, 0, 74, 333, 1, 0, 0, 0, 76, 336, 1, 0, 0, 0, 78, 340, 1, 0, 0, 0, 80, 342, 1, 0, 0, 0, 82, 345, 1, 0, 0, 0, 84, 347, 1, 0, 0, 0, 86, 350, 1, 0, 0, 0, 88, 353, 1, 0, 0, 0, 90, 357, 1, 0, 0, 0, 92, 360, 1, 0, 0, 0, 94, 364, 1, 0, 0, 0, 96, 366, 1, 0, 0, 0, 98, 368, 1, 0, 0, 0, 100, 370, 1, 0, 0, 0, 102, 373, 1, 0, 0, 0, 104, 376, 1, 0, 0, 0, 106, 378, 1, 0, 0, 0, 108, 380, 1, 0, 0, 0, 110, 383, 1, 0, 0, 0, 112, 386, 1, 0, 0, 0, 114, 389, 1, 0, 0, 0, 116, 392, 1, 0, 0, 0, 118, 396, 1, 0, 0, 0, 120, 399, 1, 0, 0, 0, 122, 402, 1, 0, 0, 0, 124, 404, 1, 0, 0, 0, 126, 407, 1, 0, 0, 0, 128, 410, 1, 0, 0, 0, 130, 413, 1, 0, 0, 0, 132, 416, 1, 0, 0, 0, 134, 419, 1, 0, 0, 0, 136, 422, 1, 0, 0, 0, 138, 425, 1, 0, 0, 0, 140, 428, 1, 0, 0, 0, 142, 432, 1, 0, 0, 0, 144, 436, 1, 0, 0, 0, 146, 441, 1, 0, 0, 0, 148, 450, 1, 0, 0, 0, 150, 468, 1, 0, 0, 0, 152, 481, 1, 0, 0, 0, 154, 529, 1, 0, 0, 0, 156, 531, 1, 0, 0, 0, 158, 548, 1, 0, 0, 0, 160, 553, 1, 0, 0, 0, 162, 559, 1, 0, 0, 0, 164, 602, 1, 0, 0, 0, 166, 604, 1, 0, 0, 0, 168, 608, 1, 0, 0, 0, 170, 623, 1, 0, 0, 0, 172, 627, 1, 0, 0, 0, 174, 176, 7, 0, 0, 0, 175, 174, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 180, 6, 0, 0, 0, 180, 3, 1, 0, 0, 0, 181, 182, 5, 47, 0, 0, 182, 183, 5, 47, 0, 0, 183, 187, 1, 0, 0, 0, 184, 186, 9, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 188, 190, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 203, 7, 1, 0, 0, 191, 192, 5, 47, 0, 0, 192, 193, 5, 42, 0, 0, 193, 197, 1, 0, 0, 0, 194, 196, 9, 0, 0, 0, 195, 194, 1, 0, 0, 0, 196, 199, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 198, 200, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 200, 201, 5, 42, 0, 0, 201, 203, 5, 47, 0, 0, 202, 181, 1, 0, 0, 0, 202, 191, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 205, 6, 1, 0, 0, 205, 5, 1, 0, 0, 0, 206, 207, 5, 123, 0, 0, 207, 7, 1, 0, 0, 0, 208, 209, 5, 125, 0, 0, 209, 9, 1, 0, 0, 0, 210, 211, 5, 91, 0, 0, 211, 11, 1, 0, 0, 0, 212, 213, 5, 93, 0, 0, 213, 13, 1, 0, 0, 0, 214, 215, 5, 40, 0, 0, 215, 15, 1, 0, 0, 0, 216, 217, 5, 41, 0, 0, 217, 17, 1, 0, 0, 0, 218, 219, 5, 36, 0, 0, 219, 19, 1, 0, 0, 0, 220, 221, 5, 46, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 6, 9, 1, 0, 223, 21, 1, 0, 0, 0, 224, 225, 5, 63, 0, 0, 225, 226, 5, 46, 0, 0, 226, 227, 1, 0, 0, 0, 227, 228, 6, 10, 1, 0, 228, 23, 1, 0, 0, 0, 229, 230, 5, 44, 0, 0, 230, 25, 1, 0, 0, 0, 231, 232, 5, 59, 0, 0, 232, 27, 1, 0, 0, 0, 233, 234, 5, 105, 0, 0, 234, 235, 5, 102, 0, 0, 235, 29, 1, 0, 0, 0, 236, 237, 5, 105, 0, 0, 237, 238, 5, 110, 0, 0, 238, 31, 1, 0, 0, 0, 239, 240, 5, 101, 0, 0, 240, 241, 5, 108, 0, 0, 241, 242, 5, 115, 0, 0, 242, 243, 5, 101, 0, 0, 243, 33, 1, 0, 0, 0, 244, 245, 5, 119, 0, 0, 245, 246, 5, 104, 0, 0, 246, 247, 5, 105, 0, 0, 247, 248, 5, 108, 0, 0, 248, 249, 5, 101, 0, 0, 249, 35, 1, 0, 0, 0, 250, 251, 5, 100, 0, 0, 251, 252, 5, 111, 0, 0, 252, 37, 1, 0, 0, 0, 253, 254, 5, 102, 0, 0, 254, 255, 5, 111, 0, 0, 255, 256, 5, 114, 0, 0, 256, 39, 1, 0, 0, 0, 257, 258, 5, 99, 0, 0, 258, 259, 5, 111, 0, 0, 259, 260, 5, 110, 0, 0, 260, 261, 5, 116, 0, 0, 261, 262, 5, 105, 0, 0, 262, 263, 5, 110, 0, 0, 263, 264, 5, 117, 0, 0, 264, 265, 5, 101, 0, 0, 265, 41, 1, 0, 0, 0, 266, 267, 5, 98, 0, 0, 267, 268, 5, 114, 0, 0, 268, 269, 5, 101, 0, 0, 269, 270, 5, 97, 0, 0, 270, 271, 5, 107, 0, 0, 271, 43, 1, 0, 0, 0, 272, 273, 5, 114, 0, 0, 273, 274, 5, 101, 0, 0, 274, 275, 5, 116, 0, 0, 275, 276, 5, 117, 0, 0, 276, 277, 5, 114, 0, 0, 277, 278, 5, 110, 0, 0, 278, 45, 1, 0, 0, 0, 279, 280, 5, 110, 0, 0, 280, 281, 5, 101, 0, 0, 281, 282, 5, 119, 0, 0, 282, 47, 1, 0, 0, 0, 283, 284, 5, 116, 0, 0, 284, 285, 5, 114, 0, 0, 285, 286, 5, 121, 0, 0, 286, 49, 1, 0, 0, 0, 287, 288, 5, 99, 0, 0, 288, 289, 5, 97, 0, 0, 289, 290, 5, 116, 0, 0, 290, 291, 5, 99, 0, 0, 291, 292, 5, 104, 0, 0, 292, 51, 1, 0, 0, 0, 293, 294, 5, 116, 0, 0, 294, 295, 5, 104, 0, 0, 295, 296, 5, 114, 0, 0, 296, 297, 5, 111, 0, 0, 297, 298, 5, 119, 0, 0, 298, 53, 1, 0, 0, 0, 299, 300, 5, 116, 0, 0, 300, 301, 5, 104, 0, 0, 301, 302, 5, 105, 0, 0, 302, 303, 5, 115, 0, 0, 303, 55, 1, 0, 0, 0, 304, 305, 5, 105, 0, 0, 305, 306, 5, 110, 0, 0, 306, 307, 5, 115, 0, 0, 307, 308, 5, 116, 0, 0, 308, 309, 5, 97, 0, 0, 309, 310, 5, 110, 0, 0, 310, 311, 5, 99, 0, 0, 311, 312, 5, 101, 0, 0, 312, 313, 5, 111, 0, 0, 313, 314, 5, 102, 0, 0, 314, 57, 1, 0, 0, 0, 315, 316, 5, 33, 0, 0, 316, 59, 1, 0, 0, 0, 317, 318, 5, 126, 0, 0, 318, 61, 1, 0, 0, 0, 319, 320, 5, 42, 0, 0, 320, 63, 1, 0, 0, 0, 321, 322, 5, 47, 0, 0, 322, 323, 4, 31, 0, 0, 323, 65, 1, 0, 0, 0, 324, 325, 5, 37, 0, 0, 325, 67, 1, 0, 0, 0, 326, 327, 5, 43, 0, 0, 327, 69, 1, 0, 0, 0, 328, 329, 5, 45, 0, 0, 329, 71, 1, 0, 0, 0, 330, 331, 5, 60, 0, 0, 331, 332, 5, 60, 0, 0, 332, 73, 1, 0, 0, 0, 333, 334, 5, 62, 0, 0, 334, 335, 5, 62, 0, 0, 335, 75, 1, 0, 0, 0, 336, 337, 5, 62, 0, 0, 337, 338, 5, 62, 0, 0, 338, 339, 5, 62, 0, 0, 339, 77, 1, 0, 0, 0, 340, 341, 5, 60, 0, 0, 341, 79, 1, 0, 0, 0, 342, 343, 5, 60, 0, 0, 343, 344, 5, 61, 0, 0, 344, 81, 1, 0, 0, 0, 345, 346, 5, 62, 0, 0, 346, 83, 1, 0, 0, 0, 347, 348, 5, 62, 0, 0, 348, 349, 5, 61, 0, 0, 349, 85, 1, 0, 0, 0, 350, 351, 5, 61, 0, 0, 351, 352, 5, 61, 0, 0, 352, 87, 1, 0, 0, 0, 353, 354, 5, 61, 0, 0, 354, 355, 5, 61, 0, 0, 355, 356, 5, 61, 0, 0, 356, 89, 1, 0, 0, 0, 357, 358, 5, 33, 0, 0, 358, 359, 5, 61, 0, 0, 359, 91, 1, 0, 0, 0, 360, 361, 5, 33, 0, 0, 361, 362, 5, 61, 0, 0, 362, 363, 5, 61, 0, 0, 363, 93, 1, 0, 0, 0, 364, 365, 5, 38, 0, 0, 365, 95, 1, 0, 0, 0, 366, 367, 5, 94, 0, 0, 367, 97, 1, 0, 0, 0, 368, 369, 5, 124, 0, 0, 369, 99, 1, 0, 0, 0, 370, 371, 5, 38, 0, 0, 371, 372, 5, 38, 0, 0, 372, 101, 1, 0, 0, 0, 373, 374, 5, 124, 0, 0, 374, 375, 5, 124, 0, 0, 375, 103, 1, 0, 0, 0, 376, 377, 5, 63, 0, 0, 377, 105, 1, 0, 0, 0, 378, 379, 5, 58, 0, 0, 379, 107, 1, 0, 0, 0, 380, 381, 5, 63, 0, 0, 381, 382, 5, 58, 0, 0, 382, 109, 1, 0, 0, 0, 383, 384, 5, 58, 0, 0, 384, 385, 5, 58, 0, 0, 385, 111, 1, 0, 0, 0, 386, 387, 5, 45, 0, 0, 387, 388, 5, 62, 0, 0, 388, 113, 1, 0, 0, 0, 389, 390, 5, 61, 0, 0, 390, 391, 5, 126, 0, 0, 391, 115, 1, 0, 0, 0, 392, 393, 5, 61, 0, 0, 393, 394, 5, 61, 0, 0, 394, 395, 5, 126, 0, 0, 395, 117, 1, 0, 0, 0, 396, 397, 5, 43, 0, 0, 397, 398, 5, 43, 0, 0, 398, 119, 1, 0, 0, 0, 399, 400, 5, 45, 0, 0, 400, 401, 5, 45, 0, 0, 401, 121, 1, 0, 0, 0, 402, 403, 5, 61, 0, 0, 403, 123, 1, 0, 0, 0, 404, 405, 5, 43, 0, 0, 405, 406, 5, 61, 0, 0, 406, 125, 1, 0, 0, 0, 407, 408, 5, 45, 0, 0, 408, 409, 5, 61, 0, 0, 409, 127, 1, 0, 0, 0, 410, 411, 5, 42, 0, 0, 411, 412, 5, 61, 0, 0, 412, 129, 1, 0, 0, 0, 413, 414, 5, 47, 0, 0, 414, 415, 5, 61, 0, 0, 415, 131, 1, 0, 0, 0, 416, 417, 5, 37, 0, 0, 417, 418, 5, 61, 0, 0, 418, 133, 1, 0, 0, 0, 419, 420, 5, 38, 0, 0, 420, 421, 5, 61, 0, 0, 421, 135, 1, 0, 0, 0, 422, 423, 5, 94, 0, 0, 423, 424, 5, 61, 0, 0, 424, 137, 1, 0, 0, 0, 425, 426, 5, 124, 0, 0, 426, 427, 5, 61, 0, 0, 427, 139, 1, 0, 0, 0, 428, 429, 5, 60, 0, 0, 429, 430, 5, 60, 0, 0, 430, 431, 5, 61, 0, 0, 431, 141, 1, 0, 0, 0, 432, 433, 5, 62, 0, 0, 433, 434, 5, 62, 0, 0, 434, 435, 5, 61, 0, 0, 435, 143, 1, 0, 0, 0, 436, 437, 5, 62, 0, 0, 437, 438, 5, 62, 0, 0, 438, 439, 5, 62, 0, 0, 439, 440, 5, 61, 0, 0, 440, 145, 1, 0, 0, 0, 441, 443, 5, 48, 0, 0, 442, 444, 7, 2, 0, 0, 443, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 449, 7, 3, 0, 0, 448, 447, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 147, 1, 0, 0, 0, 450, 451, 5, 48, 0, 0, 451, 453, 7, 4, 0, 0, 452, 454, 7, 5, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 458, 1, 0, 0, 0, 457, 459, 7, 3, 0, 0, 458, 457, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 149, 1, 0, 0, 0, 460, 469, 5, 48, 0, 0, 461, 465, 7, 6, 0, 0, 462, 464, 7, 7, 0, 0, 463, 462, 1, 0, 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 469, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 460, 1, 0, 0, 0, 468, 461, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 472, 7, 8, 0, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 151, 1, 0, 0, 0, 473, 482, 5, 48, 0, 0, 474, 478, 7, 6, 0, 0, 475, 477, 7, 7, 0, 0, 476, 475, 1, 0, 0, 0, 477, 480, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 482, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 473, 1, 0, 0, 0, 481, 474, 1, 0, 0, 0, 482, 489, 1, 0, 0, 0, 483, 485, 3, 20, 9, 0, 484, 486, 7, 7, 0, 0, 485, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, 0, 489, 483, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 500, 1, 0, 0, 0, 491, 493, 7, 9, 0, 0, 492, 494, 7, 10, 0, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 497, 7, 7, 0, 0, 496, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 1, 0, 0, 0, 500, 491, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, 504, 7, 11, 0, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 153, 1, 0, 0, 0, 505, 513, 5, 34, 0, 0, 506, 507, 5, 92, 0, 0, 507, 512, 5, 34, 0, 0, 508, 509, 5, 92, 0, 0, 509, 512, 5, 92, 0, 0, 510, 512, 8, 12, 0, 0, 511, 506, 1, 0, 0, 0, 511, 508, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 515, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 514, 516, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 530, 5, 34, 0, 0, 517, 525, 5, 39, 0, 0, 518, 519, 5, 92, 0, 0, 519, 524, 5, 39, 0, 0, 520, 521, 5, 92, 0, 0, 521, 524, 5, 92, 0, 0, 522, 524, 8, 13, 0, 0, 523, 518, 1, 0, 0, 0, 523, 520, 1, 0, 0, 0, 523, 522, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528, 530, 5, 39, 0, 0, 529, 505, 1, 0, 0, 0, 529, 517, 1, 0, 0, 0, 530, 155, 1, 0, 0, 0, 531, 535, 5, 47, 0, 0, 532, 533, 5, 92, 0, 0, 533, 536, 8, 14, 0, 0, 534, 536, 8, 15, 0, 0, 535, 532, 1, 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 5, 47, 0, 0, 540, 542, 7, 16, 0, 0, 541, 540, 1, 0, 0, 0, 542, 545, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 546, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 546, 547, 4, 77, 1, 0, 547, 157, 1, 0, 0, 0, 548, 549, 5, 116, 0, 0, 549, 550, 5, 114, 0, 0, 550, 551, 5, 117, 0, 0, 551, 552, 5, 101, 0, 0, 552, 159, 1, 0, 0, 0, 553, 554, 5, 102, 0, 0, 554, 555, 5, 97, 0, 0, 555, 556, 5, 108, 0, 0, 556, 557, 5, 115, 0, 0, 557, 558, 5, 101, 0, 0, 558, 161, 1, 0, 0, 0, 559, 560, 5, 110, 0, 0, 560, 561, 5, 117, 0, 0, 561, 562, 5, 108, 0, 0, 562, 563, 5, 108, 0, 0, 563, 163, 1, 0, 0, 0, 564, 565, 5, 98, 0, 0, 565, 566, 5, 111, 0, 0, 566, 567, 5, 111, 0, 0, 567, 568, 5, 108, 0, 0, 568, 569, 5, 101, 0, 0, 569, 570, 5, 97, 0, 0, 570, 603, 5, 110, 0, 0, 571, 572, 5, 98, 0, 0, 572, 573, 5, 121, 0, 0, 573, 574, 5, 116, 0, 0, 574, 603, 5, 101, 0, 0, 575, 576, 5, 115, 0, 0, 576, 577, 5, 104, 0, 0, 577, 578, 5, 111, 0, 0, 578, 579, 5, 114, 0, 0, 579, 603, 5, 116, 0, 0, 580, 581, 5, 99, 0, 0, 581, 582, 5, 104, 0, 0, 582, 583, 5, 97, 0, 0, 583, 603, 5, 114, 0, 0, 584, 585, 5, 105, 0, 0, 585, 586, 5, 110, 0, 0, 586, 603, 5, 116, 0, 0, 587, 588, 5, 108, 0, 0, 588, 589, 5, 111, 0, 0, 589, 590, 5, 110, 0, 0, 590, 603, 5, 103, 0, 0, 591, 592, 5, 102, 0, 0, 592, 593, 5, 108, 0, 0, 593, 594, 5, 111, 0, 0, 594, 595, 5, 97, 0, 0, 595, 603, 5, 116, 0, 0, 596, 597, 5, 100, 0, 0, 597, 598, 5, 111, 0, 0, 598, 599, 5, 117, 0, 0, 599, 600, 5, 98, 0, 0, 600, 601, 5, 108, 0, 0, 601, 603, 5, 101, 0, 0, 602, 564, 1, 0, 0, 0, 602, 571, 1, 0, 0, 0, 602, 575, 1, 0, 0, 0, 602, 580, 1, 0, 0, 0, 602, 584, 1, 0, 0, 0, 602, 587, 1, 0, 0, 0, 602, 591, 1, 0, 0, 0, 602, 596, 1, 0, 0, 0, 603, 165, 1, 0, 0, 0, 604, 605, 5, 100, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 102, 0, 0, 607, 167, 1, 0, 0, 0, 608, 612, 7, 17, 0, 0, 609, 611, 7, 18, 0, 0, 610, 609, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 169, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 624, 5, 48, 0, 0, 616, 620, 7, 6, 0, 0, 617, 619, 7, 7, 0, 0, 618, 617, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 623, 615, 1, 0, 0, 0, 623, 616, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 626, 6, 84, 2, 0, 626, 171, 1, 0, 0, 0, 627, 631, 7, 17, 0, 0, 628, 630, 7, 18, 0, 0, 629, 628, 1, 0, 0, 0, 630, 633, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 634, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 634, 635, 6, 85, 2, 0, 635, 173, 1, 0, 0, 0, 34, 0, 1, 177, 187, 197, 202, 445, 448, 455, 458, 465, 468, 471, 478, 481, 487, 489, 493, 498, 500, 503, 511, 513, 523, 525, 529, 535, 537, 543, 602, 612, 620, 623, 631, 3, 6, 0, 0, 2, 1, 0, 2, 0, 0] \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts b/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts new file mode 100644 index 0000000000000..a4f059b8f895e --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts @@ -0,0 +1,480 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_lexer.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols +import { + ATN, + ATNDeserializer, + CharStream, + DecisionState, DFA, + Lexer, + LexerATNSimulator, + RuleContext, + PredictionContextCache, + Token +} from "antlr4"; +export default class painless_lexer extends Lexer { + public static readonly WS = 1; + public static readonly COMMENT = 2; + public static readonly LBRACK = 3; + public static readonly RBRACK = 4; + public static readonly LBRACE = 5; + public static readonly RBRACE = 6; + public static readonly LP = 7; + public static readonly RP = 8; + public static readonly DOLLAR = 9; + public static readonly DOT = 10; + public static readonly NSDOT = 11; + public static readonly COMMA = 12; + public static readonly SEMICOLON = 13; + public static readonly IF = 14; + public static readonly IN = 15; + public static readonly ELSE = 16; + public static readonly WHILE = 17; + public static readonly DO = 18; + public static readonly FOR = 19; + public static readonly CONTINUE = 20; + public static readonly BREAK = 21; + public static readonly RETURN = 22; + public static readonly NEW = 23; + public static readonly TRY = 24; + public static readonly CATCH = 25; + public static readonly THROW = 26; + public static readonly THIS = 27; + public static readonly INSTANCEOF = 28; + public static readonly BOOLNOT = 29; + public static readonly BWNOT = 30; + public static readonly MUL = 31; + public static readonly DIV = 32; + public static readonly REM = 33; + public static readonly ADD = 34; + public static readonly SUB = 35; + public static readonly LSH = 36; + public static readonly RSH = 37; + public static readonly USH = 38; + public static readonly LT = 39; + public static readonly LTE = 40; + public static readonly GT = 41; + public static readonly GTE = 42; + public static readonly EQ = 43; + public static readonly EQR = 44; + public static readonly NE = 45; + public static readonly NER = 46; + public static readonly BWAND = 47; + public static readonly XOR = 48; + public static readonly BWOR = 49; + public static readonly BOOLAND = 50; + public static readonly BOOLOR = 51; + public static readonly COND = 52; + public static readonly COLON = 53; + public static readonly ELVIS = 54; + public static readonly REF = 55; + public static readonly ARROW = 56; + public static readonly FIND = 57; + public static readonly MATCH = 58; + public static readonly INCR = 59; + public static readonly DECR = 60; + public static readonly ASSIGN = 61; + public static readonly AADD = 62; + public static readonly ASUB = 63; + public static readonly AMUL = 64; + public static readonly ADIV = 65; + public static readonly AREM = 66; + public static readonly AAND = 67; + public static readonly AXOR = 68; + public static readonly AOR = 69; + public static readonly ALSH = 70; + public static readonly ARSH = 71; + public static readonly AUSH = 72; + public static readonly OCTAL = 73; + public static readonly HEX = 74; + public static readonly INTEGER = 75; + public static readonly DECIMAL = 76; + public static readonly STRING = 77; + public static readonly REGEX = 78; + public static readonly TRUE = 79; + public static readonly FALSE = 80; + public static readonly NULL = 81; + public static readonly PRIMITIVE = 82; + public static readonly DEF = 83; + public static readonly ID = 84; + public static readonly DOTINTEGER = 85; + public static readonly DOTID = 86; + public static readonly EOF = Token.EOF; + public static readonly AFTER_DOT = 1; + + public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; + public static readonly literalNames: (string | null)[] = [ null, null, + null, "'{'", + "'}'", "'['", + "']'", "'('", + "')'", "'$'", + "'.'", "'?.'", + "','", "';'", + "'if'", "'in'", + "'else'", "'while'", + "'do'", "'for'", + "'continue'", + "'break'", "'return'", + "'new'", "'try'", + "'catch'", "'throw'", + "'this'", "'instanceof'", + "'!'", "'~'", + "'*'", "'/'", + "'%'", "'+'", + "'-'", "'<<'", + "'>>'", "'>>>'", + "'<'", "'<='", + "'>'", "'>='", + "'=='", "'==='", + "'!='", "'!=='", + "'&'", "'^'", + "'|'", "'&&'", + "'||'", "'?'", + "':'", "'?:'", + "'::'", "'->'", + "'=~'", "'==~'", + "'++'", "'--'", + "'='", "'+='", + "'-='", "'*='", + "'/='", "'%='", + "'&='", "'^='", + "'|='", "'<<='", + "'>>='", "'>>>='", + null, null, + null, null, + null, null, + "'true'", "'false'", + "'null'", null, + "'def'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "WS", + "COMMENT", + "LBRACK", "RBRACK", + "LBRACE", "RBRACE", + "LP", "RP", + "DOLLAR", "DOT", + "NSDOT", "COMMA", + "SEMICOLON", + "IF", "IN", + "ELSE", "WHILE", + "DO", "FOR", + "CONTINUE", + "BREAK", "RETURN", + "NEW", "TRY", + "CATCH", "THROW", + "THIS", "INSTANCEOF", + "BOOLNOT", + "BWNOT", "MUL", + "DIV", "REM", + "ADD", "SUB", + "LSH", "RSH", + "USH", "LT", + "LTE", "GT", + "GTE", "EQ", + "EQR", "NE", + "NER", "BWAND", + "XOR", "BWOR", + "BOOLAND", + "BOOLOR", "COND", + "COLON", "ELVIS", + "REF", "ARROW", + "FIND", "MATCH", + "INCR", "DECR", + "ASSIGN", "AADD", + "ASUB", "AMUL", + "ADIV", "AREM", + "AAND", "AXOR", + "AOR", "ALSH", + "ARSH", "AUSH", + "OCTAL", "HEX", + "INTEGER", + "DECIMAL", + "STRING", "REGEX", + "TRUE", "FALSE", + "NULL", "PRIMITIVE", + "DEF", "ID", + "DOTINTEGER", + "DOTID" ]; + public static readonly modeNames: string[] = [ "DEFAULT_MODE", "AFTER_DOT", ]; + + public static readonly ruleNames: string[] = [ + "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", "RP", "DOLLAR", + "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", "DO", + "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", + "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", + "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", + "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", + "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", + "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", + "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", + "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", + ]; + + + constructor(input: CharStream) { + super(input); + this._interp = new LexerATNSimulator(this, painless_lexer._ATN, painless_lexer.DecisionsToDFA, new PredictionContextCache()); + } + + public get grammarFileName(): string { return "painless_lexer.g4"; } + + public get literalNames(): (string | null)[] { return painless_lexer.literalNames; } + public get symbolicNames(): (string | null)[] { return painless_lexer.symbolicNames; } + public get ruleNames(): string[] { return painless_lexer.ruleNames; } + + public get serializedATN(): number[] { return painless_lexer._serializedATN; } + + public get channelNames(): string[] { return painless_lexer.channelNames; } + + public get modeNames(): string[] { return painless_lexer.modeNames; } + + // @Override + public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 31: + return this.DIV_sempred(localctx, predIndex); + case 77: + return this.REGEX_sempred(localctx, predIndex); + } + return true; + } + private DIV_sempred(localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.isSlashRegex() == false ; + } + return true; + } + private REGEX_sempred(localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.isSlashRegex() ; + } + return true; + } + + public static readonly _serializedATN: number[] = [4,0,86,636,6,-1,6,-1, + 2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8, + 2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16, + 7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7, + 23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30, + 2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2, + 38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, + 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59, + 2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2, + 67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74, + 7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7, + 81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,1,0,4,0,176,8,0,11,0,12,0,177, + 1,0,1,0,1,1,1,1,1,1,1,1,5,1,186,8,1,10,1,12,1,189,9,1,1,1,1,1,1,1,1,1,1, + 1,5,1,196,8,1,10,1,12,1,199,9,1,1,1,1,1,3,1,203,8,1,1,1,1,1,1,2,1,2,1,3, + 1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1, + 10,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15, + 1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1, + 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20, + 1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,23,1, + 23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25, + 1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, + 27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,33,1,33, + 1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,38,1,38,1, + 39,1,39,1,39,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,43,1,43, + 1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,49,1, + 49,1,49,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,54, + 1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1, + 59,1,59,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64, + 1,64,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1,72,4,72, + 444,8,72,11,72,12,72,445,1,72,3,72,449,8,72,1,73,1,73,1,73,4,73,454,8,73, + 11,73,12,73,455,1,73,3,73,459,8,73,1,74,1,74,1,74,5,74,464,8,74,10,74,12, + 74,467,9,74,3,74,469,8,74,1,74,3,74,472,8,74,1,75,1,75,1,75,5,75,477,8, + 75,10,75,12,75,480,9,75,3,75,482,8,75,1,75,1,75,4,75,486,8,75,11,75,12, + 75,487,3,75,490,8,75,1,75,1,75,3,75,494,8,75,1,75,4,75,497,8,75,11,75,12, + 75,498,3,75,501,8,75,1,75,3,75,504,8,75,1,76,1,76,1,76,1,76,1,76,1,76,5, + 76,512,8,76,10,76,12,76,515,9,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,5,76, + 524,8,76,10,76,12,76,527,9,76,1,76,3,76,530,8,76,1,77,1,77,1,77,1,77,4, + 77,536,8,77,11,77,12,77,537,1,77,1,77,5,77,542,8,77,10,77,12,77,545,9,77, + 1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1, + 80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,603, + 8,81,1,82,1,82,1,82,1,82,1,83,1,83,5,83,611,8,83,10,83,12,83,614,9,83,1, + 84,1,84,1,84,5,84,619,8,84,10,84,12,84,622,9,84,3,84,624,8,84,1,84,1,84, + 1,85,1,85,5,85,630,8,85,10,85,12,85,633,9,85,1,85,1,85,5,187,197,513,525, + 537,0,86,2,1,4,2,6,3,8,4,10,5,12,6,14,7,16,8,18,9,20,10,22,11,24,12,26, + 13,28,14,30,15,32,16,34,17,36,18,38,19,40,20,42,21,44,22,46,23,48,24,50, + 25,52,26,54,27,56,28,58,29,60,30,62,31,64,32,66,33,68,34,70,35,72,36,74, + 37,76,38,78,39,80,40,82,41,84,42,86,43,88,44,90,45,92,46,94,47,96,48,98, + 49,100,50,102,51,104,52,106,53,108,54,110,55,112,56,114,57,116,58,118,59, + 120,60,122,61,124,62,126,63,128,64,130,65,132,66,134,67,136,68,138,69,140, + 70,142,71,144,72,146,73,148,74,150,75,152,76,154,77,156,78,158,79,160,80, + 162,81,164,82,166,83,168,84,170,85,172,86,2,0,1,19,3,0,9,10,13,13,32,32, + 2,0,10,10,13,13,1,0,48,55,2,0,76,76,108,108,2,0,88,88,120,120,3,0,48,57, + 65,70,97,102,1,0,49,57,1,0,48,57,6,0,68,68,70,70,76,76,100,100,102,102, + 108,108,2,0,69,69,101,101,2,0,43,43,45,45,4,0,68,68,70,70,100,100,102,102, + 2,0,34,34,92,92,2,0,39,39,92,92,1,0,10,10,2,0,10,10,47,47,7,0,85,85,99, + 99,105,105,108,109,115,115,117,117,120,120,3,0,65,90,95,95,97,122,4,0,48, + 57,65,90,95,95,97,122,674,0,2,1,0,0,0,0,4,1,0,0,0,0,6,1,0,0,0,0,8,1,0,0, + 0,0,10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0,0,0,16,1,0,0,0,0,18,1,0,0,0,0,20, + 1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0,0,26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0, + 0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1,0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42, + 1,0,0,0,0,44,1,0,0,0,0,46,1,0,0,0,0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0, + 0,0,54,1,0,0,0,0,56,1,0,0,0,0,58,1,0,0,0,0,60,1,0,0,0,0,62,1,0,0,0,0,64, + 1,0,0,0,0,66,1,0,0,0,0,68,1,0,0,0,0,70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0, + 0,0,76,1,0,0,0,0,78,1,0,0,0,0,80,1,0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86, + 1,0,0,0,0,88,1,0,0,0,0,90,1,0,0,0,0,92,1,0,0,0,0,94,1,0,0,0,0,96,1,0,0, + 0,0,98,1,0,0,0,0,100,1,0,0,0,0,102,1,0,0,0,0,104,1,0,0,0,0,106,1,0,0,0, + 0,108,1,0,0,0,0,110,1,0,0,0,0,112,1,0,0,0,0,114,1,0,0,0,0,116,1,0,0,0,0, + 118,1,0,0,0,0,120,1,0,0,0,0,122,1,0,0,0,0,124,1,0,0,0,0,126,1,0,0,0,0,128, + 1,0,0,0,0,130,1,0,0,0,0,132,1,0,0,0,0,134,1,0,0,0,0,136,1,0,0,0,0,138,1, + 0,0,0,0,140,1,0,0,0,0,142,1,0,0,0,0,144,1,0,0,0,0,146,1,0,0,0,0,148,1,0, + 0,0,0,150,1,0,0,0,0,152,1,0,0,0,0,154,1,0,0,0,0,156,1,0,0,0,0,158,1,0,0, + 0,0,160,1,0,0,0,0,162,1,0,0,0,0,164,1,0,0,0,0,166,1,0,0,0,0,168,1,0,0,0, + 1,170,1,0,0,0,1,172,1,0,0,0,2,175,1,0,0,0,4,202,1,0,0,0,6,206,1,0,0,0,8, + 208,1,0,0,0,10,210,1,0,0,0,12,212,1,0,0,0,14,214,1,0,0,0,16,216,1,0,0,0, + 18,218,1,0,0,0,20,220,1,0,0,0,22,224,1,0,0,0,24,229,1,0,0,0,26,231,1,0, + 0,0,28,233,1,0,0,0,30,236,1,0,0,0,32,239,1,0,0,0,34,244,1,0,0,0,36,250, + 1,0,0,0,38,253,1,0,0,0,40,257,1,0,0,0,42,266,1,0,0,0,44,272,1,0,0,0,46, + 279,1,0,0,0,48,283,1,0,0,0,50,287,1,0,0,0,52,293,1,0,0,0,54,299,1,0,0,0, + 56,304,1,0,0,0,58,315,1,0,0,0,60,317,1,0,0,0,62,319,1,0,0,0,64,321,1,0, + 0,0,66,324,1,0,0,0,68,326,1,0,0,0,70,328,1,0,0,0,72,330,1,0,0,0,74,333, + 1,0,0,0,76,336,1,0,0,0,78,340,1,0,0,0,80,342,1,0,0,0,82,345,1,0,0,0,84, + 347,1,0,0,0,86,350,1,0,0,0,88,353,1,0,0,0,90,357,1,0,0,0,92,360,1,0,0,0, + 94,364,1,0,0,0,96,366,1,0,0,0,98,368,1,0,0,0,100,370,1,0,0,0,102,373,1, + 0,0,0,104,376,1,0,0,0,106,378,1,0,0,0,108,380,1,0,0,0,110,383,1,0,0,0,112, + 386,1,0,0,0,114,389,1,0,0,0,116,392,1,0,0,0,118,396,1,0,0,0,120,399,1,0, + 0,0,122,402,1,0,0,0,124,404,1,0,0,0,126,407,1,0,0,0,128,410,1,0,0,0,130, + 413,1,0,0,0,132,416,1,0,0,0,134,419,1,0,0,0,136,422,1,0,0,0,138,425,1,0, + 0,0,140,428,1,0,0,0,142,432,1,0,0,0,144,436,1,0,0,0,146,441,1,0,0,0,148, + 450,1,0,0,0,150,468,1,0,0,0,152,481,1,0,0,0,154,529,1,0,0,0,156,531,1,0, + 0,0,158,548,1,0,0,0,160,553,1,0,0,0,162,559,1,0,0,0,164,602,1,0,0,0,166, + 604,1,0,0,0,168,608,1,0,0,0,170,623,1,0,0,0,172,627,1,0,0,0,174,176,7,0, + 0,0,175,174,1,0,0,0,176,177,1,0,0,0,177,175,1,0,0,0,177,178,1,0,0,0,178, + 179,1,0,0,0,179,180,6,0,0,0,180,3,1,0,0,0,181,182,5,47,0,0,182,183,5,47, + 0,0,183,187,1,0,0,0,184,186,9,0,0,0,185,184,1,0,0,0,186,189,1,0,0,0,187, + 188,1,0,0,0,187,185,1,0,0,0,188,190,1,0,0,0,189,187,1,0,0,0,190,203,7,1, + 0,0,191,192,5,47,0,0,192,193,5,42,0,0,193,197,1,0,0,0,194,196,9,0,0,0,195, + 194,1,0,0,0,196,199,1,0,0,0,197,198,1,0,0,0,197,195,1,0,0,0,198,200,1,0, + 0,0,199,197,1,0,0,0,200,201,5,42,0,0,201,203,5,47,0,0,202,181,1,0,0,0,202, + 191,1,0,0,0,203,204,1,0,0,0,204,205,6,1,0,0,205,5,1,0,0,0,206,207,5,123, + 0,0,207,7,1,0,0,0,208,209,5,125,0,0,209,9,1,0,0,0,210,211,5,91,0,0,211, + 11,1,0,0,0,212,213,5,93,0,0,213,13,1,0,0,0,214,215,5,40,0,0,215,15,1,0, + 0,0,216,217,5,41,0,0,217,17,1,0,0,0,218,219,5,36,0,0,219,19,1,0,0,0,220, + 221,5,46,0,0,221,222,1,0,0,0,222,223,6,9,1,0,223,21,1,0,0,0,224,225,5,63, + 0,0,225,226,5,46,0,0,226,227,1,0,0,0,227,228,6,10,1,0,228,23,1,0,0,0,229, + 230,5,44,0,0,230,25,1,0,0,0,231,232,5,59,0,0,232,27,1,0,0,0,233,234,5,105, + 0,0,234,235,5,102,0,0,235,29,1,0,0,0,236,237,5,105,0,0,237,238,5,110,0, + 0,238,31,1,0,0,0,239,240,5,101,0,0,240,241,5,108,0,0,241,242,5,115,0,0, + 242,243,5,101,0,0,243,33,1,0,0,0,244,245,5,119,0,0,245,246,5,104,0,0,246, + 247,5,105,0,0,247,248,5,108,0,0,248,249,5,101,0,0,249,35,1,0,0,0,250,251, + 5,100,0,0,251,252,5,111,0,0,252,37,1,0,0,0,253,254,5,102,0,0,254,255,5, + 111,0,0,255,256,5,114,0,0,256,39,1,0,0,0,257,258,5,99,0,0,258,259,5,111, + 0,0,259,260,5,110,0,0,260,261,5,116,0,0,261,262,5,105,0,0,262,263,5,110, + 0,0,263,264,5,117,0,0,264,265,5,101,0,0,265,41,1,0,0,0,266,267,5,98,0,0, + 267,268,5,114,0,0,268,269,5,101,0,0,269,270,5,97,0,0,270,271,5,107,0,0, + 271,43,1,0,0,0,272,273,5,114,0,0,273,274,5,101,0,0,274,275,5,116,0,0,275, + 276,5,117,0,0,276,277,5,114,0,0,277,278,5,110,0,0,278,45,1,0,0,0,279,280, + 5,110,0,0,280,281,5,101,0,0,281,282,5,119,0,0,282,47,1,0,0,0,283,284,5, + 116,0,0,284,285,5,114,0,0,285,286,5,121,0,0,286,49,1,0,0,0,287,288,5,99, + 0,0,288,289,5,97,0,0,289,290,5,116,0,0,290,291,5,99,0,0,291,292,5,104,0, + 0,292,51,1,0,0,0,293,294,5,116,0,0,294,295,5,104,0,0,295,296,5,114,0,0, + 296,297,5,111,0,0,297,298,5,119,0,0,298,53,1,0,0,0,299,300,5,116,0,0,300, + 301,5,104,0,0,301,302,5,105,0,0,302,303,5,115,0,0,303,55,1,0,0,0,304,305, + 5,105,0,0,305,306,5,110,0,0,306,307,5,115,0,0,307,308,5,116,0,0,308,309, + 5,97,0,0,309,310,5,110,0,0,310,311,5,99,0,0,311,312,5,101,0,0,312,313,5, + 111,0,0,313,314,5,102,0,0,314,57,1,0,0,0,315,316,5,33,0,0,316,59,1,0,0, + 0,317,318,5,126,0,0,318,61,1,0,0,0,319,320,5,42,0,0,320,63,1,0,0,0,321, + 322,5,47,0,0,322,323,4,31,0,0,323,65,1,0,0,0,324,325,5,37,0,0,325,67,1, + 0,0,0,326,327,5,43,0,0,327,69,1,0,0,0,328,329,5,45,0,0,329,71,1,0,0,0,330, + 331,5,60,0,0,331,332,5,60,0,0,332,73,1,0,0,0,333,334,5,62,0,0,334,335,5, + 62,0,0,335,75,1,0,0,0,336,337,5,62,0,0,337,338,5,62,0,0,338,339,5,62,0, + 0,339,77,1,0,0,0,340,341,5,60,0,0,341,79,1,0,0,0,342,343,5,60,0,0,343,344, + 5,61,0,0,344,81,1,0,0,0,345,346,5,62,0,0,346,83,1,0,0,0,347,348,5,62,0, + 0,348,349,5,61,0,0,349,85,1,0,0,0,350,351,5,61,0,0,351,352,5,61,0,0,352, + 87,1,0,0,0,353,354,5,61,0,0,354,355,5,61,0,0,355,356,5,61,0,0,356,89,1, + 0,0,0,357,358,5,33,0,0,358,359,5,61,0,0,359,91,1,0,0,0,360,361,5,33,0,0, + 361,362,5,61,0,0,362,363,5,61,0,0,363,93,1,0,0,0,364,365,5,38,0,0,365,95, + 1,0,0,0,366,367,5,94,0,0,367,97,1,0,0,0,368,369,5,124,0,0,369,99,1,0,0, + 0,370,371,5,38,0,0,371,372,5,38,0,0,372,101,1,0,0,0,373,374,5,124,0,0,374, + 375,5,124,0,0,375,103,1,0,0,0,376,377,5,63,0,0,377,105,1,0,0,0,378,379, + 5,58,0,0,379,107,1,0,0,0,380,381,5,63,0,0,381,382,5,58,0,0,382,109,1,0, + 0,0,383,384,5,58,0,0,384,385,5,58,0,0,385,111,1,0,0,0,386,387,5,45,0,0, + 387,388,5,62,0,0,388,113,1,0,0,0,389,390,5,61,0,0,390,391,5,126,0,0,391, + 115,1,0,0,0,392,393,5,61,0,0,393,394,5,61,0,0,394,395,5,126,0,0,395,117, + 1,0,0,0,396,397,5,43,0,0,397,398,5,43,0,0,398,119,1,0,0,0,399,400,5,45, + 0,0,400,401,5,45,0,0,401,121,1,0,0,0,402,403,5,61,0,0,403,123,1,0,0,0,404, + 405,5,43,0,0,405,406,5,61,0,0,406,125,1,0,0,0,407,408,5,45,0,0,408,409, + 5,61,0,0,409,127,1,0,0,0,410,411,5,42,0,0,411,412,5,61,0,0,412,129,1,0, + 0,0,413,414,5,47,0,0,414,415,5,61,0,0,415,131,1,0,0,0,416,417,5,37,0,0, + 417,418,5,61,0,0,418,133,1,0,0,0,419,420,5,38,0,0,420,421,5,61,0,0,421, + 135,1,0,0,0,422,423,5,94,0,0,423,424,5,61,0,0,424,137,1,0,0,0,425,426,5, + 124,0,0,426,427,5,61,0,0,427,139,1,0,0,0,428,429,5,60,0,0,429,430,5,60, + 0,0,430,431,5,61,0,0,431,141,1,0,0,0,432,433,5,62,0,0,433,434,5,62,0,0, + 434,435,5,61,0,0,435,143,1,0,0,0,436,437,5,62,0,0,437,438,5,62,0,0,438, + 439,5,62,0,0,439,440,5,61,0,0,440,145,1,0,0,0,441,443,5,48,0,0,442,444, + 7,2,0,0,443,442,1,0,0,0,444,445,1,0,0,0,445,443,1,0,0,0,445,446,1,0,0,0, + 446,448,1,0,0,0,447,449,7,3,0,0,448,447,1,0,0,0,448,449,1,0,0,0,449,147, + 1,0,0,0,450,451,5,48,0,0,451,453,7,4,0,0,452,454,7,5,0,0,453,452,1,0,0, + 0,454,455,1,0,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,458,1,0,0,0,457,459, + 7,3,0,0,458,457,1,0,0,0,458,459,1,0,0,0,459,149,1,0,0,0,460,469,5,48,0, + 0,461,465,7,6,0,0,462,464,7,7,0,0,463,462,1,0,0,0,464,467,1,0,0,0,465,463, + 1,0,0,0,465,466,1,0,0,0,466,469,1,0,0,0,467,465,1,0,0,0,468,460,1,0,0,0, + 468,461,1,0,0,0,469,471,1,0,0,0,470,472,7,8,0,0,471,470,1,0,0,0,471,472, + 1,0,0,0,472,151,1,0,0,0,473,482,5,48,0,0,474,478,7,6,0,0,475,477,7,7,0, + 0,476,475,1,0,0,0,477,480,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479,482, + 1,0,0,0,480,478,1,0,0,0,481,473,1,0,0,0,481,474,1,0,0,0,482,489,1,0,0,0, + 483,485,3,20,9,0,484,486,7,7,0,0,485,484,1,0,0,0,486,487,1,0,0,0,487,485, + 1,0,0,0,487,488,1,0,0,0,488,490,1,0,0,0,489,483,1,0,0,0,489,490,1,0,0,0, + 490,500,1,0,0,0,491,493,7,9,0,0,492,494,7,10,0,0,493,492,1,0,0,0,493,494, + 1,0,0,0,494,496,1,0,0,0,495,497,7,7,0,0,496,495,1,0,0,0,497,498,1,0,0,0, + 498,496,1,0,0,0,498,499,1,0,0,0,499,501,1,0,0,0,500,491,1,0,0,0,500,501, + 1,0,0,0,501,503,1,0,0,0,502,504,7,11,0,0,503,502,1,0,0,0,503,504,1,0,0, + 0,504,153,1,0,0,0,505,513,5,34,0,0,506,507,5,92,0,0,507,512,5,34,0,0,508, + 509,5,92,0,0,509,512,5,92,0,0,510,512,8,12,0,0,511,506,1,0,0,0,511,508, + 1,0,0,0,511,510,1,0,0,0,512,515,1,0,0,0,513,514,1,0,0,0,513,511,1,0,0,0, + 514,516,1,0,0,0,515,513,1,0,0,0,516,530,5,34,0,0,517,525,5,39,0,0,518,519, + 5,92,0,0,519,524,5,39,0,0,520,521,5,92,0,0,521,524,5,92,0,0,522,524,8,13, + 0,0,523,518,1,0,0,0,523,520,1,0,0,0,523,522,1,0,0,0,524,527,1,0,0,0,525, + 526,1,0,0,0,525,523,1,0,0,0,526,528,1,0,0,0,527,525,1,0,0,0,528,530,5,39, + 0,0,529,505,1,0,0,0,529,517,1,0,0,0,530,155,1,0,0,0,531,535,5,47,0,0,532, + 533,5,92,0,0,533,536,8,14,0,0,534,536,8,15,0,0,535,532,1,0,0,0,535,534, + 1,0,0,0,536,537,1,0,0,0,537,538,1,0,0,0,537,535,1,0,0,0,538,539,1,0,0,0, + 539,543,5,47,0,0,540,542,7,16,0,0,541,540,1,0,0,0,542,545,1,0,0,0,543,541, + 1,0,0,0,543,544,1,0,0,0,544,546,1,0,0,0,545,543,1,0,0,0,546,547,4,77,1, + 0,547,157,1,0,0,0,548,549,5,116,0,0,549,550,5,114,0,0,550,551,5,117,0,0, + 551,552,5,101,0,0,552,159,1,0,0,0,553,554,5,102,0,0,554,555,5,97,0,0,555, + 556,5,108,0,0,556,557,5,115,0,0,557,558,5,101,0,0,558,161,1,0,0,0,559,560, + 5,110,0,0,560,561,5,117,0,0,561,562,5,108,0,0,562,563,5,108,0,0,563,163, + 1,0,0,0,564,565,5,98,0,0,565,566,5,111,0,0,566,567,5,111,0,0,567,568,5, + 108,0,0,568,569,5,101,0,0,569,570,5,97,0,0,570,603,5,110,0,0,571,572,5, + 98,0,0,572,573,5,121,0,0,573,574,5,116,0,0,574,603,5,101,0,0,575,576,5, + 115,0,0,576,577,5,104,0,0,577,578,5,111,0,0,578,579,5,114,0,0,579,603,5, + 116,0,0,580,581,5,99,0,0,581,582,5,104,0,0,582,583,5,97,0,0,583,603,5,114, + 0,0,584,585,5,105,0,0,585,586,5,110,0,0,586,603,5,116,0,0,587,588,5,108, + 0,0,588,589,5,111,0,0,589,590,5,110,0,0,590,603,5,103,0,0,591,592,5,102, + 0,0,592,593,5,108,0,0,593,594,5,111,0,0,594,595,5,97,0,0,595,603,5,116, + 0,0,596,597,5,100,0,0,597,598,5,111,0,0,598,599,5,117,0,0,599,600,5,98, + 0,0,600,601,5,108,0,0,601,603,5,101,0,0,602,564,1,0,0,0,602,571,1,0,0,0, + 602,575,1,0,0,0,602,580,1,0,0,0,602,584,1,0,0,0,602,587,1,0,0,0,602,591, + 1,0,0,0,602,596,1,0,0,0,603,165,1,0,0,0,604,605,5,100,0,0,605,606,5,101, + 0,0,606,607,5,102,0,0,607,167,1,0,0,0,608,612,7,17,0,0,609,611,7,18,0,0, + 610,609,1,0,0,0,611,614,1,0,0,0,612,610,1,0,0,0,612,613,1,0,0,0,613,169, + 1,0,0,0,614,612,1,0,0,0,615,624,5,48,0,0,616,620,7,6,0,0,617,619,7,7,0, + 0,618,617,1,0,0,0,619,622,1,0,0,0,620,618,1,0,0,0,620,621,1,0,0,0,621,624, + 1,0,0,0,622,620,1,0,0,0,623,615,1,0,0,0,623,616,1,0,0,0,624,625,1,0,0,0, + 625,626,6,84,2,0,626,171,1,0,0,0,627,631,7,17,0,0,628,630,7,18,0,0,629, + 628,1,0,0,0,630,633,1,0,0,0,631,629,1,0,0,0,631,632,1,0,0,0,632,634,1,0, + 0,0,633,631,1,0,0,0,634,635,6,85,2,0,635,173,1,0,0,0,34,0,1,177,187,197, + 202,445,448,455,458,465,468,471,478,481,487,489,493,498,500,503,511,513, + 523,525,529,535,537,543,602,612,620,623,631,3,6,0,0,2,1,0,2,0,0]; + + private static __ATN: ATN; + public static get _ATN(): ATN { + if (!painless_lexer.__ATN) { + painless_lexer.__ATN = new ATNDeserializer().deserialize(painless_lexer._serializedATN); + } + + return painless_lexer.__ATN; + } + + + static DecisionsToDFA = painless_lexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.interp b/packages/kbn-monaco/src/painless/antlr/painless_parser.interp index de912e1ced298..01580e51d0640 100644 --- a/packages/kbn-monaco/src/painless/antlr/painless_parser.interp +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.interp @@ -219,4 +219,4 @@ funcref atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 88, 574, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 3, 2, 7, 2, 82, 10, 2, 12, 2, 14, 2, 85, 11, 2, 3, 2, 7, 2, 88, 10, 2, 12, 2, 14, 2, 91, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 107, 10, 4, 12, 4, 14, 4, 110, 11, 4, 5, 4, 112, 10, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 120, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 130, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 138, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 143, 10, 6, 3, 6, 3, 6, 5, 6, 147, 10, 6, 3, 6, 3, 6, 5, 6, 151, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 156, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 6, 6, 178, 10, 6, 13, 6, 14, 6, 179, 5, 6, 182, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 196, 10, 7, 3, 7, 3, 7, 3, 7, 5, 7, 201, 10, 7, 3, 8, 3, 8, 5, 8, 205, 10, 8, 3, 9, 3, 9, 7, 9, 209, 10, 9, 12, 9, 14, 9, 212, 11, 9, 3, 9, 5, 9, 215, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 223, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 231, 10, 13, 12, 13, 14, 13, 234, 11, 13, 3, 14, 3, 14, 3, 14, 7, 14, 239, 10, 14, 12, 14, 14, 14, 242, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 249, 10, 15, 12, 15, 14, 15, 252, 11, 15, 5, 15, 254, 10, 15, 3, 16, 3, 16, 3, 16, 5, 16, 259, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 310, 10, 18, 12, 18, 14, 18, 313, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 326, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 333, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 342, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 354, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 6, 24, 361, 10, 24, 13, 24, 14, 24, 362, 3, 24, 3, 24, 3, 24, 6, 24, 368, 10, 24, 13, 24, 14, 24, 369, 3, 24, 3, 24, 3, 24, 7, 24, 375, 10, 24, 12, 24, 14, 24, 378, 11, 24, 3, 24, 3, 24, 7, 24, 382, 10, 24, 12, 24, 14, 24, 385, 11, 24, 5, 24, 387, 10, 24, 3, 25, 3, 25, 7, 25, 391, 10, 25, 12, 25, 14, 25, 394, 11, 25, 3, 25, 5, 25, 397, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 418, 10, 26, 3, 27, 3, 27, 3, 27, 5, 27, 423, 10, 27, 3, 28, 3, 28, 5, 28, 427, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 6, 32, 446, 10, 32, 13, 32, 14, 32, 447, 3, 32, 3, 32, 7, 32, 452, 10, 32, 12, 32, 14, 32, 455, 11, 32, 5, 32, 457, 10, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 7, 32, 467, 10, 32, 12, 32, 14, 32, 470, 11, 32, 5, 32, 472, 10, 32, 3, 32, 3, 32, 7, 32, 476, 10, 32, 12, 32, 14, 32, 479, 11, 32, 5, 32, 481, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 487, 10, 33, 12, 33, 14, 33, 490, 11, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 496, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 502, 10, 34, 12, 34, 14, 34, 505, 11, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 512, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 522, 10, 36, 12, 36, 14, 36, 525, 11, 36, 5, 36, 527, 10, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 5, 37, 534, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 541, 10, 38, 12, 38, 14, 38, 544, 11, 38, 5, 38, 546, 10, 38, 3, 38, 5, 38, 549, 10, 38, 3, 38, 3, 38, 3, 38, 5, 38, 554, 10, 38, 3, 39, 5, 39, 557, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 572, 10, 40, 3, 40, 2, 2, 3, 34, 41, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 2, 17, 3, 3, 15, 15, 3, 2, 33, 35, 3, 2, 36, 37, 3, 2, 59, 60, 3, 2, 38, 40, 3, 2, 41, 44, 3, 2, 45, 48, 3, 2, 63, 74, 3, 2, 61, 62, 3, 2, 31, 32, 3, 2, 84, 85, 3, 2, 75, 78, 4, 2, 11, 11, 86, 86, 3, 2, 12, 13, 3, 2, 87, 88, 2, 633, 2, 83, 3, 2, 2, 2, 4, 94, 3, 2, 2, 2, 6, 99, 3, 2, 2, 2, 8, 119, 3, 2, 2, 2, 10, 181, 3, 2, 2, 2, 12, 200, 3, 2, 2, 2, 14, 204, 3, 2, 2, 2, 16, 206, 3, 2, 2, 2, 18, 218, 3, 2, 2, 2, 20, 222, 3, 2, 2, 2, 22, 224, 3, 2, 2, 2, 24, 226, 3, 2, 2, 2, 26, 235, 3, 2, 2, 2, 28, 253, 3, 2, 2, 2, 30, 255, 3, 2, 2, 2, 32, 260, 3, 2, 2, 2, 34, 267, 3, 2, 2, 2, 36, 325, 3, 2, 2, 2, 38, 332, 3, 2, 2, 2, 40, 341, 3, 2, 2, 2, 42, 353, 3, 2, 2, 2, 44, 355, 3, 2, 2, 2, 46, 386, 3, 2, 2, 2, 48, 396, 3, 2, 2, 2, 50, 417, 3, 2, 2, 2, 52, 422, 3, 2, 2, 2, 54, 426, 3, 2, 2, 2, 56, 428, 3, 2, 2, 2, 58, 432, 3, 2, 2, 2, 60, 435, 3, 2, 2, 2, 62, 480, 3, 2, 2, 2, 64, 495, 3, 2, 2, 2, 66, 511, 3, 2, 2, 2, 68, 513, 3, 2, 2, 2, 70, 517, 3, 2, 2, 2, 72, 533, 3, 2, 2, 2, 74, 548, 3, 2, 2, 2, 76, 556, 3, 2, 2, 2, 78, 571, 3, 2, 2, 2, 80, 82, 5, 4, 3, 2, 81, 80, 3, 2, 2, 2, 82, 85, 3, 2, 2, 2, 83, 81, 3, 2, 2, 2, 83, 84, 3, 2, 2, 2, 84, 89, 3, 2, 2, 2, 85, 83, 3, 2, 2, 2, 86, 88, 5, 8, 5, 2, 87, 86, 3, 2, 2, 2, 88, 91, 3, 2, 2, 2, 89, 87, 3, 2, 2, 2, 89, 90, 3, 2, 2, 2, 90, 92, 3, 2, 2, 2, 91, 89, 3, 2, 2, 2, 92, 93, 7, 2, 2, 3, 93, 3, 3, 2, 2, 2, 94, 95, 5, 26, 14, 2, 95, 96, 7, 86, 2, 2, 96, 97, 5, 6, 4, 2, 97, 98, 5, 16, 9, 2, 98, 5, 3, 2, 2, 2, 99, 111, 7, 9, 2, 2, 100, 101, 5, 26, 14, 2, 101, 108, 7, 86, 2, 2, 102, 103, 7, 14, 2, 2, 103, 104, 5, 26, 14, 2, 104, 105, 7, 86, 2, 2, 105, 107, 3, 2, 2, 2, 106, 102, 3, 2, 2, 2, 107, 110, 3, 2, 2, 2, 108, 106, 3, 2, 2, 2, 108, 109, 3, 2, 2, 2, 109, 112, 3, 2, 2, 2, 110, 108, 3, 2, 2, 2, 111, 100, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 7, 10, 2, 2, 114, 7, 3, 2, 2, 2, 115, 120, 5, 10, 6, 2, 116, 117, 5, 12, 7, 2, 117, 118, 9, 2, 2, 2, 118, 120, 3, 2, 2, 2, 119, 115, 3, 2, 2, 2, 119, 116, 3, 2, 2, 2, 120, 9, 3, 2, 2, 2, 121, 122, 7, 16, 2, 2, 122, 123, 7, 9, 2, 2, 123, 124, 5, 36, 19, 2, 124, 125, 7, 10, 2, 2, 125, 129, 5, 14, 8, 2, 126, 127, 7, 18, 2, 2, 127, 130, 5, 14, 8, 2, 128, 130, 6, 6, 2, 2, 129, 126, 3, 2, 2, 2, 129, 128, 3, 2, 2, 2, 130, 182, 3, 2, 2, 2, 131, 132, 7, 19, 2, 2, 132, 133, 7, 9, 2, 2, 133, 134, 5, 36, 19, 2, 134, 137, 7, 10, 2, 2, 135, 138, 5, 14, 8, 2, 136, 138, 5, 18, 10, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 182, 3, 2, 2, 2, 139, 140, 7, 21, 2, 2, 140, 142, 7, 9, 2, 2, 141, 143, 5, 20, 11, 2, 142, 141, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 146, 7, 15, 2, 2, 145, 147, 5, 36, 19, 2, 146, 145, 3, 2, 2, 2, 146, 147, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 150, 7, 15, 2, 2, 149, 151, 5, 22, 12, 2, 150, 149, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 3, 2, 2, 2, 152, 155, 7, 10, 2, 2, 153, 156, 5, 14, 8, 2, 154, 156, 5, 18, 10, 2, 155, 153, 3, 2, 2, 2, 155, 154, 3, 2, 2, 2, 156, 182, 3, 2, 2, 2, 157, 158, 7, 21, 2, 2, 158, 159, 7, 9, 2, 2, 159, 160, 5, 26, 14, 2, 160, 161, 7, 86, 2, 2, 161, 162, 7, 55, 2, 2, 162, 163, 5, 36, 19, 2, 163, 164, 7, 10, 2, 2, 164, 165, 5, 14, 8, 2, 165, 182, 3, 2, 2, 2, 166, 167, 7, 21, 2, 2, 167, 168, 7, 9, 2, 2, 168, 169, 7, 86, 2, 2, 169, 170, 7, 17, 2, 2, 170, 171, 5, 36, 19, 2, 171, 172, 7, 10, 2, 2, 172, 173, 5, 14, 8, 2, 173, 182, 3, 2, 2, 2, 174, 175, 7, 26, 2, 2, 175, 177, 5, 16, 9, 2, 176, 178, 5, 32, 17, 2, 177, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 179, 180, 3, 2, 2, 2, 180, 182, 3, 2, 2, 2, 181, 121, 3, 2, 2, 2, 181, 131, 3, 2, 2, 2, 181, 139, 3, 2, 2, 2, 181, 157, 3, 2, 2, 2, 181, 166, 3, 2, 2, 2, 181, 174, 3, 2, 2, 2, 182, 11, 3, 2, 2, 2, 183, 184, 7, 20, 2, 2, 184, 185, 5, 16, 9, 2, 185, 186, 7, 19, 2, 2, 186, 187, 7, 9, 2, 2, 187, 188, 5, 36, 19, 2, 188, 189, 7, 10, 2, 2, 189, 201, 3, 2, 2, 2, 190, 201, 5, 24, 13, 2, 191, 201, 7, 22, 2, 2, 192, 201, 7, 23, 2, 2, 193, 195, 7, 24, 2, 2, 194, 196, 5, 36, 19, 2, 195, 194, 3, 2, 2, 2, 195, 196, 3, 2, 2, 2, 196, 201, 3, 2, 2, 2, 197, 198, 7, 28, 2, 2, 198, 201, 5, 36, 19, 2, 199, 201, 5, 36, 19, 2, 200, 183, 3, 2, 2, 2, 200, 190, 3, 2, 2, 2, 200, 191, 3, 2, 2, 2, 200, 192, 3, 2, 2, 2, 200, 193, 3, 2, 2, 2, 200, 197, 3, 2, 2, 2, 200, 199, 3, 2, 2, 2, 201, 13, 3, 2, 2, 2, 202, 205, 5, 16, 9, 2, 203, 205, 5, 8, 5, 2, 204, 202, 3, 2, 2, 2, 204, 203, 3, 2, 2, 2, 205, 15, 3, 2, 2, 2, 206, 210, 7, 5, 2, 2, 207, 209, 5, 8, 5, 2, 208, 207, 3, 2, 2, 2, 209, 212, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 214, 3, 2, 2, 2, 212, 210, 3, 2, 2, 2, 213, 215, 5, 12, 7, 2, 214, 213, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 6, 2, 2, 217, 17, 3, 2, 2, 2, 218, 219, 7, 15, 2, 2, 219, 19, 3, 2, 2, 2, 220, 223, 5, 24, 13, 2, 221, 223, 5, 36, 19, 2, 222, 220, 3, 2, 2, 2, 222, 221, 3, 2, 2, 2, 223, 21, 3, 2, 2, 2, 224, 225, 5, 36, 19, 2, 225, 23, 3, 2, 2, 2, 226, 227, 5, 26, 14, 2, 227, 232, 5, 30, 16, 2, 228, 229, 7, 14, 2, 2, 229, 231, 5, 30, 16, 2, 230, 228, 3, 2, 2, 2, 231, 234, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 232, 233, 3, 2, 2, 2, 233, 25, 3, 2, 2, 2, 234, 232, 3, 2, 2, 2, 235, 240, 5, 28, 15, 2, 236, 237, 7, 7, 2, 2, 237, 239, 7, 8, 2, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 27, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 254, 7, 85, 2, 2, 244, 254, 7, 84, 2, 2, 245, 250, 7, 86, 2, 2, 246, 247, 7, 12, 2, 2, 247, 249, 7, 88, 2, 2, 248, 246, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 254, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 243, 3, 2, 2, 2, 253, 244, 3, 2, 2, 2, 253, 245, 3, 2, 2, 2, 254, 29, 3, 2, 2, 2, 255, 258, 7, 86, 2, 2, 256, 257, 7, 63, 2, 2, 257, 259, 5, 36, 19, 2, 258, 256, 3, 2, 2, 2, 258, 259, 3, 2, 2, 2, 259, 31, 3, 2, 2, 2, 260, 261, 7, 27, 2, 2, 261, 262, 7, 9, 2, 2, 262, 263, 5, 28, 15, 2, 263, 264, 7, 86, 2, 2, 264, 265, 7, 10, 2, 2, 265, 266, 5, 16, 9, 2, 266, 33, 3, 2, 2, 2, 267, 268, 8, 18, 1, 2, 268, 269, 5, 38, 20, 2, 269, 311, 3, 2, 2, 2, 270, 271, 12, 15, 2, 2, 271, 272, 9, 3, 2, 2, 272, 310, 5, 34, 18, 16, 273, 274, 12, 14, 2, 2, 274, 275, 9, 4, 2, 2, 275, 310, 5, 34, 18, 15, 276, 277, 12, 13, 2, 2, 277, 278, 9, 5, 2, 2, 278, 310, 5, 34, 18, 14, 279, 280, 12, 12, 2, 2, 280, 281, 9, 6, 2, 2, 281, 310, 5, 34, 18, 13, 282, 283, 12, 11, 2, 2, 283, 284, 9, 7, 2, 2, 284, 310, 5, 34, 18, 12, 285, 286, 12, 9, 2, 2, 286, 287, 9, 8, 2, 2, 287, 310, 5, 34, 18, 10, 288, 289, 12, 8, 2, 2, 289, 290, 7, 49, 2, 2, 290, 310, 5, 34, 18, 9, 291, 292, 12, 7, 2, 2, 292, 293, 7, 50, 2, 2, 293, 310, 5, 34, 18, 8, 294, 295, 12, 6, 2, 2, 295, 296, 7, 51, 2, 2, 296, 310, 5, 34, 18, 7, 297, 298, 12, 5, 2, 2, 298, 299, 7, 52, 2, 2, 299, 310, 5, 34, 18, 6, 300, 301, 12, 4, 2, 2, 301, 302, 7, 53, 2, 2, 302, 310, 5, 34, 18, 5, 303, 304, 12, 3, 2, 2, 304, 305, 7, 56, 2, 2, 305, 310, 5, 34, 18, 3, 306, 307, 12, 10, 2, 2, 307, 308, 7, 30, 2, 2, 308, 310, 5, 26, 14, 2, 309, 270, 3, 2, 2, 2, 309, 273, 3, 2, 2, 2, 309, 276, 3, 2, 2, 2, 309, 279, 3, 2, 2, 2, 309, 282, 3, 2, 2, 2, 309, 285, 3, 2, 2, 2, 309, 288, 3, 2, 2, 2, 309, 291, 3, 2, 2, 2, 309, 294, 3, 2, 2, 2, 309, 297, 3, 2, 2, 2, 309, 300, 3, 2, 2, 2, 309, 303, 3, 2, 2, 2, 309, 306, 3, 2, 2, 2, 310, 313, 3, 2, 2, 2, 311, 309, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 35, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 314, 326, 5, 34, 18, 2, 315, 316, 5, 34, 18, 2, 316, 317, 7, 54, 2, 2, 317, 318, 5, 36, 19, 2, 318, 319, 7, 55, 2, 2, 319, 320, 5, 36, 19, 2, 320, 326, 3, 2, 2, 2, 321, 322, 5, 34, 18, 2, 322, 323, 9, 9, 2, 2, 323, 324, 5, 36, 19, 2, 324, 326, 3, 2, 2, 2, 325, 314, 3, 2, 2, 2, 325, 315, 3, 2, 2, 2, 325, 321, 3, 2, 2, 2, 326, 37, 3, 2, 2, 2, 327, 328, 9, 10, 2, 2, 328, 333, 5, 48, 25, 2, 329, 330, 9, 4, 2, 2, 330, 333, 5, 38, 20, 2, 331, 333, 5, 40, 21, 2, 332, 327, 3, 2, 2, 2, 332, 329, 3, 2, 2, 2, 332, 331, 3, 2, 2, 2, 333, 39, 3, 2, 2, 2, 334, 342, 5, 48, 25, 2, 335, 336, 5, 48, 25, 2, 336, 337, 9, 10, 2, 2, 337, 342, 3, 2, 2, 2, 338, 339, 9, 11, 2, 2, 339, 342, 5, 38, 20, 2, 340, 342, 5, 42, 22, 2, 341, 334, 3, 2, 2, 2, 341, 335, 3, 2, 2, 2, 341, 338, 3, 2, 2, 2, 341, 340, 3, 2, 2, 2, 342, 41, 3, 2, 2, 2, 343, 344, 7, 9, 2, 2, 344, 345, 5, 44, 23, 2, 345, 346, 7, 10, 2, 2, 346, 347, 5, 38, 20, 2, 347, 354, 3, 2, 2, 2, 348, 349, 7, 9, 2, 2, 349, 350, 5, 46, 24, 2, 350, 351, 7, 10, 2, 2, 351, 352, 5, 40, 21, 2, 352, 354, 3, 2, 2, 2, 353, 343, 3, 2, 2, 2, 353, 348, 3, 2, 2, 2, 354, 43, 3, 2, 2, 2, 355, 356, 9, 12, 2, 2, 356, 45, 3, 2, 2, 2, 357, 360, 7, 85, 2, 2, 358, 359, 7, 7, 2, 2, 359, 361, 7, 8, 2, 2, 360, 358, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 387, 3, 2, 2, 2, 364, 367, 7, 84, 2, 2, 365, 366, 7, 7, 2, 2, 366, 368, 7, 8, 2, 2, 367, 365, 3, 2, 2, 2, 368, 369, 3, 2, 2, 2, 369, 367, 3, 2, 2, 2, 369, 370, 3, 2, 2, 2, 370, 387, 3, 2, 2, 2, 371, 376, 7, 86, 2, 2, 372, 373, 7, 12, 2, 2, 373, 375, 7, 88, 2, 2, 374, 372, 3, 2, 2, 2, 375, 378, 3, 2, 2, 2, 376, 374, 3, 2, 2, 2, 376, 377, 3, 2, 2, 2, 377, 383, 3, 2, 2, 2, 378, 376, 3, 2, 2, 2, 379, 380, 7, 7, 2, 2, 380, 382, 7, 8, 2, 2, 381, 379, 3, 2, 2, 2, 382, 385, 3, 2, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 387, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 357, 3, 2, 2, 2, 386, 364, 3, 2, 2, 2, 386, 371, 3, 2, 2, 2, 387, 47, 3, 2, 2, 2, 388, 392, 5, 50, 26, 2, 389, 391, 5, 52, 27, 2, 390, 389, 3, 2, 2, 2, 391, 394, 3, 2, 2, 2, 392, 390, 3, 2, 2, 2, 392, 393, 3, 2, 2, 2, 393, 397, 3, 2, 2, 2, 394, 392, 3, 2, 2, 2, 395, 397, 5, 62, 32, 2, 396, 388, 3, 2, 2, 2, 396, 395, 3, 2, 2, 2, 397, 49, 3, 2, 2, 2, 398, 399, 7, 9, 2, 2, 399, 400, 5, 36, 19, 2, 400, 401, 7, 10, 2, 2, 401, 418, 3, 2, 2, 2, 402, 418, 9, 13, 2, 2, 403, 418, 7, 81, 2, 2, 404, 418, 7, 82, 2, 2, 405, 418, 7, 83, 2, 2, 406, 418, 7, 79, 2, 2, 407, 418, 7, 80, 2, 2, 408, 418, 5, 64, 33, 2, 409, 418, 5, 66, 34, 2, 410, 418, 7, 86, 2, 2, 411, 412, 9, 14, 2, 2, 412, 418, 5, 70, 36, 2, 413, 414, 7, 25, 2, 2, 414, 415, 5, 28, 15, 2, 415, 416, 5, 70, 36, 2, 416, 418, 3, 2, 2, 2, 417, 398, 3, 2, 2, 2, 417, 402, 3, 2, 2, 2, 417, 403, 3, 2, 2, 2, 417, 404, 3, 2, 2, 2, 417, 405, 3, 2, 2, 2, 417, 406, 3, 2, 2, 2, 417, 407, 3, 2, 2, 2, 417, 408, 3, 2, 2, 2, 417, 409, 3, 2, 2, 2, 417, 410, 3, 2, 2, 2, 417, 411, 3, 2, 2, 2, 417, 413, 3, 2, 2, 2, 418, 51, 3, 2, 2, 2, 419, 423, 5, 56, 29, 2, 420, 423, 5, 58, 30, 2, 421, 423, 5, 60, 31, 2, 422, 419, 3, 2, 2, 2, 422, 420, 3, 2, 2, 2, 422, 421, 3, 2, 2, 2, 423, 53, 3, 2, 2, 2, 424, 427, 5, 56, 29, 2, 425, 427, 5, 58, 30, 2, 426, 424, 3, 2, 2, 2, 426, 425, 3, 2, 2, 2, 427, 55, 3, 2, 2, 2, 428, 429, 9, 15, 2, 2, 429, 430, 7, 88, 2, 2, 430, 431, 5, 70, 36, 2, 431, 57, 3, 2, 2, 2, 432, 433, 9, 15, 2, 2, 433, 434, 9, 16, 2, 2, 434, 59, 3, 2, 2, 2, 435, 436, 7, 7, 2, 2, 436, 437, 5, 36, 19, 2, 437, 438, 7, 8, 2, 2, 438, 61, 3, 2, 2, 2, 439, 440, 7, 25, 2, 2, 440, 445, 5, 28, 15, 2, 441, 442, 7, 7, 2, 2, 442, 443, 5, 36, 19, 2, 443, 444, 7, 8, 2, 2, 444, 446, 3, 2, 2, 2, 445, 441, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 456, 3, 2, 2, 2, 449, 453, 5, 54, 28, 2, 450, 452, 5, 52, 27, 2, 451, 450, 3, 2, 2, 2, 452, 455, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 457, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 456, 449, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 481, 3, 2, 2, 2, 458, 459, 7, 25, 2, 2, 459, 460, 5, 28, 15, 2, 460, 461, 7, 7, 2, 2, 461, 462, 7, 8, 2, 2, 462, 471, 7, 5, 2, 2, 463, 468, 5, 36, 19, 2, 464, 465, 7, 14, 2, 2, 465, 467, 5, 36, 19, 2, 466, 464, 3, 2, 2, 2, 467, 470, 3, 2, 2, 2, 468, 466, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 472, 3, 2, 2, 2, 470, 468, 3, 2, 2, 2, 471, 463, 3, 2, 2, 2, 471, 472, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 477, 7, 6, 2, 2, 474, 476, 5, 52, 27, 2, 475, 474, 3, 2, 2, 2, 476, 479, 3, 2, 2, 2, 477, 475, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 481, 3, 2, 2, 2, 479, 477, 3, 2, 2, 2, 480, 439, 3, 2, 2, 2, 480, 458, 3, 2, 2, 2, 481, 63, 3, 2, 2, 2, 482, 483, 7, 7, 2, 2, 483, 488, 5, 36, 19, 2, 484, 485, 7, 14, 2, 2, 485, 487, 5, 36, 19, 2, 486, 484, 3, 2, 2, 2, 487, 490, 3, 2, 2, 2, 488, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 491, 3, 2, 2, 2, 490, 488, 3, 2, 2, 2, 491, 492, 7, 8, 2, 2, 492, 496, 3, 2, 2, 2, 493, 494, 7, 7, 2, 2, 494, 496, 7, 8, 2, 2, 495, 482, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 496, 65, 3, 2, 2, 2, 497, 498, 7, 7, 2, 2, 498, 503, 5, 68, 35, 2, 499, 500, 7, 14, 2, 2, 500, 502, 5, 68, 35, 2, 501, 499, 3, 2, 2, 2, 502, 505, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 506, 3, 2, 2, 2, 505, 503, 3, 2, 2, 2, 506, 507, 7, 8, 2, 2, 507, 512, 3, 2, 2, 2, 508, 509, 7, 7, 2, 2, 509, 510, 7, 55, 2, 2, 510, 512, 7, 8, 2, 2, 511, 497, 3, 2, 2, 2, 511, 508, 3, 2, 2, 2, 512, 67, 3, 2, 2, 2, 513, 514, 5, 36, 19, 2, 514, 515, 7, 55, 2, 2, 515, 516, 5, 36, 19, 2, 516, 69, 3, 2, 2, 2, 517, 526, 7, 9, 2, 2, 518, 523, 5, 72, 37, 2, 519, 520, 7, 14, 2, 2, 520, 522, 5, 72, 37, 2, 521, 519, 3, 2, 2, 2, 522, 525, 3, 2, 2, 2, 523, 521, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 527, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 526, 518, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 529, 7, 10, 2, 2, 529, 71, 3, 2, 2, 2, 530, 534, 5, 36, 19, 2, 531, 534, 5, 74, 38, 2, 532, 534, 5, 78, 40, 2, 533, 530, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 533, 532, 3, 2, 2, 2, 534, 73, 3, 2, 2, 2, 535, 549, 5, 76, 39, 2, 536, 545, 7, 9, 2, 2, 537, 542, 5, 76, 39, 2, 538, 539, 7, 14, 2, 2, 539, 541, 5, 76, 39, 2, 540, 538, 3, 2, 2, 2, 541, 544, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 546, 3, 2, 2, 2, 544, 542, 3, 2, 2, 2, 545, 537, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 549, 7, 10, 2, 2, 548, 535, 3, 2, 2, 2, 548, 536, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 553, 7, 58, 2, 2, 551, 554, 5, 16, 9, 2, 552, 554, 5, 36, 19, 2, 553, 551, 3, 2, 2, 2, 553, 552, 3, 2, 2, 2, 554, 75, 3, 2, 2, 2, 555, 557, 5, 26, 14, 2, 556, 555, 3, 2, 2, 2, 556, 557, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 559, 7, 86, 2, 2, 559, 77, 3, 2, 2, 2, 560, 561, 5, 26, 14, 2, 561, 562, 7, 57, 2, 2, 562, 563, 7, 86, 2, 2, 563, 572, 3, 2, 2, 2, 564, 565, 5, 26, 14, 2, 565, 566, 7, 57, 2, 2, 566, 567, 7, 25, 2, 2, 567, 572, 3, 2, 2, 2, 568, 569, 7, 29, 2, 2, 569, 570, 7, 57, 2, 2, 570, 572, 7, 86, 2, 2, 571, 560, 3, 2, 2, 2, 571, 564, 3, 2, 2, 2, 571, 568, 3, 2, 2, 2, 572, 79, 3, 2, 2, 2, 62, 83, 89, 108, 111, 119, 129, 137, 142, 146, 150, 155, 179, 181, 195, 200, 204, 210, 214, 222, 232, 240, 250, 253, 258, 309, 311, 325, 332, 341, 353, 362, 369, 376, 383, 386, 392, 396, 417, 422, 426, 447, 453, 456, 468, 471, 477, 480, 488, 495, 503, 511, 523, 526, 533, 542, 545, 548, 553, 556, 571] \ No newline at end of file +[4, 1, 86, 572, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 1, 0, 5, 0, 80, 8, 0, 10, 0, 12, 0, 83, 9, 0, 1, 0, 5, 0, 86, 8, 0, 10, 0, 12, 0, 89, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 105, 8, 2, 10, 2, 12, 2, 108, 9, 2, 3, 2, 110, 8, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 118, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 128, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 136, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 141, 8, 4, 1, 4, 1, 4, 3, 4, 145, 8, 4, 1, 4, 1, 4, 3, 4, 149, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 154, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 176, 8, 4, 11, 4, 12, 4, 177, 3, 4, 180, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 194, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 199, 8, 5, 1, 6, 1, 6, 3, 6, 203, 8, 6, 1, 7, 1, 7, 5, 7, 207, 8, 7, 10, 7, 12, 7, 210, 9, 7, 1, 7, 3, 7, 213, 8, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 221, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 229, 8, 11, 10, 11, 12, 11, 232, 9, 11, 1, 12, 1, 12, 1, 12, 5, 12, 237, 8, 12, 10, 12, 12, 12, 240, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 247, 8, 13, 10, 13, 12, 13, 250, 9, 13, 3, 13, 252, 8, 13, 1, 14, 1, 14, 1, 14, 3, 14, 257, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 308, 8, 16, 10, 16, 12, 16, 311, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 324, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 331, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 340, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 352, 8, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 4, 22, 359, 8, 22, 11, 22, 12, 22, 360, 1, 22, 1, 22, 1, 22, 4, 22, 366, 8, 22, 11, 22, 12, 22, 367, 1, 22, 1, 22, 1, 22, 5, 22, 373, 8, 22, 10, 22, 12, 22, 376, 9, 22, 1, 22, 1, 22, 5, 22, 380, 8, 22, 10, 22, 12, 22, 383, 9, 22, 3, 22, 385, 8, 22, 1, 23, 1, 23, 5, 23, 389, 8, 23, 10, 23, 12, 23, 392, 9, 23, 1, 23, 3, 23, 395, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 416, 8, 24, 1, 25, 1, 25, 1, 25, 3, 25, 421, 8, 25, 1, 26, 1, 26, 3, 26, 425, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 4, 30, 444, 8, 30, 11, 30, 12, 30, 445, 1, 30, 1, 30, 5, 30, 450, 8, 30, 10, 30, 12, 30, 453, 9, 30, 3, 30, 455, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 465, 8, 30, 10, 30, 12, 30, 468, 9, 30, 3, 30, 470, 8, 30, 1, 30, 1, 30, 5, 30, 474, 8, 30, 10, 30, 12, 30, 477, 9, 30, 3, 30, 479, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 485, 8, 31, 10, 31, 12, 31, 488, 9, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 494, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 500, 8, 32, 10, 32, 12, 32, 503, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 510, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 520, 8, 34, 10, 34, 12, 34, 523, 9, 34, 3, 34, 525, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 3, 35, 532, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 539, 8, 36, 10, 36, 12, 36, 542, 9, 36, 3, 36, 544, 8, 36, 1, 36, 3, 36, 547, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 552, 8, 36, 1, 37, 3, 37, 555, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 570, 8, 38, 1, 38, 0, 1, 32, 39, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 0, 15, 1, 1, 13, 13, 1, 0, 31, 33, 1, 0, 34, 35, 1, 0, 57, 58, 1, 0, 36, 38, 1, 0, 39, 42, 1, 0, 43, 46, 1, 0, 61, 72, 1, 0, 59, 60, 1, 0, 29, 30, 1, 0, 82, 83, 1, 0, 73, 76, 2, 0, 9, 9, 84, 84, 1, 0, 10, 11, 1, 0, 85, 86, 631, 0, 81, 1, 0, 0, 0, 2, 92, 1, 0, 0, 0, 4, 97, 1, 0, 0, 0, 6, 117, 1, 0, 0, 0, 8, 179, 1, 0, 0, 0, 10, 198, 1, 0, 0, 0, 12, 202, 1, 0, 0, 0, 14, 204, 1, 0, 0, 0, 16, 216, 1, 0, 0, 0, 18, 220, 1, 0, 0, 0, 20, 222, 1, 0, 0, 0, 22, 224, 1, 0, 0, 0, 24, 233, 1, 0, 0, 0, 26, 251, 1, 0, 0, 0, 28, 253, 1, 0, 0, 0, 30, 258, 1, 0, 0, 0, 32, 265, 1, 0, 0, 0, 34, 323, 1, 0, 0, 0, 36, 330, 1, 0, 0, 0, 38, 339, 1, 0, 0, 0, 40, 351, 1, 0, 0, 0, 42, 353, 1, 0, 0, 0, 44, 384, 1, 0, 0, 0, 46, 394, 1, 0, 0, 0, 48, 415, 1, 0, 0, 0, 50, 420, 1, 0, 0, 0, 52, 424, 1, 0, 0, 0, 54, 426, 1, 0, 0, 0, 56, 430, 1, 0, 0, 0, 58, 433, 1, 0, 0, 0, 60, 478, 1, 0, 0, 0, 62, 493, 1, 0, 0, 0, 64, 509, 1, 0, 0, 0, 66, 511, 1, 0, 0, 0, 68, 515, 1, 0, 0, 0, 70, 531, 1, 0, 0, 0, 72, 546, 1, 0, 0, 0, 74, 554, 1, 0, 0, 0, 76, 569, 1, 0, 0, 0, 78, 80, 3, 2, 1, 0, 79, 78, 1, 0, 0, 0, 80, 83, 1, 0, 0, 0, 81, 79, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 87, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 84, 86, 3, 6, 3, 0, 85, 84, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 90, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 90, 91, 5, 0, 0, 1, 91, 1, 1, 0, 0, 0, 92, 93, 3, 24, 12, 0, 93, 94, 5, 84, 0, 0, 94, 95, 3, 4, 2, 0, 95, 96, 3, 14, 7, 0, 96, 3, 1, 0, 0, 0, 97, 109, 5, 7, 0, 0, 98, 99, 3, 24, 12, 0, 99, 106, 5, 84, 0, 0, 100, 101, 5, 12, 0, 0, 101, 102, 3, 24, 12, 0, 102, 103, 5, 84, 0, 0, 103, 105, 1, 0, 0, 0, 104, 100, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 98, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 111, 1, 0, 0, 0, 111, 112, 5, 8, 0, 0, 112, 5, 1, 0, 0, 0, 113, 118, 3, 8, 4, 0, 114, 115, 3, 10, 5, 0, 115, 116, 7, 0, 0, 0, 116, 118, 1, 0, 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 7, 1, 0, 0, 0, 119, 120, 5, 14, 0, 0, 120, 121, 5, 7, 0, 0, 121, 122, 3, 34, 17, 0, 122, 123, 5, 8, 0, 0, 123, 127, 3, 12, 6, 0, 124, 125, 5, 16, 0, 0, 125, 128, 3, 12, 6, 0, 126, 128, 4, 4, 0, 0, 127, 124, 1, 0, 0, 0, 127, 126, 1, 0, 0, 0, 128, 180, 1, 0, 0, 0, 129, 130, 5, 17, 0, 0, 130, 131, 5, 7, 0, 0, 131, 132, 3, 34, 17, 0, 132, 135, 5, 8, 0, 0, 133, 136, 3, 12, 6, 0, 134, 136, 3, 16, 8, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 180, 1, 0, 0, 0, 137, 138, 5, 19, 0, 0, 138, 140, 5, 7, 0, 0, 139, 141, 3, 18, 9, 0, 140, 139, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 144, 5, 13, 0, 0, 143, 145, 3, 34, 17, 0, 144, 143, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 148, 5, 13, 0, 0, 147, 149, 3, 20, 10, 0, 148, 147, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 153, 5, 8, 0, 0, 151, 154, 3, 12, 6, 0, 152, 154, 3, 16, 8, 0, 153, 151, 1, 0, 0, 0, 153, 152, 1, 0, 0, 0, 154, 180, 1, 0, 0, 0, 155, 156, 5, 19, 0, 0, 156, 157, 5, 7, 0, 0, 157, 158, 3, 24, 12, 0, 158, 159, 5, 84, 0, 0, 159, 160, 5, 53, 0, 0, 160, 161, 3, 34, 17, 0, 161, 162, 5, 8, 0, 0, 162, 163, 3, 12, 6, 0, 163, 180, 1, 0, 0, 0, 164, 165, 5, 19, 0, 0, 165, 166, 5, 7, 0, 0, 166, 167, 5, 84, 0, 0, 167, 168, 5, 15, 0, 0, 168, 169, 3, 34, 17, 0, 169, 170, 5, 8, 0, 0, 170, 171, 3, 12, 6, 0, 171, 180, 1, 0, 0, 0, 172, 173, 5, 24, 0, 0, 173, 175, 3, 14, 7, 0, 174, 176, 3, 30, 15, 0, 175, 174, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 180, 1, 0, 0, 0, 179, 119, 1, 0, 0, 0, 179, 129, 1, 0, 0, 0, 179, 137, 1, 0, 0, 0, 179, 155, 1, 0, 0, 0, 179, 164, 1, 0, 0, 0, 179, 172, 1, 0, 0, 0, 180, 9, 1, 0, 0, 0, 181, 182, 5, 18, 0, 0, 182, 183, 3, 14, 7, 0, 183, 184, 5, 17, 0, 0, 184, 185, 5, 7, 0, 0, 185, 186, 3, 34, 17, 0, 186, 187, 5, 8, 0, 0, 187, 199, 1, 0, 0, 0, 188, 199, 3, 22, 11, 0, 189, 199, 5, 20, 0, 0, 190, 199, 5, 21, 0, 0, 191, 193, 5, 22, 0, 0, 192, 194, 3, 34, 17, 0, 193, 192, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 199, 1, 0, 0, 0, 195, 196, 5, 26, 0, 0, 196, 199, 3, 34, 17, 0, 197, 199, 3, 34, 17, 0, 198, 181, 1, 0, 0, 0, 198, 188, 1, 0, 0, 0, 198, 189, 1, 0, 0, 0, 198, 190, 1, 0, 0, 0, 198, 191, 1, 0, 0, 0, 198, 195, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 11, 1, 0, 0, 0, 200, 203, 3, 14, 7, 0, 201, 203, 3, 6, 3, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 13, 1, 0, 0, 0, 204, 208, 5, 3, 0, 0, 205, 207, 3, 6, 3, 0, 206, 205, 1, 0, 0, 0, 207, 210, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 212, 1, 0, 0, 0, 210, 208, 1, 0, 0, 0, 211, 213, 3, 10, 5, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 4, 0, 0, 215, 15, 1, 0, 0, 0, 216, 217, 5, 13, 0, 0, 217, 17, 1, 0, 0, 0, 218, 221, 3, 22, 11, 0, 219, 221, 3, 34, 17, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221, 19, 1, 0, 0, 0, 222, 223, 3, 34, 17, 0, 223, 21, 1, 0, 0, 0, 224, 225, 3, 24, 12, 0, 225, 230, 3, 28, 14, 0, 226, 227, 5, 12, 0, 0, 227, 229, 3, 28, 14, 0, 228, 226, 1, 0, 0, 0, 229, 232, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 23, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 233, 238, 3, 26, 13, 0, 234, 235, 5, 5, 0, 0, 235, 237, 5, 6, 0, 0, 236, 234, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 25, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 252, 5, 83, 0, 0, 242, 252, 5, 82, 0, 0, 243, 248, 5, 84, 0, 0, 244, 245, 5, 10, 0, 0, 245, 247, 5, 86, 0, 0, 246, 244, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 252, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 241, 1, 0, 0, 0, 251, 242, 1, 0, 0, 0, 251, 243, 1, 0, 0, 0, 252, 27, 1, 0, 0, 0, 253, 256, 5, 84, 0, 0, 254, 255, 5, 61, 0, 0, 255, 257, 3, 34, 17, 0, 256, 254, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 29, 1, 0, 0, 0, 258, 259, 5, 25, 0, 0, 259, 260, 5, 7, 0, 0, 260, 261, 3, 26, 13, 0, 261, 262, 5, 84, 0, 0, 262, 263, 5, 8, 0, 0, 263, 264, 3, 14, 7, 0, 264, 31, 1, 0, 0, 0, 265, 266, 6, 16, -1, 0, 266, 267, 3, 36, 18, 0, 267, 309, 1, 0, 0, 0, 268, 269, 10, 13, 0, 0, 269, 270, 7, 1, 0, 0, 270, 308, 3, 32, 16, 14, 271, 272, 10, 12, 0, 0, 272, 273, 7, 2, 0, 0, 273, 308, 3, 32, 16, 13, 274, 275, 10, 11, 0, 0, 275, 276, 7, 3, 0, 0, 276, 308, 3, 32, 16, 12, 277, 278, 10, 10, 0, 0, 278, 279, 7, 4, 0, 0, 279, 308, 3, 32, 16, 11, 280, 281, 10, 9, 0, 0, 281, 282, 7, 5, 0, 0, 282, 308, 3, 32, 16, 10, 283, 284, 10, 7, 0, 0, 284, 285, 7, 6, 0, 0, 285, 308, 3, 32, 16, 8, 286, 287, 10, 6, 0, 0, 287, 288, 5, 47, 0, 0, 288, 308, 3, 32, 16, 7, 289, 290, 10, 5, 0, 0, 290, 291, 5, 48, 0, 0, 291, 308, 3, 32, 16, 6, 292, 293, 10, 4, 0, 0, 293, 294, 5, 49, 0, 0, 294, 308, 3, 32, 16, 5, 295, 296, 10, 3, 0, 0, 296, 297, 5, 50, 0, 0, 297, 308, 3, 32, 16, 4, 298, 299, 10, 2, 0, 0, 299, 300, 5, 51, 0, 0, 300, 308, 3, 32, 16, 3, 301, 302, 10, 1, 0, 0, 302, 303, 5, 54, 0, 0, 303, 308, 3, 32, 16, 1, 304, 305, 10, 8, 0, 0, 305, 306, 5, 28, 0, 0, 306, 308, 3, 24, 12, 0, 307, 268, 1, 0, 0, 0, 307, 271, 1, 0, 0, 0, 307, 274, 1, 0, 0, 0, 307, 277, 1, 0, 0, 0, 307, 280, 1, 0, 0, 0, 307, 283, 1, 0, 0, 0, 307, 286, 1, 0, 0, 0, 307, 289, 1, 0, 0, 0, 307, 292, 1, 0, 0, 0, 307, 295, 1, 0, 0, 0, 307, 298, 1, 0, 0, 0, 307, 301, 1, 0, 0, 0, 307, 304, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 33, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 324, 3, 32, 16, 0, 313, 314, 3, 32, 16, 0, 314, 315, 5, 52, 0, 0, 315, 316, 3, 34, 17, 0, 316, 317, 5, 53, 0, 0, 317, 318, 3, 34, 17, 0, 318, 324, 1, 0, 0, 0, 319, 320, 3, 32, 16, 0, 320, 321, 7, 7, 0, 0, 321, 322, 3, 34, 17, 0, 322, 324, 1, 0, 0, 0, 323, 312, 1, 0, 0, 0, 323, 313, 1, 0, 0, 0, 323, 319, 1, 0, 0, 0, 324, 35, 1, 0, 0, 0, 325, 326, 7, 8, 0, 0, 326, 331, 3, 46, 23, 0, 327, 328, 7, 2, 0, 0, 328, 331, 3, 36, 18, 0, 329, 331, 3, 38, 19, 0, 330, 325, 1, 0, 0, 0, 330, 327, 1, 0, 0, 0, 330, 329, 1, 0, 0, 0, 331, 37, 1, 0, 0, 0, 332, 340, 3, 46, 23, 0, 333, 334, 3, 46, 23, 0, 334, 335, 7, 8, 0, 0, 335, 340, 1, 0, 0, 0, 336, 337, 7, 9, 0, 0, 337, 340, 3, 36, 18, 0, 338, 340, 3, 40, 20, 0, 339, 332, 1, 0, 0, 0, 339, 333, 1, 0, 0, 0, 339, 336, 1, 0, 0, 0, 339, 338, 1, 0, 0, 0, 340, 39, 1, 0, 0, 0, 341, 342, 5, 7, 0, 0, 342, 343, 3, 42, 21, 0, 343, 344, 5, 8, 0, 0, 344, 345, 3, 36, 18, 0, 345, 352, 1, 0, 0, 0, 346, 347, 5, 7, 0, 0, 347, 348, 3, 44, 22, 0, 348, 349, 5, 8, 0, 0, 349, 350, 3, 38, 19, 0, 350, 352, 1, 0, 0, 0, 351, 341, 1, 0, 0, 0, 351, 346, 1, 0, 0, 0, 352, 41, 1, 0, 0, 0, 353, 354, 7, 10, 0, 0, 354, 43, 1, 0, 0, 0, 355, 358, 5, 83, 0, 0, 356, 357, 5, 5, 0, 0, 357, 359, 5, 6, 0, 0, 358, 356, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 385, 1, 0, 0, 0, 362, 365, 5, 82, 0, 0, 363, 364, 5, 5, 0, 0, 364, 366, 5, 6, 0, 0, 365, 363, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 385, 1, 0, 0, 0, 369, 374, 5, 84, 0, 0, 370, 371, 5, 10, 0, 0, 371, 373, 5, 86, 0, 0, 372, 370, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 381, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 378, 5, 5, 0, 0, 378, 380, 5, 6, 0, 0, 379, 377, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 355, 1, 0, 0, 0, 384, 362, 1, 0, 0, 0, 384, 369, 1, 0, 0, 0, 385, 45, 1, 0, 0, 0, 386, 390, 3, 48, 24, 0, 387, 389, 3, 50, 25, 0, 388, 387, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 395, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 395, 3, 60, 30, 0, 394, 386, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 47, 1, 0, 0, 0, 396, 397, 5, 7, 0, 0, 397, 398, 3, 34, 17, 0, 398, 399, 5, 8, 0, 0, 399, 416, 1, 0, 0, 0, 400, 416, 7, 11, 0, 0, 401, 416, 5, 79, 0, 0, 402, 416, 5, 80, 0, 0, 403, 416, 5, 81, 0, 0, 404, 416, 5, 77, 0, 0, 405, 416, 5, 78, 0, 0, 406, 416, 3, 62, 31, 0, 407, 416, 3, 64, 32, 0, 408, 416, 5, 84, 0, 0, 409, 410, 7, 12, 0, 0, 410, 416, 3, 68, 34, 0, 411, 412, 5, 23, 0, 0, 412, 413, 3, 26, 13, 0, 413, 414, 3, 68, 34, 0, 414, 416, 1, 0, 0, 0, 415, 396, 1, 0, 0, 0, 415, 400, 1, 0, 0, 0, 415, 401, 1, 0, 0, 0, 415, 402, 1, 0, 0, 0, 415, 403, 1, 0, 0, 0, 415, 404, 1, 0, 0, 0, 415, 405, 1, 0, 0, 0, 415, 406, 1, 0, 0, 0, 415, 407, 1, 0, 0, 0, 415, 408, 1, 0, 0, 0, 415, 409, 1, 0, 0, 0, 415, 411, 1, 0, 0, 0, 416, 49, 1, 0, 0, 0, 417, 421, 3, 54, 27, 0, 418, 421, 3, 56, 28, 0, 419, 421, 3, 58, 29, 0, 420, 417, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 419, 1, 0, 0, 0, 421, 51, 1, 0, 0, 0, 422, 425, 3, 54, 27, 0, 423, 425, 3, 56, 28, 0, 424, 422, 1, 0, 0, 0, 424, 423, 1, 0, 0, 0, 425, 53, 1, 0, 0, 0, 426, 427, 7, 13, 0, 0, 427, 428, 5, 86, 0, 0, 428, 429, 3, 68, 34, 0, 429, 55, 1, 0, 0, 0, 430, 431, 7, 13, 0, 0, 431, 432, 7, 14, 0, 0, 432, 57, 1, 0, 0, 0, 433, 434, 5, 5, 0, 0, 434, 435, 3, 34, 17, 0, 435, 436, 5, 6, 0, 0, 436, 59, 1, 0, 0, 0, 437, 438, 5, 23, 0, 0, 438, 443, 3, 26, 13, 0, 439, 440, 5, 5, 0, 0, 440, 441, 3, 34, 17, 0, 441, 442, 5, 6, 0, 0, 442, 444, 1, 0, 0, 0, 443, 439, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 454, 1, 0, 0, 0, 447, 451, 3, 52, 26, 0, 448, 450, 3, 50, 25, 0, 449, 448, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 447, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 479, 1, 0, 0, 0, 456, 457, 5, 23, 0, 0, 457, 458, 3, 26, 13, 0, 458, 459, 5, 5, 0, 0, 459, 460, 5, 6, 0, 0, 460, 469, 5, 3, 0, 0, 461, 466, 3, 34, 17, 0, 462, 463, 5, 12, 0, 0, 463, 465, 3, 34, 17, 0, 464, 462, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 461, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 475, 5, 4, 0, 0, 472, 474, 3, 50, 25, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 437, 1, 0, 0, 0, 478, 456, 1, 0, 0, 0, 479, 61, 1, 0, 0, 0, 480, 481, 5, 5, 0, 0, 481, 486, 3, 34, 17, 0, 482, 483, 5, 12, 0, 0, 483, 485, 3, 34, 17, 0, 484, 482, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 490, 5, 6, 0, 0, 490, 494, 1, 0, 0, 0, 491, 492, 5, 5, 0, 0, 492, 494, 5, 6, 0, 0, 493, 480, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 63, 1, 0, 0, 0, 495, 496, 5, 5, 0, 0, 496, 501, 3, 66, 33, 0, 497, 498, 5, 12, 0, 0, 498, 500, 3, 66, 33, 0, 499, 497, 1, 0, 0, 0, 500, 503, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 504, 1, 0, 0, 0, 503, 501, 1, 0, 0, 0, 504, 505, 5, 6, 0, 0, 505, 510, 1, 0, 0, 0, 506, 507, 5, 5, 0, 0, 507, 508, 5, 53, 0, 0, 508, 510, 5, 6, 0, 0, 509, 495, 1, 0, 0, 0, 509, 506, 1, 0, 0, 0, 510, 65, 1, 0, 0, 0, 511, 512, 3, 34, 17, 0, 512, 513, 5, 53, 0, 0, 513, 514, 3, 34, 17, 0, 514, 67, 1, 0, 0, 0, 515, 524, 5, 7, 0, 0, 516, 521, 3, 70, 35, 0, 517, 518, 5, 12, 0, 0, 518, 520, 3, 70, 35, 0, 519, 517, 1, 0, 0, 0, 520, 523, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 524, 516, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 527, 5, 8, 0, 0, 527, 69, 1, 0, 0, 0, 528, 532, 3, 34, 17, 0, 529, 532, 3, 72, 36, 0, 530, 532, 3, 76, 38, 0, 531, 528, 1, 0, 0, 0, 531, 529, 1, 0, 0, 0, 531, 530, 1, 0, 0, 0, 532, 71, 1, 0, 0, 0, 533, 547, 3, 74, 37, 0, 534, 543, 5, 7, 0, 0, 535, 540, 3, 74, 37, 0, 536, 537, 5, 12, 0, 0, 537, 539, 3, 74, 37, 0, 538, 536, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 535, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 547, 5, 8, 0, 0, 546, 533, 1, 0, 0, 0, 546, 534, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 551, 5, 56, 0, 0, 549, 552, 3, 14, 7, 0, 550, 552, 3, 34, 17, 0, 551, 549, 1, 0, 0, 0, 551, 550, 1, 0, 0, 0, 552, 73, 1, 0, 0, 0, 553, 555, 3, 24, 12, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 5, 84, 0, 0, 557, 75, 1, 0, 0, 0, 558, 559, 3, 24, 12, 0, 559, 560, 5, 55, 0, 0, 560, 561, 5, 84, 0, 0, 561, 570, 1, 0, 0, 0, 562, 563, 3, 24, 12, 0, 563, 564, 5, 55, 0, 0, 564, 565, 5, 23, 0, 0, 565, 570, 1, 0, 0, 0, 566, 567, 5, 27, 0, 0, 567, 568, 5, 55, 0, 0, 568, 570, 5, 84, 0, 0, 569, 558, 1, 0, 0, 0, 569, 562, 1, 0, 0, 0, 569, 566, 1, 0, 0, 0, 570, 77, 1, 0, 0, 0, 60, 81, 87, 106, 109, 117, 127, 135, 140, 144, 148, 153, 177, 179, 193, 198, 202, 208, 212, 220, 230, 238, 248, 251, 256, 307, 309, 323, 330, 339, 351, 360, 367, 374, 381, 384, 390, 394, 415, 420, 424, 445, 451, 454, 466, 469, 475, 478, 486, 493, 501, 509, 521, 524, 531, 540, 543, 546, 551, 554, 569] \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser.ts new file mode 100644 index 0000000000000..6782eacae7587 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.ts @@ -0,0 +1,5778 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols + +import { + ATN, + ATNDeserializer, DecisionState, DFA, FailedPredicateException, + RecognitionException, NoViableAltException, BailErrorStrategy, + Parser, ParserATNSimulator, + RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, + TerminalNode, RuleNode, + Token, TokenStream, + Interval, IntervalSet +} from 'antlr4'; +import painless_parserListener from "./painless_parserListener.js"; +// for running tests with parameters, TODO: discuss strategy for typed parameters in CI +// eslint-disable-next-line no-unused-vars +type int = number; + +export default class painless_parser extends Parser { + public static readonly WS = 1; + public static readonly COMMENT = 2; + public static readonly LBRACK = 3; + public static readonly RBRACK = 4; + public static readonly LBRACE = 5; + public static readonly RBRACE = 6; + public static readonly LP = 7; + public static readonly RP = 8; + public static readonly DOLLAR = 9; + public static readonly DOT = 10; + public static readonly NSDOT = 11; + public static readonly COMMA = 12; + public static readonly SEMICOLON = 13; + public static readonly IF = 14; + public static readonly IN = 15; + public static readonly ELSE = 16; + public static readonly WHILE = 17; + public static readonly DO = 18; + public static readonly FOR = 19; + public static readonly CONTINUE = 20; + public static readonly BREAK = 21; + public static readonly RETURN = 22; + public static readonly NEW = 23; + public static readonly TRY = 24; + public static readonly CATCH = 25; + public static readonly THROW = 26; + public static readonly THIS = 27; + public static readonly INSTANCEOF = 28; + public static readonly BOOLNOT = 29; + public static readonly BWNOT = 30; + public static readonly MUL = 31; + public static readonly DIV = 32; + public static readonly REM = 33; + public static readonly ADD = 34; + public static readonly SUB = 35; + public static readonly LSH = 36; + public static readonly RSH = 37; + public static readonly USH = 38; + public static readonly LT = 39; + public static readonly LTE = 40; + public static readonly GT = 41; + public static readonly GTE = 42; + public static readonly EQ = 43; + public static readonly EQR = 44; + public static readonly NE = 45; + public static readonly NER = 46; + public static readonly BWAND = 47; + public static readonly XOR = 48; + public static readonly BWOR = 49; + public static readonly BOOLAND = 50; + public static readonly BOOLOR = 51; + public static readonly COND = 52; + public static readonly COLON = 53; + public static readonly ELVIS = 54; + public static readonly REF = 55; + public static readonly ARROW = 56; + public static readonly FIND = 57; + public static readonly MATCH = 58; + public static readonly INCR = 59; + public static readonly DECR = 60; + public static readonly ASSIGN = 61; + public static readonly AADD = 62; + public static readonly ASUB = 63; + public static readonly AMUL = 64; + public static readonly ADIV = 65; + public static readonly AREM = 66; + public static readonly AAND = 67; + public static readonly AXOR = 68; + public static readonly AOR = 69; + public static readonly ALSH = 70; + public static readonly ARSH = 71; + public static readonly AUSH = 72; + public static readonly OCTAL = 73; + public static readonly HEX = 74; + public static readonly INTEGER = 75; + public static readonly DECIMAL = 76; + public static readonly STRING = 77; + public static readonly REGEX = 78; + public static readonly TRUE = 79; + public static readonly FALSE = 80; + public static readonly NULL = 81; + public static readonly PRIMITIVE = 82; + public static readonly DEF = 83; + public static readonly ID = 84; + public static readonly DOTINTEGER = 85; + public static readonly DOTID = 86; + public static readonly EOF = Token.EOF; + public static readonly RULE_source = 0; + public static readonly RULE_function = 1; + public static readonly RULE_parameters = 2; + public static readonly RULE_statement = 3; + public static readonly RULE_rstatement = 4; + public static readonly RULE_dstatement = 5; + public static readonly RULE_trailer = 6; + public static readonly RULE_block = 7; + public static readonly RULE_empty = 8; + public static readonly RULE_initializer = 9; + public static readonly RULE_afterthought = 10; + public static readonly RULE_declaration = 11; + public static readonly RULE_decltype = 12; + public static readonly RULE_type = 13; + public static readonly RULE_declvar = 14; + public static readonly RULE_trap = 15; + public static readonly RULE_noncondexpression = 16; + public static readonly RULE_expression = 17; + public static readonly RULE_unary = 18; + public static readonly RULE_unarynotaddsub = 19; + public static readonly RULE_castexpression = 20; + public static readonly RULE_primordefcasttype = 21; + public static readonly RULE_refcasttype = 22; + public static readonly RULE_chain = 23; + public static readonly RULE_primary = 24; + public static readonly RULE_postfix = 25; + public static readonly RULE_postdot = 26; + public static readonly RULE_callinvoke = 27; + public static readonly RULE_fieldaccess = 28; + public static readonly RULE_braceaccess = 29; + public static readonly RULE_arrayinitializer = 30; + public static readonly RULE_listinitializer = 31; + public static readonly RULE_mapinitializer = 32; + public static readonly RULE_maptoken = 33; + public static readonly RULE_arguments = 34; + public static readonly RULE_argument = 35; + public static readonly RULE_lambda = 36; + public static readonly RULE_lamtype = 37; + public static readonly RULE_funcref = 38; + public static readonly literalNames: (string | null)[] = [ null, null, + null, "'{'", + "'}'", "'['", + "']'", "'('", + "')'", "'$'", + "'.'", "'?.'", + "','", "';'", + "'if'", "'in'", + "'else'", "'while'", + "'do'", "'for'", + "'continue'", + "'break'", "'return'", + "'new'", "'try'", + "'catch'", "'throw'", + "'this'", "'instanceof'", + "'!'", "'~'", + "'*'", "'/'", + "'%'", "'+'", + "'-'", "'<<'", + "'>>'", "'>>>'", + "'<'", "'<='", + "'>'", "'>='", + "'=='", "'==='", + "'!='", "'!=='", + "'&'", "'^'", + "'|'", "'&&'", + "'||'", "'?'", + "':'", "'?:'", + "'::'", "'->'", + "'=~'", "'==~'", + "'++'", "'--'", + "'='", "'+='", + "'-='", "'*='", + "'/='", "'%='", + "'&='", "'^='", + "'|='", "'<<='", + "'>>='", "'>>>='", + null, null, + null, null, + null, null, + "'true'", "'false'", + "'null'", null, + "'def'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, "WS", + "COMMENT", + "LBRACK", "RBRACK", + "LBRACE", "RBRACE", + "LP", "RP", + "DOLLAR", "DOT", + "NSDOT", "COMMA", + "SEMICOLON", + "IF", "IN", + "ELSE", "WHILE", + "DO", "FOR", + "CONTINUE", + "BREAK", "RETURN", + "NEW", "TRY", + "CATCH", "THROW", + "THIS", "INSTANCEOF", + "BOOLNOT", + "BWNOT", "MUL", + "DIV", "REM", + "ADD", "SUB", + "LSH", "RSH", + "USH", "LT", + "LTE", "GT", + "GTE", "EQ", + "EQR", "NE", + "NER", "BWAND", + "XOR", "BWOR", + "BOOLAND", + "BOOLOR", "COND", + "COLON", "ELVIS", + "REF", "ARROW", + "FIND", "MATCH", + "INCR", "DECR", + "ASSIGN", "AADD", + "ASUB", "AMUL", + "ADIV", "AREM", + "AAND", "AXOR", + "AOR", "ALSH", + "ARSH", "AUSH", + "OCTAL", "HEX", + "INTEGER", + "DECIMAL", + "STRING", "REGEX", + "TRUE", "FALSE", + "NULL", "PRIMITIVE", + "DEF", "ID", + "DOTINTEGER", + "DOTID" ]; + // tslint:disable:no-trailing-whitespace + public static readonly ruleNames: string[] = [ + "source", "function", "parameters", "statement", "rstatement", "dstatement", + "trailer", "block", "empty", "initializer", "afterthought", "declaration", + "decltype", "type", "declvar", "trap", "noncondexpression", "expression", + "unary", "unarynotaddsub", "castexpression", "primordefcasttype", "refcasttype", + "chain", "primary", "postfix", "postdot", "callinvoke", "fieldaccess", + "braceaccess", "arrayinitializer", "listinitializer", "mapinitializer", + "maptoken", "arguments", "argument", "lambda", "lamtype", "funcref", + ]; + public get grammarFileName(): string { return "painless_parser.g4"; } + public get literalNames(): (string | null)[] { return painless_parser.literalNames; } + public get symbolicNames(): (string | null)[] { return painless_parser.symbolicNames; } + public get ruleNames(): string[] { return painless_parser.ruleNames; } + public get serializedATN(): number[] { return painless_parser._serializedATN; } + + protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { + return new FailedPredicateException(this, predicate, message); + } + + constructor(input: TokenStream) { + super(input); + this._interp = new ParserATNSimulator(this, painless_parser._ATN, painless_parser.DecisionsToDFA, new PredictionContextCache()); + } + // @RuleVersion(0) + public source(): SourceContext { + let localctx: SourceContext = new SourceContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, painless_parser.RULE_source); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 81; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 78; + this.function_(); + } + } + } + this.state = 83; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); + } + this.state = 87; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1664086549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 67092483) !== 0)) { + { + { + this.state = 84; + this.statement(); + } + } + this.state = 89; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 90; + this.match(painless_parser.EOF); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public function_(): FunctionContext { + let localctx: FunctionContext = new FunctionContext(this, this._ctx, this.state); + this.enterRule(localctx, 2, painless_parser.RULE_function); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 92; + this.decltype(); + this.state = 93; + this.match(painless_parser.ID); + this.state = 94; + this.parameters(); + this.state = 95; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public parameters(): ParametersContext { + let localctx: ParametersContext = new ParametersContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, painless_parser.RULE_parameters); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 97; + this.match(painless_parser.LP); + this.state = 109; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 7) !== 0)) { + { + this.state = 98; + this.decltype(); + this.state = 99; + this.match(painless_parser.ID); + this.state = 106; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 100; + this.match(painless_parser.COMMA); + this.state = 101; + this.decltype(); + this.state = 102; + this.match(painless_parser.ID); + } + } + this.state = 108; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 111; + this.match(painless_parser.RP); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public statement(): StatementContext { + let localctx: StatementContext = new StatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, painless_parser.RULE_statement); + let _la: number; + try { + this.state = 117; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 14: + case 17: + case 19: + case 24: + this.enterOuterAlt(localctx, 1); + { + this.state = 113; + this.rstatement(); + } + break; + case 5: + case 7: + case 9: + case 18: + case 20: + case 21: + case 22: + case 23: + case 26: + case 29: + case 30: + case 34: + case 35: + case 59: + case 60: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + this.enterOuterAlt(localctx, 2); + { + this.state = 114; + this.dstatement(); + this.state = 115; + _la = this._input.LA(1); + if(!(_la===-1 || _la===13)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public rstatement(): RstatementContext { + let localctx: RstatementContext = new RstatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, painless_parser.RULE_rstatement); + let _la: number; + try { + let _alt: number; + this.state = 179; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { + case 1: + localctx = new IfContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 119; + this.match(painless_parser.IF); + this.state = 120; + this.match(painless_parser.LP); + this.state = 121; + this.expression(); + this.state = 122; + this.match(painless_parser.RP); + this.state = 123; + this.trailer(); + this.state = 127; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 5, this._ctx) ) { + case 1: + { + this.state = 124; + this.match(painless_parser.ELSE); + this.state = 125; + this.trailer(); + } + break; + case 2: + { + this.state = 126; + if (!( this._input.LA(1) != painless_parser.ELSE )) { + throw this.createFailedPredicateException(" this._input.LA(1) != painless_parser.ELSE "); + } + } + break; + } + } + break; + case 2: + localctx = new WhileContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 129; + this.match(painless_parser.WHILE); + this.state = 130; + this.match(painless_parser.LP); + this.state = 131; + this.expression(); + this.state = 132; + this.match(painless_parser.RP); + this.state = 135; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 3: + case 5: + case 7: + case 9: + case 14: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 26: + case 29: + case 30: + case 34: + case 35: + case 59: + case 60: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + { + this.state = 133; + this.trailer(); + } + break; + case 13: + { + this.state = 134; + this.empty(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 3: + localctx = new ForContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 137; + this.match(painless_parser.FOR); + this.state = 138; + this.match(painless_parser.LP); + this.state = 140; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1661206549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 67092483) !== 0)) { + { + this.state = 139; + this.initializer(); + } + } + + this.state = 142; + this.match(painless_parser.SEMICOLON); + this.state = 144; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1661206549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 41926659) !== 0)) { + { + this.state = 143; + this.expression(); + } + } + + this.state = 146; + this.match(painless_parser.SEMICOLON); + this.state = 148; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1661206549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 41926659) !== 0)) { + { + this.state = 147; + this.afterthought(); + } + } + + this.state = 150; + this.match(painless_parser.RP); + this.state = 153; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 3: + case 5: + case 7: + case 9: + case 14: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 26: + case 29: + case 30: + case 34: + case 35: + case 59: + case 60: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + { + this.state = 151; + this.trailer(); + } + break; + case 13: + { + this.state = 152; + this.empty(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 4: + localctx = new EachContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 155; + this.match(painless_parser.FOR); + this.state = 156; + this.match(painless_parser.LP); + this.state = 157; + this.decltype(); + this.state = 158; + this.match(painless_parser.ID); + this.state = 159; + this.match(painless_parser.COLON); + this.state = 160; + this.expression(); + this.state = 161; + this.match(painless_parser.RP); + this.state = 162; + this.trailer(); + } + break; + case 5: + localctx = new IneachContext(this, localctx); + this.enterOuterAlt(localctx, 5); + { + this.state = 164; + this.match(painless_parser.FOR); + this.state = 165; + this.match(painless_parser.LP); + this.state = 166; + this.match(painless_parser.ID); + this.state = 167; + this.match(painless_parser.IN); + this.state = 168; + this.expression(); + this.state = 169; + this.match(painless_parser.RP); + this.state = 170; + this.trailer(); + } + break; + case 6: + localctx = new TryContext(this, localctx); + this.enterOuterAlt(localctx, 6); + { + this.state = 172; + this.match(painless_parser.TRY); + this.state = 173; + this.block(); + this.state = 175; + this._errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + this.state = 174; + this.trap(); + } + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 177; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 11, this._ctx); + } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public dstatement(): DstatementContext { + let localctx: DstatementContext = new DstatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 10, painless_parser.RULE_dstatement); + let _la: number; + try { + this.state = 198; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 14, this._ctx) ) { + case 1: + localctx = new DoContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 181; + this.match(painless_parser.DO); + this.state = 182; + this.block(); + this.state = 183; + this.match(painless_parser.WHILE); + this.state = 184; + this.match(painless_parser.LP); + this.state = 185; + this.expression(); + this.state = 186; + this.match(painless_parser.RP); + } + break; + case 2: + localctx = new DeclContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 188; + this.declaration(); + } + break; + case 3: + localctx = new ContinueContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 189; + this.match(painless_parser.CONTINUE); + } + break; + case 4: + localctx = new BreakContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 190; + this.match(painless_parser.BREAK); + } + break; + case 5: + localctx = new ReturnContext(this, localctx); + this.enterOuterAlt(localctx, 5); + { + this.state = 191; + this.match(painless_parser.RETURN); + this.state = 193; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1661206549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 41926659) !== 0)) { + { + this.state = 192; + this.expression(); + } + } + + } + break; + case 6: + localctx = new ThrowContext(this, localctx); + this.enterOuterAlt(localctx, 6); + { + this.state = 195; + this.match(painless_parser.THROW); + this.state = 196; + this.expression(); + } + break; + case 7: + localctx = new ExprContext(this, localctx); + this.enterOuterAlt(localctx, 7); + { + this.state = 197; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public trailer(): TrailerContext { + let localctx: TrailerContext = new TrailerContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, painless_parser.RULE_trailer); + try { + this.state = 202; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 3: + this.enterOuterAlt(localctx, 1); + { + this.state = 200; + this.block(); + } + break; + case 5: + case 7: + case 9: + case 14: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 26: + case 29: + case 30: + case 34: + case 35: + case 59: + case 60: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + this.enterOuterAlt(localctx, 2); + { + this.state = 201; + this.statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public block(): BlockContext { + let localctx: BlockContext = new BlockContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, painless_parser.RULE_block); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 204; + this.match(painless_parser.LBRACK); + this.state = 208; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 205; + this.statement(); + } + } + } + this.state = 210; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); + } + this.state = 212; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1663541269) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 67092483) !== 0)) { + { + this.state = 211; + this.dstatement(); + } + } + + this.state = 214; + this.match(painless_parser.RBRACK); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public empty(): EmptyContext { + let localctx: EmptyContext = new EmptyContext(this, this._ctx, this.state); + this.enterRule(localctx, 16, painless_parser.RULE_empty); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 216; + this.match(painless_parser.SEMICOLON); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public initializer(): InitializerContext { + let localctx: InitializerContext = new InitializerContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, painless_parser.RULE_initializer); + try { + this.state = 220; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 18, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 218; + this.declaration(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 219; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public afterthought(): AfterthoughtContext { + let localctx: AfterthoughtContext = new AfterthoughtContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, painless_parser.RULE_afterthought); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 222; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public declaration(): DeclarationContext { + let localctx: DeclarationContext = new DeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, painless_parser.RULE_declaration); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 224; + this.decltype(); + this.state = 225; + this.declvar(); + this.state = 230; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 226; + this.match(painless_parser.COMMA); + this.state = 227; + this.declvar(); + } + } + this.state = 232; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public decltype(): DecltypeContext { + let localctx: DecltypeContext = new DecltypeContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, painless_parser.RULE_decltype); + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 233; + this.type_(); + this.state = 238; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 20, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 234; + this.match(painless_parser.LBRACE); + this.state = 235; + this.match(painless_parser.RBRACE); + } + } + } + this.state = 240; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 20, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public type_(): TypeContext { + let localctx: TypeContext = new TypeContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, painless_parser.RULE_type); + try { + let _alt: number; + this.state = 251; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 83: + this.enterOuterAlt(localctx, 1); + { + this.state = 241; + this.match(painless_parser.DEF); + } + break; + case 82: + this.enterOuterAlt(localctx, 2); + { + this.state = 242; + this.match(painless_parser.PRIMITIVE); + } + break; + case 84: + this.enterOuterAlt(localctx, 3); + { + this.state = 243; + this.match(painless_parser.ID); + this.state = 248; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 244; + this.match(painless_parser.DOT); + this.state = 245; + this.match(painless_parser.DOTID); + } + } + } + this.state = 250; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public declvar(): DeclvarContext { + let localctx: DeclvarContext = new DeclvarContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, painless_parser.RULE_declvar); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 253; + this.match(painless_parser.ID); + this.state = 256; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===61) { + { + this.state = 254; + this.match(painless_parser.ASSIGN); + this.state = 255; + this.expression(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public trap(): TrapContext { + let localctx: TrapContext = new TrapContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, painless_parser.RULE_trap); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 258; + this.match(painless_parser.CATCH); + this.state = 259; + this.match(painless_parser.LP); + this.state = 260; + this.type_(); + this.state = 261; + this.match(painless_parser.ID); + this.state = 262; + this.match(painless_parser.RP); + this.state = 263; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public noncondexpression(): NoncondexpressionContext; + public noncondexpression(_p: number): NoncondexpressionContext; + // @RuleVersion(0) + public noncondexpression(_p?: number): NoncondexpressionContext { + if (_p === undefined) { + _p = 0; + } + + let _parentctx: ParserRuleContext = this._ctx; + let _parentState: number = this.state; + let localctx: NoncondexpressionContext = new NoncondexpressionContext(this, this._ctx, _parentState); + let _prevctx: NoncondexpressionContext = localctx; + let _startState: number = 32; + this.enterRecursionRule(localctx, 32, painless_parser.RULE_noncondexpression, _p); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + { + localctx = new SingleContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 266; + this.unary(); + } + this._ctx.stop = this._input.LT(-1); + this.state = 309; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + { + this.state = 307; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { + case 1: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 268; + if (!(this.precpred(this._ctx, 13))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 13)"); + } + this.state = 269; + _la = this._input.LA(1); + if(!(((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & 7) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 270; + this.noncondexpression(14); + } + break; + case 2: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 271; + if (!(this.precpred(this._ctx, 12))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 12)"); + } + this.state = 272; + _la = this._input.LA(1); + if(!(_la===34 || _la===35)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 273; + this.noncondexpression(13); + } + break; + case 3: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 274; + if (!(this.precpred(this._ctx, 11))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 11)"); + } + this.state = 275; + _la = this._input.LA(1); + if(!(_la===57 || _la===58)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 276; + this.noncondexpression(12); + } + break; + case 4: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 277; + if (!(this.precpred(this._ctx, 10))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 10)"); + } + this.state = 278; + _la = this._input.LA(1); + if(!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 7) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 279; + this.noncondexpression(11); + } + break; + case 5: + { + localctx = new CompContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 280; + if (!(this.precpred(this._ctx, 9))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); + } + this.state = 281; + _la = this._input.LA(1); + if(!(((((_la - 39)) & ~0x1F) === 0 && ((1 << (_la - 39)) & 15) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 282; + this.noncondexpression(10); + } + break; + case 6: + { + localctx = new CompContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 283; + if (!(this.precpred(this._ctx, 7))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); + } + this.state = 284; + _la = this._input.LA(1); + if(!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 15) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 285; + this.noncondexpression(8); + } + break; + case 7: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 286; + if (!(this.precpred(this._ctx, 6))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); + } + this.state = 287; + this.match(painless_parser.BWAND); + this.state = 288; + this.noncondexpression(7); + } + break; + case 8: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 289; + if (!(this.precpred(this._ctx, 5))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); + } + this.state = 290; + this.match(painless_parser.XOR); + this.state = 291; + this.noncondexpression(6); + } + break; + case 9: + { + localctx = new BinaryContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 292; + if (!(this.precpred(this._ctx, 4))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); + } + this.state = 293; + this.match(painless_parser.BWOR); + this.state = 294; + this.noncondexpression(5); + } + break; + case 10: + { + localctx = new BoolContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 295; + if (!(this.precpred(this._ctx, 3))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); + } + this.state = 296; + this.match(painless_parser.BOOLAND); + this.state = 297; + this.noncondexpression(4); + } + break; + case 11: + { + localctx = new BoolContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 298; + if (!(this.precpred(this._ctx, 2))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); + } + this.state = 299; + this.match(painless_parser.BOOLOR); + this.state = 300; + this.noncondexpression(3); + } + break; + case 12: + { + localctx = new ElvisContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 301; + if (!(this.precpred(this._ctx, 1))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); + } + this.state = 302; + this.match(painless_parser.ELVIS); + this.state = 303; + this.noncondexpression(1); + } + break; + case 13: + { + localctx = new InstanceofContext(this, new NoncondexpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 304; + if (!(this.precpred(this._ctx, 8))) { + throw this.createFailedPredicateException("this.precpred(this._ctx, 8)"); + } + this.state = 305; + this.match(painless_parser.INSTANCEOF); + this.state = 306; + this.decltype(); + } + break; + } + } + } + this.state = 311; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; + } + // @RuleVersion(0) + public expression(): ExpressionContext { + let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, painless_parser.RULE_expression); + let _la: number; + try { + this.state = 323; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 26, this._ctx) ) { + case 1: + localctx = new NonconditionalContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 312; + this.noncondexpression(0); + } + break; + case 2: + localctx = new ConditionalContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 313; + this.noncondexpression(0); + this.state = 314; + this.match(painless_parser.COND); + this.state = 315; + this.expression(); + this.state = 316; + this.match(painless_parser.COLON); + this.state = 317; + this.expression(); + } + break; + case 3: + localctx = new AssignmentContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 319; + this.noncondexpression(0); + this.state = 320; + _la = this._input.LA(1); + if(!(((((_la - 61)) & ~0x1F) === 0 && ((1 << (_la - 61)) & 4095) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 321; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public unary(): UnaryContext { + let localctx: UnaryContext = new UnaryContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, painless_parser.RULE_unary); + let _la: number; + try { + this.state = 330; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 59: + case 60: + localctx = new PreContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 325; + _la = this._input.LA(1); + if(!(_la===59 || _la===60)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 326; + this.chain(); + } + break; + case 34: + case 35: + localctx = new AddsubContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 327; + _la = this._input.LA(1); + if(!(_la===34 || _la===35)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 328; + this.unary(); + } + break; + case 5: + case 7: + case 9: + case 23: + case 29: + case 30: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 84: + localctx = new NotaddsubContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 329; + this.unarynotaddsub(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public unarynotaddsub(): UnarynotaddsubContext { + let localctx: UnarynotaddsubContext = new UnarynotaddsubContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, painless_parser.RULE_unarynotaddsub); + let _la: number; + try { + this.state = 339; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 28, this._ctx) ) { + case 1: + localctx = new ReadContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 332; + this.chain(); + } + break; + case 2: + localctx = new PostContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 333; + this.chain(); + this.state = 334; + _la = this._input.LA(1); + if(!(_la===59 || _la===60)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + case 3: + localctx = new NotContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 336; + _la = this._input.LA(1); + if(!(_la===29 || _la===30)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 337; + this.unary(); + } + break; + case 4: + localctx = new CastContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 338; + this.castexpression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public castexpression(): CastexpressionContext { + let localctx: CastexpressionContext = new CastexpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 40, painless_parser.RULE_castexpression); + try { + this.state = 351; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 29, this._ctx) ) { + case 1: + localctx = new PrimordefcastContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 341; + this.match(painless_parser.LP); + this.state = 342; + this.primordefcasttype(); + this.state = 343; + this.match(painless_parser.RP); + this.state = 344; + this.unary(); + } + break; + case 2: + localctx = new RefcastContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 346; + this.match(painless_parser.LP); + this.state = 347; + this.refcasttype(); + this.state = 348; + this.match(painless_parser.RP); + this.state = 349; + this.unarynotaddsub(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public primordefcasttype(): PrimordefcasttypeContext { + let localctx: PrimordefcasttypeContext = new PrimordefcasttypeContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, painless_parser.RULE_primordefcasttype); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 353; + _la = this._input.LA(1); + if(!(_la===82 || _la===83)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public refcasttype(): RefcasttypeContext { + let localctx: RefcasttypeContext = new RefcasttypeContext(this, this._ctx, this.state); + this.enterRule(localctx, 44, painless_parser.RULE_refcasttype); + let _la: number; + try { + this.state = 384; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 83: + this.enterOuterAlt(localctx, 1); + { + this.state = 355; + this.match(painless_parser.DEF); + this.state = 358; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 356; + this.match(painless_parser.LBRACE); + this.state = 357; + this.match(painless_parser.RBRACE); + } + } + this.state = 360; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la===5); + } + break; + case 82: + this.enterOuterAlt(localctx, 2); + { + this.state = 362; + this.match(painless_parser.PRIMITIVE); + this.state = 365; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 363; + this.match(painless_parser.LBRACE); + this.state = 364; + this.match(painless_parser.RBRACE); + } + } + this.state = 367; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la===5); + } + break; + case 84: + this.enterOuterAlt(localctx, 3); + { + this.state = 369; + this.match(painless_parser.ID); + this.state = 374; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===10) { + { + { + this.state = 370; + this.match(painless_parser.DOT); + this.state = 371; + this.match(painless_parser.DOTID); + } + } + this.state = 376; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 381; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===5) { + { + { + this.state = 377; + this.match(painless_parser.LBRACE); + this.state = 378; + this.match(painless_parser.RBRACE); + } + } + this.state = 383; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public chain(): ChainContext { + let localctx: ChainContext = new ChainContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, painless_parser.RULE_chain); + try { + let _alt: number; + this.state = 394; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 36, this._ctx) ) { + case 1: + localctx = new DynamicContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 386; + this.primary(); + this.state = 390; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 387; + this.postfix(); + } + } + } + this.state = 392; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + } + } + break; + case 2: + localctx = new NewarrayContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 393; + this.arrayinitializer(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public primary(): PrimaryContext { + let localctx: PrimaryContext = new PrimaryContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, painless_parser.RULE_primary); + let _la: number; + try { + this.state = 415; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 37, this._ctx) ) { + case 1: + localctx = new PrecedenceContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 396; + this.match(painless_parser.LP); + this.state = 397; + this.expression(); + this.state = 398; + this.match(painless_parser.RP); + } + break; + case 2: + localctx = new NumericContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 400; + _la = this._input.LA(1); + if(!(((((_la - 73)) & ~0x1F) === 0 && ((1 << (_la - 73)) & 15) !== 0))) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + case 3: + localctx = new TrueContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 401; + this.match(painless_parser.TRUE); + } + break; + case 4: + localctx = new FalseContext(this, localctx); + this.enterOuterAlt(localctx, 4); + { + this.state = 402; + this.match(painless_parser.FALSE); + } + break; + case 5: + localctx = new NullContext(this, localctx); + this.enterOuterAlt(localctx, 5); + { + this.state = 403; + this.match(painless_parser.NULL); + } + break; + case 6: + localctx = new StringContext(this, localctx); + this.enterOuterAlt(localctx, 6); + { + this.state = 404; + this.match(painless_parser.STRING); + } + break; + case 7: + localctx = new RegexContext(this, localctx); + this.enterOuterAlt(localctx, 7); + { + this.state = 405; + this.match(painless_parser.REGEX); + } + break; + case 8: + localctx = new ListinitContext(this, localctx); + this.enterOuterAlt(localctx, 8); + { + this.state = 406; + this.listinitializer(); + } + break; + case 9: + localctx = new MapinitContext(this, localctx); + this.enterOuterAlt(localctx, 9); + { + this.state = 407; + this.mapinitializer(); + } + break; + case 10: + localctx = new VariableContext(this, localctx); + this.enterOuterAlt(localctx, 10); + { + this.state = 408; + this.match(painless_parser.ID); + } + break; + case 11: + localctx = new CalllocalContext(this, localctx); + this.enterOuterAlt(localctx, 11); + { + this.state = 409; + _la = this._input.LA(1); + if(!(_la===9 || _la===84)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 410; + this.arguments(); + } + break; + case 12: + localctx = new NewobjectContext(this, localctx); + this.enterOuterAlt(localctx, 12); + { + this.state = 411; + this.match(painless_parser.NEW); + this.state = 412; + this.type_(); + this.state = 413; + this.arguments(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public postfix(): PostfixContext { + let localctx: PostfixContext = new PostfixContext(this, this._ctx, this.state); + this.enterRule(localctx, 50, painless_parser.RULE_postfix); + try { + this.state = 420; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 38, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 417; + this.callinvoke(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 418; + this.fieldaccess(); + } + break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 419; + this.braceaccess(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public postdot(): PostdotContext { + let localctx: PostdotContext = new PostdotContext(this, this._ctx, this.state); + this.enterRule(localctx, 52, painless_parser.RULE_postdot); + try { + this.state = 424; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 39, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 422; + this.callinvoke(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 423; + this.fieldaccess(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public callinvoke(): CallinvokeContext { + let localctx: CallinvokeContext = new CallinvokeContext(this, this._ctx, this.state); + this.enterRule(localctx, 54, painless_parser.RULE_callinvoke); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 426; + _la = this._input.LA(1); + if(!(_la===10 || _la===11)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 427; + this.match(painless_parser.DOTID); + this.state = 428; + this.arguments(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public fieldaccess(): FieldaccessContext { + let localctx: FieldaccessContext = new FieldaccessContext(this, this._ctx, this.state); + this.enterRule(localctx, 56, painless_parser.RULE_fieldaccess); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 430; + _la = this._input.LA(1); + if(!(_la===10 || _la===11)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 431; + _la = this._input.LA(1); + if(!(_la===85 || _la===86)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public braceaccess(): BraceaccessContext { + let localctx: BraceaccessContext = new BraceaccessContext(this, this._ctx, this.state); + this.enterRule(localctx, 58, painless_parser.RULE_braceaccess); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 433; + this.match(painless_parser.LBRACE); + this.state = 434; + this.expression(); + this.state = 435; + this.match(painless_parser.RBRACE); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public arrayinitializer(): ArrayinitializerContext { + let localctx: ArrayinitializerContext = new ArrayinitializerContext(this, this._ctx, this.state); + this.enterRule(localctx, 60, painless_parser.RULE_arrayinitializer); + let _la: number; + try { + let _alt: number; + this.state = 478; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 46, this._ctx) ) { + case 1: + localctx = new NewstandardarrayContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 437; + this.match(painless_parser.NEW); + this.state = 438; + this.type_(); + this.state = 443; + this._errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + this.state = 439; + this.match(painless_parser.LBRACE); + this.state = 440; + this.expression(); + this.state = 441; + this.match(painless_parser.RBRACE); + } + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 445; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 40, this._ctx); + } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); + this.state = 454; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 42, this._ctx) ) { + case 1: + { + this.state = 447; + this.postdot(); + this.state = 451; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 41, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 448; + this.postfix(); + } + } + } + this.state = 453; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 41, this._ctx); + } + } + break; + } + } + break; + case 2: + localctx = new NewinitializedarrayContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 456; + this.match(painless_parser.NEW); + this.state = 457; + this.type_(); + this.state = 458; + this.match(painless_parser.LBRACE); + this.state = 459; + this.match(painless_parser.RBRACE); + this.state = 460; + this.match(painless_parser.LBRACK); + this.state = 469; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1661206549) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 41926659) !== 0)) { + { + this.state = 461; + this.expression(); + this.state = 466; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 462; + this.match(painless_parser.COMMA); + this.state = 463; + this.expression(); + } + } + this.state = 468; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 471; + this.match(painless_parser.RBRACK); + this.state = 475; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 45, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 472; + this.postfix(); + } + } + } + this.state = 477; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 45, this._ctx); + } + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public listinitializer(): ListinitializerContext { + let localctx: ListinitializerContext = new ListinitializerContext(this, this._ctx, this.state); + this.enterRule(localctx, 62, painless_parser.RULE_listinitializer); + let _la: number; + try { + this.state = 493; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 480; + this.match(painless_parser.LBRACE); + this.state = 481; + this.expression(); + this.state = 486; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 482; + this.match(painless_parser.COMMA); + this.state = 483; + this.expression(); + } + } + this.state = 488; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 489; + this.match(painless_parser.RBRACE); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 491; + this.match(painless_parser.LBRACE); + this.state = 492; + this.match(painless_parser.RBRACE); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public mapinitializer(): MapinitializerContext { + let localctx: MapinitializerContext = new MapinitializerContext(this, this._ctx, this.state); + this.enterRule(localctx, 64, painless_parser.RULE_mapinitializer); + let _la: number; + try { + this.state = 509; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 50, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 495; + this.match(painless_parser.LBRACE); + this.state = 496; + this.maptoken(); + this.state = 501; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 497; + this.match(painless_parser.COMMA); + this.state = 498; + this.maptoken(); + } + } + this.state = 503; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 504; + this.match(painless_parser.RBRACE); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 506; + this.match(painless_parser.LBRACE); + this.state = 507; + this.match(painless_parser.COLON); + this.state = 508; + this.match(painless_parser.RBRACE); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public maptoken(): MaptokenContext { + let localctx: MaptokenContext = new MaptokenContext(this, this._ctx, this.state); + this.enterRule(localctx, 66, painless_parser.RULE_maptoken); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 511; + this.expression(); + this.state = 512; + this.match(painless_parser.COLON); + this.state = 513; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public arguments(): ArgumentsContext { + let localctx: ArgumentsContext = new ArgumentsContext(this, this._ctx, this.state); + this.enterRule(localctx, 68, painless_parser.RULE_arguments); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + { + this.state = 515; + this.match(painless_parser.LP); + this.state = 524; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 1665400853) !== 0) || ((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 67092483) !== 0)) { + { + this.state = 516; + this.argument(); + this.state = 521; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 517; + this.match(painless_parser.COMMA); + this.state = 518; + this.argument(); + } + } + this.state = 523; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 526; + this.match(painless_parser.RP); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public argument(): ArgumentContext { + let localctx: ArgumentContext = new ArgumentContext(this, this._ctx, this.state); + this.enterRule(localctx, 70, painless_parser.RULE_argument); + try { + this.state = 531; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 53, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 528; + this.expression(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 529; + this.lambda(); + } + break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 530; + this.funcref(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public lambda(): LambdaContext { + let localctx: LambdaContext = new LambdaContext(this, this._ctx, this.state); + this.enterRule(localctx, 72, painless_parser.RULE_lambda); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 546; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 82: + case 83: + case 84: + { + this.state = 533; + this.lamtype(); + } + break; + case 7: + { + this.state = 534; + this.match(painless_parser.LP); + this.state = 543; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 7) !== 0)) { + { + this.state = 535; + this.lamtype(); + this.state = 540; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===12) { + { + { + this.state = 536; + this.match(painless_parser.COMMA); + this.state = 537; + this.lamtype(); + } + } + this.state = 542; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 545; + this.match(painless_parser.RP); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 548; + this.match(painless_parser.ARROW); + this.state = 551; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case 3: + { + this.state = 549; + this.block(); + } + break; + case 5: + case 7: + case 9: + case 23: + case 29: + case 30: + case 34: + case 35: + case 59: + case 60: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 84: + { + this.state = 550; + this.expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public lamtype(): LamtypeContext { + let localctx: LamtypeContext = new LamtypeContext(this, this._ctx, this.state); + this.enterRule(localctx, 74, painless_parser.RULE_lamtype); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 554; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { + case 1: + { + this.state = 553; + this.decltype(); + } + break; + } + this.state = 556; + this.match(painless_parser.ID); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public funcref(): FuncrefContext { + let localctx: FuncrefContext = new FuncrefContext(this, this._ctx, this.state); + this.enterRule(localctx, 76, painless_parser.RULE_funcref); + try { + this.state = 569; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 59, this._ctx) ) { + case 1: + localctx = new ClassfuncrefContext(this, localctx); + this.enterOuterAlt(localctx, 1); + { + this.state = 558; + this.decltype(); + this.state = 559; + this.match(painless_parser.REF); + this.state = 560; + this.match(painless_parser.ID); + } + break; + case 2: + localctx = new ConstructorfuncrefContext(this, localctx); + this.enterOuterAlt(localctx, 2); + { + this.state = 562; + this.decltype(); + this.state = 563; + this.match(painless_parser.REF); + this.state = 564; + this.match(painless_parser.NEW); + } + break; + case 3: + localctx = new LocalfuncrefContext(this, localctx); + this.enterOuterAlt(localctx, 3); + { + this.state = 566; + this.match(painless_parser.THIS); + this.state = 567; + this.match(painless_parser.REF); + this.state = 568; + this.match(painless_parser.ID); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + + public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 4: + return this.rstatement_sempred(localctx as RstatementContext, predIndex); + case 16: + return this.noncondexpression_sempred(localctx as NoncondexpressionContext, predIndex); + } + return true; + } + private rstatement_sempred(localctx: RstatementContext, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this._input.LA(1) != painless_parser.ELSE ; + } + return true; + } + private noncondexpression_sempred(localctx: NoncondexpressionContext, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.precpred(this._ctx, 13); + case 2: + return this.precpred(this._ctx, 12); + case 3: + return this.precpred(this._ctx, 11); + case 4: + return this.precpred(this._ctx, 10); + case 5: + return this.precpred(this._ctx, 9); + case 6: + return this.precpred(this._ctx, 7); + case 7: + return this.precpred(this._ctx, 6); + case 8: + return this.precpred(this._ctx, 5); + case 9: + return this.precpred(this._ctx, 4); + case 10: + return this.precpred(this._ctx, 3); + case 11: + return this.precpred(this._ctx, 2); + case 12: + return this.precpred(this._ctx, 1); + case 13: + return this.precpred(this._ctx, 8); + } + return true; + } + + public static readonly _serializedATN: number[] = [4,1,86,572,2,0,7,0,2, + 1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2, + 10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17, + 7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7, + 24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31, + 2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,1, + 0,5,0,80,8,0,10,0,12,0,83,9,0,1,0,5,0,86,8,0,10,0,12,0,89,9,0,1,0,1,0,1, + 1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,5,2,105,8,2,10,2,12,2,108, + 9,2,3,2,110,8,2,1,2,1,2,1,3,1,3,1,3,1,3,3,3,118,8,3,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,3,4,128,8,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,136,8,4,1,4,1,4,1,4, + 3,4,141,8,4,1,4,1,4,3,4,145,8,4,1,4,1,4,3,4,149,8,4,1,4,1,4,1,4,3,4,154, + 8,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,4,4,176,8,4,11,4,12,4,177,3,4,180,8,4,1,5,1,5,1,5,1,5,1,5,1, + 5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,194,8,5,1,5,1,5,1,5,3,5,199,8,5,1,6,1,6,3, + 6,203,8,6,1,7,1,7,5,7,207,8,7,10,7,12,7,210,9,7,1,7,3,7,213,8,7,1,7,1,7, + 1,8,1,8,1,9,1,9,3,9,221,8,9,1,10,1,10,1,11,1,11,1,11,1,11,5,11,229,8,11, + 10,11,12,11,232,9,11,1,12,1,12,1,12,5,12,237,8,12,10,12,12,12,240,9,12, + 1,13,1,13,1,13,1,13,1,13,5,13,247,8,13,10,13,12,13,250,9,13,3,13,252,8, + 13,1,14,1,14,1,14,3,14,257,8,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,5,16,308,8, + 16,10,16,12,16,311,9,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1, + 17,1,17,3,17,324,8,17,1,18,1,18,1,18,1,18,1,18,3,18,331,8,18,1,19,1,19, + 1,19,1,19,1,19,1,19,1,19,3,19,340,8,19,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,1,20,3,20,352,8,20,1,21,1,21,1,22,1,22,1,22,4,22,359,8,22, + 11,22,12,22,360,1,22,1,22,1,22,4,22,366,8,22,11,22,12,22,367,1,22,1,22, + 1,22,5,22,373,8,22,10,22,12,22,376,9,22,1,22,1,22,5,22,380,8,22,10,22,12, + 22,383,9,22,3,22,385,8,22,1,23,1,23,5,23,389,8,23,10,23,12,23,392,9,23, + 1,23,3,23,395,8,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, + 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,416,8,24,1,25,1,25,1,25, + 3,25,421,8,25,1,26,1,26,3,26,425,8,26,1,27,1,27,1,27,1,27,1,28,1,28,1,28, + 1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,4,30,444,8,30,11,30,12, + 30,445,1,30,1,30,5,30,450,8,30,10,30,12,30,453,9,30,3,30,455,8,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,5,30,465,8,30,10,30,12,30,468,9,30,3, + 30,470,8,30,1,30,1,30,5,30,474,8,30,10,30,12,30,477,9,30,3,30,479,8,30, + 1,31,1,31,1,31,1,31,5,31,485,8,31,10,31,12,31,488,9,31,1,31,1,31,1,31,1, + 31,3,31,494,8,31,1,32,1,32,1,32,1,32,5,32,500,8,32,10,32,12,32,503,9,32, + 1,32,1,32,1,32,1,32,1,32,3,32,510,8,32,1,33,1,33,1,33,1,33,1,34,1,34,1, + 34,1,34,5,34,520,8,34,10,34,12,34,523,9,34,3,34,525,8,34,1,34,1,34,1,35, + 1,35,1,35,3,35,532,8,35,1,36,1,36,1,36,1,36,1,36,5,36,539,8,36,10,36,12, + 36,542,9,36,3,36,544,8,36,1,36,3,36,547,8,36,1,36,1,36,1,36,3,36,552,8, + 36,1,37,3,37,555,8,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,3,38,570,8,38,1,38,0,1,32,39,0,2,4,6,8,10,12,14,16,18,20, + 22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68, + 70,72,74,76,0,15,1,1,13,13,1,0,31,33,1,0,34,35,1,0,57,58,1,0,36,38,1,0, + 39,42,1,0,43,46,1,0,61,72,1,0,59,60,1,0,29,30,1,0,82,83,1,0,73,76,2,0,9, + 9,84,84,1,0,10,11,1,0,85,86,631,0,81,1,0,0,0,2,92,1,0,0,0,4,97,1,0,0,0, + 6,117,1,0,0,0,8,179,1,0,0,0,10,198,1,0,0,0,12,202,1,0,0,0,14,204,1,0,0, + 0,16,216,1,0,0,0,18,220,1,0,0,0,20,222,1,0,0,0,22,224,1,0,0,0,24,233,1, + 0,0,0,26,251,1,0,0,0,28,253,1,0,0,0,30,258,1,0,0,0,32,265,1,0,0,0,34,323, + 1,0,0,0,36,330,1,0,0,0,38,339,1,0,0,0,40,351,1,0,0,0,42,353,1,0,0,0,44, + 384,1,0,0,0,46,394,1,0,0,0,48,415,1,0,0,0,50,420,1,0,0,0,52,424,1,0,0,0, + 54,426,1,0,0,0,56,430,1,0,0,0,58,433,1,0,0,0,60,478,1,0,0,0,62,493,1,0, + 0,0,64,509,1,0,0,0,66,511,1,0,0,0,68,515,1,0,0,0,70,531,1,0,0,0,72,546, + 1,0,0,0,74,554,1,0,0,0,76,569,1,0,0,0,78,80,3,2,1,0,79,78,1,0,0,0,80,83, + 1,0,0,0,81,79,1,0,0,0,81,82,1,0,0,0,82,87,1,0,0,0,83,81,1,0,0,0,84,86,3, + 6,3,0,85,84,1,0,0,0,86,89,1,0,0,0,87,85,1,0,0,0,87,88,1,0,0,0,88,90,1,0, + 0,0,89,87,1,0,0,0,90,91,5,0,0,1,91,1,1,0,0,0,92,93,3,24,12,0,93,94,5,84, + 0,0,94,95,3,4,2,0,95,96,3,14,7,0,96,3,1,0,0,0,97,109,5,7,0,0,98,99,3,24, + 12,0,99,106,5,84,0,0,100,101,5,12,0,0,101,102,3,24,12,0,102,103,5,84,0, + 0,103,105,1,0,0,0,104,100,1,0,0,0,105,108,1,0,0,0,106,104,1,0,0,0,106,107, + 1,0,0,0,107,110,1,0,0,0,108,106,1,0,0,0,109,98,1,0,0,0,109,110,1,0,0,0, + 110,111,1,0,0,0,111,112,5,8,0,0,112,5,1,0,0,0,113,118,3,8,4,0,114,115,3, + 10,5,0,115,116,7,0,0,0,116,118,1,0,0,0,117,113,1,0,0,0,117,114,1,0,0,0, + 118,7,1,0,0,0,119,120,5,14,0,0,120,121,5,7,0,0,121,122,3,34,17,0,122,123, + 5,8,0,0,123,127,3,12,6,0,124,125,5,16,0,0,125,128,3,12,6,0,126,128,4,4, + 0,0,127,124,1,0,0,0,127,126,1,0,0,0,128,180,1,0,0,0,129,130,5,17,0,0,130, + 131,5,7,0,0,131,132,3,34,17,0,132,135,5,8,0,0,133,136,3,12,6,0,134,136, + 3,16,8,0,135,133,1,0,0,0,135,134,1,0,0,0,136,180,1,0,0,0,137,138,5,19,0, + 0,138,140,5,7,0,0,139,141,3,18,9,0,140,139,1,0,0,0,140,141,1,0,0,0,141, + 142,1,0,0,0,142,144,5,13,0,0,143,145,3,34,17,0,144,143,1,0,0,0,144,145, + 1,0,0,0,145,146,1,0,0,0,146,148,5,13,0,0,147,149,3,20,10,0,148,147,1,0, + 0,0,148,149,1,0,0,0,149,150,1,0,0,0,150,153,5,8,0,0,151,154,3,12,6,0,152, + 154,3,16,8,0,153,151,1,0,0,0,153,152,1,0,0,0,154,180,1,0,0,0,155,156,5, + 19,0,0,156,157,5,7,0,0,157,158,3,24,12,0,158,159,5,84,0,0,159,160,5,53, + 0,0,160,161,3,34,17,0,161,162,5,8,0,0,162,163,3,12,6,0,163,180,1,0,0,0, + 164,165,5,19,0,0,165,166,5,7,0,0,166,167,5,84,0,0,167,168,5,15,0,0,168, + 169,3,34,17,0,169,170,5,8,0,0,170,171,3,12,6,0,171,180,1,0,0,0,172,173, + 5,24,0,0,173,175,3,14,7,0,174,176,3,30,15,0,175,174,1,0,0,0,176,177,1,0, + 0,0,177,175,1,0,0,0,177,178,1,0,0,0,178,180,1,0,0,0,179,119,1,0,0,0,179, + 129,1,0,0,0,179,137,1,0,0,0,179,155,1,0,0,0,179,164,1,0,0,0,179,172,1,0, + 0,0,180,9,1,0,0,0,181,182,5,18,0,0,182,183,3,14,7,0,183,184,5,17,0,0,184, + 185,5,7,0,0,185,186,3,34,17,0,186,187,5,8,0,0,187,199,1,0,0,0,188,199,3, + 22,11,0,189,199,5,20,0,0,190,199,5,21,0,0,191,193,5,22,0,0,192,194,3,34, + 17,0,193,192,1,0,0,0,193,194,1,0,0,0,194,199,1,0,0,0,195,196,5,26,0,0,196, + 199,3,34,17,0,197,199,3,34,17,0,198,181,1,0,0,0,198,188,1,0,0,0,198,189, + 1,0,0,0,198,190,1,0,0,0,198,191,1,0,0,0,198,195,1,0,0,0,198,197,1,0,0,0, + 199,11,1,0,0,0,200,203,3,14,7,0,201,203,3,6,3,0,202,200,1,0,0,0,202,201, + 1,0,0,0,203,13,1,0,0,0,204,208,5,3,0,0,205,207,3,6,3,0,206,205,1,0,0,0, + 207,210,1,0,0,0,208,206,1,0,0,0,208,209,1,0,0,0,209,212,1,0,0,0,210,208, + 1,0,0,0,211,213,3,10,5,0,212,211,1,0,0,0,212,213,1,0,0,0,213,214,1,0,0, + 0,214,215,5,4,0,0,215,15,1,0,0,0,216,217,5,13,0,0,217,17,1,0,0,0,218,221, + 3,22,11,0,219,221,3,34,17,0,220,218,1,0,0,0,220,219,1,0,0,0,221,19,1,0, + 0,0,222,223,3,34,17,0,223,21,1,0,0,0,224,225,3,24,12,0,225,230,3,28,14, + 0,226,227,5,12,0,0,227,229,3,28,14,0,228,226,1,0,0,0,229,232,1,0,0,0,230, + 228,1,0,0,0,230,231,1,0,0,0,231,23,1,0,0,0,232,230,1,0,0,0,233,238,3,26, + 13,0,234,235,5,5,0,0,235,237,5,6,0,0,236,234,1,0,0,0,237,240,1,0,0,0,238, + 236,1,0,0,0,238,239,1,0,0,0,239,25,1,0,0,0,240,238,1,0,0,0,241,252,5,83, + 0,0,242,252,5,82,0,0,243,248,5,84,0,0,244,245,5,10,0,0,245,247,5,86,0,0, + 246,244,1,0,0,0,247,250,1,0,0,0,248,246,1,0,0,0,248,249,1,0,0,0,249,252, + 1,0,0,0,250,248,1,0,0,0,251,241,1,0,0,0,251,242,1,0,0,0,251,243,1,0,0,0, + 252,27,1,0,0,0,253,256,5,84,0,0,254,255,5,61,0,0,255,257,3,34,17,0,256, + 254,1,0,0,0,256,257,1,0,0,0,257,29,1,0,0,0,258,259,5,25,0,0,259,260,5,7, + 0,0,260,261,3,26,13,0,261,262,5,84,0,0,262,263,5,8,0,0,263,264,3,14,7,0, + 264,31,1,0,0,0,265,266,6,16,-1,0,266,267,3,36,18,0,267,309,1,0,0,0,268, + 269,10,13,0,0,269,270,7,1,0,0,270,308,3,32,16,14,271,272,10,12,0,0,272, + 273,7,2,0,0,273,308,3,32,16,13,274,275,10,11,0,0,275,276,7,3,0,0,276,308, + 3,32,16,12,277,278,10,10,0,0,278,279,7,4,0,0,279,308,3,32,16,11,280,281, + 10,9,0,0,281,282,7,5,0,0,282,308,3,32,16,10,283,284,10,7,0,0,284,285,7, + 6,0,0,285,308,3,32,16,8,286,287,10,6,0,0,287,288,5,47,0,0,288,308,3,32, + 16,7,289,290,10,5,0,0,290,291,5,48,0,0,291,308,3,32,16,6,292,293,10,4,0, + 0,293,294,5,49,0,0,294,308,3,32,16,5,295,296,10,3,0,0,296,297,5,50,0,0, + 297,308,3,32,16,4,298,299,10,2,0,0,299,300,5,51,0,0,300,308,3,32,16,3,301, + 302,10,1,0,0,302,303,5,54,0,0,303,308,3,32,16,1,304,305,10,8,0,0,305,306, + 5,28,0,0,306,308,3,24,12,0,307,268,1,0,0,0,307,271,1,0,0,0,307,274,1,0, + 0,0,307,277,1,0,0,0,307,280,1,0,0,0,307,283,1,0,0,0,307,286,1,0,0,0,307, + 289,1,0,0,0,307,292,1,0,0,0,307,295,1,0,0,0,307,298,1,0,0,0,307,301,1,0, + 0,0,307,304,1,0,0,0,308,311,1,0,0,0,309,307,1,0,0,0,309,310,1,0,0,0,310, + 33,1,0,0,0,311,309,1,0,0,0,312,324,3,32,16,0,313,314,3,32,16,0,314,315, + 5,52,0,0,315,316,3,34,17,0,316,317,5,53,0,0,317,318,3,34,17,0,318,324,1, + 0,0,0,319,320,3,32,16,0,320,321,7,7,0,0,321,322,3,34,17,0,322,324,1,0,0, + 0,323,312,1,0,0,0,323,313,1,0,0,0,323,319,1,0,0,0,324,35,1,0,0,0,325,326, + 7,8,0,0,326,331,3,46,23,0,327,328,7,2,0,0,328,331,3,36,18,0,329,331,3,38, + 19,0,330,325,1,0,0,0,330,327,1,0,0,0,330,329,1,0,0,0,331,37,1,0,0,0,332, + 340,3,46,23,0,333,334,3,46,23,0,334,335,7,8,0,0,335,340,1,0,0,0,336,337, + 7,9,0,0,337,340,3,36,18,0,338,340,3,40,20,0,339,332,1,0,0,0,339,333,1,0, + 0,0,339,336,1,0,0,0,339,338,1,0,0,0,340,39,1,0,0,0,341,342,5,7,0,0,342, + 343,3,42,21,0,343,344,5,8,0,0,344,345,3,36,18,0,345,352,1,0,0,0,346,347, + 5,7,0,0,347,348,3,44,22,0,348,349,5,8,0,0,349,350,3,38,19,0,350,352,1,0, + 0,0,351,341,1,0,0,0,351,346,1,0,0,0,352,41,1,0,0,0,353,354,7,10,0,0,354, + 43,1,0,0,0,355,358,5,83,0,0,356,357,5,5,0,0,357,359,5,6,0,0,358,356,1,0, + 0,0,359,360,1,0,0,0,360,358,1,0,0,0,360,361,1,0,0,0,361,385,1,0,0,0,362, + 365,5,82,0,0,363,364,5,5,0,0,364,366,5,6,0,0,365,363,1,0,0,0,366,367,1, + 0,0,0,367,365,1,0,0,0,367,368,1,0,0,0,368,385,1,0,0,0,369,374,5,84,0,0, + 370,371,5,10,0,0,371,373,5,86,0,0,372,370,1,0,0,0,373,376,1,0,0,0,374,372, + 1,0,0,0,374,375,1,0,0,0,375,381,1,0,0,0,376,374,1,0,0,0,377,378,5,5,0,0, + 378,380,5,6,0,0,379,377,1,0,0,0,380,383,1,0,0,0,381,379,1,0,0,0,381,382, + 1,0,0,0,382,385,1,0,0,0,383,381,1,0,0,0,384,355,1,0,0,0,384,362,1,0,0,0, + 384,369,1,0,0,0,385,45,1,0,0,0,386,390,3,48,24,0,387,389,3,50,25,0,388, + 387,1,0,0,0,389,392,1,0,0,0,390,388,1,0,0,0,390,391,1,0,0,0,391,395,1,0, + 0,0,392,390,1,0,0,0,393,395,3,60,30,0,394,386,1,0,0,0,394,393,1,0,0,0,395, + 47,1,0,0,0,396,397,5,7,0,0,397,398,3,34,17,0,398,399,5,8,0,0,399,416,1, + 0,0,0,400,416,7,11,0,0,401,416,5,79,0,0,402,416,5,80,0,0,403,416,5,81,0, + 0,404,416,5,77,0,0,405,416,5,78,0,0,406,416,3,62,31,0,407,416,3,64,32,0, + 408,416,5,84,0,0,409,410,7,12,0,0,410,416,3,68,34,0,411,412,5,23,0,0,412, + 413,3,26,13,0,413,414,3,68,34,0,414,416,1,0,0,0,415,396,1,0,0,0,415,400, + 1,0,0,0,415,401,1,0,0,0,415,402,1,0,0,0,415,403,1,0,0,0,415,404,1,0,0,0, + 415,405,1,0,0,0,415,406,1,0,0,0,415,407,1,0,0,0,415,408,1,0,0,0,415,409, + 1,0,0,0,415,411,1,0,0,0,416,49,1,0,0,0,417,421,3,54,27,0,418,421,3,56,28, + 0,419,421,3,58,29,0,420,417,1,0,0,0,420,418,1,0,0,0,420,419,1,0,0,0,421, + 51,1,0,0,0,422,425,3,54,27,0,423,425,3,56,28,0,424,422,1,0,0,0,424,423, + 1,0,0,0,425,53,1,0,0,0,426,427,7,13,0,0,427,428,5,86,0,0,428,429,3,68,34, + 0,429,55,1,0,0,0,430,431,7,13,0,0,431,432,7,14,0,0,432,57,1,0,0,0,433,434, + 5,5,0,0,434,435,3,34,17,0,435,436,5,6,0,0,436,59,1,0,0,0,437,438,5,23,0, + 0,438,443,3,26,13,0,439,440,5,5,0,0,440,441,3,34,17,0,441,442,5,6,0,0,442, + 444,1,0,0,0,443,439,1,0,0,0,444,445,1,0,0,0,445,443,1,0,0,0,445,446,1,0, + 0,0,446,454,1,0,0,0,447,451,3,52,26,0,448,450,3,50,25,0,449,448,1,0,0,0, + 450,453,1,0,0,0,451,449,1,0,0,0,451,452,1,0,0,0,452,455,1,0,0,0,453,451, + 1,0,0,0,454,447,1,0,0,0,454,455,1,0,0,0,455,479,1,0,0,0,456,457,5,23,0, + 0,457,458,3,26,13,0,458,459,5,5,0,0,459,460,5,6,0,0,460,469,5,3,0,0,461, + 466,3,34,17,0,462,463,5,12,0,0,463,465,3,34,17,0,464,462,1,0,0,0,465,468, + 1,0,0,0,466,464,1,0,0,0,466,467,1,0,0,0,467,470,1,0,0,0,468,466,1,0,0,0, + 469,461,1,0,0,0,469,470,1,0,0,0,470,471,1,0,0,0,471,475,5,4,0,0,472,474, + 3,50,25,0,473,472,1,0,0,0,474,477,1,0,0,0,475,473,1,0,0,0,475,476,1,0,0, + 0,476,479,1,0,0,0,477,475,1,0,0,0,478,437,1,0,0,0,478,456,1,0,0,0,479,61, + 1,0,0,0,480,481,5,5,0,0,481,486,3,34,17,0,482,483,5,12,0,0,483,485,3,34, + 17,0,484,482,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487, + 489,1,0,0,0,488,486,1,0,0,0,489,490,5,6,0,0,490,494,1,0,0,0,491,492,5,5, + 0,0,492,494,5,6,0,0,493,480,1,0,0,0,493,491,1,0,0,0,494,63,1,0,0,0,495, + 496,5,5,0,0,496,501,3,66,33,0,497,498,5,12,0,0,498,500,3,66,33,0,499,497, + 1,0,0,0,500,503,1,0,0,0,501,499,1,0,0,0,501,502,1,0,0,0,502,504,1,0,0,0, + 503,501,1,0,0,0,504,505,5,6,0,0,505,510,1,0,0,0,506,507,5,5,0,0,507,508, + 5,53,0,0,508,510,5,6,0,0,509,495,1,0,0,0,509,506,1,0,0,0,510,65,1,0,0,0, + 511,512,3,34,17,0,512,513,5,53,0,0,513,514,3,34,17,0,514,67,1,0,0,0,515, + 524,5,7,0,0,516,521,3,70,35,0,517,518,5,12,0,0,518,520,3,70,35,0,519,517, + 1,0,0,0,520,523,1,0,0,0,521,519,1,0,0,0,521,522,1,0,0,0,522,525,1,0,0,0, + 523,521,1,0,0,0,524,516,1,0,0,0,524,525,1,0,0,0,525,526,1,0,0,0,526,527, + 5,8,0,0,527,69,1,0,0,0,528,532,3,34,17,0,529,532,3,72,36,0,530,532,3,76, + 38,0,531,528,1,0,0,0,531,529,1,0,0,0,531,530,1,0,0,0,532,71,1,0,0,0,533, + 547,3,74,37,0,534,543,5,7,0,0,535,540,3,74,37,0,536,537,5,12,0,0,537,539, + 3,74,37,0,538,536,1,0,0,0,539,542,1,0,0,0,540,538,1,0,0,0,540,541,1,0,0, + 0,541,544,1,0,0,0,542,540,1,0,0,0,543,535,1,0,0,0,543,544,1,0,0,0,544,545, + 1,0,0,0,545,547,5,8,0,0,546,533,1,0,0,0,546,534,1,0,0,0,547,548,1,0,0,0, + 548,551,5,56,0,0,549,552,3,14,7,0,550,552,3,34,17,0,551,549,1,0,0,0,551, + 550,1,0,0,0,552,73,1,0,0,0,553,555,3,24,12,0,554,553,1,0,0,0,554,555,1, + 0,0,0,555,556,1,0,0,0,556,557,5,84,0,0,557,75,1,0,0,0,558,559,3,24,12,0, + 559,560,5,55,0,0,560,561,5,84,0,0,561,570,1,0,0,0,562,563,3,24,12,0,563, + 564,5,55,0,0,564,565,5,23,0,0,565,570,1,0,0,0,566,567,5,27,0,0,567,568, + 5,55,0,0,568,570,5,84,0,0,569,558,1,0,0,0,569,562,1,0,0,0,569,566,1,0,0, + 0,570,77,1,0,0,0,60,81,87,106,109,117,127,135,140,144,148,153,177,179,193, + 198,202,208,212,220,230,238,248,251,256,307,309,323,330,339,351,360,367, + 374,381,384,390,394,415,420,424,445,451,454,466,469,475,478,486,493,501, + 509,521,524,531,540,543,546,551,554,569]; + + private static __ATN: ATN; + public static get _ATN(): ATN { + if (!painless_parser.__ATN) { + painless_parser.__ATN = new ATNDeserializer().deserialize(painless_parser._serializedATN); + } + + return painless_parser.__ATN; + } + + + static DecisionsToDFA = painless_parser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); + +} + +export class SourceContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public EOF(): TerminalNode { + return this.getToken(painless_parser.EOF, 0); + } + public function__list(): FunctionContext[] { + return this.getTypedRuleContexts(FunctionContext) as FunctionContext[]; + } + public function_(i: number): FunctionContext { + return this.getTypedRuleContext(FunctionContext, i) as FunctionContext; + } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; + } + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_source; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterSource) { + listener.enterSource(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitSource) { + listener.exitSource(this); + } + } +} + + +export class FunctionContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public parameters(): ParametersContext { + return this.getTypedRuleContext(ParametersContext, 0) as ParametersContext; + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_function; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterFunction) { + listener.enterFunction(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitFunction) { + listener.exitFunction(this); + } + } +} + + +export class ParametersContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public decltype_list(): DecltypeContext[] { + return this.getTypedRuleContexts(DecltypeContext) as DecltypeContext[]; + } + public decltype(i: number): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, i) as DecltypeContext; + } + public ID_list(): TerminalNode[] { + return this.getTokens(painless_parser.ID); + } + public ID(i: number): TerminalNode { + return this.getToken(painless_parser.ID, i); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_parameters; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterParameters) { + listener.enterParameters(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitParameters) { + listener.exitParameters(this); + } + } +} + + +export class StatementContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public rstatement(): RstatementContext { + return this.getTypedRuleContext(RstatementContext, 0) as RstatementContext; + } + public dstatement(): DstatementContext { + return this.getTypedRuleContext(DstatementContext, 0) as DstatementContext; + } + public SEMICOLON(): TerminalNode { + return this.getToken(painless_parser.SEMICOLON, 0); + } + public EOF(): TerminalNode { + return this.getToken(painless_parser.EOF, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_statement; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterStatement) { + listener.enterStatement(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitStatement) { + listener.exitStatement(this); + } + } +} + + +export class RstatementContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_rstatement; + } + public copyFrom(ctx: RstatementContext): void { + super.copyFrom(ctx); + } +} +export class ForContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public FOR(): TerminalNode { + return this.getToken(painless_parser.FOR, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public SEMICOLON_list(): TerminalNode[] { + return this.getTokens(painless_parser.SEMICOLON); + } + public SEMICOLON(i: number): TerminalNode { + return this.getToken(painless_parser.SEMICOLON, i); + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public trailer(): TrailerContext { + return this.getTypedRuleContext(TrailerContext, 0) as TrailerContext; + } + public empty(): EmptyContext { + return this.getTypedRuleContext(EmptyContext, 0) as EmptyContext; + } + public initializer(): InitializerContext { + return this.getTypedRuleContext(InitializerContext, 0) as InitializerContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public afterthought(): AfterthoughtContext { + return this.getTypedRuleContext(AfterthoughtContext, 0) as AfterthoughtContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterFor) { + listener.enterFor(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitFor) { + listener.exitFor(this); + } + } +} +export class TryContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public TRY(): TerminalNode { + return this.getToken(painless_parser.TRY, 0); + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public trap_list(): TrapContext[] { + return this.getTypedRuleContexts(TrapContext) as TrapContext[]; + } + public trap(i: number): TrapContext { + return this.getTypedRuleContext(TrapContext, i) as TrapContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterTry) { + listener.enterTry(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitTry) { + listener.exitTry(this); + } + } +} +export class WhileContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public WHILE(): TerminalNode { + return this.getToken(painless_parser.WHILE, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public trailer(): TrailerContext { + return this.getTypedRuleContext(TrailerContext, 0) as TrailerContext; + } + public empty(): EmptyContext { + return this.getTypedRuleContext(EmptyContext, 0) as EmptyContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterWhile) { + listener.enterWhile(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitWhile) { + listener.exitWhile(this); + } + } +} +export class IneachContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public FOR(): TerminalNode { + return this.getToken(painless_parser.FOR, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public IN(): TerminalNode { + return this.getToken(painless_parser.IN, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public trailer(): TrailerContext { + return this.getTypedRuleContext(TrailerContext, 0) as TrailerContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterIneach) { + listener.enterIneach(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitIneach) { + listener.exitIneach(this); + } + } +} +export class IfContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public IF(): TerminalNode { + return this.getToken(painless_parser.IF, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public trailer_list(): TrailerContext[] { + return this.getTypedRuleContexts(TrailerContext) as TrailerContext[]; + } + public trailer(i: number): TrailerContext { + return this.getTypedRuleContext(TrailerContext, i) as TrailerContext; + } + public ELSE(): TerminalNode { + return this.getToken(painless_parser.ELSE, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterIf) { + listener.enterIf(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitIf) { + listener.exitIf(this); + } + } +} +export class EachContext extends RstatementContext { + constructor(parser: painless_parser, ctx: RstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public FOR(): TerminalNode { + return this.getToken(painless_parser.FOR, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public COLON(): TerminalNode { + return this.getToken(painless_parser.COLON, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public trailer(): TrailerContext { + return this.getTypedRuleContext(TrailerContext, 0) as TrailerContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterEach) { + listener.enterEach(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitEach) { + listener.exitEach(this); + } + } +} + + +export class DstatementContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_dstatement; + } + public copyFrom(ctx: DstatementContext): void { + super.copyFrom(ctx); + } +} +export class DeclContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public declaration(): DeclarationContext { + return this.getTypedRuleContext(DeclarationContext, 0) as DeclarationContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDecl) { + listener.enterDecl(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDecl) { + listener.exitDecl(this); + } + } +} +export class BreakContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public BREAK(): TerminalNode { + return this.getToken(painless_parser.BREAK, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterBreak) { + listener.enterBreak(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitBreak) { + listener.exitBreak(this); + } + } +} +export class ThrowContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public THROW(): TerminalNode { + return this.getToken(painless_parser.THROW, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterThrow) { + listener.enterThrow(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitThrow) { + listener.exitThrow(this); + } + } +} +export class ContinueContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public CONTINUE(): TerminalNode { + return this.getToken(painless_parser.CONTINUE, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterContinue) { + listener.enterContinue(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitContinue) { + listener.exitContinue(this); + } + } +} +export class ExprContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterExpr) { + listener.enterExpr(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitExpr) { + listener.exitExpr(this); + } + } +} +export class DoContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public DO(): TerminalNode { + return this.getToken(painless_parser.DO, 0); + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public WHILE(): TerminalNode { + return this.getToken(painless_parser.WHILE, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDo) { + listener.enterDo(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDo) { + listener.exitDo(this); + } + } +} +export class ReturnContext extends DstatementContext { + constructor(parser: painless_parser, ctx: DstatementContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public RETURN(): TerminalNode { + return this.getToken(painless_parser.RETURN, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterReturn) { + listener.enterReturn(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitReturn) { + listener.exitReturn(this); + } + } +} + + +export class TrailerContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public statement(): StatementContext { + return this.getTypedRuleContext(StatementContext, 0) as StatementContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_trailer; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterTrailer) { + listener.enterTrailer(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitTrailer) { + listener.exitTrailer(this); + } + } +} + + +export class BlockContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LBRACK(): TerminalNode { + return this.getToken(painless_parser.LBRACK, 0); + } + public RBRACK(): TerminalNode { + return this.getToken(painless_parser.RBRACK, 0); + } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; + } + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public dstatement(): DstatementContext { + return this.getTypedRuleContext(DstatementContext, 0) as DstatementContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_block; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterBlock) { + listener.enterBlock(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitBlock) { + listener.exitBlock(this); + } + } +} + + +export class EmptyContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public SEMICOLON(): TerminalNode { + return this.getToken(painless_parser.SEMICOLON, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_empty; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterEmpty) { + listener.enterEmpty(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitEmpty) { + listener.exitEmpty(this); + } + } +} + + +export class InitializerContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public declaration(): DeclarationContext { + return this.getTypedRuleContext(DeclarationContext, 0) as DeclarationContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_initializer; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterInitializer) { + listener.enterInitializer(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitInitializer) { + listener.exitInitializer(this); + } + } +} + + +export class AfterthoughtContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_afterthought; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterAfterthought) { + listener.enterAfterthought(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitAfterthought) { + listener.exitAfterthought(this); + } + } +} + + +export class DeclarationContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public declvar_list(): DeclvarContext[] { + return this.getTypedRuleContexts(DeclvarContext) as DeclvarContext[]; + } + public declvar(i: number): DeclvarContext { + return this.getTypedRuleContext(DeclvarContext, i) as DeclvarContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_declaration; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDeclaration) { + listener.enterDeclaration(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDeclaration) { + listener.exitDeclaration(this); + } + } +} + + +export class DecltypeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public type_(): TypeContext { + return this.getTypedRuleContext(TypeContext, 0) as TypeContext; + } + public LBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.LBRACE); + } + public LBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.LBRACE, i); + } + public RBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.RBRACE); + } + public RBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.RBRACE, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_decltype; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDecltype) { + listener.enterDecltype(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDecltype) { + listener.exitDecltype(this); + } + } +} + + +export class TypeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DEF(): TerminalNode { + return this.getToken(painless_parser.DEF, 0); + } + public PRIMITIVE(): TerminalNode { + return this.getToken(painless_parser.PRIMITIVE, 0); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public DOT_list(): TerminalNode[] { + return this.getTokens(painless_parser.DOT); + } + public DOT(i: number): TerminalNode { + return this.getToken(painless_parser.DOT, i); + } + public DOTID_list(): TerminalNode[] { + return this.getTokens(painless_parser.DOTID); + } + public DOTID(i: number): TerminalNode { + return this.getToken(painless_parser.DOTID, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_type; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterType) { + listener.enterType(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitType) { + listener.exitType(this); + } + } +} + + +export class DeclvarContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public ASSIGN(): TerminalNode { + return this.getToken(painless_parser.ASSIGN, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_declvar; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDeclvar) { + listener.enterDeclvar(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDeclvar) { + listener.exitDeclvar(this); + } + } +} + + +export class TrapContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public CATCH(): TerminalNode { + return this.getToken(painless_parser.CATCH, 0); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public type_(): TypeContext { + return this.getTypedRuleContext(TypeContext, 0) as TypeContext; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_trap; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterTrap) { + listener.enterTrap(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitTrap) { + listener.exitTrap(this); + } + } +} + + +export class NoncondexpressionContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_noncondexpression; + } + public copyFrom(ctx: NoncondexpressionContext): void { + super.copyFrom(ctx); + } +} +export class SingleContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public unary(): UnaryContext { + return this.getTypedRuleContext(UnaryContext, 0) as UnaryContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterSingle) { + listener.enterSingle(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitSingle) { + listener.exitSingle(this); + } + } +} +export class CompContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression_list(): NoncondexpressionContext[] { + return this.getTypedRuleContexts(NoncondexpressionContext) as NoncondexpressionContext[]; + } + public noncondexpression(i: number): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, i) as NoncondexpressionContext; + } + public LT(): TerminalNode { + return this.getToken(painless_parser.LT, 0); + } + public LTE(): TerminalNode { + return this.getToken(painless_parser.LTE, 0); + } + public GT(): TerminalNode { + return this.getToken(painless_parser.GT, 0); + } + public GTE(): TerminalNode { + return this.getToken(painless_parser.GTE, 0); + } + public EQ(): TerminalNode { + return this.getToken(painless_parser.EQ, 0); + } + public EQR(): TerminalNode { + return this.getToken(painless_parser.EQR, 0); + } + public NE(): TerminalNode { + return this.getToken(painless_parser.NE, 0); + } + public NER(): TerminalNode { + return this.getToken(painless_parser.NER, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterComp) { + listener.enterComp(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitComp) { + listener.exitComp(this); + } + } +} +export class BoolContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression_list(): NoncondexpressionContext[] { + return this.getTypedRuleContexts(NoncondexpressionContext) as NoncondexpressionContext[]; + } + public noncondexpression(i: number): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, i) as NoncondexpressionContext; + } + public BOOLAND(): TerminalNode { + return this.getToken(painless_parser.BOOLAND, 0); + } + public BOOLOR(): TerminalNode { + return this.getToken(painless_parser.BOOLOR, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterBool) { + listener.enterBool(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitBool) { + listener.exitBool(this); + } + } +} +export class BinaryContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression_list(): NoncondexpressionContext[] { + return this.getTypedRuleContexts(NoncondexpressionContext) as NoncondexpressionContext[]; + } + public noncondexpression(i: number): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, i) as NoncondexpressionContext; + } + public MUL(): TerminalNode { + return this.getToken(painless_parser.MUL, 0); + } + public DIV(): TerminalNode { + return this.getToken(painless_parser.DIV, 0); + } + public REM(): TerminalNode { + return this.getToken(painless_parser.REM, 0); + } + public ADD(): TerminalNode { + return this.getToken(painless_parser.ADD, 0); + } + public SUB(): TerminalNode { + return this.getToken(painless_parser.SUB, 0); + } + public FIND(): TerminalNode { + return this.getToken(painless_parser.FIND, 0); + } + public MATCH(): TerminalNode { + return this.getToken(painless_parser.MATCH, 0); + } + public LSH(): TerminalNode { + return this.getToken(painless_parser.LSH, 0); + } + public RSH(): TerminalNode { + return this.getToken(painless_parser.RSH, 0); + } + public USH(): TerminalNode { + return this.getToken(painless_parser.USH, 0); + } + public BWAND(): TerminalNode { + return this.getToken(painless_parser.BWAND, 0); + } + public XOR(): TerminalNode { + return this.getToken(painless_parser.XOR, 0); + } + public BWOR(): TerminalNode { + return this.getToken(painless_parser.BWOR, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterBinary) { + listener.enterBinary(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitBinary) { + listener.exitBinary(this); + } + } +} +export class ElvisContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression_list(): NoncondexpressionContext[] { + return this.getTypedRuleContexts(NoncondexpressionContext) as NoncondexpressionContext[]; + } + public noncondexpression(i: number): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, i) as NoncondexpressionContext; + } + public ELVIS(): TerminalNode { + return this.getToken(painless_parser.ELVIS, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterElvis) { + listener.enterElvis(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitElvis) { + listener.exitElvis(this); + } + } +} +export class InstanceofContext extends NoncondexpressionContext { + constructor(parser: painless_parser, ctx: NoncondexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression(): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, 0) as NoncondexpressionContext; + } + public INSTANCEOF(): TerminalNode { + return this.getToken(painless_parser.INSTANCEOF, 0); + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterInstanceof) { + listener.enterInstanceof(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitInstanceof) { + listener.exitInstanceof(this); + } + } +} + + +export class ExpressionContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_expression; + } + public copyFrom(ctx: ExpressionContext): void { + super.copyFrom(ctx); + } +} +export class ConditionalContext extends ExpressionContext { + constructor(parser: painless_parser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression(): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, 0) as NoncondexpressionContext; + } + public COND(): TerminalNode { + return this.getToken(painless_parser.COND, 0); + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public COLON(): TerminalNode { + return this.getToken(painless_parser.COLON, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterConditional) { + listener.enterConditional(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitConditional) { + listener.exitConditional(this); + } + } +} +export class AssignmentContext extends ExpressionContext { + constructor(parser: painless_parser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression(): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, 0) as NoncondexpressionContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public ASSIGN(): TerminalNode { + return this.getToken(painless_parser.ASSIGN, 0); + } + public AADD(): TerminalNode { + return this.getToken(painless_parser.AADD, 0); + } + public ASUB(): TerminalNode { + return this.getToken(painless_parser.ASUB, 0); + } + public AMUL(): TerminalNode { + return this.getToken(painless_parser.AMUL, 0); + } + public ADIV(): TerminalNode { + return this.getToken(painless_parser.ADIV, 0); + } + public AREM(): TerminalNode { + return this.getToken(painless_parser.AREM, 0); + } + public AAND(): TerminalNode { + return this.getToken(painless_parser.AAND, 0); + } + public AXOR(): TerminalNode { + return this.getToken(painless_parser.AXOR, 0); + } + public AOR(): TerminalNode { + return this.getToken(painless_parser.AOR, 0); + } + public ALSH(): TerminalNode { + return this.getToken(painless_parser.ALSH, 0); + } + public ARSH(): TerminalNode { + return this.getToken(painless_parser.ARSH, 0); + } + public AUSH(): TerminalNode { + return this.getToken(painless_parser.AUSH, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterAssignment) { + listener.enterAssignment(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitAssignment) { + listener.exitAssignment(this); + } + } +} +export class NonconditionalContext extends ExpressionContext { + constructor(parser: painless_parser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public noncondexpression(): NoncondexpressionContext { + return this.getTypedRuleContext(NoncondexpressionContext, 0) as NoncondexpressionContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNonconditional) { + listener.enterNonconditional(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNonconditional) { + listener.exitNonconditional(this); + } + } +} + + +export class UnaryContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_unary; + } + public copyFrom(ctx: UnaryContext): void { + super.copyFrom(ctx); + } +} +export class NotaddsubContext extends UnaryContext { + constructor(parser: painless_parser, ctx: UnaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public unarynotaddsub(): UnarynotaddsubContext { + return this.getTypedRuleContext(UnarynotaddsubContext, 0) as UnarynotaddsubContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNotaddsub) { + listener.enterNotaddsub(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNotaddsub) { + listener.exitNotaddsub(this); + } + } +} +export class PreContext extends UnaryContext { + constructor(parser: painless_parser, ctx: UnaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public chain(): ChainContext { + return this.getTypedRuleContext(ChainContext, 0) as ChainContext; + } + public INCR(): TerminalNode { + return this.getToken(painless_parser.INCR, 0); + } + public DECR(): TerminalNode { + return this.getToken(painless_parser.DECR, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPre) { + listener.enterPre(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPre) { + listener.exitPre(this); + } + } +} +export class AddsubContext extends UnaryContext { + constructor(parser: painless_parser, ctx: UnaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public unary(): UnaryContext { + return this.getTypedRuleContext(UnaryContext, 0) as UnaryContext; + } + public ADD(): TerminalNode { + return this.getToken(painless_parser.ADD, 0); + } + public SUB(): TerminalNode { + return this.getToken(painless_parser.SUB, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterAddsub) { + listener.enterAddsub(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitAddsub) { + listener.exitAddsub(this); + } + } +} + + +export class UnarynotaddsubContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_unarynotaddsub; + } + public copyFrom(ctx: UnarynotaddsubContext): void { + super.copyFrom(ctx); + } +} +export class CastContext extends UnarynotaddsubContext { + constructor(parser: painless_parser, ctx: UnarynotaddsubContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public castexpression(): CastexpressionContext { + return this.getTypedRuleContext(CastexpressionContext, 0) as CastexpressionContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterCast) { + listener.enterCast(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitCast) { + listener.exitCast(this); + } + } +} +export class NotContext extends UnarynotaddsubContext { + constructor(parser: painless_parser, ctx: UnarynotaddsubContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public unary(): UnaryContext { + return this.getTypedRuleContext(UnaryContext, 0) as UnaryContext; + } + public BOOLNOT(): TerminalNode { + return this.getToken(painless_parser.BOOLNOT, 0); + } + public BWNOT(): TerminalNode { + return this.getToken(painless_parser.BWNOT, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNot) { + listener.enterNot(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNot) { + listener.exitNot(this); + } + } +} +export class ReadContext extends UnarynotaddsubContext { + constructor(parser: painless_parser, ctx: UnarynotaddsubContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public chain(): ChainContext { + return this.getTypedRuleContext(ChainContext, 0) as ChainContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterRead) { + listener.enterRead(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitRead) { + listener.exitRead(this); + } + } +} +export class PostContext extends UnarynotaddsubContext { + constructor(parser: painless_parser, ctx: UnarynotaddsubContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public chain(): ChainContext { + return this.getTypedRuleContext(ChainContext, 0) as ChainContext; + } + public INCR(): TerminalNode { + return this.getToken(painless_parser.INCR, 0); + } + public DECR(): TerminalNode { + return this.getToken(painless_parser.DECR, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPost) { + listener.enterPost(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPost) { + listener.exitPost(this); + } + } +} + + +export class CastexpressionContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_castexpression; + } + public copyFrom(ctx: CastexpressionContext): void { + super.copyFrom(ctx); + } +} +export class RefcastContext extends CastexpressionContext { + constructor(parser: painless_parser, ctx: CastexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public refcasttype(): RefcasttypeContext { + return this.getTypedRuleContext(RefcasttypeContext, 0) as RefcasttypeContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public unarynotaddsub(): UnarynotaddsubContext { + return this.getTypedRuleContext(UnarynotaddsubContext, 0) as UnarynotaddsubContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterRefcast) { + listener.enterRefcast(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitRefcast) { + listener.exitRefcast(this); + } + } +} +export class PrimordefcastContext extends CastexpressionContext { + constructor(parser: painless_parser, ctx: CastexpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public primordefcasttype(): PrimordefcasttypeContext { + return this.getTypedRuleContext(PrimordefcasttypeContext, 0) as PrimordefcasttypeContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public unary(): UnaryContext { + return this.getTypedRuleContext(UnaryContext, 0) as UnaryContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPrimordefcast) { + listener.enterPrimordefcast(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPrimordefcast) { + listener.exitPrimordefcast(this); + } + } +} + + +export class PrimordefcasttypeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DEF(): TerminalNode { + return this.getToken(painless_parser.DEF, 0); + } + public PRIMITIVE(): TerminalNode { + return this.getToken(painless_parser.PRIMITIVE, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_primordefcasttype; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPrimordefcasttype) { + listener.enterPrimordefcasttype(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPrimordefcasttype) { + listener.exitPrimordefcasttype(this); + } + } +} + + +export class RefcasttypeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DEF(): TerminalNode { + return this.getToken(painless_parser.DEF, 0); + } + public LBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.LBRACE); + } + public LBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.LBRACE, i); + } + public RBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.RBRACE); + } + public RBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.RBRACE, i); + } + public PRIMITIVE(): TerminalNode { + return this.getToken(painless_parser.PRIMITIVE, 0); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public DOT_list(): TerminalNode[] { + return this.getTokens(painless_parser.DOT); + } + public DOT(i: number): TerminalNode { + return this.getToken(painless_parser.DOT, i); + } + public DOTID_list(): TerminalNode[] { + return this.getTokens(painless_parser.DOTID); + } + public DOTID(i: number): TerminalNode { + return this.getToken(painless_parser.DOTID, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_refcasttype; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterRefcasttype) { + listener.enterRefcasttype(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitRefcasttype) { + listener.exitRefcasttype(this); + } + } +} + + +export class ChainContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_chain; + } + public copyFrom(ctx: ChainContext): void { + super.copyFrom(ctx); + } +} +export class DynamicContext extends ChainContext { + constructor(parser: painless_parser, ctx: ChainContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public primary(): PrimaryContext { + return this.getTypedRuleContext(PrimaryContext, 0) as PrimaryContext; + } + public postfix_list(): PostfixContext[] { + return this.getTypedRuleContexts(PostfixContext) as PostfixContext[]; + } + public postfix(i: number): PostfixContext { + return this.getTypedRuleContext(PostfixContext, i) as PostfixContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterDynamic) { + listener.enterDynamic(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitDynamic) { + listener.exitDynamic(this); + } + } +} +export class NewarrayContext extends ChainContext { + constructor(parser: painless_parser, ctx: ChainContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public arrayinitializer(): ArrayinitializerContext { + return this.getTypedRuleContext(ArrayinitializerContext, 0) as ArrayinitializerContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNewarray) { + listener.enterNewarray(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNewarray) { + listener.exitNewarray(this); + } + } +} + + +export class PrimaryContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_primary; + } + public copyFrom(ctx: PrimaryContext): void { + super.copyFrom(ctx); + } +} +export class ListinitContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public listinitializer(): ListinitializerContext { + return this.getTypedRuleContext(ListinitializerContext, 0) as ListinitializerContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterListinit) { + listener.enterListinit(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitListinit) { + listener.exitListinit(this); + } + } +} +export class RegexContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public REGEX(): TerminalNode { + return this.getToken(painless_parser.REGEX, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterRegex) { + listener.enterRegex(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitRegex) { + listener.exitRegex(this); + } + } +} +export class NullContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NULL(): TerminalNode { + return this.getToken(painless_parser.NULL, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNull) { + listener.enterNull(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNull) { + listener.exitNull(this); + } + } +} +export class StringContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public STRING(): TerminalNode { + return this.getToken(painless_parser.STRING, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterString) { + listener.enterString(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitString) { + listener.exitString(this); + } + } +} +export class MapinitContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public mapinitializer(): MapinitializerContext { + return this.getTypedRuleContext(MapinitializerContext, 0) as MapinitializerContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterMapinit) { + listener.enterMapinit(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitMapinit) { + listener.exitMapinit(this); + } + } +} +export class CalllocalContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public arguments(): ArgumentsContext { + return this.getTypedRuleContext(ArgumentsContext, 0) as ArgumentsContext; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public DOLLAR(): TerminalNode { + return this.getToken(painless_parser.DOLLAR, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterCalllocal) { + listener.enterCalllocal(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitCalllocal) { + listener.exitCalllocal(this); + } + } +} +export class TrueContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public TRUE(): TerminalNode { + return this.getToken(painless_parser.TRUE, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterTrue) { + listener.enterTrue(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitTrue) { + listener.exitTrue(this); + } + } +} +export class FalseContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public FALSE(): TerminalNode { + return this.getToken(painless_parser.FALSE, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterFalse) { + listener.enterFalse(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitFalse) { + listener.exitFalse(this); + } + } +} +export class VariableContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterVariable) { + listener.enterVariable(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitVariable) { + listener.exitVariable(this); + } + } +} +export class NumericContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public OCTAL(): TerminalNode { + return this.getToken(painless_parser.OCTAL, 0); + } + public HEX(): TerminalNode { + return this.getToken(painless_parser.HEX, 0); + } + public INTEGER(): TerminalNode { + return this.getToken(painless_parser.INTEGER, 0); + } + public DECIMAL(): TerminalNode { + return this.getToken(painless_parser.DECIMAL, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNumeric) { + listener.enterNumeric(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNumeric) { + listener.exitNumeric(this); + } + } +} +export class NewobjectContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NEW(): TerminalNode { + return this.getToken(painless_parser.NEW, 0); + } + public type_(): TypeContext { + return this.getTypedRuleContext(TypeContext, 0) as TypeContext; + } + public arguments(): ArgumentsContext { + return this.getTypedRuleContext(ArgumentsContext, 0) as ArgumentsContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNewobject) { + listener.enterNewobject(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNewobject) { + listener.exitNewobject(this); + } + } +} +export class PrecedenceContext extends PrimaryContext { + constructor(parser: painless_parser, ctx: PrimaryContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPrecedence) { + listener.enterPrecedence(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPrecedence) { + listener.exitPrecedence(this); + } + } +} + + +export class PostfixContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public callinvoke(): CallinvokeContext { + return this.getTypedRuleContext(CallinvokeContext, 0) as CallinvokeContext; + } + public fieldaccess(): FieldaccessContext { + return this.getTypedRuleContext(FieldaccessContext, 0) as FieldaccessContext; + } + public braceaccess(): BraceaccessContext { + return this.getTypedRuleContext(BraceaccessContext, 0) as BraceaccessContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_postfix; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPostfix) { + listener.enterPostfix(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPostfix) { + listener.exitPostfix(this); + } + } +} + + +export class PostdotContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public callinvoke(): CallinvokeContext { + return this.getTypedRuleContext(CallinvokeContext, 0) as CallinvokeContext; + } + public fieldaccess(): FieldaccessContext { + return this.getTypedRuleContext(FieldaccessContext, 0) as FieldaccessContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_postdot; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterPostdot) { + listener.enterPostdot(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitPostdot) { + listener.exitPostdot(this); + } + } +} + + +export class CallinvokeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DOTID(): TerminalNode { + return this.getToken(painless_parser.DOTID, 0); + } + public arguments(): ArgumentsContext { + return this.getTypedRuleContext(ArgumentsContext, 0) as ArgumentsContext; + } + public DOT(): TerminalNode { + return this.getToken(painless_parser.DOT, 0); + } + public NSDOT(): TerminalNode { + return this.getToken(painless_parser.NSDOT, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_callinvoke; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterCallinvoke) { + listener.enterCallinvoke(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitCallinvoke) { + listener.exitCallinvoke(this); + } + } +} + + +export class FieldaccessContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DOT(): TerminalNode { + return this.getToken(painless_parser.DOT, 0); + } + public NSDOT(): TerminalNode { + return this.getToken(painless_parser.NSDOT, 0); + } + public DOTID(): TerminalNode { + return this.getToken(painless_parser.DOTID, 0); + } + public DOTINTEGER(): TerminalNode { + return this.getToken(painless_parser.DOTINTEGER, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_fieldaccess; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterFieldaccess) { + listener.enterFieldaccess(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitFieldaccess) { + listener.exitFieldaccess(this); + } + } +} + + +export class BraceaccessContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LBRACE(): TerminalNode { + return this.getToken(painless_parser.LBRACE, 0); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public RBRACE(): TerminalNode { + return this.getToken(painless_parser.RBRACE, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_braceaccess; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterBraceaccess) { + listener.enterBraceaccess(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitBraceaccess) { + listener.exitBraceaccess(this); + } + } +} + + +export class ArrayinitializerContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_arrayinitializer; + } + public copyFrom(ctx: ArrayinitializerContext): void { + super.copyFrom(ctx); + } +} +export class NewstandardarrayContext extends ArrayinitializerContext { + constructor(parser: painless_parser, ctx: ArrayinitializerContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NEW(): TerminalNode { + return this.getToken(painless_parser.NEW, 0); + } + public type_(): TypeContext { + return this.getTypedRuleContext(TypeContext, 0) as TypeContext; + } + public LBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.LBRACE); + } + public LBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.LBRACE, i); + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public RBRACE_list(): TerminalNode[] { + return this.getTokens(painless_parser.RBRACE); + } + public RBRACE(i: number): TerminalNode { + return this.getToken(painless_parser.RBRACE, i); + } + public postdot(): PostdotContext { + return this.getTypedRuleContext(PostdotContext, 0) as PostdotContext; + } + public postfix_list(): PostfixContext[] { + return this.getTypedRuleContexts(PostfixContext) as PostfixContext[]; + } + public postfix(i: number): PostfixContext { + return this.getTypedRuleContext(PostfixContext, i) as PostfixContext; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNewstandardarray) { + listener.enterNewstandardarray(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNewstandardarray) { + listener.exitNewstandardarray(this); + } + } +} +export class NewinitializedarrayContext extends ArrayinitializerContext { + constructor(parser: painless_parser, ctx: ArrayinitializerContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NEW(): TerminalNode { + return this.getToken(painless_parser.NEW, 0); + } + public type_(): TypeContext { + return this.getTypedRuleContext(TypeContext, 0) as TypeContext; + } + public LBRACE(): TerminalNode { + return this.getToken(painless_parser.LBRACE, 0); + } + public RBRACE(): TerminalNode { + return this.getToken(painless_parser.RBRACE, 0); + } + public LBRACK(): TerminalNode { + return this.getToken(painless_parser.LBRACK, 0); + } + public RBRACK(): TerminalNode { + return this.getToken(painless_parser.RBRACK, 0); + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public postfix_list(): PostfixContext[] { + return this.getTypedRuleContexts(PostfixContext) as PostfixContext[]; + } + public postfix(i: number): PostfixContext { + return this.getTypedRuleContext(PostfixContext, i) as PostfixContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterNewinitializedarray) { + listener.enterNewinitializedarray(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitNewinitializedarray) { + listener.exitNewinitializedarray(this); + } + } +} + + +export class ListinitializerContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LBRACE(): TerminalNode { + return this.getToken(painless_parser.LBRACE, 0); + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public RBRACE(): TerminalNode { + return this.getToken(painless_parser.RBRACE, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_listinitializer; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterListinitializer) { + listener.enterListinitializer(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitListinitializer) { + listener.exitListinitializer(this); + } + } +} + + +export class MapinitializerContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LBRACE(): TerminalNode { + return this.getToken(painless_parser.LBRACE, 0); + } + public maptoken_list(): MaptokenContext[] { + return this.getTypedRuleContexts(MaptokenContext) as MaptokenContext[]; + } + public maptoken(i: number): MaptokenContext { + return this.getTypedRuleContext(MaptokenContext, i) as MaptokenContext; + } + public RBRACE(): TerminalNode { + return this.getToken(painless_parser.RBRACE, 0); + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public COLON(): TerminalNode { + return this.getToken(painless_parser.COLON, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_mapinitializer; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterMapinitializer) { + listener.enterMapinitializer(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitMapinitializer) { + listener.exitMapinitializer(this); + } + } +} + + +export class MaptokenContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public COLON(): TerminalNode { + return this.getToken(painless_parser.COLON, 0); + } + public get ruleIndex(): number { + return painless_parser.RULE_maptoken; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterMaptoken) { + listener.enterMaptoken(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitMaptoken) { + listener.exitMaptoken(this); + } + } +} + + +export class ArgumentsContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public argument_list(): ArgumentContext[] { + return this.getTypedRuleContexts(ArgumentContext) as ArgumentContext[]; + } + public argument(i: number): ArgumentContext { + return this.getTypedRuleContext(ArgumentContext, i) as ArgumentContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_arguments; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterArguments) { + listener.enterArguments(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitArguments) { + listener.exitArguments(this); + } + } +} + + +export class ArgumentContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public lambda(): LambdaContext { + return this.getTypedRuleContext(LambdaContext, 0) as LambdaContext; + } + public funcref(): FuncrefContext { + return this.getTypedRuleContext(FuncrefContext, 0) as FuncrefContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_argument; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterArgument) { + listener.enterArgument(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitArgument) { + listener.exitArgument(this); + } + } +} + + +export class LambdaContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ARROW(): TerminalNode { + return this.getToken(painless_parser.ARROW, 0); + } + public lamtype_list(): LamtypeContext[] { + return this.getTypedRuleContexts(LamtypeContext) as LamtypeContext[]; + } + public lamtype(i: number): LamtypeContext { + return this.getTypedRuleContext(LamtypeContext, i) as LamtypeContext; + } + public LP(): TerminalNode { + return this.getToken(painless_parser.LP, 0); + } + public RP(): TerminalNode { + return this.getToken(painless_parser.RP, 0); + } + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public COMMA_list(): TerminalNode[] { + return this.getTokens(painless_parser.COMMA); + } + public COMMA(i: number): TerminalNode { + return this.getToken(painless_parser.COMMA, i); + } + public get ruleIndex(): number { + return painless_parser.RULE_lambda; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterLambda) { + listener.enterLambda(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitLambda) { + listener.exitLambda(this); + } + } +} + + +export class LamtypeContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public get ruleIndex(): number { + return painless_parser.RULE_lamtype; + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterLamtype) { + listener.enterLamtype(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitLamtype) { + listener.exitLamtype(this); + } + } +} + + +export class FuncrefContext extends ParserRuleContext { + constructor(parser?: painless_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return painless_parser.RULE_funcref; + } + public copyFrom(ctx: FuncrefContext): void { + super.copyFrom(ctx); + } +} +export class ClassfuncrefContext extends FuncrefContext { + constructor(parser: painless_parser, ctx: FuncrefContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public REF(): TerminalNode { + return this.getToken(painless_parser.REF, 0); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterClassfuncref) { + listener.enterClassfuncref(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitClassfuncref) { + listener.exitClassfuncref(this); + } + } +} +export class ConstructorfuncrefContext extends FuncrefContext { + constructor(parser: painless_parser, ctx: FuncrefContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public decltype(): DecltypeContext { + return this.getTypedRuleContext(DecltypeContext, 0) as DecltypeContext; + } + public REF(): TerminalNode { + return this.getToken(painless_parser.REF, 0); + } + public NEW(): TerminalNode { + return this.getToken(painless_parser.NEW, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterConstructorfuncref) { + listener.enterConstructorfuncref(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitConstructorfuncref) { + listener.exitConstructorfuncref(this); + } + } +} +export class LocalfuncrefContext extends FuncrefContext { + constructor(parser: painless_parser, ctx: FuncrefContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public THIS(): TerminalNode { + return this.getToken(painless_parser.THIS, 0); + } + public REF(): TerminalNode { + return this.getToken(painless_parser.REF, 0); + } + public ID(): TerminalNode { + return this.getToken(painless_parser.ID, 0); + } + public enterRule(listener: painless_parserListener): void { + if(listener.enterLocalfuncref) { + listener.enterLocalfuncref(this); + } + } + public exitRule(listener: painless_parserListener): void { + if(listener.exitLocalfuncref) { + listener.exitLocalfuncref(this); + } + } +} diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts new file mode 100644 index 0000000000000..b7199a560a20f --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts @@ -0,0 +1,973 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.13.1 + +import {ParseTreeListener} from "antlr4"; + + +import { SourceContext } from "./painless_parser"; +import { FunctionContext } from "./painless_parser"; +import { ParametersContext } from "./painless_parser"; +import { StatementContext } from "./painless_parser"; +import { IfContext } from "./painless_parser"; +import { WhileContext } from "./painless_parser"; +import { ForContext } from "./painless_parser"; +import { EachContext } from "./painless_parser"; +import { IneachContext } from "./painless_parser"; +import { TryContext } from "./painless_parser"; +import { DoContext } from "./painless_parser"; +import { DeclContext } from "./painless_parser"; +import { ContinueContext } from "./painless_parser"; +import { BreakContext } from "./painless_parser"; +import { ReturnContext } from "./painless_parser"; +import { ThrowContext } from "./painless_parser"; +import { ExprContext } from "./painless_parser"; +import { TrailerContext } from "./painless_parser"; +import { BlockContext } from "./painless_parser"; +import { EmptyContext } from "./painless_parser"; +import { InitializerContext } from "./painless_parser"; +import { AfterthoughtContext } from "./painless_parser"; +import { DeclarationContext } from "./painless_parser"; +import { DecltypeContext } from "./painless_parser"; +import { TypeContext } from "./painless_parser"; +import { DeclvarContext } from "./painless_parser"; +import { TrapContext } from "./painless_parser"; +import { SingleContext } from "./painless_parser"; +import { CompContext } from "./painless_parser"; +import { BoolContext } from "./painless_parser"; +import { BinaryContext } from "./painless_parser"; +import { ElvisContext } from "./painless_parser"; +import { InstanceofContext } from "./painless_parser"; +import { NonconditionalContext } from "./painless_parser"; +import { ConditionalContext } from "./painless_parser"; +import { AssignmentContext } from "./painless_parser"; +import { PreContext } from "./painless_parser"; +import { AddsubContext } from "./painless_parser"; +import { NotaddsubContext } from "./painless_parser"; +import { ReadContext } from "./painless_parser"; +import { PostContext } from "./painless_parser"; +import { NotContext } from "./painless_parser"; +import { CastContext } from "./painless_parser"; +import { PrimordefcastContext } from "./painless_parser"; +import { RefcastContext } from "./painless_parser"; +import { PrimordefcasttypeContext } from "./painless_parser"; +import { RefcasttypeContext } from "./painless_parser"; +import { DynamicContext } from "./painless_parser"; +import { NewarrayContext } from "./painless_parser"; +import { PrecedenceContext } from "./painless_parser"; +import { NumericContext } from "./painless_parser"; +import { TrueContext } from "./painless_parser"; +import { FalseContext } from "./painless_parser"; +import { NullContext } from "./painless_parser"; +import { StringContext } from "./painless_parser"; +import { RegexContext } from "./painless_parser"; +import { ListinitContext } from "./painless_parser"; +import { MapinitContext } from "./painless_parser"; +import { VariableContext } from "./painless_parser"; +import { CalllocalContext } from "./painless_parser"; +import { NewobjectContext } from "./painless_parser"; +import { PostfixContext } from "./painless_parser"; +import { PostdotContext } from "./painless_parser"; +import { CallinvokeContext } from "./painless_parser"; +import { FieldaccessContext } from "./painless_parser"; +import { BraceaccessContext } from "./painless_parser"; +import { NewstandardarrayContext } from "./painless_parser"; +import { NewinitializedarrayContext } from "./painless_parser"; +import { ListinitializerContext } from "./painless_parser"; +import { MapinitializerContext } from "./painless_parser"; +import { MaptokenContext } from "./painless_parser"; +import { ArgumentsContext } from "./painless_parser"; +import { ArgumentContext } from "./painless_parser"; +import { LambdaContext } from "./painless_parser"; +import { LamtypeContext } from "./painless_parser"; +import { ClassfuncrefContext } from "./painless_parser"; +import { ConstructorfuncrefContext } from "./painless_parser"; +import { LocalfuncrefContext } from "./painless_parser"; + + +/** + * This interface defines a complete listener for a parse tree produced by + * `painless_parser`. + */ +export default class painless_parserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by `painless_parser.source`. + * @param ctx the parse tree + */ + enterSource?: (ctx: SourceContext) => void; + /** + * Exit a parse tree produced by `painless_parser.source`. + * @param ctx the parse tree + */ + exitSource?: (ctx: SourceContext) => void; + /** + * Enter a parse tree produced by `painless_parser.function`. + * @param ctx the parse tree + */ + enterFunction?: (ctx: FunctionContext) => void; + /** + * Exit a parse tree produced by `painless_parser.function`. + * @param ctx the parse tree + */ + exitFunction?: (ctx: FunctionContext) => void; + /** + * Enter a parse tree produced by `painless_parser.parameters`. + * @param ctx the parse tree + */ + enterParameters?: (ctx: ParametersContext) => void; + /** + * Exit a parse tree produced by `painless_parser.parameters`. + * @param ctx the parse tree + */ + exitParameters?: (ctx: ParametersContext) => void; + /** + * Enter a parse tree produced by `painless_parser.statement`. + * @param ctx the parse tree + */ + enterStatement?: (ctx: StatementContext) => void; + /** + * Exit a parse tree produced by `painless_parser.statement`. + * @param ctx the parse tree + */ + exitStatement?: (ctx: StatementContext) => void; + /** + * Enter a parse tree produced by the `if` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterIf?: (ctx: IfContext) => void; + /** + * Exit a parse tree produced by the `if` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitIf?: (ctx: IfContext) => void; + /** + * Enter a parse tree produced by the `while` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterWhile?: (ctx: WhileContext) => void; + /** + * Exit a parse tree produced by the `while` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitWhile?: (ctx: WhileContext) => void; + /** + * Enter a parse tree produced by the `for` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterFor?: (ctx: ForContext) => void; + /** + * Exit a parse tree produced by the `for` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitFor?: (ctx: ForContext) => void; + /** + * Enter a parse tree produced by the `each` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterEach?: (ctx: EachContext) => void; + /** + * Exit a parse tree produced by the `each` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitEach?: (ctx: EachContext) => void; + /** + * Enter a parse tree produced by the `ineach` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterIneach?: (ctx: IneachContext) => void; + /** + * Exit a parse tree produced by the `ineach` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitIneach?: (ctx: IneachContext) => void; + /** + * Enter a parse tree produced by the `try` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterTry?: (ctx: TryContext) => void; + /** + * Exit a parse tree produced by the `try` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitTry?: (ctx: TryContext) => void; + /** + * Enter a parse tree produced by the `do` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterDo?: (ctx: DoContext) => void; + /** + * Exit a parse tree produced by the `do` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitDo?: (ctx: DoContext) => void; + /** + * Enter a parse tree produced by the `decl` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterDecl?: (ctx: DeclContext) => void; + /** + * Exit a parse tree produced by the `decl` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitDecl?: (ctx: DeclContext) => void; + /** + * Enter a parse tree produced by the `continue` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterContinue?: (ctx: ContinueContext) => void; + /** + * Exit a parse tree produced by the `continue` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitContinue?: (ctx: ContinueContext) => void; + /** + * Enter a parse tree produced by the `break` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterBreak?: (ctx: BreakContext) => void; + /** + * Exit a parse tree produced by the `break` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitBreak?: (ctx: BreakContext) => void; + /** + * Enter a parse tree produced by the `return` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterReturn?: (ctx: ReturnContext) => void; + /** + * Exit a parse tree produced by the `return` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitReturn?: (ctx: ReturnContext) => void; + /** + * Enter a parse tree produced by the `throw` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterThrow?: (ctx: ThrowContext) => void; + /** + * Exit a parse tree produced by the `throw` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitThrow?: (ctx: ThrowContext) => void; + /** + * Enter a parse tree produced by the `expr` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterExpr?: (ctx: ExprContext) => void; + /** + * Exit a parse tree produced by the `expr` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitExpr?: (ctx: ExprContext) => void; + /** + * Enter a parse tree produced by `painless_parser.trailer`. + * @param ctx the parse tree + */ + enterTrailer?: (ctx: TrailerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.trailer`. + * @param ctx the parse tree + */ + exitTrailer?: (ctx: TrailerContext) => void; + /** + * Enter a parse tree produced by `painless_parser.block`. + * @param ctx the parse tree + */ + enterBlock?: (ctx: BlockContext) => void; + /** + * Exit a parse tree produced by `painless_parser.block`. + * @param ctx the parse tree + */ + exitBlock?: (ctx: BlockContext) => void; + /** + * Enter a parse tree produced by `painless_parser.empty`. + * @param ctx the parse tree + */ + enterEmpty?: (ctx: EmptyContext) => void; + /** + * Exit a parse tree produced by `painless_parser.empty`. + * @param ctx the parse tree + */ + exitEmpty?: (ctx: EmptyContext) => void; + /** + * Enter a parse tree produced by `painless_parser.initializer`. + * @param ctx the parse tree + */ + enterInitializer?: (ctx: InitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.initializer`. + * @param ctx the parse tree + */ + exitInitializer?: (ctx: InitializerContext) => void; + /** + * Enter a parse tree produced by `painless_parser.afterthought`. + * @param ctx the parse tree + */ + enterAfterthought?: (ctx: AfterthoughtContext) => void; + /** + * Exit a parse tree produced by `painless_parser.afterthought`. + * @param ctx the parse tree + */ + exitAfterthought?: (ctx: AfterthoughtContext) => void; + /** + * Enter a parse tree produced by `painless_parser.declaration`. + * @param ctx the parse tree + */ + enterDeclaration?: (ctx: DeclarationContext) => void; + /** + * Exit a parse tree produced by `painless_parser.declaration`. + * @param ctx the parse tree + */ + exitDeclaration?: (ctx: DeclarationContext) => void; + /** + * Enter a parse tree produced by `painless_parser.decltype`. + * @param ctx the parse tree + */ + enterDecltype?: (ctx: DecltypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.decltype`. + * @param ctx the parse tree + */ + exitDecltype?: (ctx: DecltypeContext) => void; + /** + * Enter a parse tree produced by `painless_parser.type`. + * @param ctx the parse tree + */ + enterType?: (ctx: TypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.type`. + * @param ctx the parse tree + */ + exitType?: (ctx: TypeContext) => void; + /** + * Enter a parse tree produced by `painless_parser.declvar`. + * @param ctx the parse tree + */ + enterDeclvar?: (ctx: DeclvarContext) => void; + /** + * Exit a parse tree produced by `painless_parser.declvar`. + * @param ctx the parse tree + */ + exitDeclvar?: (ctx: DeclvarContext) => void; + /** + * Enter a parse tree produced by `painless_parser.trap`. + * @param ctx the parse tree + */ + enterTrap?: (ctx: TrapContext) => void; + /** + * Exit a parse tree produced by `painless_parser.trap`. + * @param ctx the parse tree + */ + exitTrap?: (ctx: TrapContext) => void; + /** + * Enter a parse tree produced by the `single` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterSingle?: (ctx: SingleContext) => void; + /** + * Exit a parse tree produced by the `single` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitSingle?: (ctx: SingleContext) => void; + /** + * Enter a parse tree produced by the `comp` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterComp?: (ctx: CompContext) => void; + /** + * Exit a parse tree produced by the `comp` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitComp?: (ctx: CompContext) => void; + /** + * Enter a parse tree produced by the `bool` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterBool?: (ctx: BoolContext) => void; + /** + * Exit a parse tree produced by the `bool` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitBool?: (ctx: BoolContext) => void; + /** + * Enter a parse tree produced by the `binary` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterBinary?: (ctx: BinaryContext) => void; + /** + * Exit a parse tree produced by the `binary` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitBinary?: (ctx: BinaryContext) => void; + /** + * Enter a parse tree produced by the `elvis` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterElvis?: (ctx: ElvisContext) => void; + /** + * Exit a parse tree produced by the `elvis` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitElvis?: (ctx: ElvisContext) => void; + /** + * Enter a parse tree produced by the `instanceof` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterInstanceof?: (ctx: InstanceofContext) => void; + /** + * Exit a parse tree produced by the `instanceof` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitInstanceof?: (ctx: InstanceofContext) => void; + /** + * Enter a parse tree produced by the `nonconditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterNonconditional?: (ctx: NonconditionalContext) => void; + /** + * Exit a parse tree produced by the `nonconditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitNonconditional?: (ctx: NonconditionalContext) => void; + /** + * Enter a parse tree produced by the `conditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterConditional?: (ctx: ConditionalContext) => void; + /** + * Exit a parse tree produced by the `conditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitConditional?: (ctx: ConditionalContext) => void; + /** + * Enter a parse tree produced by the `assignment` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterAssignment?: (ctx: AssignmentContext) => void; + /** + * Exit a parse tree produced by the `assignment` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitAssignment?: (ctx: AssignmentContext) => void; + /** + * Enter a parse tree produced by the `pre` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterPre?: (ctx: PreContext) => void; + /** + * Exit a parse tree produced by the `pre` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitPre?: (ctx: PreContext) => void; + /** + * Enter a parse tree produced by the `addsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterAddsub?: (ctx: AddsubContext) => void; + /** + * Exit a parse tree produced by the `addsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitAddsub?: (ctx: AddsubContext) => void; + /** + * Enter a parse tree produced by the `notaddsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterNotaddsub?: (ctx: NotaddsubContext) => void; + /** + * Exit a parse tree produced by the `notaddsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitNotaddsub?: (ctx: NotaddsubContext) => void; + /** + * Enter a parse tree produced by the `read` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterRead?: (ctx: ReadContext) => void; + /** + * Exit a parse tree produced by the `read` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitRead?: (ctx: ReadContext) => void; + /** + * Enter a parse tree produced by the `post` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterPost?: (ctx: PostContext) => void; + /** + * Exit a parse tree produced by the `post` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitPost?: (ctx: PostContext) => void; + /** + * Enter a parse tree produced by the `not` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterNot?: (ctx: NotContext) => void; + /** + * Exit a parse tree produced by the `not` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitNot?: (ctx: NotContext) => void; + /** + * Enter a parse tree produced by the `cast` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterCast?: (ctx: CastContext) => void; + /** + * Exit a parse tree produced by the `cast` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitCast?: (ctx: CastContext) => void; + /** + * Enter a parse tree produced by the `primordefcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + enterPrimordefcast?: (ctx: PrimordefcastContext) => void; + /** + * Exit a parse tree produced by the `primordefcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + exitPrimordefcast?: (ctx: PrimordefcastContext) => void; + /** + * Enter a parse tree produced by the `refcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + enterRefcast?: (ctx: RefcastContext) => void; + /** + * Exit a parse tree produced by the `refcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + exitRefcast?: (ctx: RefcastContext) => void; + /** + * Enter a parse tree produced by `painless_parser.primordefcasttype`. + * @param ctx the parse tree + */ + enterPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.primordefcasttype`. + * @param ctx the parse tree + */ + exitPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; + /** + * Enter a parse tree produced by `painless_parser.refcasttype`. + * @param ctx the parse tree + */ + enterRefcasttype?: (ctx: RefcasttypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.refcasttype`. + * @param ctx the parse tree + */ + exitRefcasttype?: (ctx: RefcasttypeContext) => void; + /** + * Enter a parse tree produced by the `dynamic` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + enterDynamic?: (ctx: DynamicContext) => void; + /** + * Exit a parse tree produced by the `dynamic` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + exitDynamic?: (ctx: DynamicContext) => void; + /** + * Enter a parse tree produced by the `newarray` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + enterNewarray?: (ctx: NewarrayContext) => void; + /** + * Exit a parse tree produced by the `newarray` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + exitNewarray?: (ctx: NewarrayContext) => void; + /** + * Enter a parse tree produced by the `precedence` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterPrecedence?: (ctx: PrecedenceContext) => void; + /** + * Exit a parse tree produced by the `precedence` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitPrecedence?: (ctx: PrecedenceContext) => void; + /** + * Enter a parse tree produced by the `numeric` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNumeric?: (ctx: NumericContext) => void; + /** + * Exit a parse tree produced by the `numeric` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNumeric?: (ctx: NumericContext) => void; + /** + * Enter a parse tree produced by the `true` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterTrue?: (ctx: TrueContext) => void; + /** + * Exit a parse tree produced by the `true` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitTrue?: (ctx: TrueContext) => void; + /** + * Enter a parse tree produced by the `false` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterFalse?: (ctx: FalseContext) => void; + /** + * Exit a parse tree produced by the `false` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitFalse?: (ctx: FalseContext) => void; + /** + * Enter a parse tree produced by the `null` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNull?: (ctx: NullContext) => void; + /** + * Exit a parse tree produced by the `null` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNull?: (ctx: NullContext) => void; + /** + * Enter a parse tree produced by the `string` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterString?: (ctx: StringContext) => void; + /** + * Exit a parse tree produced by the `string` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitString?: (ctx: StringContext) => void; + /** + * Enter a parse tree produced by the `regex` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterRegex?: (ctx: RegexContext) => void; + /** + * Exit a parse tree produced by the `regex` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitRegex?: (ctx: RegexContext) => void; + /** + * Enter a parse tree produced by the `listinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterListinit?: (ctx: ListinitContext) => void; + /** + * Exit a parse tree produced by the `listinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitListinit?: (ctx: ListinitContext) => void; + /** + * Enter a parse tree produced by the `mapinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterMapinit?: (ctx: MapinitContext) => void; + /** + * Exit a parse tree produced by the `mapinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitMapinit?: (ctx: MapinitContext) => void; + /** + * Enter a parse tree produced by the `variable` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterVariable?: (ctx: VariableContext) => void; + /** + * Exit a parse tree produced by the `variable` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitVariable?: (ctx: VariableContext) => void; + /** + * Enter a parse tree produced by the `calllocal` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterCalllocal?: (ctx: CalllocalContext) => void; + /** + * Exit a parse tree produced by the `calllocal` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitCalllocal?: (ctx: CalllocalContext) => void; + /** + * Enter a parse tree produced by the `newobject` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNewobject?: (ctx: NewobjectContext) => void; + /** + * Exit a parse tree produced by the `newobject` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNewobject?: (ctx: NewobjectContext) => void; + /** + * Enter a parse tree produced by `painless_parser.postfix`. + * @param ctx the parse tree + */ + enterPostfix?: (ctx: PostfixContext) => void; + /** + * Exit a parse tree produced by `painless_parser.postfix`. + * @param ctx the parse tree + */ + exitPostfix?: (ctx: PostfixContext) => void; + /** + * Enter a parse tree produced by `painless_parser.postdot`. + * @param ctx the parse tree + */ + enterPostdot?: (ctx: PostdotContext) => void; + /** + * Exit a parse tree produced by `painless_parser.postdot`. + * @param ctx the parse tree + */ + exitPostdot?: (ctx: PostdotContext) => void; + /** + * Enter a parse tree produced by `painless_parser.callinvoke`. + * @param ctx the parse tree + */ + enterCallinvoke?: (ctx: CallinvokeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.callinvoke`. + * @param ctx the parse tree + */ + exitCallinvoke?: (ctx: CallinvokeContext) => void; + /** + * Enter a parse tree produced by `painless_parser.fieldaccess`. + * @param ctx the parse tree + */ + enterFieldaccess?: (ctx: FieldaccessContext) => void; + /** + * Exit a parse tree produced by `painless_parser.fieldaccess`. + * @param ctx the parse tree + */ + exitFieldaccess?: (ctx: FieldaccessContext) => void; + /** + * Enter a parse tree produced by `painless_parser.braceaccess`. + * @param ctx the parse tree + */ + enterBraceaccess?: (ctx: BraceaccessContext) => void; + /** + * Exit a parse tree produced by `painless_parser.braceaccess`. + * @param ctx the parse tree + */ + exitBraceaccess?: (ctx: BraceaccessContext) => void; + /** + * Enter a parse tree produced by the `newstandardarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + enterNewstandardarray?: (ctx: NewstandardarrayContext) => void; + /** + * Exit a parse tree produced by the `newstandardarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + exitNewstandardarray?: (ctx: NewstandardarrayContext) => void; + /** + * Enter a parse tree produced by the `newinitializedarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + enterNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; + /** + * Exit a parse tree produced by the `newinitializedarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + exitNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; + /** + * Enter a parse tree produced by `painless_parser.listinitializer`. + * @param ctx the parse tree + */ + enterListinitializer?: (ctx: ListinitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.listinitializer`. + * @param ctx the parse tree + */ + exitListinitializer?: (ctx: ListinitializerContext) => void; + /** + * Enter a parse tree produced by `painless_parser.mapinitializer`. + * @param ctx the parse tree + */ + enterMapinitializer?: (ctx: MapinitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.mapinitializer`. + * @param ctx the parse tree + */ + exitMapinitializer?: (ctx: MapinitializerContext) => void; + /** + * Enter a parse tree produced by `painless_parser.maptoken`. + * @param ctx the parse tree + */ + enterMaptoken?: (ctx: MaptokenContext) => void; + /** + * Exit a parse tree produced by `painless_parser.maptoken`. + * @param ctx the parse tree + */ + exitMaptoken?: (ctx: MaptokenContext) => void; + /** + * Enter a parse tree produced by `painless_parser.arguments`. + * @param ctx the parse tree + */ + enterArguments?: (ctx: ArgumentsContext) => void; + /** + * Exit a parse tree produced by `painless_parser.arguments`. + * @param ctx the parse tree + */ + exitArguments?: (ctx: ArgumentsContext) => void; + /** + * Enter a parse tree produced by `painless_parser.argument`. + * @param ctx the parse tree + */ + enterArgument?: (ctx: ArgumentContext) => void; + /** + * Exit a parse tree produced by `painless_parser.argument`. + * @param ctx the parse tree + */ + exitArgument?: (ctx: ArgumentContext) => void; + /** + * Enter a parse tree produced by `painless_parser.lambda`. + * @param ctx the parse tree + */ + enterLambda?: (ctx: LambdaContext) => void; + /** + * Exit a parse tree produced by `painless_parser.lambda`. + * @param ctx the parse tree + */ + exitLambda?: (ctx: LambdaContext) => void; + /** + * Enter a parse tree produced by `painless_parser.lamtype`. + * @param ctx the parse tree + */ + enterLamtype?: (ctx: LamtypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.lamtype`. + * @param ctx the parse tree + */ + exitLamtype?: (ctx: LamtypeContext) => void; + /** + * Enter a parse tree produced by the `classfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterClassfuncref?: (ctx: ClassfuncrefContext) => void; + /** + * Exit a parse tree produced by the `classfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitClassfuncref?: (ctx: ClassfuncrefContext) => void; + /** + * Enter a parse tree produced by the `constructorfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; + /** + * Exit a parse tree produced by the `constructorfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; + /** + * Enter a parse tree produced by the `localfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterLocalfuncref?: (ctx: LocalfuncrefContext) => void; + /** + * Exit a parse tree produced by the `localfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitLocalfuncref?: (ctx: LocalfuncrefContext) => void; +} + From 482751873d5c40868309e584938f08e495cd1a35 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 17:16:42 +0000 Subject: [PATCH 06/16] start on aligning esql ast with new antler parser and lexer methods --- .../scripts/esql_update_ast_script.js | 4 +-- .../kbn-monaco/src/common/error_listener.ts | 6 ++-- .../kbn-monaco/src/esql/lib/antlr_facade.ts | 19 +++++------ .../kbn-monaco/src/esql/lib/ast/ast_errors.ts | 8 ++--- .../src/esql/lib/ast/ast_factory.ts | 33 +++++++++++++----- .../src/esql/lib/ast/ast_helpers.ts | 10 +++--- .../src/esql/lib/ast/ast_position_utils.ts | 13 ++++--- .../kbn-monaco/src/esql/lib/ast/ast_walker.ts | 34 +++++++++---------- .../esql/lib/monaco/esql_error_listener.ts | 6 ++-- .../esql/lib/monaco/esql_tokens_provider.ts | 8 ++--- 10 files changed, 78 insertions(+), 63 deletions(-) diff --git a/packages/kbn-monaco/scripts/esql_update_ast_script.js b/packages/kbn-monaco/scripts/esql_update_ast_script.js index 539b5793f03d6..670768ccab959 100644 --- a/packages/kbn-monaco/scripts/esql_update_ast_script.js +++ b/packages/kbn-monaco/scripts/esql_update_ast_script.js @@ -60,7 +60,7 @@ function getQuotedText(ctx: ParserRuleContext) { return [ ${quotedList.map(({ name, value }) => `${value} /* esql_parser.${name} */`).join(', ')} ] - .map((keyCode) => ctx.tryGetToken(keyCode, 0)) + .map((keyCode) => ctx.getToken(keyCode, 0)) .filter(nonNullable)[0]; } @@ -69,7 +69,7 @@ function getUnquotedText(ctx: ParserRuleContext) { ${unquotedList.map(({ name, value }) => `${value} /* esql_parser.${name} */`).join(', ')} ] - .map((keyCode) => ctx.tryGetToken(keyCode, 0)) + .map((keyCode) => ctx.getToken(keyCode, 0)) .filter(nonNullable)[0]; } /* SCRIPT_MARKER_END */ diff --git a/packages/kbn-monaco/src/common/error_listener.ts b/packages/kbn-monaco/src/common/error_listener.ts index 36e98a504d6ad..4e23579c110da 100644 --- a/packages/kbn-monaco/src/common/error_listener.ts +++ b/packages/kbn-monaco/src/common/error_listener.ts @@ -6,14 +6,14 @@ * Side Public License, v 1. */ -import { ANTLRErrorListener, Recognizer } from 'antlr4'; +import { ErrorListener, Recognizer } from 'antlr4'; import type { EditorError } from '../types'; -export class ANTLREErrorListener implements ANTLRErrorListener { +export class ANTLREErrorListener implements ErrorListener { private errors: EditorError[] = []; syntaxError( - recognizer: Recognizer, + recognizer: Recognizer, offendingSymbol: any, line: number, column: number, diff --git a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts b/packages/kbn-monaco/src/esql/lib/antlr_facade.ts index 2cc5e52321c06..a7a9fb2104938 100644 --- a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts +++ b/packages/kbn-monaco/src/esql/lib/antlr_facade.ts @@ -6,17 +6,17 @@ * Side Public License, v 1. */ -import { CommonTokenStream, type CodePointCharStream, type ANTLRErrorListener } from 'antlr4'; +import { CommonTokenStream, type CharStream, type ErrorListener } from 'antlr4'; -import { esql_lexer as ESQLLexer } from '../antlr/esql_lexer'; -import { esql_parser as ESQLParser } from '../antlr/esql_parser'; -import type { esql_parserListener as ESQLParserListener } from '../antlr/esql_parser_listener'; +import { default as ESQLLexer } from '../antlr/esql_lexer'; +import { default as ESQLParser } from '../antlr/esql_parser'; +import { default as ESQLParserListener } from '../antlr/esql_parser_listener'; export const ROOT_STATEMENT = 'singleStatement'; export const getParser = ( - inputStream: CodePointCharStream, - errorListener: ANTLRErrorListener, + inputStream: CharStream, + errorListener: ErrorListener, parseListener?: ESQLParserListener ) => { const lexer = getLexer(inputStream, errorListener); @@ -27,16 +27,15 @@ export const getParser = ( parser.addErrorListener(errorListener); if (parseListener) { + // @ts-expect-error the addParseListener API does exist and is documented here + // https://github.com/antlr/antlr4/blob/dev/doc/listeners.md parser.addParseListener(parseListener); } return parser; }; -export const getLexer = ( - inputStream: CodePointCharStream, - errorListener: ANTLRErrorListener -) => { +export const getLexer = (inputStream: CharStream, errorListener: ErrorListener) => { const lexer = new ESQLLexer(inputStream); lexer.removeErrorListeners(); diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts index fe5b095daa1b0..8e491dd7dd1e6 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts @@ -7,15 +7,15 @@ */ import type { RecognitionException } from 'antlr4'; -import { esql_parser } from '../../antlr/esql_parser'; +import { default as esql_parser } from '../../antlr/esql_parser'; import { getPosition } from './ast_position_utils'; function getExpectedSymbols(expectedTokens: RecognitionException['expectedTokens']) { const tokenIds = expectedTokens?.toIntegerList().toArray() || []; const list = []; for (const tokenId of tokenIds) { - if (esql_parser.VOCABULARY.getSymbolicName(tokenId)) { - const symbol = esql_parser.VOCABULARY.getSymbolicName(tokenId); + if (esql_parser.symbolicNames[tokenId]) { + const symbol = esql_parser.symbolicNames[tokenId]; list.push(symbol === 'EOF' ? `<${symbol}>` : symbol); } } @@ -23,7 +23,7 @@ function getExpectedSymbols(expectedTokens: RecognitionException['expectedTokens } export function createError(exception: RecognitionException) { - const token = exception.getOffendingToken(); + const token = exception.offendingToken; if (token) { const expectedSymbols = getExpectedSymbols(exception.expectedTokens); if ( diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts index 328dfd51bc9bc..de1c681dd117f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { ErrorNode, ParserRuleContext, TerminalNode } from 'antlr4'; import { type ShowInfoContext, type ShowFunctionsContext, @@ -25,9 +26,9 @@ import { type ShowCommandContext, type EnrichCommandContext, type WhereCommandContext, - esql_parser, + default as esql_parser, } from '../../antlr/esql_parser'; -import { esql_parserListener as ESQLParserListener } from '../../antlr/esql_parser_listener'; +import { default as ESQLParserListener } from '../../antlr/esql_parser_listener'; import { createCommand, createFunction, createOption, createLiteral } from './ast_helpers'; import { getPosition } from './ast_position_utils'; import { @@ -142,13 +143,13 @@ export class AstListener implements ESQLParserListener { exitStatsCommand(ctx: StatsCommandContext) { const command = createCommand('stats', ctx); this.ast.push(command); - const fields = ctx.fields(); + // STATS expression is optional if (ctx._stats) { - command.args.push(...collectAllFieldsStatements(fields[0])); + command.args.push(...collectAllFieldsStatements(ctx.fields(0))); } if (ctx._grouping) { - command.args.push(...visitByOption(ctx, ctx._stats ? fields[1] : fields[0])); + command.args.push(...visitByOption(ctx, ctx._stats ? ctx.fields(1) : ctx.fields(0))); } } @@ -159,7 +160,7 @@ export class AstListener implements ESQLParserListener { exitLimitCommand(ctx: LimitCommandContext) { const command = createCommand('limit', ctx); this.ast.push(command); - if (ctx.tryGetToken(esql_parser.INTEGER_LITERAL, 0)) { + if (ctx.getToken(esql_parser.INTEGER_LITERAL, 0)) { const literal = createLiteral('number', ctx.INTEGER_LITERAL()); if (literal) { command.args.push(literal); @@ -174,7 +175,7 @@ export class AstListener implements ESQLParserListener { exitSortCommand(ctx: SortCommandContext) { const command = createCommand('sort', ctx); this.ast.push(command); - command.args.push(...visitOrderExpression(ctx.orderExpression())); + command.args.push(...visitOrderExpression(ctx.orderExpression_list())); } /** @@ -204,7 +205,7 @@ export class AstListener implements ESQLParserListener { exitRenameCommand(ctx: RenameCommandContext) { const command = createCommand('rename', ctx); this.ast.push(command); - command.args.push(...visitRenameClauses(ctx.renameClause())); + command.args.push(...visitRenameClauses(ctx.renameClause_list())); } /** @@ -254,4 +255,20 @@ export class AstListener implements ESQLParserListener { this.ast.push(command); command.args.push(...getPolicyName(ctx), ...getMatchField(ctx), ...getEnrichClauses(ctx)); } + + enterEveryRule(ctx: ParserRuleContext): void { + // not implemented yet + } + + visitErrorNode(node: ErrorNode): void { + // not implemented yet + } + + visitTerminal(node: TerminalNode): void { + // not implemented yet + } + + exitEveryRule(ctx: ParserRuleContext): void { + // not implemented yet + } } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index cde1a9cf654af..4fe0e509f32a8 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -200,7 +200,7 @@ export function computeLocationExtends(fn: ESQLFunction) { /* SCRIPT_MARKER_START */ function getQuotedText(ctx: ParserRuleContext) { return [66 /* esql_parser.QUOTED_IDENTIFIER */] - .map((keyCode) => ctx.tryGetToken(keyCode, 0)) + .map((keyCode) => ctx.getToken(keyCode, 0)) .filter(nonNullable)[0]; } @@ -209,7 +209,7 @@ function getUnquotedText(ctx: ParserRuleContext) { 65 /* esql_parser.UNQUOTED_IDENTIFIER */, 71 /* esql_parser.FROM_UNQUOTED_IDENTIFIER */, 105 /* esql_parser.UNQUOTED_ID_PATTERN */, ] - .map((keyCode) => ctx.tryGetToken(keyCode, 0)) + .map((keyCode) => ctx.getToken(keyCode, 0)) .filter(nonNullable)[0]; } /* SCRIPT_MARKER_END */ @@ -244,7 +244,7 @@ export function createSetting(policyName: Token, mode: string): ESQLCommandMode type: 'mode', name: mode.replace('_', '').toLowerCase(), text: mode, - location: getPosition(policyName, { stopIndex: policyName.startIndex + mode.length - 1 }), // unfortunately this is the only location we have + location: getPosition(policyName, { stop: policyName.start + mode.length - 1 }), // unfortunately this is the only location we have incomplete: false, }; } @@ -260,8 +260,8 @@ export function createPolicy(token: Token, policy: string): ESQLSource { text: policy, sourceType: 'policy', location: getPosition({ - startIndex: token.stopIndex - policy.length + 1, - stopIndex: token.stopIndex, + start: token.stop - policy.length + 1, + stop: token.stop, }), // take into account ccq modes incomplete: false, }; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts index 885ee63e03df2..6d15fb50435c4 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts @@ -9,17 +9,16 @@ import type { Token } from 'antlr4'; export function getPosition( - token: Pick | undefined, - lastToken?: Pick | undefined + token: Pick | undefined, + lastToken?: Pick | undefined ) { - if (!token || token.startIndex < 0) { + if (!token || token.start < 0) { return { min: 0, max: 0 }; } - const endFirstToken = - token.stopIndex > -1 ? Math.max(token.stopIndex + 1, token.startIndex) : undefined; - const endLastToken = lastToken?.stopIndex; + const endFirstToken = token.stop > -1 ? Math.max(token.stop + 1, token.start) : undefined; + const endLastToken = lastToken?.stop; return { - min: token.startIndex, + min: token.start, max: endLastToken ?? endFirstToken ?? Infinity, }; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 778b570d56705..8807ef475d767 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ -import type { ParserRuleContext } from 'antlr4/ParserRuleContext'; +import { type ParserRuleContext } from 'antlr4'; import { + default as esql_parser, ArithmeticBinaryContext, ArithmeticUnaryContext, BooleanArrayLiteralContext, @@ -25,7 +26,6 @@ import { type DissectCommandContext, type DropCommandContext, type EnrichCommandContext, - esql_parser, type FieldContext, type FieldsContext, type FromCommandContext, @@ -94,12 +94,12 @@ function extractIdentifiers( ctx: KeepCommandContext | DropCommandContext | MvExpandCommandContext | MetadataOptionContext ) { if (ctx instanceof MetadataOptionContext) { - return wrapIdentifierAsArray(ctx.fromIdentifier()); + return wrapIdentifierAsArray(ctx.fromIdentifier_list()); } if (ctx instanceof MvExpandCommandContext) { return wrapIdentifierAsArray(ctx.qualifiedName()); } - return wrapIdentifierAsArray(ctx.qualifiedNamePattern()); + return wrapIdentifierAsArray(ctx.qualifiedNamePattern_list()); } function makeColumnsOutOfIdentifiers(identifiers: ParserRuleContext[]) { @@ -153,7 +153,7 @@ export function getEnrichClauses(ctx: EnrichCommandContext) { if (ctx.WITH()) { const option = createOption(ctx.WITH()!.text.toLowerCase(), ctx); ast.push(option); - const clauses = ctx.enrichWithClause(); + const clauses = ctx.enrichWithClause_list(); for (const clause of clauses) { if (clause._enrichField) { const args = []; @@ -202,7 +202,7 @@ function visitLogicalAndsOrs(ctx: LogicalBinaryContext) { function visitLogicalIns(ctx: LogicalInContext) { const fn = createFunction(ctx.NOT() ? 'not_in' : 'in', ctx); - const [left, ...list] = ctx.valueExpression(); + const [left, ...list] = ctx.valueExpression_list(); const leftArg = visitValueExpression(left); if (leftArg) { fn.args.push(...(Array.isArray(leftArg) ? leftArg : [leftArg])); @@ -223,23 +223,23 @@ function visitLogicalIns(ctx: LogicalInContext) { function getMathOperation(ctx: ArithmeticBinaryContext) { return ( - ctx.PLUS()?.text || - ctx.MINUS()?.text || - ctx.ASTERISK()?.text || - ctx.SLASH()?.text || - ctx.PERCENT()?.text || + ctx.PLUS().symbol || + ctx.MINUS().symbol || + ctx.ASTERISK().symbol || + ctx.SLASH().symbol || + ctx.PERCENT().symbol || '' ); } function getComparisonName(ctx: ComparisonOperatorContext) { return ( - ctx.EQ()?.text || - ctx.NEQ()?.text || - ctx.LT()?.text || - ctx.LTE()?.text || - ctx.GT()?.text || - ctx.GTE()?.text || + ctx.EQ().symbol || + ctx.NEQ().symbol || + ctx.LT().symbol || + ctx.LTE().symbol || + ctx.GT().symbol || + ctx.GTE().symbol || '' ); } diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts index ab3b6b54f7a05..d35fa6e688227 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts @@ -6,15 +6,15 @@ * Side Public License, v 1. */ -import type { ANTLRErrorListener, Recognizer, RecognitionException } from 'antlr4'; +import type { ErrorListener, Recognizer, RecognitionException } from 'antlr4'; import type { EditorError } from '../../../types'; import { createError } from '../ast/ast_errors'; -export class ESQLErrorListener implements ANTLRErrorListener { +export class ESQLErrorListener implements ErrorListener { private errors: EditorError[] = []; syntaxError( - recognizer: Recognizer, + recognizer: Recognizer, offendingSymbol: any, line: number, column: number, diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts index d696a78e1a199..e83973978a880 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts @@ -54,14 +54,14 @@ export class ESQLTokensProvider implements monaco.languages.TokensProvider { if (token.type === EOF) { done = true; } else { - const tokenTypeName = lexer.vocabulary.getSymbolicName(token.type); + const tokenTypeName = lexer.symbolicNames[token.type]; if (tokenTypeName) { const indexOffset = cleanedLine === line ? 0 : line.length - cleanedLine.length; const myToken = new ESQLToken( tokenTypeName, - token.startIndex + indexOffset, - token.stopIndex + indexOffset + token.start + indexOffset, + token.stop + indexOffset ); myTokens.push(myToken); } @@ -75,7 +75,7 @@ export class ESQLTokensProvider implements monaco.languages.TokensProvider { myTokens.sort((a, b) => a.startIndex - b.startIndex); - // special tratement for functions + // special treatment for functions // the previous custom Kibana grammar baked functions directly as tokens, so highlight was easier // The ES grammar doesn't have the token concept of "function" const tokensWithFunctions = enrichTokensWithFunctionsMetadata(myTokens); From 8cc25aebdd352cf2642486a783aa5e9d96e93822 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Mon, 19 Feb 2024 17:42:51 +0000 Subject: [PATCH 07/16] switch to different way to provision the antlr4 binary to help build language grammar --- packages/kbn-antlr4-tools/Brewfile.lock.json | 72 ------------------- packages/kbn-antlr4-tools/README.md | 3 - packages/kbn-antlr4-tools/brewfile | 1 - packages/kbn-antlr4-tools/package.json | 6 -- packages/kbn-monaco/package.json | 1 + .../scripts/antlr4_tools/.gitignore | 1 + .../kbn-monaco/scripts/antlr4_tools/README.md | 3 + .../kbn-monaco/scripts/antlr4_tools/brewfile | 2 + 8 files changed, 7 insertions(+), 82 deletions(-) delete mode 100644 packages/kbn-antlr4-tools/Brewfile.lock.json delete mode 100644 packages/kbn-antlr4-tools/README.md delete mode 100644 packages/kbn-antlr4-tools/brewfile delete mode 100644 packages/kbn-antlr4-tools/package.json create mode 100644 packages/kbn-monaco/scripts/antlr4_tools/.gitignore create mode 100644 packages/kbn-monaco/scripts/antlr4_tools/README.md create mode 100644 packages/kbn-monaco/scripts/antlr4_tools/brewfile diff --git a/packages/kbn-antlr4-tools/Brewfile.lock.json b/packages/kbn-antlr4-tools/Brewfile.lock.json deleted file mode 100644 index 2a9aa527e5efa..0000000000000 --- a/packages/kbn-antlr4-tools/Brewfile.lock.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "entries": { - "brew": { - "antlr": { - "version": "4.13.1", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_sonoma": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b", - "sha256": "77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b" - }, - "arm64_ventura": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "arm64_monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "arm64_big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "sonoma": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b", - "sha256": "77ff82e85d57fe33e619c83a8ab8ebd954c527e90a3e47623dc5951f50293a5b" - }, - "ventura": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053", - "sha256": "0b8ee72b41f1587e73efe3dedb7e60ba1f8f388ab8588da30fb60762bddea053" - }, - "x86_64_linux": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/antlr/blobs/sha256:27ef7591dae5ec3510ce90298ae0909292406d245780c470d6c3cdab168728a6", - "sha256": "27ef7591dae5ec3510ce90298ae0909292406d245780c470d6c3cdab168728a6" - } - } - } - } - } - }, - "system": { - "macos": { - "sonoma": { - "HOMEBREW_VERSION": "4.2.9", - "HOMEBREW_PREFIX": "/opt/homebrew", - "Homebrew/homebrew-core": "api", - "CLT": "15.1.0.0.1.1700200546", - "Xcode": "15.1", - "macOS": "14.3.1" - } - } - } -} diff --git a/packages/kbn-antlr4-tools/README.md b/packages/kbn-antlr4-tools/README.md deleted file mode 100644 index 56e2e68584a6a..0000000000000 --- a/packages/kbn-antlr4-tools/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @kbn/antlr-tool - -fairly quick way to get [antlr](https://github.com/antlr/antlr4) setup on any machine with brew support, simply run `brew bundle` within this directory. On running the aforementioned command `antlr` should be become available in your path as a valid executable. diff --git a/packages/kbn-antlr4-tools/brewfile b/packages/kbn-antlr4-tools/brewfile deleted file mode 100644 index 53c6a4068f479..0000000000000 --- a/packages/kbn-antlr4-tools/brewfile +++ /dev/null @@ -1 +0,0 @@ -brew "antlr" \ No newline at end of file diff --git a/packages/kbn-antlr4-tools/package.json b/packages/kbn-antlr4-tools/package.json deleted file mode 100644 index ed5caa828a4b7..0000000000000 --- a/packages/kbn-antlr4-tools/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/antlr-tool", - "version": "1.0.0", - "private": true, - "license": "SSPL-1.0 OR Elastic License 2.0" -} diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index 1a99851e0ed67..3f700e2abd369 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -6,6 +6,7 @@ "scripts": { "build:antlr4:painless": "antlr -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", "build:antlr4:esql": "antlr -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", + "prebuild:antlr4": "brew bundle --file=./scripts/antlr4_tools/brewfile", "build:antlr4": "yarn run build:antlr4:painless && npm run build:antlr4:esql" } } diff --git a/packages/kbn-monaco/scripts/antlr4_tools/.gitignore b/packages/kbn-monaco/scripts/antlr4_tools/.gitignore new file mode 100644 index 0000000000000..e4d4e606cb87a --- /dev/null +++ b/packages/kbn-monaco/scripts/antlr4_tools/.gitignore @@ -0,0 +1 @@ +brewfile.lock.json diff --git a/packages/kbn-monaco/scripts/antlr4_tools/README.md b/packages/kbn-monaco/scripts/antlr4_tools/README.md new file mode 100644 index 0000000000000..8bdba8e8d711b --- /dev/null +++ b/packages/kbn-monaco/scripts/antlr4_tools/README.md @@ -0,0 +1,3 @@ +## antlr4-tools + +defines a fairly quick way to get [antlr](https://github.com/antlr/antlr4) setup on any machine with brew support, simply run `brew bundle` within this directory. On running the aforementioned command, `antlr` should be become available in your path as a valid executable. diff --git a/packages/kbn-monaco/scripts/antlr4_tools/brewfile b/packages/kbn-monaco/scripts/antlr4_tools/brewfile new file mode 100644 index 0000000000000..47f89b17dbb10 --- /dev/null +++ b/packages/kbn-monaco/scripts/antlr4_tools/brewfile @@ -0,0 +1,2 @@ +brew "openjdk" +brew "antlr" From 67cd88e520582ab0651a13a5bb7615e0e437401e Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Tue, 20 Feb 2024 12:49:11 +0000 Subject: [PATCH 08/16] even more alignment with antlr4 methods --- .../src/esql/antlr/esql_parser.interp | 6 +- .../kbn-monaco/src/esql/antlr/esql_parser.ts | 73 ++++++++--------- .../src/esql/lib/ast/ast_factory.ts | 9 ++- .../src/esql/lib/ast/ast_helpers.ts | 46 ++++++----- .../kbn-monaco/src/esql/lib/ast/ast_walker.ts | 81 +++++++++---------- 5 files changed, 102 insertions(+), 113 deletions(-) diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp index c8bb03fc1feb3..7c249fbc6e1ff 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp @@ -269,8 +269,4 @@ enrichWithClause atn: -<<<<<<< HEAD -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 4, 2, 53, 53, 55, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508] -======= -[4, 1, 105, 511, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 112, 8, 1, 10, 1, 12, 1, 115, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 121, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 136, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 148, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 155, 8, 5, 10, 5, 12, 5, 158, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 165, 8, 5, 1, 5, 1, 5, 3, 5, 169, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 177, 8, 5, 10, 5, 12, 5, 180, 9, 5, 1, 6, 1, 6, 3, 6, 184, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 191, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 196, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 203, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 209, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 217, 8, 8, 10, 8, 12, 8, 220, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 229, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 237, 8, 10, 10, 10, 12, 10, 240, 9, 10, 3, 10, 242, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 252, 8, 12, 10, 12, 12, 12, 255, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 262, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 268, 8, 14, 10, 14, 12, 14, 271, 9, 14, 1, 14, 3, 14, 274, 8, 14, 1, 15, 1, 15, 3, 15, 278, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 284, 8, 16, 10, 16, 12, 16, 287, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 298, 8, 19, 1, 19, 1, 19, 3, 19, 302, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 308, 8, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 315, 8, 22, 10, 22, 12, 22, 318, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 323, 8, 23, 10, 23, 12, 23, 326, 9, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 347, 8, 27, 10, 27, 12, 27, 350, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 358, 8, 27, 10, 27, 12, 27, 361, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 369, 8, 27, 10, 27, 12, 27, 372, 9, 27, 1, 27, 1, 27, 3, 27, 376, 8, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 385, 8, 29, 10, 29, 12, 29, 388, 9, 29, 1, 30, 1, 30, 3, 30, 392, 8, 30, 1, 30, 1, 30, 3, 30, 396, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 402, 8, 31, 10, 31, 12, 31, 405, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 411, 8, 32, 10, 32, 12, 32, 414, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 420, 8, 33, 10, 33, 12, 33, 423, 9, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 433, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 5, 38, 445, 8, 38, 10, 38, 12, 38, 448, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 458, 8, 41, 1, 42, 3, 42, 461, 8, 42, 1, 42, 1, 42, 1, 43, 3, 43, 466, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 485, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 491, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 497, 8, 49, 10, 49, 12, 49, 500, 9, 49, 3, 49, 502, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 507, 8, 50, 1, 50, 1, 50, 1, 50, 0, 3, 2, 10, 16, 51, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 0, 9, 1, 0, 58, 59, 1, 0, 60, 62, 2, 0, 66, 66, 71, 71, 1, 0, 65, 66, 2, 0, 66, 66, 105, 105, 2, 0, 31, 31, 34, 34, 1, 0, 37, 38, 2, 0, 36, 36, 50, 50, 1, 0, 51, 57, 536, 0, 102, 1, 0, 0, 0, 2, 105, 1, 0, 0, 0, 4, 120, 1, 0, 0, 0, 6, 135, 1, 0, 0, 0, 8, 137, 1, 0, 0, 0, 10, 168, 1, 0, 0, 0, 12, 195, 1, 0, 0, 0, 14, 202, 1, 0, 0, 0, 16, 208, 1, 0, 0, 0, 18, 228, 1, 0, 0, 0, 20, 230, 1, 0, 0, 0, 22, 245, 1, 0, 0, 0, 24, 248, 1, 0, 0, 0, 26, 261, 1, 0, 0, 0, 28, 263, 1, 0, 0, 0, 30, 277, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 288, 1, 0, 0, 0, 36, 292, 1, 0, 0, 0, 38, 295, 1, 0, 0, 0, 40, 303, 1, 0, 0, 0, 42, 309, 1, 0, 0, 0, 44, 311, 1, 0, 0, 0, 46, 319, 1, 0, 0, 0, 48, 327, 1, 0, 0, 0, 50, 329, 1, 0, 0, 0, 52, 331, 1, 0, 0, 0, 54, 375, 1, 0, 0, 0, 56, 377, 1, 0, 0, 0, 58, 380, 1, 0, 0, 0, 60, 389, 1, 0, 0, 0, 62, 397, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 415, 1, 0, 0, 0, 68, 424, 1, 0, 0, 0, 70, 428, 1, 0, 0, 0, 72, 434, 1, 0, 0, 0, 74, 438, 1, 0, 0, 0, 76, 441, 1, 0, 0, 0, 78, 449, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 457, 1, 0, 0, 0, 84, 460, 1, 0, 0, 0, 86, 465, 1, 0, 0, 0, 88, 469, 1, 0, 0, 0, 90, 471, 1, 0, 0, 0, 92, 473, 1, 0, 0, 0, 94, 476, 1, 0, 0, 0, 96, 484, 1, 0, 0, 0, 98, 486, 1, 0, 0, 0, 100, 506, 1, 0, 0, 0, 102, 103, 3, 2, 1, 0, 103, 104, 5, 0, 0, 1, 104, 1, 1, 0, 0, 0, 105, 106, 6, 1, -1, 0, 106, 107, 3, 4, 2, 0, 107, 113, 1, 0, 0, 0, 108, 109, 10, 1, 0, 0, 109, 110, 5, 25, 0, 0, 110, 112, 3, 6, 3, 0, 111, 108, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 3, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 121, 3, 92, 46, 0, 117, 121, 3, 28, 14, 0, 118, 121, 3, 22, 11, 0, 119, 121, 3, 96, 48, 0, 120, 116, 1, 0, 0, 0, 120, 117, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 5, 1, 0, 0, 0, 122, 136, 3, 36, 18, 0, 123, 136, 3, 40, 20, 0, 124, 136, 3, 56, 28, 0, 125, 136, 3, 62, 31, 0, 126, 136, 3, 58, 29, 0, 127, 136, 3, 38, 19, 0, 128, 136, 3, 8, 4, 0, 129, 136, 3, 64, 32, 0, 130, 136, 3, 66, 33, 0, 131, 136, 3, 70, 35, 0, 132, 136, 3, 72, 36, 0, 133, 136, 3, 98, 49, 0, 134, 136, 3, 74, 37, 0, 135, 122, 1, 0, 0, 0, 135, 123, 1, 0, 0, 0, 135, 124, 1, 0, 0, 0, 135, 125, 1, 0, 0, 0, 135, 126, 1, 0, 0, 0, 135, 127, 1, 0, 0, 0, 135, 128, 1, 0, 0, 0, 135, 129, 1, 0, 0, 0, 135, 130, 1, 0, 0, 0, 135, 131, 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 7, 1, 0, 0, 0, 137, 138, 5, 17, 0, 0, 138, 139, 3, 10, 5, 0, 139, 9, 1, 0, 0, 0, 140, 141, 6, 5, -1, 0, 141, 142, 5, 43, 0, 0, 142, 169, 3, 10, 5, 7, 143, 169, 3, 14, 7, 0, 144, 169, 3, 12, 6, 0, 145, 147, 3, 14, 7, 0, 146, 148, 5, 43, 0, 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 5, 40, 0, 0, 150, 151, 5, 39, 0, 0, 151, 156, 3, 14, 7, 0, 152, 153, 5, 33, 0, 0, 153, 155, 3, 14, 7, 0, 154, 152, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 49, 0, 0, 160, 169, 1, 0, 0, 0, 161, 162, 3, 14, 7, 0, 162, 164, 5, 41, 0, 0, 163, 165, 5, 43, 0, 0, 164, 163, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 5, 44, 0, 0, 167, 169, 1, 0, 0, 0, 168, 140, 1, 0, 0, 0, 168, 143, 1, 0, 0, 0, 168, 144, 1, 0, 0, 0, 168, 145, 1, 0, 0, 0, 168, 161, 1, 0, 0, 0, 169, 178, 1, 0, 0, 0, 170, 171, 10, 4, 0, 0, 171, 172, 5, 30, 0, 0, 172, 177, 3, 10, 5, 5, 173, 174, 10, 3, 0, 0, 174, 175, 5, 46, 0, 0, 175, 177, 3, 10, 5, 4, 176, 170, 1, 0, 0, 0, 176, 173, 1, 0, 0, 0, 177, 180, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 11, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 181, 183, 3, 14, 7, 0, 182, 184, 5, 43, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 5, 42, 0, 0, 186, 187, 3, 88, 44, 0, 187, 196, 1, 0, 0, 0, 188, 190, 3, 14, 7, 0, 189, 191, 5, 43, 0, 0, 190, 189, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 5, 48, 0, 0, 193, 194, 3, 88, 44, 0, 194, 196, 1, 0, 0, 0, 195, 181, 1, 0, 0, 0, 195, 188, 1, 0, 0, 0, 196, 13, 1, 0, 0, 0, 197, 203, 3, 16, 8, 0, 198, 199, 3, 16, 8, 0, 199, 200, 3, 90, 45, 0, 200, 201, 3, 16, 8, 0, 201, 203, 1, 0, 0, 0, 202, 197, 1, 0, 0, 0, 202, 198, 1, 0, 0, 0, 203, 15, 1, 0, 0, 0, 204, 205, 6, 8, -1, 0, 205, 209, 3, 18, 9, 0, 206, 207, 7, 0, 0, 0, 207, 209, 3, 16, 8, 3, 208, 204, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 218, 1, 0, 0, 0, 210, 211, 10, 2, 0, 0, 211, 212, 7, 1, 0, 0, 212, 217, 3, 16, 8, 3, 213, 214, 10, 1, 0, 0, 214, 215, 7, 0, 0, 0, 215, 217, 3, 16, 8, 2, 216, 210, 1, 0, 0, 0, 216, 213, 1, 0, 0, 0, 217, 220, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 17, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 221, 229, 3, 54, 27, 0, 222, 229, 3, 44, 22, 0, 223, 229, 3, 20, 10, 0, 224, 225, 5, 39, 0, 0, 225, 226, 3, 10, 5, 0, 226, 227, 5, 49, 0, 0, 227, 229, 1, 0, 0, 0, 228, 221, 1, 0, 0, 0, 228, 222, 1, 0, 0, 0, 228, 223, 1, 0, 0, 0, 228, 224, 1, 0, 0, 0, 229, 19, 1, 0, 0, 0, 230, 231, 3, 48, 24, 0, 231, 241, 5, 39, 0, 0, 232, 242, 5, 60, 0, 0, 233, 238, 3, 10, 5, 0, 234, 235, 5, 33, 0, 0, 235, 237, 3, 10, 5, 0, 236, 234, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 232, 1, 0, 0, 0, 241, 233, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 244, 5, 49, 0, 0, 244, 21, 1, 0, 0, 0, 245, 246, 5, 13, 0, 0, 246, 247, 3, 24, 12, 0, 247, 23, 1, 0, 0, 0, 248, 253, 3, 26, 13, 0, 249, 250, 5, 33, 0, 0, 250, 252, 3, 26, 13, 0, 251, 249, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 25, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 262, 3, 10, 5, 0, 257, 258, 3, 44, 22, 0, 258, 259, 5, 32, 0, 0, 259, 260, 3, 10, 5, 0, 260, 262, 1, 0, 0, 0, 261, 256, 1, 0, 0, 0, 261, 257, 1, 0, 0, 0, 262, 27, 1, 0, 0, 0, 263, 264, 5, 6, 0, 0, 264, 269, 3, 42, 21, 0, 265, 266, 5, 33, 0, 0, 266, 268, 3, 42, 21, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 274, 3, 30, 15, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 29, 1, 0, 0, 0, 275, 278, 3, 32, 16, 0, 276, 278, 3, 34, 17, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, 70, 0, 0, 280, 285, 3, 42, 21, 0, 281, 282, 5, 33, 0, 0, 282, 284, 3, 42, 21, 0, 283, 281, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 33, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 290, 3, 32, 16, 0, 290, 291, 5, 64, 0, 0, 291, 35, 1, 0, 0, 0, 292, 293, 5, 4, 0, 0, 293, 294, 3, 24, 12, 0, 294, 37, 1, 0, 0, 0, 295, 297, 5, 16, 0, 0, 296, 298, 3, 24, 12, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 300, 5, 29, 0, 0, 300, 302, 3, 24, 12, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 39, 1, 0, 0, 0, 303, 304, 5, 8, 0, 0, 304, 307, 3, 24, 12, 0, 305, 306, 5, 29, 0, 0, 306, 308, 3, 24, 12, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 41, 1, 0, 0, 0, 309, 310, 7, 2, 0, 0, 310, 43, 1, 0, 0, 0, 311, 316, 3, 48, 24, 0, 312, 313, 5, 35, 0, 0, 313, 315, 3, 48, 24, 0, 314, 312, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 45, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 324, 3, 50, 25, 0, 320, 321, 5, 35, 0, 0, 321, 323, 3, 50, 25, 0, 322, 320, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 47, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 327, 328, 7, 3, 0, 0, 328, 49, 1, 0, 0, 0, 329, 330, 5, 75, 0, 0, 330, 51, 1, 0, 0, 0, 331, 332, 7, 4, 0, 0, 332, 53, 1, 0, 0, 0, 333, 376, 5, 44, 0, 0, 334, 335, 3, 86, 43, 0, 335, 336, 5, 65, 0, 0, 336, 376, 1, 0, 0, 0, 337, 376, 3, 84, 42, 0, 338, 376, 3, 86, 43, 0, 339, 376, 3, 80, 40, 0, 340, 376, 5, 47, 0, 0, 341, 376, 3, 88, 44, 0, 342, 343, 5, 63, 0, 0, 343, 348, 3, 82, 41, 0, 344, 345, 5, 33, 0, 0, 345, 347, 3, 82, 41, 0, 346, 344, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 352, 5, 64, 0, 0, 352, 376, 1, 0, 0, 0, 353, 354, 5, 63, 0, 0, 354, 359, 3, 80, 40, 0, 355, 356, 5, 33, 0, 0, 356, 358, 3, 80, 40, 0, 357, 355, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 363, 5, 64, 0, 0, 363, 376, 1, 0, 0, 0, 364, 365, 5, 63, 0, 0, 365, 370, 3, 88, 44, 0, 366, 367, 5, 33, 0, 0, 367, 369, 3, 88, 44, 0, 368, 366, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 374, 5, 64, 0, 0, 374, 376, 1, 0, 0, 0, 375, 333, 1, 0, 0, 0, 375, 334, 1, 0, 0, 0, 375, 337, 1, 0, 0, 0, 375, 338, 1, 0, 0, 0, 375, 339, 1, 0, 0, 0, 375, 340, 1, 0, 0, 0, 375, 341, 1, 0, 0, 0, 375, 342, 1, 0, 0, 0, 375, 353, 1, 0, 0, 0, 375, 364, 1, 0, 0, 0, 376, 55, 1, 0, 0, 0, 377, 378, 5, 10, 0, 0, 378, 379, 5, 27, 0, 0, 379, 57, 1, 0, 0, 0, 380, 381, 5, 15, 0, 0, 381, 386, 3, 60, 30, 0, 382, 383, 5, 33, 0, 0, 383, 385, 3, 60, 30, 0, 384, 382, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 59, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 391, 3, 10, 5, 0, 390, 392, 7, 5, 0, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 394, 5, 45, 0, 0, 394, 396, 7, 6, 0, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 61, 1, 0, 0, 0, 397, 398, 5, 9, 0, 0, 398, 403, 3, 46, 23, 0, 399, 400, 5, 33, 0, 0, 400, 402, 3, 46, 23, 0, 401, 399, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 63, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 407, 5, 2, 0, 0, 407, 412, 3, 46, 23, 0, 408, 409, 5, 33, 0, 0, 409, 411, 3, 46, 23, 0, 410, 408, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 65, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 416, 5, 12, 0, 0, 416, 421, 3, 68, 34, 0, 417, 418, 5, 33, 0, 0, 418, 420, 3, 68, 34, 0, 419, 417, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 67, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 425, 3, 46, 23, 0, 425, 426, 5, 79, 0, 0, 426, 427, 3, 46, 23, 0, 427, 69, 1, 0, 0, 0, 428, 429, 5, 1, 0, 0, 429, 430, 3, 18, 9, 0, 430, 432, 3, 88, 44, 0, 431, 433, 3, 76, 38, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 71, 1, 0, 0, 0, 434, 435, 5, 7, 0, 0, 435, 436, 3, 18, 9, 0, 436, 437, 3, 88, 44, 0, 437, 73, 1, 0, 0, 0, 438, 439, 5, 11, 0, 0, 439, 440, 3, 44, 22, 0, 440, 75, 1, 0, 0, 0, 441, 446, 3, 78, 39, 0, 442, 443, 5, 33, 0, 0, 443, 445, 3, 78, 39, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 77, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 450, 3, 48, 24, 0, 450, 451, 5, 32, 0, 0, 451, 452, 3, 54, 27, 0, 452, 79, 1, 0, 0, 0, 453, 454, 7, 7, 0, 0, 454, 81, 1, 0, 0, 0, 455, 458, 3, 84, 42, 0, 456, 458, 3, 86, 43, 0, 457, 455, 1, 0, 0, 0, 457, 456, 1, 0, 0, 0, 458, 83, 1, 0, 0, 0, 459, 461, 7, 0, 0, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 5, 28, 0, 0, 463, 85, 1, 0, 0, 0, 464, 466, 7, 0, 0, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 5, 27, 0, 0, 468, 87, 1, 0, 0, 0, 469, 470, 5, 26, 0, 0, 470, 89, 1, 0, 0, 0, 471, 472, 7, 8, 0, 0, 472, 91, 1, 0, 0, 0, 473, 474, 5, 5, 0, 0, 474, 475, 3, 94, 47, 0, 475, 93, 1, 0, 0, 0, 476, 477, 5, 63, 0, 0, 477, 478, 3, 2, 1, 0, 478, 479, 5, 64, 0, 0, 479, 95, 1, 0, 0, 0, 480, 481, 5, 14, 0, 0, 481, 485, 5, 95, 0, 0, 482, 483, 5, 14, 0, 0, 483, 485, 5, 96, 0, 0, 484, 480, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 97, 1, 0, 0, 0, 486, 487, 5, 3, 0, 0, 487, 490, 5, 85, 0, 0, 488, 489, 5, 83, 0, 0, 489, 491, 3, 46, 23, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 501, 1, 0, 0, 0, 492, 493, 5, 84, 0, 0, 493, 498, 3, 100, 50, 0, 494, 495, 5, 33, 0, 0, 495, 497, 3, 100, 50, 0, 496, 494, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 492, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 99, 1, 0, 0, 0, 503, 504, 3, 46, 23, 0, 504, 505, 5, 32, 0, 0, 505, 507, 1, 0, 0, 0, 506, 503, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 3, 46, 23, 0, 509, 101, 1, 0, 0, 0, 50, 113, 120, 135, 147, 156, 164, 168, 176, 178, 183, 190, 195, 202, 208, 216, 218, 228, 238, 241, 253, 261, 269, 273, 277, 285, 297, 301, 307, 316, 324, 348, 359, 370, 375, 386, 391, 395, 403, 412, 421, 432, 446, 457, 460, 465, 484, 490, 498, 501, 506] ->>>>>>> 77e354d1553 (new lexer and parser for esql and painless generated from antlr) +[4, 1, 105, 511, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 112, 8, 1, 10, 1, 12, 1, 115, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 121, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 136, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 148, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 155, 8, 5, 10, 5, 12, 5, 158, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 165, 8, 5, 1, 5, 1, 5, 3, 5, 169, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 177, 8, 5, 10, 5, 12, 5, 180, 9, 5, 1, 6, 1, 6, 3, 6, 184, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 191, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 196, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 203, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 209, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 217, 8, 8, 10, 8, 12, 8, 220, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 229, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 237, 8, 10, 10, 10, 12, 10, 240, 9, 10, 3, 10, 242, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 252, 8, 12, 10, 12, 12, 12, 255, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 262, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 268, 8, 14, 10, 14, 12, 14, 271, 9, 14, 1, 14, 3, 14, 274, 8, 14, 1, 15, 1, 15, 3, 15, 278, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 284, 8, 16, 10, 16, 12, 16, 287, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 298, 8, 19, 1, 19, 1, 19, 3, 19, 302, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 308, 8, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 315, 8, 22, 10, 22, 12, 22, 318, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 323, 8, 23, 10, 23, 12, 23, 326, 9, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 347, 8, 27, 10, 27, 12, 27, 350, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 358, 8, 27, 10, 27, 12, 27, 361, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 369, 8, 27, 10, 27, 12, 27, 372, 9, 27, 1, 27, 1, 27, 3, 27, 376, 8, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 385, 8, 29, 10, 29, 12, 29, 388, 9, 29, 1, 30, 1, 30, 3, 30, 392, 8, 30, 1, 30, 1, 30, 3, 30, 396, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 402, 8, 31, 10, 31, 12, 31, 405, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 411, 8, 32, 10, 32, 12, 32, 414, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 420, 8, 33, 10, 33, 12, 33, 423, 9, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 433, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 5, 38, 445, 8, 38, 10, 38, 12, 38, 448, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 458, 8, 41, 1, 42, 3, 42, 461, 8, 42, 1, 42, 1, 42, 1, 43, 3, 43, 466, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 485, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 491, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 497, 8, 49, 10, 49, 12, 49, 500, 9, 49, 3, 49, 502, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 507, 8, 50, 1, 50, 1, 50, 1, 50, 0, 3, 2, 10, 16, 51, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 0, 9, 1, 0, 58, 59, 1, 0, 60, 62, 2, 0, 66, 66, 71, 71, 1, 0, 65, 66, 2, 0, 66, 66, 105, 105, 2, 0, 31, 31, 34, 34, 1, 0, 37, 38, 2, 0, 36, 36, 50, 50, 2, 0, 51, 51, 53, 57, 536, 0, 102, 1, 0, 0, 0, 2, 105, 1, 0, 0, 0, 4, 120, 1, 0, 0, 0, 6, 135, 1, 0, 0, 0, 8, 137, 1, 0, 0, 0, 10, 168, 1, 0, 0, 0, 12, 195, 1, 0, 0, 0, 14, 202, 1, 0, 0, 0, 16, 208, 1, 0, 0, 0, 18, 228, 1, 0, 0, 0, 20, 230, 1, 0, 0, 0, 22, 245, 1, 0, 0, 0, 24, 248, 1, 0, 0, 0, 26, 261, 1, 0, 0, 0, 28, 263, 1, 0, 0, 0, 30, 277, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 288, 1, 0, 0, 0, 36, 292, 1, 0, 0, 0, 38, 295, 1, 0, 0, 0, 40, 303, 1, 0, 0, 0, 42, 309, 1, 0, 0, 0, 44, 311, 1, 0, 0, 0, 46, 319, 1, 0, 0, 0, 48, 327, 1, 0, 0, 0, 50, 329, 1, 0, 0, 0, 52, 331, 1, 0, 0, 0, 54, 375, 1, 0, 0, 0, 56, 377, 1, 0, 0, 0, 58, 380, 1, 0, 0, 0, 60, 389, 1, 0, 0, 0, 62, 397, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 415, 1, 0, 0, 0, 68, 424, 1, 0, 0, 0, 70, 428, 1, 0, 0, 0, 72, 434, 1, 0, 0, 0, 74, 438, 1, 0, 0, 0, 76, 441, 1, 0, 0, 0, 78, 449, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 457, 1, 0, 0, 0, 84, 460, 1, 0, 0, 0, 86, 465, 1, 0, 0, 0, 88, 469, 1, 0, 0, 0, 90, 471, 1, 0, 0, 0, 92, 473, 1, 0, 0, 0, 94, 476, 1, 0, 0, 0, 96, 484, 1, 0, 0, 0, 98, 486, 1, 0, 0, 0, 100, 506, 1, 0, 0, 0, 102, 103, 3, 2, 1, 0, 103, 104, 5, 0, 0, 1, 104, 1, 1, 0, 0, 0, 105, 106, 6, 1, -1, 0, 106, 107, 3, 4, 2, 0, 107, 113, 1, 0, 0, 0, 108, 109, 10, 1, 0, 0, 109, 110, 5, 25, 0, 0, 110, 112, 3, 6, 3, 0, 111, 108, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 3, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 121, 3, 92, 46, 0, 117, 121, 3, 28, 14, 0, 118, 121, 3, 22, 11, 0, 119, 121, 3, 96, 48, 0, 120, 116, 1, 0, 0, 0, 120, 117, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 5, 1, 0, 0, 0, 122, 136, 3, 36, 18, 0, 123, 136, 3, 40, 20, 0, 124, 136, 3, 56, 28, 0, 125, 136, 3, 62, 31, 0, 126, 136, 3, 58, 29, 0, 127, 136, 3, 38, 19, 0, 128, 136, 3, 8, 4, 0, 129, 136, 3, 64, 32, 0, 130, 136, 3, 66, 33, 0, 131, 136, 3, 70, 35, 0, 132, 136, 3, 72, 36, 0, 133, 136, 3, 98, 49, 0, 134, 136, 3, 74, 37, 0, 135, 122, 1, 0, 0, 0, 135, 123, 1, 0, 0, 0, 135, 124, 1, 0, 0, 0, 135, 125, 1, 0, 0, 0, 135, 126, 1, 0, 0, 0, 135, 127, 1, 0, 0, 0, 135, 128, 1, 0, 0, 0, 135, 129, 1, 0, 0, 0, 135, 130, 1, 0, 0, 0, 135, 131, 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 7, 1, 0, 0, 0, 137, 138, 5, 17, 0, 0, 138, 139, 3, 10, 5, 0, 139, 9, 1, 0, 0, 0, 140, 141, 6, 5, -1, 0, 141, 142, 5, 43, 0, 0, 142, 169, 3, 10, 5, 7, 143, 169, 3, 14, 7, 0, 144, 169, 3, 12, 6, 0, 145, 147, 3, 14, 7, 0, 146, 148, 5, 43, 0, 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 5, 40, 0, 0, 150, 151, 5, 39, 0, 0, 151, 156, 3, 14, 7, 0, 152, 153, 5, 33, 0, 0, 153, 155, 3, 14, 7, 0, 154, 152, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 49, 0, 0, 160, 169, 1, 0, 0, 0, 161, 162, 3, 14, 7, 0, 162, 164, 5, 41, 0, 0, 163, 165, 5, 43, 0, 0, 164, 163, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 5, 44, 0, 0, 167, 169, 1, 0, 0, 0, 168, 140, 1, 0, 0, 0, 168, 143, 1, 0, 0, 0, 168, 144, 1, 0, 0, 0, 168, 145, 1, 0, 0, 0, 168, 161, 1, 0, 0, 0, 169, 178, 1, 0, 0, 0, 170, 171, 10, 4, 0, 0, 171, 172, 5, 30, 0, 0, 172, 177, 3, 10, 5, 5, 173, 174, 10, 3, 0, 0, 174, 175, 5, 46, 0, 0, 175, 177, 3, 10, 5, 4, 176, 170, 1, 0, 0, 0, 176, 173, 1, 0, 0, 0, 177, 180, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 11, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 181, 183, 3, 14, 7, 0, 182, 184, 5, 43, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 5, 42, 0, 0, 186, 187, 3, 88, 44, 0, 187, 196, 1, 0, 0, 0, 188, 190, 3, 14, 7, 0, 189, 191, 5, 43, 0, 0, 190, 189, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 5, 48, 0, 0, 193, 194, 3, 88, 44, 0, 194, 196, 1, 0, 0, 0, 195, 181, 1, 0, 0, 0, 195, 188, 1, 0, 0, 0, 196, 13, 1, 0, 0, 0, 197, 203, 3, 16, 8, 0, 198, 199, 3, 16, 8, 0, 199, 200, 3, 90, 45, 0, 200, 201, 3, 16, 8, 0, 201, 203, 1, 0, 0, 0, 202, 197, 1, 0, 0, 0, 202, 198, 1, 0, 0, 0, 203, 15, 1, 0, 0, 0, 204, 205, 6, 8, -1, 0, 205, 209, 3, 18, 9, 0, 206, 207, 7, 0, 0, 0, 207, 209, 3, 16, 8, 3, 208, 204, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 218, 1, 0, 0, 0, 210, 211, 10, 2, 0, 0, 211, 212, 7, 1, 0, 0, 212, 217, 3, 16, 8, 3, 213, 214, 10, 1, 0, 0, 214, 215, 7, 0, 0, 0, 215, 217, 3, 16, 8, 2, 216, 210, 1, 0, 0, 0, 216, 213, 1, 0, 0, 0, 217, 220, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 17, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 221, 229, 3, 54, 27, 0, 222, 229, 3, 44, 22, 0, 223, 229, 3, 20, 10, 0, 224, 225, 5, 39, 0, 0, 225, 226, 3, 10, 5, 0, 226, 227, 5, 49, 0, 0, 227, 229, 1, 0, 0, 0, 228, 221, 1, 0, 0, 0, 228, 222, 1, 0, 0, 0, 228, 223, 1, 0, 0, 0, 228, 224, 1, 0, 0, 0, 229, 19, 1, 0, 0, 0, 230, 231, 3, 48, 24, 0, 231, 241, 5, 39, 0, 0, 232, 242, 5, 60, 0, 0, 233, 238, 3, 10, 5, 0, 234, 235, 5, 33, 0, 0, 235, 237, 3, 10, 5, 0, 236, 234, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 232, 1, 0, 0, 0, 241, 233, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 244, 5, 49, 0, 0, 244, 21, 1, 0, 0, 0, 245, 246, 5, 13, 0, 0, 246, 247, 3, 24, 12, 0, 247, 23, 1, 0, 0, 0, 248, 253, 3, 26, 13, 0, 249, 250, 5, 33, 0, 0, 250, 252, 3, 26, 13, 0, 251, 249, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 25, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 262, 3, 10, 5, 0, 257, 258, 3, 44, 22, 0, 258, 259, 5, 32, 0, 0, 259, 260, 3, 10, 5, 0, 260, 262, 1, 0, 0, 0, 261, 256, 1, 0, 0, 0, 261, 257, 1, 0, 0, 0, 262, 27, 1, 0, 0, 0, 263, 264, 5, 6, 0, 0, 264, 269, 3, 42, 21, 0, 265, 266, 5, 33, 0, 0, 266, 268, 3, 42, 21, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 274, 3, 30, 15, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 29, 1, 0, 0, 0, 275, 278, 3, 32, 16, 0, 276, 278, 3, 34, 17, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, 70, 0, 0, 280, 285, 3, 42, 21, 0, 281, 282, 5, 33, 0, 0, 282, 284, 3, 42, 21, 0, 283, 281, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 33, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 290, 3, 32, 16, 0, 290, 291, 5, 64, 0, 0, 291, 35, 1, 0, 0, 0, 292, 293, 5, 4, 0, 0, 293, 294, 3, 24, 12, 0, 294, 37, 1, 0, 0, 0, 295, 297, 5, 16, 0, 0, 296, 298, 3, 24, 12, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 300, 5, 29, 0, 0, 300, 302, 3, 24, 12, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 39, 1, 0, 0, 0, 303, 304, 5, 8, 0, 0, 304, 307, 3, 24, 12, 0, 305, 306, 5, 29, 0, 0, 306, 308, 3, 24, 12, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 41, 1, 0, 0, 0, 309, 310, 7, 2, 0, 0, 310, 43, 1, 0, 0, 0, 311, 316, 3, 48, 24, 0, 312, 313, 5, 35, 0, 0, 313, 315, 3, 48, 24, 0, 314, 312, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 45, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 324, 3, 50, 25, 0, 320, 321, 5, 35, 0, 0, 321, 323, 3, 50, 25, 0, 322, 320, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 47, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 327, 328, 7, 3, 0, 0, 328, 49, 1, 0, 0, 0, 329, 330, 5, 75, 0, 0, 330, 51, 1, 0, 0, 0, 331, 332, 7, 4, 0, 0, 332, 53, 1, 0, 0, 0, 333, 376, 5, 44, 0, 0, 334, 335, 3, 86, 43, 0, 335, 336, 5, 65, 0, 0, 336, 376, 1, 0, 0, 0, 337, 376, 3, 84, 42, 0, 338, 376, 3, 86, 43, 0, 339, 376, 3, 80, 40, 0, 340, 376, 5, 47, 0, 0, 341, 376, 3, 88, 44, 0, 342, 343, 5, 63, 0, 0, 343, 348, 3, 82, 41, 0, 344, 345, 5, 33, 0, 0, 345, 347, 3, 82, 41, 0, 346, 344, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 352, 5, 64, 0, 0, 352, 376, 1, 0, 0, 0, 353, 354, 5, 63, 0, 0, 354, 359, 3, 80, 40, 0, 355, 356, 5, 33, 0, 0, 356, 358, 3, 80, 40, 0, 357, 355, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 363, 5, 64, 0, 0, 363, 376, 1, 0, 0, 0, 364, 365, 5, 63, 0, 0, 365, 370, 3, 88, 44, 0, 366, 367, 5, 33, 0, 0, 367, 369, 3, 88, 44, 0, 368, 366, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 374, 5, 64, 0, 0, 374, 376, 1, 0, 0, 0, 375, 333, 1, 0, 0, 0, 375, 334, 1, 0, 0, 0, 375, 337, 1, 0, 0, 0, 375, 338, 1, 0, 0, 0, 375, 339, 1, 0, 0, 0, 375, 340, 1, 0, 0, 0, 375, 341, 1, 0, 0, 0, 375, 342, 1, 0, 0, 0, 375, 353, 1, 0, 0, 0, 375, 364, 1, 0, 0, 0, 376, 55, 1, 0, 0, 0, 377, 378, 5, 10, 0, 0, 378, 379, 5, 27, 0, 0, 379, 57, 1, 0, 0, 0, 380, 381, 5, 15, 0, 0, 381, 386, 3, 60, 30, 0, 382, 383, 5, 33, 0, 0, 383, 385, 3, 60, 30, 0, 384, 382, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 59, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 391, 3, 10, 5, 0, 390, 392, 7, 5, 0, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 394, 5, 45, 0, 0, 394, 396, 7, 6, 0, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 61, 1, 0, 0, 0, 397, 398, 5, 9, 0, 0, 398, 403, 3, 46, 23, 0, 399, 400, 5, 33, 0, 0, 400, 402, 3, 46, 23, 0, 401, 399, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 63, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 407, 5, 2, 0, 0, 407, 412, 3, 46, 23, 0, 408, 409, 5, 33, 0, 0, 409, 411, 3, 46, 23, 0, 410, 408, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 65, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 416, 5, 12, 0, 0, 416, 421, 3, 68, 34, 0, 417, 418, 5, 33, 0, 0, 418, 420, 3, 68, 34, 0, 419, 417, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 67, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 425, 3, 46, 23, 0, 425, 426, 5, 79, 0, 0, 426, 427, 3, 46, 23, 0, 427, 69, 1, 0, 0, 0, 428, 429, 5, 1, 0, 0, 429, 430, 3, 18, 9, 0, 430, 432, 3, 88, 44, 0, 431, 433, 3, 76, 38, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 71, 1, 0, 0, 0, 434, 435, 5, 7, 0, 0, 435, 436, 3, 18, 9, 0, 436, 437, 3, 88, 44, 0, 437, 73, 1, 0, 0, 0, 438, 439, 5, 11, 0, 0, 439, 440, 3, 44, 22, 0, 440, 75, 1, 0, 0, 0, 441, 446, 3, 78, 39, 0, 442, 443, 5, 33, 0, 0, 443, 445, 3, 78, 39, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 77, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 450, 3, 48, 24, 0, 450, 451, 5, 32, 0, 0, 451, 452, 3, 54, 27, 0, 452, 79, 1, 0, 0, 0, 453, 454, 7, 7, 0, 0, 454, 81, 1, 0, 0, 0, 455, 458, 3, 84, 42, 0, 456, 458, 3, 86, 43, 0, 457, 455, 1, 0, 0, 0, 457, 456, 1, 0, 0, 0, 458, 83, 1, 0, 0, 0, 459, 461, 7, 0, 0, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 5, 28, 0, 0, 463, 85, 1, 0, 0, 0, 464, 466, 7, 0, 0, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 5, 27, 0, 0, 468, 87, 1, 0, 0, 0, 469, 470, 5, 26, 0, 0, 470, 89, 1, 0, 0, 0, 471, 472, 7, 8, 0, 0, 472, 91, 1, 0, 0, 0, 473, 474, 5, 5, 0, 0, 474, 475, 3, 94, 47, 0, 475, 93, 1, 0, 0, 0, 476, 477, 5, 63, 0, 0, 477, 478, 3, 2, 1, 0, 478, 479, 5, 64, 0, 0, 479, 95, 1, 0, 0, 0, 480, 481, 5, 14, 0, 0, 481, 485, 5, 95, 0, 0, 482, 483, 5, 14, 0, 0, 483, 485, 5, 96, 0, 0, 484, 480, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 97, 1, 0, 0, 0, 486, 487, 5, 3, 0, 0, 487, 490, 5, 85, 0, 0, 488, 489, 5, 83, 0, 0, 489, 491, 3, 46, 23, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 501, 1, 0, 0, 0, 492, 493, 5, 84, 0, 0, 493, 498, 3, 100, 50, 0, 494, 495, 5, 33, 0, 0, 495, 497, 3, 100, 50, 0, 496, 494, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 492, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 99, 1, 0, 0, 0, 503, 504, 3, 46, 23, 0, 504, 505, 5, 32, 0, 0, 505, 507, 1, 0, 0, 0, 506, 503, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 3, 46, 23, 0, 509, 101, 1, 0, 0, 0, 50, 113, 120, 135, 147, 156, 164, 168, 176, 178, 183, 190, 195, 202, 208, 216, 218, 228, 238, 241, 253, 261, 269, 273, 277, 285, 297, 301, 307, 316, 324, 348, 359, 370, 375, 386, 391, 395, 403, 412, 421, 432, 446, 457, 460, 465, 484, 490, 498, 501, 506] \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts index 0367d77d28f07..95a5e0a9bc860 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts @@ -2642,7 +2642,7 @@ export default class esql_parser extends Parser { { this.state = 471; _la = this._input.LA(1); - if(!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 127) !== 0))) { + if(!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 125) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -2952,40 +2952,40 @@ export default class esql_parser extends Parser { 20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66, 68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,0,9,1,0,58,59,1,0,60, 62,2,0,66,66,71,71,1,0,65,66,2,0,66,66,105,105,2,0,31,31,34,34,1,0,37,38, - 2,0,36,36,50,50,1,0,51,57,536,0,102,1,0,0,0,2,105,1,0,0,0,4,120,1,0,0,0, - 6,135,1,0,0,0,8,137,1,0,0,0,10,168,1,0,0,0,12,195,1,0,0,0,14,202,1,0,0, - 0,16,208,1,0,0,0,18,228,1,0,0,0,20,230,1,0,0,0,22,245,1,0,0,0,24,248,1, - 0,0,0,26,261,1,0,0,0,28,263,1,0,0,0,30,277,1,0,0,0,32,279,1,0,0,0,34,288, - 1,0,0,0,36,292,1,0,0,0,38,295,1,0,0,0,40,303,1,0,0,0,42,309,1,0,0,0,44, - 311,1,0,0,0,46,319,1,0,0,0,48,327,1,0,0,0,50,329,1,0,0,0,52,331,1,0,0,0, - 54,375,1,0,0,0,56,377,1,0,0,0,58,380,1,0,0,0,60,389,1,0,0,0,62,397,1,0, - 0,0,64,406,1,0,0,0,66,415,1,0,0,0,68,424,1,0,0,0,70,428,1,0,0,0,72,434, - 1,0,0,0,74,438,1,0,0,0,76,441,1,0,0,0,78,449,1,0,0,0,80,453,1,0,0,0,82, - 457,1,0,0,0,84,460,1,0,0,0,86,465,1,0,0,0,88,469,1,0,0,0,90,471,1,0,0,0, - 92,473,1,0,0,0,94,476,1,0,0,0,96,484,1,0,0,0,98,486,1,0,0,0,100,506,1,0, - 0,0,102,103,3,2,1,0,103,104,5,0,0,1,104,1,1,0,0,0,105,106,6,1,-1,0,106, - 107,3,4,2,0,107,113,1,0,0,0,108,109,10,1,0,0,109,110,5,25,0,0,110,112,3, - 6,3,0,111,108,1,0,0,0,112,115,1,0,0,0,113,111,1,0,0,0,113,114,1,0,0,0,114, - 3,1,0,0,0,115,113,1,0,0,0,116,121,3,92,46,0,117,121,3,28,14,0,118,121,3, - 22,11,0,119,121,3,96,48,0,120,116,1,0,0,0,120,117,1,0,0,0,120,118,1,0,0, - 0,120,119,1,0,0,0,121,5,1,0,0,0,122,136,3,36,18,0,123,136,3,40,20,0,124, - 136,3,56,28,0,125,136,3,62,31,0,126,136,3,58,29,0,127,136,3,38,19,0,128, - 136,3,8,4,0,129,136,3,64,32,0,130,136,3,66,33,0,131,136,3,70,35,0,132,136, - 3,72,36,0,133,136,3,98,49,0,134,136,3,74,37,0,135,122,1,0,0,0,135,123,1, - 0,0,0,135,124,1,0,0,0,135,125,1,0,0,0,135,126,1,0,0,0,135,127,1,0,0,0,135, - 128,1,0,0,0,135,129,1,0,0,0,135,130,1,0,0,0,135,131,1,0,0,0,135,132,1,0, - 0,0,135,133,1,0,0,0,135,134,1,0,0,0,136,7,1,0,0,0,137,138,5,17,0,0,138, - 139,3,10,5,0,139,9,1,0,0,0,140,141,6,5,-1,0,141,142,5,43,0,0,142,169,3, - 10,5,7,143,169,3,14,7,0,144,169,3,12,6,0,145,147,3,14,7,0,146,148,5,43, - 0,0,147,146,1,0,0,0,147,148,1,0,0,0,148,149,1,0,0,0,149,150,5,40,0,0,150, - 151,5,39,0,0,151,156,3,14,7,0,152,153,5,33,0,0,153,155,3,14,7,0,154,152, - 1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,156,157,1,0,0,0,157,159,1,0,0,0, - 158,156,1,0,0,0,159,160,5,49,0,0,160,169,1,0,0,0,161,162,3,14,7,0,162,164, - 5,41,0,0,163,165,5,43,0,0,164,163,1,0,0,0,164,165,1,0,0,0,165,166,1,0,0, - 0,166,167,5,44,0,0,167,169,1,0,0,0,168,140,1,0,0,0,168,143,1,0,0,0,168, - 144,1,0,0,0,168,145,1,0,0,0,168,161,1,0,0,0,169,178,1,0,0,0,170,171,10, - 4,0,0,171,172,5,30,0,0,172,177,3,10,5,5,173,174,10,3,0,0,174,175,5,46,0, - 0,175,177,3,10,5,4,176,170,1,0,0,0,176,173,1,0,0,0,177,180,1,0,0,0,178, + 2,0,36,36,50,50,2,0,51,51,53,57,536,0,102,1,0,0,0,2,105,1,0,0,0,4,120,1, + 0,0,0,6,135,1,0,0,0,8,137,1,0,0,0,10,168,1,0,0,0,12,195,1,0,0,0,14,202, + 1,0,0,0,16,208,1,0,0,0,18,228,1,0,0,0,20,230,1,0,0,0,22,245,1,0,0,0,24, + 248,1,0,0,0,26,261,1,0,0,0,28,263,1,0,0,0,30,277,1,0,0,0,32,279,1,0,0,0, + 34,288,1,0,0,0,36,292,1,0,0,0,38,295,1,0,0,0,40,303,1,0,0,0,42,309,1,0, + 0,0,44,311,1,0,0,0,46,319,1,0,0,0,48,327,1,0,0,0,50,329,1,0,0,0,52,331, + 1,0,0,0,54,375,1,0,0,0,56,377,1,0,0,0,58,380,1,0,0,0,60,389,1,0,0,0,62, + 397,1,0,0,0,64,406,1,0,0,0,66,415,1,0,0,0,68,424,1,0,0,0,70,428,1,0,0,0, + 72,434,1,0,0,0,74,438,1,0,0,0,76,441,1,0,0,0,78,449,1,0,0,0,80,453,1,0, + 0,0,82,457,1,0,0,0,84,460,1,0,0,0,86,465,1,0,0,0,88,469,1,0,0,0,90,471, + 1,0,0,0,92,473,1,0,0,0,94,476,1,0,0,0,96,484,1,0,0,0,98,486,1,0,0,0,100, + 506,1,0,0,0,102,103,3,2,1,0,103,104,5,0,0,1,104,1,1,0,0,0,105,106,6,1,-1, + 0,106,107,3,4,2,0,107,113,1,0,0,0,108,109,10,1,0,0,109,110,5,25,0,0,110, + 112,3,6,3,0,111,108,1,0,0,0,112,115,1,0,0,0,113,111,1,0,0,0,113,114,1,0, + 0,0,114,3,1,0,0,0,115,113,1,0,0,0,116,121,3,92,46,0,117,121,3,28,14,0,118, + 121,3,22,11,0,119,121,3,96,48,0,120,116,1,0,0,0,120,117,1,0,0,0,120,118, + 1,0,0,0,120,119,1,0,0,0,121,5,1,0,0,0,122,136,3,36,18,0,123,136,3,40,20, + 0,124,136,3,56,28,0,125,136,3,62,31,0,126,136,3,58,29,0,127,136,3,38,19, + 0,128,136,3,8,4,0,129,136,3,64,32,0,130,136,3,66,33,0,131,136,3,70,35,0, + 132,136,3,72,36,0,133,136,3,98,49,0,134,136,3,74,37,0,135,122,1,0,0,0,135, + 123,1,0,0,0,135,124,1,0,0,0,135,125,1,0,0,0,135,126,1,0,0,0,135,127,1,0, + 0,0,135,128,1,0,0,0,135,129,1,0,0,0,135,130,1,0,0,0,135,131,1,0,0,0,135, + 132,1,0,0,0,135,133,1,0,0,0,135,134,1,0,0,0,136,7,1,0,0,0,137,138,5,17, + 0,0,138,139,3,10,5,0,139,9,1,0,0,0,140,141,6,5,-1,0,141,142,5,43,0,0,142, + 169,3,10,5,7,143,169,3,14,7,0,144,169,3,12,6,0,145,147,3,14,7,0,146,148, + 5,43,0,0,147,146,1,0,0,0,147,148,1,0,0,0,148,149,1,0,0,0,149,150,5,40,0, + 0,150,151,5,39,0,0,151,156,3,14,7,0,152,153,5,33,0,0,153,155,3,14,7,0,154, + 152,1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,156,157,1,0,0,0,157,159,1,0, + 0,0,158,156,1,0,0,0,159,160,5,49,0,0,160,169,1,0,0,0,161,162,3,14,7,0,162, + 164,5,41,0,0,163,165,5,43,0,0,164,163,1,0,0,0,164,165,1,0,0,0,165,166,1, + 0,0,0,166,167,5,44,0,0,167,169,1,0,0,0,168,140,1,0,0,0,168,143,1,0,0,0, + 168,144,1,0,0,0,168,145,1,0,0,0,168,161,1,0,0,0,169,178,1,0,0,0,170,171, + 10,4,0,0,171,172,5,30,0,0,172,177,3,10,5,5,173,174,10,3,0,0,174,175,5,46, + 0,0,175,177,3,10,5,4,176,170,1,0,0,0,176,173,1,0,0,0,177,180,1,0,0,0,178, 176,1,0,0,0,178,179,1,0,0,0,179,11,1,0,0,0,180,178,1,0,0,0,181,183,3,14, 7,0,182,184,5,43,0,0,183,182,1,0,0,0,183,184,1,0,0,0,184,185,1,0,0,0,185, 186,5,42,0,0,186,187,3,88,44,0,187,196,1,0,0,0,188,190,3,14,7,0,189,191, @@ -5093,9 +5093,6 @@ export class ComparisonOperatorContext extends ParserRuleContext { public EQ(): TerminalNode { return this.getToken(esql_parser.EQ, 0); } - public CIEQ(): TerminalNode { - return this.getToken(esql_parser.CIEQ, 0); - } public NEQ(): TerminalNode { return this.getToken(esql_parser.NEQ, 0); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts index de1c681dd117f..d477c7f51493f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts @@ -63,7 +63,7 @@ export class AstListener implements ESQLParserListener { const commandAst = createCommand('show', ctx); this.ast.push(commandAst); - commandAst.text = ctx.text; + commandAst.text = ctx.getText(); commandAst?.args.push(createFunction('info', ctx, getPosition(ctx.INFO().symbol))); } @@ -76,7 +76,7 @@ export class AstListener implements ESQLParserListener { const commandAst = createCommand('show', ctx); this.ast.push(commandAst); // update the text - commandAst.text = ctx.text; + commandAst.text = ctx.getText(); commandAst?.args.push(createFunction('functions', ctx, getPosition(ctx.FUNCTIONS().symbol))); } @@ -120,7 +120,10 @@ export class AstListener implements ESQLParserListener { const metadataContent = metadataContext?.deprecated_metadata()?.metadataOption() || metadataContext?.metadataOption(); if (metadataContent) { - const option = createOption(metadataContent.METADATA().text.toLowerCase(), metadataContent); + const option = createOption( + metadataContent.METADATA().getText().toLowerCase(), + metadataContent + ); commandAst.args.push(option); option.args.push(...collectAllColumnIdentifiers(metadataContent)); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index 4fe0e509f32a8..2364054590a0c 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -41,7 +41,7 @@ export function createCommand(name: string, ctx: ParserRuleContext): ESQLCommand return { type: 'command', name, - text: ctx.text, + text: ctx.getText(), args: [], location: getPosition(ctx.start, ctx.stop), incomplete: Boolean(ctx.exception), @@ -51,16 +51,16 @@ export function createCommand(name: string, ctx: ParserRuleContext): ESQLCommand export function createList(ctx: ParserRuleContext, values: ESQLLiteral[]): ESQLList { return { type: 'list', - name: ctx.text, + name: ctx.getText(), values, - text: ctx.text, + text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), incomplete: Boolean(ctx.exception), }; } export function createNumericLiteral(ctx: DecimalValueContext | IntegerValueContext): ESQLLiteral { - const text = ctx.text; + const text = ctx.getText(); return { type: 'literal', literalType: 'number', @@ -76,8 +76,8 @@ export function createFakeMultiplyLiteral(ctx: ArithmeticUnaryContext): ESQLLite return { type: 'literal', literalType: 'number', - text: ctx.text, - name: ctx.text, + text: ctx.getText(), + name: ctx.getText(), value: ctx.PLUS() ? 1 : -1, location: getPosition(ctx.start, ctx.stop), incomplete: Boolean(ctx.exception), @@ -112,7 +112,7 @@ export function createLiteral( if (!node) { return; } - const text = node.text; + const text = node.getText(); return { type: 'literal', literalType: type, @@ -120,18 +120,20 @@ export function createLiteral( name: text, value: type === 'number' ? Number(text) : text, location: getPosition(node.symbol), - incomplete: isMissingText(node.text), + incomplete: isMissingText(node.getText()), }; } export function createTimeUnit(ctx: QualifiedIntegerLiteralContext): ESQLTimeInterval { return { type: 'timeInterval', - quantity: Number(ctx.integerValue().text), - unit: ctx.UNQUOTED_IDENTIFIER().text, - text: ctx.text, + quantity: Number(ctx.integerValue().INTEGER_LITERAL().getText()), + unit: ctx.UNQUOTED_IDENTIFIER().symbol.text, + text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), - name: `${ctx.integerValue().text} ${ctx.UNQUOTED_IDENTIFIER().text}`, + name: `${ctx.integerValue().INTEGER_LITERAL().getText()} ${ + ctx.UNQUOTED_IDENTIFIER().symbol.text + }`, incomplete: Boolean(ctx.exception), }; } @@ -144,7 +146,7 @@ export function createFunction( return { type: 'function', name, - text: ctx.text, + text: ctx.getText(), location: customPosition ?? getPosition(ctx.start, ctx.stop), args: [], incomplete: Boolean(ctx.exception), @@ -229,9 +231,9 @@ function safeBackticksRemoval(text: string | undefined) { export function sanifyIdentifierString(ctx: ParserRuleContext) { return ( - getUnquotedText(ctx)?.text || - safeBackticksRemoval(getQuotedText(ctx)?.text) || - safeBackticksRemoval(ctx.text) // for some reason some quoted text is not detected correctly by the parser + getUnquotedText(ctx)?.getText() || + safeBackticksRemoval(getQuotedText(ctx)?.getText()) || + safeBackticksRemoval(ctx.getText()) // for some reason some quoted text is not detected correctly by the parser ); } @@ -285,21 +287,21 @@ export function createSource( export function createColumnStar(ctx: TerminalNode): ESQLColumn { return { type: 'column', - name: ctx.text, - text: ctx.text, + name: ctx.getText(), + text: ctx.getText(), location: getPosition(ctx.symbol), - incomplete: ctx.text === '', + incomplete: ctx.getText() === '', quoted: false, }; } export function createColumn(ctx: ParserRuleContext): ESQLColumn { const text = sanifyIdentifierString(ctx); - const hasQuotes = Boolean(getQuotedText(ctx) || isQuoted(ctx.text)); + const hasQuotes = Boolean(getQuotedText(ctx) || isQuoted(ctx.getText())); return { type: 'column' as const, name: text, - text: ctx.text, + text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), incomplete: Boolean(ctx.exception || text === ''), quoted: hasQuotes, @@ -310,7 +312,7 @@ export function createOption(name: string, ctx: ParserRuleContext): ESQLCommandO return { type: 'option', name, - text: ctx.text, + text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), args: [], incomplete: Boolean(ctx.exception || ctx.children?.some((c) => c instanceof ErrorNode)), diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 8807ef475d767..741560095ea88 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -87,7 +87,9 @@ import type { } from './types'; export function collectAllSourceIdentifiers(ctx: FromCommandContext): ESQLAstItem[] { - return ctx.getRuleContexts(FromIdentifierContext).map((sourceCtx) => createSource(sourceCtx)); + return ctx + .getTypedRuleContexts(FromIdentifierContext) + .map((sourceCtx) => createSource(sourceCtx)); } function extractIdentifiers( @@ -105,7 +107,7 @@ function extractIdentifiers( function makeColumnsOutOfIdentifiers(identifiers: ParserRuleContext[]) { const args: ESQLColumn[] = identifiers - .filter((child) => textExistsAndIsValid(child.text)) + .filter((child) => textExistsAndIsValid(child.getText())) .map((sourceContext) => { return createColumn(sourceContext); }) ?? []; @@ -137,8 +139,8 @@ export function getMatchField(ctx: EnrichCommandContext) { } const identifier = ctx.qualifiedNamePattern(); if (identifier) { - const fn = createOption(ctx.ON()!.text.toLowerCase(), ctx); - if (textExistsAndIsValid(identifier.text)) { + const fn = createOption(ctx.ON()!.getText().toLowerCase(), ctx); + if (textExistsAndIsValid(identifier.getText())) { fn.args.push(createColumn(identifier)); } // overwrite the location inferring the correct position @@ -151,7 +153,7 @@ export function getMatchField(ctx: EnrichCommandContext) { export function getEnrichClauses(ctx: EnrichCommandContext) { const ast: ESQLCommandOption[] = []; if (ctx.WITH()) { - const option = createOption(ctx.WITH()!.text.toLowerCase(), ctx); + const option = createOption(ctx.WITH()!.getText().toLowerCase(), ctx); ast.push(option); const clauses = ctx.enrichWithClause_list(); for (const clause of clauses) { @@ -159,13 +161,13 @@ export function getEnrichClauses(ctx: EnrichCommandContext) { const args = []; if (clause.ASSIGN()) { args.push(createColumn(clause._newName)); - if (textExistsAndIsValid(clause._enrichField?.text)) { + if (textExistsAndIsValid(clause._enrichField?.getText())) { args.push(createColumn(clause._enrichField)); } } else { // if an explicit assign is not set, create a fake assign with // both left and right value with the same column - if (textExistsAndIsValid(clause._enrichField?.text)) { + if (textExistsAndIsValid(clause._enrichField?.getText())) { args.push(createColumn(clause._enrichField), createColumn(clause._enrichField)); } } @@ -211,7 +213,7 @@ function visitLogicalIns(ctx: LogicalInContext) { .filter(nonNullable) .flatMap((arg) => (Array.isArray(arg) ? arg.filter(nonNullable) : arg)); // distinguish between missing brackets (missing text error) and an empty list - if (textExistsAndIsValid(ctx.text)) { + if (textExistsAndIsValid(ctx.getText())) { fn.args.push(listArgs); } } @@ -223,29 +225,16 @@ function visitLogicalIns(ctx: LogicalInContext) { function getMathOperation(ctx: ArithmeticBinaryContext) { return ( - ctx.PLUS().symbol || - ctx.MINUS().symbol || - ctx.ASTERISK().symbol || - ctx.SLASH().symbol || - ctx.PERCENT().symbol || - '' + (ctx.PLUS() || ctx.MINUS() || ctx.ASTERISK() || ctx.SLASH() || ctx.PERCENT()).getText() || '' ); } function getComparisonName(ctx: ComparisonOperatorContext) { - return ( - ctx.EQ().symbol || - ctx.NEQ().symbol || - ctx.LT().symbol || - ctx.LTE().symbol || - ctx.GT().symbol || - ctx.GTE().symbol || - '' - ); + return (ctx.EQ() || ctx.NEQ() || ctx.LT() || ctx.LTE() || ctx.GT() || ctx.GTE()).getText() || ''; } function visitValueExpression(ctx: ValueExpressionContext) { - if (!textExistsAndIsValid(ctx.text)) { + if (!textExistsAndIsValid(ctx.getText())) { return []; } if (ctx instanceof ValueExpressionDefaultContext) { @@ -322,7 +311,7 @@ function getConstant(ctx: ConstantContext | undefined): ESQLAstItem | undefined return getBooleanValue(ctx); } if (ctx instanceof StringLiteralContext) { - return createLiteral('string', ctx.string().STRING()); + return createLiteral('string', ctx.string_().STRING()); } if ( ctx instanceof NumericArrayLiteralContext || @@ -330,14 +319,14 @@ function getConstant(ctx: ConstantContext | undefined): ESQLAstItem | undefined ctx instanceof StringArrayLiteralContext ) { const values: ESQLLiteral[] = []; - for (const numericValue of ctx.getRuleContexts(NumericValueContext)) { + for (const numericValue of ctx.getTypedRuleContexts(NumericValueContext)) { const value = numericValue.decimalValue() || numericValue.integerValue(); values.push(createNumericLiteral(value!)); } - for (const booleanValue of ctx.getRuleContexts(BooleanValueContext)) { + for (const booleanValue of ctx.getTypedRuleContexts(BooleanValueContext)) { values.push(getBooleanValue(booleanValue)!); } - for (const string of ctx.getRuleContexts(StringContext)) { + for (const string of ctx.getTypedRuleContexts(StringContext)) { const literal = createLiteral('string', string.STRING()); if (literal) { values.push(literal); @@ -350,16 +339,16 @@ function getConstant(ctx: ConstantContext | undefined): ESQLAstItem | undefined export function visitRenameClauses(clausesCtx: RenameClauseContext[]): ESQLAstItem[] { return clausesCtx .map((clause) => { - const asToken = clause.tryGetToken(esql_parser.AS, 0); + const asToken = clause.getToken(esql_parser.AS, 0); if (asToken) { - const fn = createOption(asToken.text.toLowerCase(), clause); + const fn = createOption(asToken.getText().toLowerCase(), clause); for (const arg of [clause._oldName, clause._newName]) { - if (textExistsAndIsValid(arg.text)) { + if (textExistsAndIsValid(arg.getText())) { fn.args.push(createColumn(arg)); } } return fn; - } else if (textExistsAndIsValid(clause._oldName?.text)) { + } else if (textExistsAndIsValid(clause._oldName?.getText())) { return createColumn(clause._oldName); } }) @@ -380,7 +369,7 @@ export function visitPrimaryExpression( } if (ctx instanceof FunctionContext) { const functionExpressionCtx = ctx.functionExpression(); - const fn = createFunction(functionExpressionCtx.identifier().text.toLowerCase(), ctx); + const fn = createFunction(functionExpressionCtx.identifier().getText().toLowerCase(), ctx); const asteriskArg = functionExpressionCtx.ASTERISK() ? createColumnStar(functionExpressionCtx.ASTERISK()!) : undefined; @@ -388,7 +377,7 @@ export function visitPrimaryExpression( fn.args.push(asteriskArg); } const functionArgs = functionExpressionCtx - .booleanExpression() + .booleanExpression_list() .flatMap(collectBooleanExpression) .filter(nonNullable); if (functionArgs.length) { @@ -412,7 +401,7 @@ export function collectLogicalExpression(ctx: BooleanExpressionContext) { } function collectRegexExpression(ctx: BooleanExpressionContext): ESQLFunction[] { - const regexes = ctx.getRuleContexts(RegexBooleanExpressionContext); + const regexes = ctx.getTypedRuleContexts(RegexBooleanExpressionContext); const ret: ESQLFunction[] = []; return ret.concat( regexes.map((regex) => { @@ -472,7 +461,7 @@ export function collectBooleanExpression(ctx: BooleanExpressionContext | undefin export function visitField(ctx: FieldContext) { if (ctx.qualifiedName() && ctx.ASSIGN()) { - const fn = createFunction(ctx.ASSIGN()!.text, ctx); + const fn = createFunction(ctx.ASSIGN()!.getText(), ctx); fn.args.push( createColumn(ctx.qualifiedName()!), collectBooleanExpression(ctx.booleanExpression()) @@ -491,7 +480,7 @@ export function collectAllFieldsStatements(ctx: FieldsContext | undefined): ESQL return ast; } try { - for (const field of ctx.field()) { + for (const field of ctx.field_list()) { ast.push(...visitField(field)); } } catch (e) { @@ -504,7 +493,7 @@ export function visitByOption(ctx: StatsCommandContext, expr: FieldsContext | un if (!ctx.BY() || !expr) { return []; } - const option = createOption(ctx.BY()!.text.toLowerCase(), ctx); + const option = createOption(ctx.BY()!.getText().toLowerCase(), ctx); option.args.push(...collectAllFieldsStatements(expr)); return [option]; } @@ -515,7 +504,7 @@ export function visitOrderExpression(ctx: OrderExpressionContext[]) { const expression = collectBooleanExpression(orderCtx.booleanExpression()); if (orderCtx._ordering) { const terminalNode = - orderCtx.tryGetToken(esql_parser.ASC, 0) || orderCtx.tryGetToken(esql_parser.DESC, 0); + orderCtx.getToken(esql_parser.ASC, 0) || orderCtx.getToken(esql_parser.DESC, 0); const literal = createLiteral('string', terminalNode); if (literal) { expression.push(literal); @@ -525,7 +514,7 @@ export function visitOrderExpression(ctx: OrderExpressionContext[]) { expression.push(createLiteral('string', orderCtx.NULLS()!)!); if (orderCtx._nullOrdering) { const innerTerminalNode = - orderCtx.tryGetToken(esql_parser.FIRST, 0) || orderCtx.tryGetToken(esql_parser.LAST, 0); + orderCtx.getToken(esql_parser.FIRST, 0) || orderCtx.getToken(esql_parser.LAST, 0); const literal = createLiteral('string', innerTerminalNode); if (literal) { expression.push(literal); @@ -541,20 +530,22 @@ export function visitOrderExpression(ctx: OrderExpressionContext[]) { } export function visitDissect(ctx: DissectCommandContext) { - const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); + const pattern = ctx.string_().getToken(esql_parser.STRING, 0); return [ visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && textExistsAndIsValid(pattern.text) + ...(pattern && textExistsAndIsValid(pattern.getText()) ? [createLiteral('string', pattern), ...visitDissectOptions(ctx.commandOptions())] : []), ].filter(nonNullable); } export function visitGrok(ctx: GrokCommandContext) { - const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); + const pattern = ctx.string_().getToken(esql_parser.STRING, 0); return [ visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && textExistsAndIsValid(pattern.text) ? [createLiteral('string', pattern)] : []), + ...(pattern && textExistsAndIsValid(pattern.getText()) + ? [createLiteral('string', pattern)] + : []), ].filter(nonNullable); } @@ -563,7 +554,7 @@ function visitDissectOptions(ctx: CommandOptionsContext | undefined) { return []; } const options: ESQLCommandOption[] = []; - for (const optionCtx of ctx.commandOption()) { + for (const optionCtx of ctx.commandOption_list()) { const option = createOption( sanifyIdentifierString(optionCtx.identifier()).toLowerCase(), optionCtx From 8a8964e574d74f8445beb654791201d17d0c63d2 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Wed, 21 Feb 2024 11:11:24 +0000 Subject: [PATCH 09/16] fix how expected symbols are computed --- .../kbn-monaco/src/esql/lib/ast/ast_errors.ts | 35 +++++++++++-------- .../src/esql/lib/ast/ast_position_utils.ts | 2 +- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts index 8e491dd7dd1e6..22d1956a580f1 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts @@ -6,26 +6,29 @@ * Side Public License, v 1. */ -import type { RecognitionException } from 'antlr4'; +import type { RecognitionException, ATN } from 'antlr4'; import { default as esql_parser } from '../../antlr/esql_parser'; import { getPosition } from './ast_position_utils'; -function getExpectedSymbols(expectedTokens: RecognitionException['expectedTokens']) { - const tokenIds = expectedTokens?.toIntegerList().toArray() || []; - const list = []; - for (const tokenId of tokenIds) { - if (esql_parser.symbolicNames[tokenId]) { - const symbol = esql_parser.symbolicNames[tokenId]; - list.push(symbol === 'EOF' ? `<${symbol}>` : symbol); - } - } - return list; +function getExpectedSymbols(expectedTokens: ReturnType) { + return expectedTokens.intervals + .reduce( + (list, interval) => + list.concat(esql_parser.symbolicNames.slice(interval.start, interval.stop)), + [] as Array + ) + .filter(Boolean); } export function createError(exception: RecognitionException) { const token = exception.offendingToken; + if (token) { - const expectedSymbols = getExpectedSymbols(exception.expectedTokens); + const expectedSymbols = getExpectedSymbols( + // @ts-expect-error method exists see https://github.com/antlr/antlr4/blob/v4.11.1/runtime/JavaScript/src/antlr4/error/RecognitionException.js#L52 + exception.getExpectedTokens() + ); + if ( ['ASTERISK', 'UNQUOTED_IDENTIFIER', 'QUOTED_IDENTIFIER'].every( (s, i) => expectedSymbols[i] === s @@ -38,12 +41,14 @@ export function createError(exception: RecognitionException) { }; } } + return { type: 'error' as const, text: token - ? `SyntaxError: expected {${getExpectedSymbols(exception.expectedTokens).join( - ', ' - )}} but found "${token.text}"` + ? `SyntaxError: expected {${getExpectedSymbols( + // @ts-expect-error method exists see https://github.com/antlr/antlr4/blob/v4.11.1/runtime/JavaScript/src/antlr4/error/RecognitionException.js#L52 + exception.getExpectedTokens() + ).join(', ')}} but found "${token.text}"` : exception.message, location: getPosition(token), }; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts index 6d15fb50435c4..6c0c6bf9e7b37 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts @@ -9,7 +9,7 @@ import type { Token } from 'antlr4'; export function getPosition( - token: Pick | undefined, + token: Pick | null, lastToken?: Pick | undefined ) { if (!token || token.start < 0) { From ba5ba54b518766f735d6d07ee1d15568e6f7bdc7 Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Wed, 21 Feb 2024 12:27:16 +0000 Subject: [PATCH 10/16] even more fixes --- packages/kbn-monaco/src/common/error_listener.ts | 10 ++++++---- .../kbn-monaco/src/esql/lib/ast/ast_factory.ts | 10 +++++----- .../kbn-monaco/src/esql/lib/ast/ast_helpers.ts | 16 +++++++++++----- .../kbn-monaco/src/esql/lib/ast/ast_walker.ts | 4 ++-- .../src/esql/lib/ast/shared/resources_helpers.ts | 2 +- .../src/esql/lib/ast/validation/validation.ts | 3 +++ .../src/esql/lib/monaco/esql_error_listener.ts | 12 +++--------- .../src/esql/lib/monaco/esql_tokens_provider.ts | 4 ++-- packages/kbn-monaco/src/painless/README.md | 2 +- .../kbn-monaco/src/painless/worker/lib/lexer.ts | 2 +- .../kbn-monaco/src/painless/worker/lib/parser.ts | 6 +++--- 11 files changed, 38 insertions(+), 33 deletions(-) diff --git a/packages/kbn-monaco/src/common/error_listener.ts b/packages/kbn-monaco/src/common/error_listener.ts index 4e23579c110da..d1d0db4310544 100644 --- a/packages/kbn-monaco/src/common/error_listener.ts +++ b/packages/kbn-monaco/src/common/error_listener.ts @@ -6,18 +6,20 @@ * Side Public License, v 1. */ -import { ErrorListener, Recognizer } from 'antlr4'; +import type { Recognizer, RecognitionException } from 'antlr4'; +import { ErrorListener } from 'antlr4'; import type { EditorError } from '../types'; -export class ANTLREErrorListener implements ErrorListener { - private errors: EditorError[] = []; +export class ANTLRErrorListener extends ErrorListener { + protected errors: EditorError[] = []; syntaxError( recognizer: Recognizer, offendingSymbol: any, line: number, column: number, - message: string + message: string, + error: RecognitionException | undefined ): void { let endColumn = column + 1; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts index d477c7f51493f..c543cc9c52caa 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ErrorNode, ParserRuleContext, TerminalNode } from 'antlr4'; +import type { ErrorNode, ParserRuleContext, TerminalNode } from 'antlr4'; import { type ShowInfoContext, type ShowFunctionsContext, @@ -260,18 +260,18 @@ export class AstListener implements ESQLParserListener { } enterEveryRule(ctx: ParserRuleContext): void { - // not implemented yet + // method not implemented, added to satisfy interface expectation } visitErrorNode(node: ErrorNode): void { - // not implemented yet + // method not implemented, added to satisfy interface expectation } visitTerminal(node: TerminalNode): void { - // not implemented yet + // method not implemented, added to satisfy interface expectation } exitEveryRule(ctx: ParserRuleContext): void { - // not implemented yet + // method not implemented, added to satisfy interface expectation } } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index 2364054590a0c..c339342a0718d 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -10,7 +10,7 @@ * In case of changes in the grammar, this script should be updated: esql_update_ast_script.js */ -import { Token, ErrorNode, type ParserRuleContext, type TerminalNode } from 'antlr4'; +import { type Token, type ParserRuleContext, type TerminalNode } from 'antlr4'; import type { ArithmeticUnaryContext, DecimalValueContext, @@ -229,7 +229,7 @@ function safeBackticksRemoval(text: string | undefined) { return text?.replace(TICKS_REGEX, '').replace(DOUBLE_TICKS_REGEX, SINGLE_BACKTICK) || ''; } -export function sanifyIdentifierString(ctx: ParserRuleContext) { +export function sanitizeIdentifierString(ctx: ParserRuleContext) { return ( getUnquotedText(ctx)?.getText() || safeBackticksRemoval(getQuotedText(ctx)?.getText()) || @@ -273,7 +273,7 @@ export function createSource( ctx: ParserRuleContext, type: 'index' | 'policy' = 'index' ): ESQLSource { - const text = sanifyIdentifierString(ctx); + const text = sanitizeIdentifierString(ctx); return { type: 'source', name: text, @@ -296,7 +296,7 @@ export function createColumnStar(ctx: TerminalNode): ESQLColumn { } export function createColumn(ctx: ParserRuleContext): ESQLColumn { - const text = sanifyIdentifierString(ctx); + const text = sanitizeIdentifierString(ctx); const hasQuotes = Boolean(getQuotedText(ctx) || isQuoted(ctx.getText())); return { type: 'column' as const, @@ -315,6 +315,12 @@ export function createOption(name: string, ctx: ParserRuleContext): ESQLCommandO text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), args: [], - incomplete: Boolean(ctx.exception || ctx.children?.some((c) => c instanceof ErrorNode)), + incomplete: Boolean( + ctx.exception || + ctx.children?.some((c) => { + // @ts-expect-error not exposed in type but exists see https://github.com/antlr/antlr4/blob/v4.11.1/runtime/JavaScript/src/antlr4/tree/ErrorNodeImpl.js#L19 + return Boolean(c.isErrorNode); + }) + ), }; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 741560095ea88..f9976901cdd19 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -69,7 +69,7 @@ import { createFakeMultiplyLiteral, createList, createNumericLiteral, - sanifyIdentifierString, + sanitizeIdentifierString, computeLocationExtends, createColumnStar, wrapIdentifierAsArray, @@ -556,7 +556,7 @@ function visitDissectOptions(ctx: CommandOptionsContext | undefined) { const options: ESQLCommandOption[] = []; for (const optionCtx of ctx.commandOption_list()) { const option = createOption( - sanifyIdentifierString(optionCtx.identifier()).toLowerCase(), + sanitizeIdentifierString(optionCtx.identifier()).toLowerCase(), optionCtx ); options.push(option); diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts index d4d5087e1464c..c02d5db099f2b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts @@ -8,7 +8,7 @@ import type { ESQLCallbacks } from './types'; import type { ESQLRealField } from '../validation/types'; -import { ESQLAst } from '../types'; +import type { ESQLAst } from '../types'; export function buildQueryUntilPreviousCommand(ast: ESQLAst, queryString: string) { const prevCommand = ast[Math.max(ast.length - 2, 0)]; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts index b1f960d8ea320..d76769265a8e0 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts @@ -836,6 +836,8 @@ export async function validateAst( const { ast, errors } = await astProvider(queryString); + // console.log('ast received:: %o \n', ast); + const [sources, availableFields, availablePolicies, availableMetadataFields] = await Promise.all([ // retrieve the list of available sources retrieveSources(ast, callbacks), @@ -882,6 +884,7 @@ export async function validateAst( }); messages.push(...commandMessages); } + return { errors: [...errors, ...messages.filter(({ type }) => type === 'error')], warnings: messages.filter(({ type }) => type === 'warning'), diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts index d35fa6e688227..b5181d72f0d9d 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts @@ -6,13 +6,11 @@ * Side Public License, v 1. */ -import type { ErrorListener, Recognizer, RecognitionException } from 'antlr4'; -import type { EditorError } from '../../../types'; +import type { Recognizer, RecognitionException } from 'antlr4'; +import { ANTLRErrorListener } from '../../../common/error_listener'; import { createError } from '../ast/ast_errors'; -export class ESQLErrorListener implements ErrorListener { - private errors: EditorError[] = []; - +export class ESQLErrorListener extends ANTLRErrorListener { syntaxError( recognizer: Recognizer, offendingSymbol: any, @@ -46,8 +44,4 @@ export class ESQLErrorListener implements ErrorListener { severity: 8, // monaco.MarkerSeverity.Error, }); } - - getErrors(): EditorError[] { - return this.errors; - } } diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts index e83973978a880..35689e0b56694 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts @@ -8,7 +8,7 @@ import { CharStreams, type Token } from 'antlr4'; import { monaco } from '../../../monaco_imports'; -import { ANTLREErrorListener } from '../../../common/error_listener'; +import { ESQLErrorListener } from './esql_error_listener'; import { ESQLToken } from './esql_token'; import { ESQLLineTokens } from './esql_line_tokens'; @@ -27,7 +27,7 @@ export class ESQLTokensProvider implements monaco.languages.TokensProvider { tokenize(line: string, prevState: ESQLState): monaco.languages.ILineTokens { const errorStartingPoints: number[] = []; - const errorListener = new ANTLREErrorListener(); + const errorListener = new ESQLErrorListener(); // This has the drawback of not styling any ESQL wrong query as // | from ... const cleanedLine = diff --git a/packages/kbn-monaco/src/painless/README.md b/packages/kbn-monaco/src/painless/README.md index 8fcb1023049b3..dc748e5bf8ced 100644 --- a/packages/kbn-monaco/src/painless/README.md +++ b/packages/kbn-monaco/src/painless/README.md @@ -111,7 +111,7 @@ To add additional contexts, edit the `supportedContexts` constant in `kbn-monaco [ANTLR](https://www.antlr.org/) generates lexical and syntax errors out of the box, which we can use to set error markers in monaco. -Elasticsearch has defined [lexer and parser grammar](https://github.com/elastic/elasticsearch/tree/master/modules/lang-painless/src/main/antlr) for the Painless language. For now, these rules have been largely copied from ES to Kibana and reside in the `antlr` directory with the `.g4` file extension. We then use [antlr4ts](https://github.com/tunnelvisionlabs/antlr4ts) to generate a lexer and a parser in Typescript. +Elasticsearch has defined [lexer and parser grammar](https://github.com/elastic/elasticsearch/tree/master/modules/lang-painless/src/main/antlr) for the Painless language. For now, these rules have been largely copied from ES to Kibana and reside in the `antlr` directory with the `.g4` file extension. We then generate a Typescript target for the lexer and a parser. To regenerate the lexer and parser, run the following script: diff --git a/packages/kbn-monaco/src/painless/worker/lib/lexer.ts b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts index d2d80e91d6c5c..fb9377a5f9d3c 100644 --- a/packages/kbn-monaco/src/painless/worker/lib/lexer.ts +++ b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts @@ -7,7 +7,7 @@ */ import type { Token } from 'antlr4'; -import { painless_lexer as PainlessLexer } from '../../antlr/painless_lexer'; +import { default as PainlessLexer } from '../../antlr/painless_lexer'; /* * This extends the PainlessLexer class in order to handle backslashes appropriately diff --git a/packages/kbn-monaco/src/painless/worker/lib/parser.ts b/packages/kbn-monaco/src/painless/worker/lib/parser.ts index 7fd58e302103a..f33ca8b7e4667 100644 --- a/packages/kbn-monaco/src/painless/worker/lib/parser.ts +++ b/packages/kbn-monaco/src/painless/worker/lib/parser.ts @@ -7,10 +7,10 @@ */ import { CommonTokenStream, CharStreams } from 'antlr4'; -import { painless_parser as PainlessParser, SourceContext } from '../../antlr/painless_parser'; +import { default as PainlessParser, SourceContext } from '../../antlr/painless_parser'; import { PainlessLexerEnhanced } from './lexer'; import { EditorError } from '../../../types'; -import { ANTLREErrorListener } from '../../../common/error_listener'; +import { ANTLRErrorListener } from '../../../common/error_listener'; const parse = ( code: string @@ -20,7 +20,7 @@ const parse = ( } => { const inputStream = CharStreams.fromString(code); const lexer = new PainlessLexerEnhanced(inputStream); - const painlessLangErrorListener = new ANTLREErrorListener(); + const painlessLangErrorListener = new ANTLRErrorListener(); const tokenStream = new CommonTokenStream(lexer); const parser = new PainlessParser(tokenStream); From 6c8150400161b37c32527757e08a91a5e24e6263 Mon Sep 17 00:00:00 2001 From: dej611 Date: Mon, 4 Mar 2024 13:07:00 +0100 Subject: [PATCH 11/16] :fire: Drop custom syntax error message --- .../kbn-monaco/src/esql/lib/ast/ast_errors.ts | 39 +------------------ .../esql/lib/monaco/esql_error_listener.ts | 20 +++------- 2 files changed, 7 insertions(+), 52 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts index 22d1956a580f1..976de99250d4d 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts @@ -6,50 +6,15 @@ * Side Public License, v 1. */ -import type { RecognitionException, ATN } from 'antlr4'; -import { default as esql_parser } from '../../antlr/esql_parser'; +import type { RecognitionException } from 'antlr4'; import { getPosition } from './ast_position_utils'; -function getExpectedSymbols(expectedTokens: ReturnType) { - return expectedTokens.intervals - .reduce( - (list, interval) => - list.concat(esql_parser.symbolicNames.slice(interval.start, interval.stop)), - [] as Array - ) - .filter(Boolean); -} - export function createError(exception: RecognitionException) { const token = exception.offendingToken; - if (token) { - const expectedSymbols = getExpectedSymbols( - // @ts-expect-error method exists see https://github.com/antlr/antlr4/blob/v4.11.1/runtime/JavaScript/src/antlr4/error/RecognitionException.js#L52 - exception.getExpectedTokens() - ); - - if ( - ['ASTERISK', 'UNQUOTED_IDENTIFIER', 'QUOTED_IDENTIFIER'].every( - (s, i) => expectedSymbols[i] === s - ) - ) { - return { - type: 'error' as const, - text: `Unknown column ${token.text}`, - location: getPosition(token), - }; - } - } - return { type: 'error' as const, - text: token - ? `SyntaxError: expected {${getExpectedSymbols( - // @ts-expect-error method exists see https://github.com/antlr/antlr4/blob/v4.11.1/runtime/JavaScript/src/antlr4/error/RecognitionException.js#L52 - exception.getExpectedTokens() - ).join(', ')}} but found "${token.text}"` - : exception.message, + text: `SyntaxError: ${exception.message}`, location: getPosition(token), }; } diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts index b5181d72f0d9d..c6c68b6e73909 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts @@ -8,7 +8,7 @@ import type { Recognizer, RecognitionException } from 'antlr4'; import { ANTLRErrorListener } from '../../../common/error_listener'; -import { createError } from '../ast/ast_errors'; +import { getPosition } from '../ast/ast_position_utils'; export class ESQLErrorListener extends ANTLRErrorListener { syntaxError( @@ -19,21 +19,11 @@ export class ESQLErrorListener extends ANTLRErrorListener { message: string, error: RecognitionException | undefined ): void { - const higherLevelError = error ? createError(error) : undefined; - const textMessage = - higherLevelError?.text && higherLevelError.text !== error?.message - ? higherLevelError.text - : `SyntaxError: ${message}`; + const textMessage = `SyntaxError: ${message}`; - let endColumn = column + 1; - let startColumn = column; - - if (higherLevelError) { - startColumn = higherLevelError.location.min + 1; - endColumn = higherLevelError.location.max + 1; - } else if (offendingSymbol?._text) { - endColumn = column + offendingSymbol._text.length; - } + const tokenPosition = getPosition(offendingSymbol); + const startColumn = tokenPosition?.min + 1 || column; + const endColumn = tokenPosition?.max + 1 || column + 1; this.errors.push({ startLineNumber: line, From 754497d37c70fccc1a1677a2be30539e668db0e2 Mon Sep 17 00:00:00 2001 From: dej611 Date: Mon, 4 Mar 2024 13:07:24 +0100 Subject: [PATCH 12/16] :wrench: Revisit messages based on new format --- .../lib/ast/validation/validation.test.ts | 125 ++++++++++-------- 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts index d7d669483f213..10a4a2135fd6d 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts @@ -345,13 +345,15 @@ describe('validation logic', () => { ['eval', 'stats', 'rename', 'limit', 'keep', 'drop', 'mv_expand', 'dissect', 'grok'].map( (command) => testErrorsAndWarnings(command, [ - `SyntaxError: expected {EXPLAIN, FROM, ROW, SHOW} but found "${command}"`, + `SyntaxError: mismatched input '${command}' expecting {EXPLAIN, FROM, ROW, SHOW}`, ]) ); }); describe('from', () => { - testErrorsAndWarnings('f', ['SyntaxError: expected {EXPLAIN, FROM, ROW, SHOW} but found "f"']); + testErrorsAndWarnings('f', [ + "SyntaxError: mismatched input 'f' expecting {EXPLAIN, FROM, ROW, SHOW}", + ]); testErrorsAndWarnings(`from `, [ "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", ]); @@ -359,7 +361,7 @@ describe('validation logic', () => { "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", ]); testErrorsAndWarnings(`from assignment = 1`, [ - 'SyntaxError: expected {, PIPE, COMMA, OPENING_BRACKET, METADATA} but found "="', + "SyntaxError: mismatched input '=' expecting ", 'Unknown index [assignment]', ]); testErrorsAndWarnings(`from index`, []); @@ -399,8 +401,8 @@ describe('validation logic', () => { `from index ${setWrapping('metadata _id, _source')} ${setWrapping('METADATA _id2')}`, [ isWrapped - ? 'SyntaxError: expected {COMMA, CLOSING_BRACKET} but found "["' - : 'SyntaxError: expected {, PIPE, COMMA} but found "METADATA"', + ? "SyntaxError: mismatched input '[' expecting " + : "SyntaxError: mismatched input 'METADATA' expecting ", ], addBracketsWarning() ); @@ -417,7 +419,7 @@ describe('validation logic', () => { ); } testErrorsAndWarnings(`from index (metadata _id)`, [ - 'SyntaxError: expected {, PIPE, COMMA, OPENING_BRACKET, METADATA} but found "(metadata"', + "SyntaxError: mismatched input '(metadata' expecting ", ]); testErrorsAndWarnings(`from ind*, other*`, []); testErrorsAndWarnings(`from index*`, []); @@ -438,7 +440,7 @@ describe('validation logic', () => { describe('row', () => { testErrorsAndWarnings('row', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('row missing_column', ['Unknown column [missing_column]']); testErrorsAndWarnings('row fn()', ['Unknown function [fn]']); @@ -455,7 +457,7 @@ describe('validation logic', () => { testErrorsAndWarnings('row a = null', []); testErrorsAndWarnings('row a = (1)', []); testErrorsAndWarnings('row a = (1, 2, 3)', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ","', + "SyntaxError: no viable alternative at input '(1,'", "SyntaxError: extraneous input ')' expecting ", ]); for (const bool of ['true', 'false']) { @@ -463,12 +465,16 @@ describe('validation logic', () => { testErrorsAndWarnings(`row NOT ${bool}`, []); } - testErrorsAndWarnings('row var = 1 in ', ['SyntaxError: expected {LP} but found ""']); + testErrorsAndWarnings('row var = 1 in ', [ + "SyntaxError: mismatched input '' expecting '('", + ]); testErrorsAndWarnings('row var = 1 in (', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", 'Error: [in] function expects exactly 2 arguments, got 1.', ]); - testErrorsAndWarnings('row var = 1 not in ', ['SyntaxError: expected {LP} but found ""']); + testErrorsAndWarnings('row var = 1 not in ', [ + "SyntaxError: mismatched input '' expecting '('", + ]); testErrorsAndWarnings('row var = 1 in (1, 2, 3)', []); testErrorsAndWarnings('row var = 5 in (1, 2, 3)', []); testErrorsAndWarnings('row var = 5 not in (1, 2, 3)', []); @@ -642,7 +648,7 @@ describe('validation logic', () => { }); describe('show', () => { - testErrorsAndWarnings('show', ['SyntaxError: expected {SHOW} but found ""']); + testErrorsAndWarnings('show', ["SyntaxError: no viable alternative at input 'show'"]); testErrorsAndWarnings('show functions', []); testErrorsAndWarnings('show info', []); testErrorsAndWarnings('show functions()', [ @@ -666,7 +672,7 @@ describe('validation logic', () => { "SyntaxError: token recognition error at: 'e'", "SyntaxError: token recognition error at: 'l'", "SyntaxError: token recognition error at: 'd'", - 'SyntaxError: expected {SHOW} but found ""', + "SyntaxError: no viable alternative at input 'show '", ]); }); @@ -676,16 +682,16 @@ describe('validation logic', () => { ]); testErrorsAndWarnings('from index | limit 4 ', []); testErrorsAndWarnings('from index | limit 4.5', [ - 'SyntaxError: expected {INTEGER_LITERAL} but found "4.5"', + "SyntaxError: mismatched input '4.5' expecting INTEGER_LITERAL", ]); testErrorsAndWarnings('from index | limit a', [ - 'SyntaxError: expected {INTEGER_LITERAL} but found "a"', + "SyntaxError: mismatched input 'a' expecting INTEGER_LITERAL", ]); testErrorsAndWarnings('from index | limit numberField', [ - 'SyntaxError: expected {INTEGER_LITERAL} but found "numberField"', + "SyntaxError: mismatched input 'numberField' expecting INTEGER_LITERAL", ]); testErrorsAndWarnings('from index | limit stringField', [ - 'SyntaxError: expected {INTEGER_LITERAL} but found "stringField"', + "SyntaxError: mismatched input 'stringField' expecting INTEGER_LITERAL", ]); testErrorsAndWarnings('from index | limit 4', []); }); @@ -706,16 +712,16 @@ describe('validation logic', () => { ]); testErrorsAndWarnings('from index | keep `any#Char$Field`', []); testErrorsAndWarnings('from index | project ', [ - `SyntaxError: expected {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE} but found \"project\"`, + "SyntaxError: mismatched input 'project' expecting {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE}", ]); testErrorsAndWarnings('from index | project stringField, numberField, dateField', [ - `SyntaxError: expected {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE} but found \"project\"`, + "SyntaxError: mismatched input 'project' expecting {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE}", ]); testErrorsAndWarnings('from index | PROJECT stringField, numberField, dateField', [ - `SyntaxError: expected {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE} but found \"PROJECT\"`, + "SyntaxError: mismatched input 'PROJECT' expecting {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE}", ]); testErrorsAndWarnings('from index | project missingField, numberField, dateField', [ - `SyntaxError: expected {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE} but found \"project\"`, + "SyntaxError: mismatched input 'project' expecting {DISSECT, DROP, ENRICH, EVAL, GROK, INLINESTATS, KEEP, LIMIT, MV_EXPAND, RENAME, SORT, STATS, WHERE}", ]); testErrorsAndWarnings('from index | keep s*', []); testErrorsAndWarnings('from index | keep *Field', []); @@ -808,12 +814,14 @@ describe('validation logic', () => { }); describe('rename', () => { - testErrorsAndWarnings('from a_index | rename', ["SyntaxError: missing ID_PATTERN at ''"]); + testErrorsAndWarnings('from a_index | rename', [ + "SyntaxError: mismatched input '' expecting ID_PATTERN", + ]); testErrorsAndWarnings('from a_index | rename stringField', [ - 'SyntaxError: expected {DOT, AS} but found ""', + "SyntaxError: mismatched input '' expecting AS", ]); testErrorsAndWarnings('from a_index | rename a', [ - 'SyntaxError: expected {DOT, AS} but found ""', + "SyntaxError: mismatched input '' expecting AS", 'Unknown column [a]', ]); testErrorsAndWarnings('from a_index | rename stringField as', [ @@ -850,26 +858,27 @@ describe('validation logic', () => { ]); testErrorsAndWarnings('row a = 10 | rename a as `this``is fine`', []); testErrorsAndWarnings('row a = 10 | rename a as this is fine', [ - 'SyntaxError: expected {DOT, AS} but found "is"', + "SyntaxError: mismatched input 'is' expecting ", ]); }); describe('dissect', () => { testErrorsAndWarnings('from a_index | dissect', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | dissect stringField', [ "SyntaxError: missing STRING at ''", ]); testErrorsAndWarnings('from a_index | dissect stringField 2', [ - 'SyntaxError: expected {STRING, DOT} but found "2"', + "SyntaxError: mismatched input '2' expecting STRING", ]); testErrorsAndWarnings('from a_index | dissect stringField .', [ - "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", 'Unknown column [stringField.]', ]); testErrorsAndWarnings('from a_index | dissect stringField %a', [ - "SyntaxError: missing STRING at '%'", + "SyntaxError: mismatched input '%' expecting STRING", + "SyntaxError: mismatched input '' expecting '='", ]); // Do not try to validate the dissect pattern string testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}"', []); @@ -877,10 +886,10 @@ describe('validation logic', () => { 'DISSECT only supports string type values, found [numberField] of type [number]', ]); testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option ', [ - 'SyntaxError: expected {ASSIGN} but found ""', + "SyntaxError: mismatched input '' expecting '='", ]); testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, NULL, '?', TRUE, '+', '-', OPENING_BRACKET}", 'Invalid option for DISSECT: [option]', ]); testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = 1', [ @@ -906,20 +915,20 @@ describe('validation logic', () => { describe('grok', () => { testErrorsAndWarnings('from a_index | grok', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | grok stringField', [ "SyntaxError: missing STRING at ''", ]); testErrorsAndWarnings('from a_index | grok stringField 2', [ - 'SyntaxError: expected {STRING, DOT} but found "2"', + "SyntaxError: mismatched input '2' expecting STRING", ]); testErrorsAndWarnings('from a_index | grok stringField .', [ - "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", 'Unknown column [stringField.]', ]); testErrorsAndWarnings('from a_index | grok stringField %a', [ - "SyntaxError: missing STRING at '%'", + "SyntaxError: mismatched input '%' expecting STRING", ]); // Do not try to validate the grok pattern string testErrorsAndWarnings('from a_index | grok stringField "%{firstWord}"', []); @@ -1103,29 +1112,29 @@ describe('validation logic', () => { describe('eval', () => { testErrorsAndWarnings('from a_index | eval ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | eval stringField ', []); testErrorsAndWarnings('from a_index | eval b = stringField', []); testErrorsAndWarnings('from a_index | eval numberField + 1', []); testErrorsAndWarnings('from a_index | eval numberField + ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: no viable alternative at input 'numberField + '", ]); testErrorsAndWarnings('from a_index | eval stringField + 1', [ 'Argument of [+] must be [number], found value [stringField] type [string]', ]); testErrorsAndWarnings('from a_index | eval a=b', ['Unknown column [b]']); testErrorsAndWarnings('from a_index | eval a=b, ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", 'Unknown column [b]', ]); testErrorsAndWarnings('from a_index | eval a=round', ['Unknown column [round]']); testErrorsAndWarnings('from a_index | eval a=round(', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: no viable alternative at input 'round('", ]); testErrorsAndWarnings('from a_index | eval a=round(numberField) ', []); testErrorsAndWarnings('from a_index | eval a=round(numberField), ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(numberField) ', []); testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(stringField) ', [ @@ -1475,16 +1484,16 @@ describe('validation logic', () => { [] ); testErrorsAndWarnings('from a_index | eval not', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", 'Error: [not] function expects exactly one argument, got 0.', ]); testErrorsAndWarnings('from a_index | eval in', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "in"', + "SyntaxError: mismatched input 'in' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | eval stringField in stringField', [ "SyntaxError: missing '(' at 'stringField'", - 'SyntaxError: expected {COMMA, RP} but found ""', + "SyntaxError: mismatched input '' expecting {',', ')'}", ]); testErrorsAndWarnings('from a_index | eval stringField in stringField)', [ @@ -1493,7 +1502,7 @@ describe('validation logic', () => { ]); testErrorsAndWarnings('from a_index | eval stringField not in stringField', [ "SyntaxError: missing '(' at 'stringField'", - 'SyntaxError: expected {COMMA, RP} but found ""', + "SyntaxError: mismatched input '' expecting {',', ')'}", ]); describe('date math', () => { @@ -1548,16 +1557,16 @@ describe('validation logic', () => { ]); testErrorsAndWarnings('from a_index | stats by stringField', []); testErrorsAndWarnings('from a_index | stats by ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | stats numberField ', [ 'Expected an aggregate function or group but got [numberField] of type [FieldAttribute]', ]); testErrorsAndWarnings('from a_index | stats numberField=', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | stats numberField=5 by ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField', [ 'Unknown column [wrongField]', @@ -1584,7 +1593,7 @@ describe('validation logic', () => { testErrorsAndWarnings( 'from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField', [ - 'SyntaxError: expected {, PIPE, AND, COMMA, OR, PLUS, MINUS, ASTERISK, SLASH, PERCENT} but found "by"', + "SyntaxError: mismatched input 'by' expecting ", 'STATS BY does not support function percentile', ] ); @@ -1605,10 +1614,10 @@ describe('validation logic', () => { ); } testErrorsAndWarnings('from a_index | stats count(* + 1) BY ipField', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "+"', + "SyntaxError: no viable alternative at input 'count(* +'", ]); testErrorsAndWarnings('from a_index | stats count(* + round(numberField)) BY ipField', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "+"', + "SyntaxError: no viable alternative at input 'count(* +'", ]); testErrorsAndWarnings('from a_index | stats count(round(*)) BY ipField', [ 'Using wildcards (*) in round is not allowed', @@ -1952,12 +1961,12 @@ describe('validation logic', () => { describe('sort', () => { testErrorsAndWarnings('from a_index | sort ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | sort "field" ', []); testErrorsAndWarnings('from a_index | sort wrongField ', ['Unknown column [wrongField]']); testErrorsAndWarnings('from a_index | sort numberField, ', [ - 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", ]); testErrorsAndWarnings('from a_index | sort numberField, stringField', []); for (const dir of ['desc', 'asc']) { @@ -2011,10 +2020,10 @@ describe('validation logic', () => { ]); testErrorsAndWarnings(`from a_index | enrich policy `, []); testErrorsAndWarnings('from a_index | enrich `this``is fine`', [ - 'SyntaxError: expected {ENRICH_POLICY_NAME} but found "`this``is fine`"', + "SyntaxError: mismatched input '`this``is fine`' expecting ENRICH_POLICY_NAME", ]); testErrorsAndWarnings('from a_index | enrich this is fine', [ - 'SyntaxError: expected {, PIPE, ON, WITH} but found "is"', + "SyntaxError: mismatched input 'is' expecting ", 'Unknown policy [this]', ]); for (const value of ['any', 'coordinator', 'remote']) { @@ -2048,11 +2057,11 @@ describe('validation logic', () => { 'Unknown column [this`is fine]', ]); testErrorsAndWarnings('from a_index | enrich policy on this is fine', [ - 'SyntaxError: expected {, PIPE, DOT, WITH} but found "is"', + "SyntaxError: mismatched input 'is' expecting ", 'Unknown column [this]', ]); testErrorsAndWarnings(`from a_index | enrich policy on stringField with `, [ - 'SyntaxError: expected {ID_PATTERN} but found ""', + "SyntaxError: mismatched input '' expecting ID_PATTERN", ]); testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 `, [ 'Unknown column [var0]', @@ -2071,7 +2080,7 @@ describe('validation logic', () => { // ]); testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = , `, [ "SyntaxError: missing ID_PATTERN at ','", - 'SyntaxError: expected {ID_PATTERN} but found ""', + "SyntaxError: mismatched input '' expecting ID_PATTERN", 'Unknown column [var0]', ]); testErrorsAndWarnings( @@ -2100,7 +2109,7 @@ describe('validation logic', () => { [] ); testErrorsAndWarnings(`from a_index | enrich policy with `, [ - 'SyntaxError: expected {ID_PATTERN} but found ""', + "SyntaxError: mismatched input '' expecting ID_PATTERN", ]); testErrorsAndWarnings(`from a_index | enrich policy with otherField`, []); testErrorsAndWarnings(`from a_index | enrich policy | eval otherField`, []); From e51165baec5b535a20af757e371a0dadb941f7a2 Mon Sep 17 00:00:00 2001 From: dej611 Date: Mon, 4 Mar 2024 13:07:36 +0100 Subject: [PATCH 13/16] :fire: Avoid duplicate syntax evaluation --- packages/kbn-monaco/src/esql/language.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/kbn-monaco/src/esql/language.ts b/packages/kbn-monaco/src/esql/language.ts index c37e19fb81d93..90d73af3e02f5 100644 --- a/packages/kbn-monaco/src/esql/language.ts +++ b/packages/kbn-monaco/src/esql/language.ts @@ -13,7 +13,6 @@ import { ESQL_LANG_ID } from './lib/constants'; import type { CustomLangModuleType } from '../types'; import type { ESQLWorker } from './worker/esql_worker'; -import { DiagnosticsAdapter } from '../common/diagnostics_adapter'; import { WorkerProxyService } from '../common/worker_proxy'; import type { ESQLCallbacks } from './lib/ast/shared/types'; import { ESQLAstAdapter } from './lib/monaco/esql_ast_provider'; @@ -28,10 +27,6 @@ export const ESQLLang: CustomLangModuleType = { workerProxyService.setup(ESQL_LANG_ID); monaco.languages.setTokensProvider(ESQL_LANG_ID, new ESQLTokensProvider()); - - // handle syntax errors via the diagnostic adapter - // but then enrich them via the separate validate function - new DiagnosticsAdapter(ESQL_LANG_ID, (...uris) => workerProxyService.getWorker(uris)); }, languageConfiguration: { brackets: [ From 38491e5f46f08990f7dbdec295ff7dc7fa58804d Mon Sep 17 00:00:00 2001 From: dej611 Date: Mon, 4 Mar 2024 13:07:51 +0100 Subject: [PATCH 14/16] :bug: Fix issue with syntax error at source level --- packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts index c93a8ad560349..e7999e4e63a9a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts @@ -11,6 +11,9 @@ import type { ESQLPolicy } from './types'; export function buildQueryForFieldsFromSource(queryString: string, ast: ESQLAst) { const firstCommand = ast[0]; + if (firstCommand == null) { + return ''; + } return queryString.substring(0, firstCommand.location.max + 1); } From 880a109a1d218a0c60adfc875316675acd174102 Mon Sep 17 00:00:00 2001 From: dej611 Date: Mon, 4 Mar 2024 13:08:11 +0100 Subject: [PATCH 15/16] :wrench: Fix logic after syntax error changes --- .../src/esql/lib/ast/code_actions/actions.ts | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts index 77b376b197b8a..bb2b5170d1c7b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts @@ -332,10 +332,17 @@ function wrapIntoSpellingChangeAction( ); } -function inferCodeFromError(error: monaco.editor.IMarkerData & { owner?: string }) { - if (error.message.includes('missing STRING')) { - const [, value] = error.message.split('at '); - return value.startsWith("'") && value.endsWith("'") ? 'wrongQuotes' : undefined; +function extractQuotedText(rawText: string, error: monaco.editor.IMarkerData) { + return rawText.substring(error.startColumn - 2, error.endColumn); +} + +function inferCodeFromError( + error: monaco.editor.IMarkerData & { owner?: string }, + rawText: string +) { + if (error.message.endsWith('expecting STRING')) { + const value = extractQuotedText(rawText, error); + return /^'(.)*'$/.test(value) ? 'wrongQuotes' : undefined; } } @@ -371,7 +378,7 @@ export async function getActions( // so unless there are multiple error/markers for the same area, there's just one // in some cases, like syntax + semantic errors (i.e. unquoted fields eval field-1 ), there might be more than one for (const error of context.markers) { - const code = error.code ?? inferCodeFromError(error); + const code = error.code ?? inferCodeFromError(error, innerText); switch (code) { case 'unknownColumn': const [columnsSpellChanges, columnsQuotedChanges] = await Promise.all([ @@ -421,7 +428,7 @@ export async function getActions( break; case 'wrongQuotes': // it is a syntax error, so location won't be helpful here - const [, errorText] = error.message.split('at '); + const errorText = extractQuotedText(innerText, error); actions.push( createAction( i18n.translate('monaco.esql.quickfix.replaceWithQuote', { @@ -429,7 +436,11 @@ export async function getActions( }), errorText.replaceAll("'", '"'), // override the location - { ...error, endColumn: error.startColumn + errorText.length }, + { + ...error, + startColumn: error.startColumn - 1, + endColumn: error.startColumn + errorText.length, + }, model.uri ) ); From 7aababd5a0b71a4575a2b9f4e96e3a3c87f5671e Mon Sep 17 00:00:00 2001 From: Eyo Okon Eyo Date: Tue, 5 Mar 2024 10:25:44 +0100 Subject: [PATCH 16/16] remove console.log --- packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts index d76769265a8e0..410ce7dba15a1 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts @@ -836,8 +836,6 @@ export async function validateAst( const { ast, errors } = await astProvider(queryString); - // console.log('ast received:: %o \n', ast); - const [sources, availableFields, availablePolicies, availableMetadataFields] = await Promise.all([ // retrieve the list of available sources retrieveSources(ast, callbacks),